author | Bruce Momjian | |
Sat, 4 Dec 2004 04:12:11 +0000 (04:12 +0000) | ||
committer | Bruce Momjian | |
Sat, 4 Dec 2004 04:12:11 +0000 (04:12 +0000) |
doc/src/FAQ/FAQ_DEV.html | patch | blob | blame | history |
Last updated: Wed Dec 1 16:11:11 EST 2006
Current maintainer: Bruce Momjian (
The most recent version of this document can be viewed at
Download the code and have a look around. See
Subscribe to and read the
PostgreSQL is developed mostly in the C programming language. It The source code is targeted at most of the popular Unix Most developers make use of the open source development tool Developers using this tool chain on Windows make use of MingW Some developers use compilers from other software vendors with Developers who are regularly rebuilding the source often pass You can learn more about these features by consulting the Send an email to pgsql-hackers with a proposal for what you want Other than documentation in the source tree itself, you can find Generate the patch in contextual diff format. If you are Ensure that your patch is generated against the most recent Finally, submit the patch to [email protected]. It There are several ways to obtain the source tree. Occasional Regular developers may want to take advantage of anonymous Last updated: Wed Dec 1 16:11:11 EST 2006 Current maintainer: Bruce Momjian (
The most recent version of this document can be viewed at
Download the code and have a look around. See
Subscribe to and read the
PostgreSQL is developed mostly in the C programming language. It The source code is targeted at most of the popular Unix Most developers make use of the open source development tool Developers using this tool chain on Windows make use of MingW Some developers use compilers from other software vendors with Developers who are regularly rebuilding the source often pass You can learn more about these features by consulting the Send an email to pgsql-hackers with a proposal for what you want Other than documentation in the source tree itself, you can find Generate the patch in contextual diff format. If you are Ensure that your patch is generated against the most recent Finally, submit the patch to [email protected]. It Basic system testing There are several ways to obtain the source tree. Occasional The easiest way to test your code is to ensure that it builds Regular developers may want to take advantage of anonymous It is worth advised that you pass --enable-cassert to Then, perform run time testing via psql. Basic system testing Regression test suite The easiest way to test your code is to ensure that it builds The next step is to test your changes against the existing It is worth advised that you pass --enable-cassert to If you've deliberately changed existing behaviour, this change Then, perform run time testing via psql. Other run time testing Regression test suite Some developers make use of tools such as valgrind (
The next step is to test your changes against the existing What about unit testing, static analysis, model If you've deliberately changed existing behaviour, this change There have been a number of discussions about other testing Other run time testing Some developers make use of tools such as valgrind (
First, all the files in the src/tools directory are What about unit testing, static analysis, model There have been a number of discussions about other testing First, all the files in the src/tools directory are In src/include/catalog: In src/include/catalog: Second, you really should have an editor that can handle tags, Third, you need to get id-utils from
By running tools/make_mkid, an archive of source symbols Some developers make use of cscope, which can be found at
tools/make_diff has tools to create patch diff files that Our standard format is to indent each code level with one tab, Second, you really should have an editor that can handle tags, Third, you need to get id-utils from
By running tools/make_mkid, an archive of source symbols Some developers make use of cscope, which can be found at
tools/make_diff has tools to create patch diff files that Our standard format is to indent each code level with one tab, pgindent is run on all source files just before each beta pginclude contains scripts used to add needed When adding system types, you will need to assign oids to them. I have four good books, An Introduction to Database There is also a database performance site, with a handbook The files configure and configure.in are part of When configure is run by the user, it tests various OS When you need to edit files, make sure you don't waste time There are a variety of places that need to be modified to add a Then, check src/include/port and add your new OS file, There is always a temptation to use the newest operating system First, we support 15+ operating systems, so any new feature has As an example, threads are not currently used in the backend So, we are not ignorant of new features. It is just that we are This was written by Lamar Owen: 2001-05-03 As to how the RPMs are built -- to answer that question sanely I then download and build on as many different canonical I test the build by installing the resulting packages and You'll notice I said 'canonical' distributions above. That For a time I built on Mandrake for RedHat consumption -- no I _do_ attempt to make the _source_ RPM compatible with as many And, while I understand people's desire to immediately upgrade I am working towards a more open RPM distribution -- I would As to why all these files aren't part of the source tree, well, Of course, there are many projects that DO include all the files This was written by Tom Lane: 2001-05-07 If you just do basic "cvs checkout", "cvs update", "cvs commit", The first thing you have to know is the branch name for the pgindent is run on all source files just before each beta pginclude contains scripts used to add needed When adding system types, you will need to assign oids to them. I have four good books, An Introduction to Database There is also a database performance site, with a handbook The files configure and configure.in are part of When configure is run by the user, it tests various OS When you need to edit files, make sure you don't waste time There are a variety of places that need to be modified to add a Then, check src/include/port and add your new OS file, There is always a temptation to use the newest operating system First, we support 15+ operating systems, so any new feature has As an example, threads are not currently used in the backend So, we are not ignorant of new features. It is just that we are This was written by Lamar Owen: 2001-05-03 As to how the RPMs are built -- to answer that question sanely I then download and build on as many different canonical I test the build by installing the resulting packages and You'll notice I said 'canonical' distributions above. That For a time I built on Mandrake for RedHat consumption -- no I _do_ attempt to make the _source_ RPM compatible with as many And, while I understand people's desire to immediately upgrade I am working towards a more open RPM distribution -- I would As to why all these files aren't part of the source tree, well, Of course, there are many projects that DO include all the files This was written by Tom Lane: 2001-05-07 If you just do basic "cvs checkout", "cvs update", "cvs commit", The first thing you have to know is the branch name for the OK, so how do you do work on a branch? By far the best way is to Normally, to checkout the head branch, you just cd to the place OK, so how do you do work on a branch? By far the best way is to Normally, to checkout the head branch, you just cd to the place To get a past branch, you cd to whereever you want it and To get a past branch, you cd to whereever you want it and For example, just a couple days ago I did For example, just a couple days ago I did and now I have a maintenance copy of 7.1.*. When you've done a checkout in this way, the branch name is So, if you have a patch that needs to apply to both the head and There are three versions of the SQL standard: SQL-92, SQL:1999, Some SQL standards web pages are: Many technical questions held by those new to the code have been If you cannot find discussion or your particular question, feel Major contributors also answer technical questions, including PostgreSQL website development is discussed on the You first need to find the tuples(rows) you are interested in. The rows returned are cache-owned versions of the heap rows. If you can't use the system cache, you will need to retrieve the Open the table with heap_open(). You can then start a You can also use heap_fetch() to fetch rows by block Once you have the row, you can get data that is common to all Table, column, type, function, and view names are stored in and now I have a maintenance copy of 7.1.*. When you've done a checkout in this way, the branch name is So, if you have a patch that needs to apply to both the head and There are three versions of the SQL standard: SQL-92, SQL:1999, Some SQL standards web pages are: Many technical questions held by those new to the code have been If you cannot find discussion or your particular question, feel Major contributors also answer technical questions, including PostgreSQL website development is discussed on the You first need to find the tuples(rows) you are interested in. The rows returned are cache-owned versions of the heap rows. If you can't use the system cache, you will need to retrieve the Open the table with heap_open(). You can then start a You can also use heap_fetch() to fetch rows by block Once you have the row, you can get data that is common to all Table, column, type, function, and view names are stored in Many functions are called with both types of names, ie. We do this because this allows a consistent way to pass data Here are some of the List manipulation commands: Many functions are called with both types of names, ie. We do this because this allows a consistent way to pass data Here are some of the List manipulation commands: >The structures passing around from the parser, rewrite, palloc() and pfree()> are used in place of malloc() ereport()> is used to send messages to the front-end, and ereport(ERROR)> frees most memory and open file >Normally, transactions can not see the rows they modify. This >However, there are cases where a transactions needs to see rows >The structures passing around from the parser, rewrite, palloc() and pfree()> are used in place of malloc() ereport()> is used to send messages to the front-end, and ereport(ERROR)> frees most memory and open file >Normally, transactions can not see the rows they modify. This >However, there are cases where a transactions needs to see rowsGeneral Questions
Technical Questions
General Questions
1.1) How go I get involved in PostgreSQL
1.2) What development environment is required
1.3) What areas need work?
1.4) What do I do after choosing an item to
1.5) Where can I learn more about the
1.6) I've developed a patch, what next?
1.7) How do I download/update the current
Developer's Frequently Asked Questions (FAQ) for
General Questions
Technical Questions
General Questions
1.1) How go I get involved in PostgreSQL
1.2) What development environment is required
1.3) What areas need work?
1.4) What do I do after choosing an item to
1.5) Where can I learn more about the
1.6) I've developed a patch, what next?
1.8) How do I test my changes?
1.7) How do I download/update the current
1.8) How do I test my changes?
1.9) What tools are available for
1.9) What tools are available for
/*------
. These comments will not be reformatted in#include
's to include files, and removed unneeded#include
's.1.10) What books are good for
1.11) What is configure all about?
1.12) How do I add a new port?
1.13) Why don't you use threads/raw
1.14) How are RPMs packaged?
1.15) How are CVS branches managed?
/*------
. These comments will not be reformatted in#include
's to include files, and removed unneeded#include
's.1.10) What books are good for
1.11) What is configure all about?
1.12) How do I add a new port?
1.13) Why don't you use threads/raw
1.14) How are RPMs packaged?
1.15) How are CVS branches managed?
1.16) Where can I get a copy of the SQL
1.17) Where can I get technical
1.18) How go I get involved in PostgreSQL
Technical Questions
2.1) How do I efficiently access information
((Form_pg_class) GETSTRUCT(tuple))->relnatts
2.2) Why are table, column, type, function,
typedef struct nameData
1.16) Where can I get a copy of the SQL
1.17) Where can I get technical
1.18) How go I get involved in PostgreSQL
Technical Questions
2.1) How do I efficiently access information
((Form_pg_class) GETSTRUCT(tuple))->relnatts
2.2) Why are table, column, type, function,
typedef struct nameData
2.3) Why do we use Node and
List *list;
2.3) Why do we use Node and
List *list;
(gdb) set print elements 0
(gdb) call print(any_pointer)
(gdb) set print elements 0
(gdb) call print(any_pointer)
2.4>) I just added a field to a structure.
2.5) Why do we use palloc>() and
2.6) What is ereport()?3>
2.7) What is CommandCounterIncrement()?3>
UPDATE foo SET x = x + 1
to work correctly.>2.4>) I just added a field to a structure.
2.5) Why do we use palloc>() and
2.6) What is ereport()?3>
2.7) What is CommandCounterIncrement()?3>
UPDATE foo SET x = x + 1
to work correctly.>