|
|
@ -1,12 +1,12 @@ |
|
|
|
|
|
|
|
|
|
|
|
Developer's Frequently Asked Questions (FAQ) for PostgreSQL |
|
|
|
Developer's Frequently Asked Questions (FAQ) for PostgreSQL |
|
|
|
|
|
|
|
|
|
|
|
Last updated: Mon Feb 22 17:15:06 EST 1999 |
|
|
|
Last updated: Sat Jul 10 00:38:09 EDT 1999 |
|
|
|
|
|
|
|
|
|
|
|
Current maintainer: Bruce Momjian (maillist@candle.pha.pa.us) |
|
|
|
Current maintainer: Bruce Momjian (maillist@candle.pha.pa.us) |
|
|
|
|
|
|
|
|
|
|
|
The most recent version of this document can be viewed at the |
|
|
|
The most recent version of this document can be viewed at the |
|
|
|
postgreSQL Web site, http://postgreSQL.org. |
|
|
|
postgreSQL Web site, http://PostgreSQL.org. |
|
|
|
_________________________________________________________________ |
|
|
|
_________________________________________________________________ |
|
|
|
|
|
|
|
|
|
|
|
Questions |
|
|
|
Questions |
|
|
@ -24,6 +24,8 @@ |
|
|
|
9) How do I efficiently access information in tables from the backend |
|
|
|
9) How do I efficiently access information in tables from the backend |
|
|
|
code? |
|
|
|
code? |
|
|
|
10) What is elog()? |
|
|
|
10) What is elog()? |
|
|
|
|
|
|
|
11) What is configure all about? |
|
|
|
|
|
|
|
12) How do I add a new port? |
|
|
|
_________________________________________________________________ |
|
|
|
_________________________________________________________________ |
|
|
|
|
|
|
|
|
|
|
|
1) What tools are available for developers? |
|
|
|
1) What tools are available for developers? |
|
|
@ -294,7 +296,7 @@ s |
|
|
|
While scans automatically lock/unlock rows from the buffer cache, with |
|
|
|
While scans automatically lock/unlock rows from the buffer cache, with |
|
|
|
heap_fetch(), you must pass a Buffer pointer, and ReleaseBuffer() it |
|
|
|
heap_fetch(), you must pass a Buffer pointer, and ReleaseBuffer() it |
|
|
|
when completed. Once you have the row, you can get data that is common |
|
|
|
when completed. Once you have the row, you can get data that is common |
|
|
|
to all tuples, like t_self and t_oid, by mererly accessing the |
|
|
|
to all tuples, like t_self and t_oid, by merely accessing the |
|
|
|
HeapTuple structure entries. If you need a table-specific column, you |
|
|
|
HeapTuple structure entries. If you need a table-specific column, you |
|
|
|
should take the HeapTuple pointer, and use the GETSTRUCT() macro to |
|
|
|
should take the HeapTuple pointer, and use the GETSTRUCT() macro to |
|
|
|
access the table-specific start of the tuple. You then cast the |
|
|
|
access the table-specific start of the tuple. You then cast the |
|
|
@ -324,3 +326,41 @@ s |
|
|
|
current query, never returning from the call. FATAL terminates the |
|
|
|
current query, never returning from the call. FATAL terminates the |
|
|
|
backend process. The remaining parameters of elog are a printf-style |
|
|
|
backend process. The remaining parameters of elog are a printf-style |
|
|
|
set of parameters to print. |
|
|
|
set of parameters to print. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11) What is configure all about? |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The files configure and configure.in are part of the GNU autoconf |
|
|
|
|
|
|
|
package. Configure allows us to test for various capabilities of the |
|
|
|
|
|
|
|
OS, and to set variables that can then be tested in C programs and |
|
|
|
|
|
|
|
Makefiles. Autoconf is installed on the PostgreSQL main server. To add |
|
|
|
|
|
|
|
options to configure, edit configure.in, and then run autoconf to |
|
|
|
|
|
|
|
generate configure. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
When configure is run by the user, it tests various OS capabilities, |
|
|
|
|
|
|
|
stores those in config.status and config.cache, and modifies a list of |
|
|
|
|
|
|
|
*.in files. For example, if there exists a Makefile.in, configure |
|
|
|
|
|
|
|
generates a Makefile that contains substitutions for all @var@ |
|
|
|
|
|
|
|
parameters found by configure. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
When you need to edit files, make sure you don't waste time modifying |
|
|
|
|
|
|
|
files generated by configure. Edit the *.in file, and re-run configure |
|
|
|
|
|
|
|
to recreate the needed file. If you run make distclean from the |
|
|
|
|
|
|
|
top-level source directory, all files derived by configure are |
|
|
|
|
|
|
|
removed, so you see only the file contained in the source |
|
|
|
|
|
|
|
distribution. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12) How do I add a new port? |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
There are a variety of places that need to be modified to add a new |
|
|
|
|
|
|
|
port. First, start in the src/template directory. Add an appropriate |
|
|
|
|
|
|
|
entry for your OS. Also, use src/config.guess to add your OS to |
|
|
|
|
|
|
|
src/template/.similar. You shouldn't match the OS version exactly. The |
|
|
|
|
|
|
|
configure test will look for an exact OS version number, and if not |
|
|
|
|
|
|
|
found, find a match without version number. Edit src/configure.in to |
|
|
|
|
|
|
|
add your new OS. (See configure item above.) You will need to run |
|
|
|
|
|
|
|
autoconf, or patch src/configure too. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Then, check src/include/port and add your new OS file, with |
|
|
|
|
|
|
|
appropriate values. Hopefully, there is already locking code in |
|
|
|
|
|
|
|
src/include/storage/s_lock.h for your CPU. There is a backend/port |
|
|
|
|
|
|
|
directory if you need special files for your OS. |
|
|
|