|
|
|
|
@ -1,7 +1,7 @@ |
|
|
|
|
|
|
|
|
|
Developer's Frequently Asked Questions (FAQ) for PostgreSQL |
|
|
|
|
|
|
|
|
|
Last updated: Fri May 6 13:47:54 EDT 2005 |
|
|
|
|
Last updated: Sat May 14 12:26:01 EDT 2005 |
|
|
|
|
|
|
|
|
|
Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us) |
|
|
|
|
|
|
|
|
|
@ -15,8 +15,8 @@ General Questions |
|
|
|
|
1.2) What development environment is required to develop code? |
|
|
|
|
1.3) What areas need work? |
|
|
|
|
1.4) What do I do after choosing an item to work on? |
|
|
|
|
1.5) Where can I learn more about the code? |
|
|
|
|
1.6) I've developed a patch, what next? |
|
|
|
|
1.5) I've developed a patch, what next? |
|
|
|
|
1.6) Where can I learn more about the code? |
|
|
|
|
1.7) How do I download/update the current source tree? |
|
|
|
|
1.8) How do I test my changes? |
|
|
|
|
1.9) What tools are available for developers? |
|
|
|
|
@ -94,35 +94,42 @@ General Questions |
|
|
|
|
|
|
|
|
|
Send an email to pgsql-hackers with a proposal for what you want to do |
|
|
|
|
(assuming your contribution is not trivial). Working in isolation is |
|
|
|
|
not advisable: others may be working on the same TODO item; you may |
|
|
|
|
have misunderstood the TODO item; your approach may benefit from the |
|
|
|
|
review of others. |
|
|
|
|
not advisable because others might be working on the same TODO item, |
|
|
|
|
or you might have misunderstood the TODO item. In the email, discuss |
|
|
|
|
both the internal implementation method you plan to use, and any |
|
|
|
|
user-visible changes (new syntax, etc). For complex patches, it is |
|
|
|
|
important to get community feeback on your proposal before starting |
|
|
|
|
work. Failure to do so might mean your patch is rejected. |
|
|
|
|
|
|
|
|
|
A web site is maintained for patches that are ready to be applied, |
|
|
|
|
http://momjian.postgresql.org/cgi-bin/pgpatches, and those that are |
|
|
|
|
being kept for the next release, |
|
|
|
|
http://momjian.postgresql.org/cgi-bin/pgpatches2. |
|
|
|
|
|
|
|
|
|
1.5) Where can I learn more about the code? |
|
|
|
|
|
|
|
|
|
Other than documentation in the source tree itself, you can find some |
|
|
|
|
papers/presentations discussing the code at |
|
|
|
|
http://www.postgresql.org/developer. |
|
|
|
|
|
|
|
|
|
1.6) I've developed a patch, what next? |
|
|
|
|
1.5) I've developed a patch, what next? |
|
|
|
|
|
|
|
|
|
Generate the patch in contextual diff format. If you are unfamiliar |
|
|
|
|
with this, you may find the script src/tools/makediff/difforig useful. |
|
|
|
|
with this, you might find the script src/tools/makediff/difforig |
|
|
|
|
useful. |
|
|
|
|
|
|
|
|
|
Ensure that your patch is generated against the most recent version of |
|
|
|
|
the code. If it is a patch adding new functionality, the most recent |
|
|
|
|
version is cvs HEAD; if it is a bug fix, this will be the most |
|
|
|
|
version is CVS HEAD; if it is a bug fix, this will be the most |
|
|
|
|
recently version of the branch which suffers from the bug (for more on |
|
|
|
|
branches in PostgreSQL, see 1.15). |
|
|
|
|
|
|
|
|
|
Finally, submit the patch to pgsql-patches@postgresql.org. It will be |
|
|
|
|
reviewed by other contributors to the project and may be either |
|
|
|
|
accepted or sent back for further work. |
|
|
|
|
reviewed by other contributors to the project and will be either |
|
|
|
|
accepted or sent back for further work. Also, please try to include |
|
|
|
|
documentation changes as part of the patch. If you can't do that, let |
|
|
|
|
us know and we will manually update the documentation when the patch |
|
|
|
|
is applied. |
|
|
|
|
|
|
|
|
|
1.6) Where can I learn more about the code? |
|
|
|
|
|
|
|
|
|
Other than documentation in the source tree itself, you can find some |
|
|
|
|
papers/presentations discussing the code at |
|
|
|
|
http://www.postgresql.org/developer. |
|
|
|
|
|
|
|
|
|
1.7) How do I download/update the current source tree? |
|
|
|
|
|
|
|
|
|
@ -130,7 +137,7 @@ General Questions |
|
|
|
|
developers can just get the most recent source tree snapshot from |
|
|
|
|
ftp://ftp.postgresql.org. |
|
|
|
|
|
|
|
|
|
Regular developers may want to take advantage of anonymous access to |
|
|
|
|
Regular developers might want to take advantage of anonymous access to |
|
|
|
|
our source code management system. The source tree is currently hosted |
|
|
|
|
in CVS. For details of how to obtain the source from CVS see |
|
|
|
|
http://developer.postgresql.org/docs/postgres/cvs.html. |
|
|
|
|
@ -156,7 +163,7 @@ General Questions |
|
|
|
|
test suite. To do this, issue "make check" in the root directory of |
|
|
|
|
the source tree. If any tests failure, investigate. |
|
|
|
|
|
|
|
|
|
If you've deliberately changed existing behavior, this change may |
|
|
|
|
If you've deliberately changed existing behavior, this change might |
|
|
|
|
cause a regression test failure but not any actual regression. If so, |
|
|
|
|
you should also patch the regression test suite. |
|
|
|
|
|
|
|
|
|
@ -625,10 +632,10 @@ Technical Questions |
|
|
|
|
values you want changed. It returns a palloc'ed tuple, which you pass |
|
|
|
|
to heap_replace(). You can delete tuples by passing the tuple's t_self |
|
|
|
|
to heap_destroy(). You use t_self for heap_update() too. Remember, |
|
|
|
|
tuples can be either system cache copies, which may go away after you |
|
|
|
|
call ReleaseSysCache(), or read directly from disk buffers, which go |
|
|
|
|
away when you heap_getnext(), heap_endscan, or ReleaseBuffer(), in the |
|
|
|
|
heap_fetch() case. Or it may be a palloc'ed tuple, that you must |
|
|
|
|
tuples can be either system cache copies, which might go away after |
|
|
|
|
you call ReleaseSysCache(), or read directly from disk buffers, which |
|
|
|
|
go away when you heap_getnext(), heap_endscan, or ReleaseBuffer(), in |
|
|
|
|
the heap_fetch() case. Or it may be a palloc'ed tuple, that you must |
|
|
|
|
pfree() when finished. |
|
|
|
|
|
|
|
|
|
2.2) Why are table, column, type, function, view names sometimes referenced |
|
|
|
|
@ -729,8 +736,8 @@ typedef struct nameData |
|
|
|
|
routines in src/backend/nodes used to create, copy, read, and output |
|
|
|
|
those structures (in particular, the files copyfuncs.c and |
|
|
|
|
equalfuncs.c. Make sure you add support for your new field to these |
|
|
|
|
files. Find any other places the structure may need code for your new |
|
|
|
|
field. mkid is helpful with this (see 1.9). |
|
|
|
|
files. Find any other places the structure might need code for your |
|
|
|
|
new field. mkid is helpful with this (see 1.9). |
|
|
|
|
|
|
|
|
|
2.5) Why do we use palloc() and pfree() to allocate memory? |
|
|
|
|
|
|
|
|
|
@ -786,7 +793,7 @@ typedef struct nameData |
|
|
|
|
with debugging symbols, you can use a debugger to see what is |
|
|
|
|
happening. Because the backend was not started from postmaster, it is |
|
|
|
|
not running in an identical environment and locking/backend |
|
|
|
|
interaction problems may not be duplicated. |
|
|
|
|
interaction problems might not be duplicated. |
|
|
|
|
|
|
|
|
|
If the postmaster is running, start psql in one window, then find the |
|
|
|
|
PID of the postgres process used by psql using SELECT |
|
|
|
|
|