new DEV FAQ - Mailing list pgsql-hackers
From | Bruce Momjian |
---|---|
Subject | new DEV FAQ |
Date | |
Msg-id | 199801222005.PAA12840@candle.pha.pa.us Whole thread Raw |
Responses |
Oid Questions
|
List | pgsql-hackers |
Developers Frequently Asked Questions (FAQ) for PostgreSQL Last updated: Thu Jan 22 15:04:10 EST 1998 Current maintainer: Bruce Momjian (maillist@candle.pha.pa.us) The most recent version of this document can be viewed at the postgreSQL Web site, http://postgreSQL.org. ------------------------------------------------------------------------ Questions answered: 1) General questions 1) What tools are available for developers? 2) What books are good for developers? 3) Why do we use palloc() and pfree() to allocate memory? 4) Why do we use Node() and List() to make data structures? ------------------------------------------------------------------------ 1) What tools are available for developers? Aside from the User documentation mentioned in the regular FAQ, there are several development tools available. First, all the files in the /tools directory are designed for developers. RELEASE_CHANGES changes we have to make for each release SQL_keywords standard SQL'92 keywords backend web flowchart of the backend directories ccsym find standard defines made by your compiler entab converts tabs to spaces, used by pgindent find_static finds functions that could be made static find_typedef get a list of typedefs in the source code make_ctags make vi 'tags' file in each directory make_diff make *.orig and diffs of source make_etags make emacs 'etags' files make_keywords.README make comparison of our keywords and SQL'92 make_mkid make mkid ID files mkldexport create AIX exports file pgindent indents C source files Let me note some of these. If you point your browser at the tools/backend directory, you will see all the backend components in a flow chart. You can click on any one to see a description. If you then click on the directory name, you will be taken to the source directory, to browse the actual source code behind it. We also have several README files in some source directories to describe the function of the module. The browser will display these when you enter the directory also. The tools/backend directory is also contained on our web page under the title Backend Flowchart. Second, you really should have an editor that can handle tags, so you can tag a function call to see the function definition, and then tag inside that function to see an even lower-level function, and then back out twice to return to the original function. Most editors support this via tags or etags files. Third, you need to get mkid from ftp.postgresql.org. By running tools/make_mkid, an archive of source symbols can be created that can be rapidly queried like grep or edited. make_diff has tools to create patch diff files that can be applied to the distribution. pgindent will format source files to match our standard format, which has four-space tabs, and an indenting format specified by flags to the your operating system's utility indent. 2) What books are good for developers? I have two good books, An Introduction to Database Systems, by C.J. Date, Addison, Wesley and A Guide to the SQL Standard, by C.J. Date, et. al, Addison, Wesley. 3) Why do we use palloc() and pfree() to allocate memory? palloc() and pfree() are used in place of malloc() and free() because we automatically free all memory allocated when a transaction completes. This makes it easier to make sure we free memory that gets allocated in one place, but only freed much later. There are several contexts that memory can be allocated in, and this controls when the allocated memory is automatically freed by the backend. 4) Why do we use Node() and List() to make data structures? We do this because this allows a consistent way to pass data inside the backend in a flexible way. Every node has a NodeTag which specifies what type of data is inside the Node. Lists are lists of Nodes. lfirst(), lnext(), and foreach() are used to get, skip, and traverse throught Lists. -- Bruce Momjian maillist@candle.pha.pa.us
pgsql-hackers by date: