|
|
|
|
@ -1,7 +1,7 @@ |
|
|
|
|
|
|
|
|
|
Developer's Frequently Asked Questions (FAQ) for PostgreSQL |
|
|
|
|
|
|
|
|
|
Last updated: Fri Dec 24 11:43:42 EST 1999 |
|
|
|
|
Last updated: Fri Jun 9 21:54:54 EDT 2000 |
|
|
|
|
|
|
|
|
|
Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us) |
|
|
|
|
|
|
|
|
|
@ -69,9 +69,14 @@ s |
|
|
|
|
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. Others prefer glimpse. |
|
|
|
|
Third, you need to get id-utils from: |
|
|
|
|
ftp://alpha.gnu.org/gnu/id-utils-3.2d.tar.gz |
|
|
|
|
ftp://tug.org/gnu/id-utils-3.2d.tar.gz |
|
|
|
|
ftp://ftp.enst.fr/pub/gnu/gnits/id-utils-3.2d.tar.gz |
|
|
|
|
|
|
|
|
|
By running tools/make_mkid, an archive of source symbols can be |
|
|
|
|
created that can be rapidly queried like grep or edited. Others prefer |
|
|
|
|
glimpse. |
|
|
|
|
|
|
|
|
|
make_diff has tools to create patch diff files that can be applied to |
|
|
|
|
the distribution. |
|
|
|
|
@ -90,16 +95,14 @@ s |
|
|
|
|
M-x set-variable tab-width |
|
|
|
|
or |
|
|
|
|
; Cmd to set tab stops &etc for working with PostgreSQL code |
|
|
|
|
(defun pgsql-mode () |
|
|
|
|
"Set PostgreSQL C indenting conventions in current buffer." |
|
|
|
|
(interactive) |
|
|
|
|
(c-mode) ; necessary to make c-set |
|
|
|
|
-offset local! |
|
|
|
|
(setq tab-width 4) ; already buffer-local |
|
|
|
|
; (setq comment-column 48) ; already buffer-local |
|
|
|
|
(c-set-style "bsd") |
|
|
|
|
(c-set-offset 'case-label '+) |
|
|
|
|
) |
|
|
|
|
(c-add-style "pgsql" |
|
|
|
|
'("bsd" |
|
|
|
|
(indent-tabs-mode . t) |
|
|
|
|
(c-basic-offset . 4) |
|
|
|
|
(tab-width . 4) |
|
|
|
|
(c-offsets-alist . |
|
|
|
|
((case-label . +)))) |
|
|
|
|
t) ; t = set this mode on |
|
|
|
|
|
|
|
|
|
and add this to your autoload list (modify file path in macro): |
|
|
|
|
|
|
|
|
|
@ -311,8 +314,8 @@ c-mode) |
|
|
|
|
you to query the system catalogs. This is the preferred way to access |
|
|
|
|
system tables, because the first call to the cache loads the needed |
|
|
|
|
rows, and future requests can return the results without accessing the |
|
|
|
|
base table. Some of the caches use system table indexes to look up |
|
|
|
|
tuples. A list of available caches is located in |
|
|
|
|
base table. The caches use system table indexes to look up tuples. A |
|
|
|
|
list of available caches is located in |
|
|
|
|
src/backend/utils/cache/syscache.c. |
|
|
|
|
src/backend/utils/cache/lsyscache.c contains many column-specific |
|
|
|
|
cache lookup functions. |
|
|
|
|
@ -355,11 +358,12 @@ c-mode) |
|
|
|
|
is to use heap_tuplemodify() and pass it your palloc'ed tuple, and the |
|
|
|
|
values you want changed. It returns another palloc'ed tuple, which you |
|
|
|
|
pass to heap_replace(). You can delete tuples by passing the tuple's |
|
|
|
|
t_self to heap_destroy(). Remember, tuples can be either system cache |
|
|
|
|
versions, which may go away soon after you get them, buffer cache |
|
|
|
|
version, which will 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. |
|
|
|
|
t_self to heap_destroy(). You can use it for heap_update() too. |
|
|
|
|
Remember, tuples can be either system cache versions, which may go |
|
|
|
|
away soon after you get them, buffer cache versions, 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. |
|
|
|
|
|
|
|
|
|
10) What is elog()? |
|
|
|
|
|
|
|
|
|
|