From 85c165cd4c19a4d837ec914ce26091cebef68be4 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Tue, 11 Aug 1998 02:32:00 +0000 Subject: [PATCH] New findoidjoins examines oid columns to find join relationships. --- contrib/README | 5 + contrib/findoidjoins/Makefile | 20 + contrib/findoidjoins/README | 68 ++ contrib/findoidjoins/findoidjoins.c | 93 +++ contrib/pginterface/README | 5 + contrib/pginterface/pginterface.c | 72 +- contrib/pginterface/pginterface.h | 4 + doc/src/graphics/catalogs.ps | 1018 +++++++++++++++++++++++++++ 8 files changed, 1284 insertions(+), 1 deletion(-) create mode 100644 contrib/findoidjoins/Makefile create mode 100644 contrib/findoidjoins/README create mode 100644 contrib/findoidjoins/findoidjoins.c create mode 100644 doc/src/graphics/catalogs.ps diff --git a/contrib/README b/contrib/README index 3a7fb56af6..bf4d10ebc5 100644 --- a/contrib/README +++ b/contrib/README @@ -18,6 +18,11 @@ earthdistance - Operator for computing earth distance for two points by Hal Snyder +findoidjoins - + Finds the joins used by oid columns by examining the actual + values in the oid columns and row oids. + by Bruce Momjian + fulltextindex - Full text indexing using triggers by Maarten Boekhold diff --git a/contrib/findoidjoins/Makefile b/contrib/findoidjoins/Makefile new file mode 100644 index 0000000000..e55b33a0ea --- /dev/null +++ b/contrib/findoidjoins/Makefile @@ -0,0 +1,20 @@ +# +# Makefile, requires pgsql/contrib/pginterface +# +# +PGINTERFACE = pginterface.o halt.o # these have to be in your library search path +TARGET = findoidjoins +CFLAGS = -g -Wall -I. -I../../src/interfaces/libpq -I/usr/local/pgsql/include +LDFLAGS = -L/usr/local/pgsql/lib -lpq + +all : $(TARGET) + +findoidjoins: $(PGINTERFACE) findoidjoins.c + gcc -o $@ $(CFLAGS) $@.c $(PGINTERFACE) $(LDFLAGS) + +clean: + rm -f *.o $(TARGET) log core + +install: + install -s -o bin -g bin $(TARGET) /usr/local/pgsql/bin + diff --git a/contrib/findoidjoins/README b/contrib/findoidjoins/README new file mode 100644 index 0000000000..7cd9abe9ad --- /dev/null +++ b/contrib/findoidjoins/README @@ -0,0 +1,68 @@ + + + findoidjoins + +This program scans the a database, and prints oid fields, and the tables +they join to. PostgreSQL version 6.3.2 crashes with aggregates on +views, so I have removed the view pg_user from the list of relations to +examine. + +Run on am empty database, it returns the system join relationships: + +--------------------------------------------------------------------------- + +Join pg_aggregate.aggfinaltype => pg_proc.oid +Join pg_aggregate.aggfinaltype => pg_type.oid +Join pg_aggregate.aggowner => pg_proc.oid +Join pg_aggregate.aggbasetype => pg_proc.oid +Join pg_aggregate.aggbasetype => pg_type.oid +Join pg_aggregate.aggtranstype1 => pg_proc.oid +Join pg_aggregate.aggtranstype1 => pg_type.oid +Join pg_aggregate.aggtranstype2 => pg_type.oid +Join pg_am.amowner => pg_proc.oid +Join pg_amop.amopid => pg_am.oid +Join pg_amop.amopopr => pg_operator.oid +Join pg_amop.amopclaid => pg_opclass.oid +Join pg_amproc.amproc => pg_operator.oid +Join pg_amproc.amproc => pg_proc.oid +Join pg_amproc.amopclaid => pg_opclass.oid +Join pg_amproc.amopclaid => pg_operator.oid +Join pg_amproc.amopclaid => pg_proc.oid +Join pg_amproc.amid => pg_am.oid +Join pg_attribute.attrelid => pg_class.oid +Join pg_attribute.atttypid => pg_type.oid +Join pg_class.relam => pg_am.oid +Join pg_class.reltype => pg_type.oid +Join pg_class.relowner => pg_proc.oid +Join pg_description.objoid => pg_proc.oid +Join pg_description.objoid => pg_type.oid +Join pg_index.indexrelid => pg_class.oid +Join pg_index.indrelid => pg_class.oid +Join pg_index.indproc => pg_proc.oid +Join pg_opclass.opcdeftype => pg_type.oid +Join pg_operator.oprcom => pg_operator.oid +Join pg_operator.oprrsortop => pg_operator.oid +Join pg_operator.oprlsortop => pg_operator.oid +Join pg_operator.oprnegate => pg_operator.oid +Join pg_operator.oprresult => pg_type.oid +Join pg_operator.oprright => pg_type.oid +Join pg_operator.oprleft => pg_type.oid +Join pg_operator.oprowner => pg_proc.oid +Join pg_parg.partype => pg_type.oid +Join pg_parg.parproid => pg_operator.oid +Join pg_parg.parproid => pg_proc.oid +Join pg_proc.prolang => pg_language.oid +Join pg_proc.prorettype => pg_type.oid +Join pg_proc.proowner => pg_proc.oid +Join pg_rewrite.ev_class => pg_class.oid +Join pg_statistic.starelid => pg_class.oid +Join pg_type.typrelid => pg_class.oid +Join pg_type.typowner => pg_proc.oid +Join pg_type.typelem => pg_operator.oid +Join pg_type.typelem => pg_proc.oid +Join pg_type.typelem => pg_type.oid + + +--------------------------------------------------------------------------- + +Bruce Momjian (root@candle.pha.pa.us) diff --git a/contrib/findoidjoins/findoidjoins.c b/contrib/findoidjoins/findoidjoins.c new file mode 100644 index 0000000000..ad897c3fc1 --- /dev/null +++ b/contrib/findoidjoins/findoidjoins.c @@ -0,0 +1,93 @@ +/* + * findoidjoins.c, required pgsql/contrib/pginterface + * + */ + +#include +#include "halt.h" +#include +#include "pginterface.h" + +PGresult *attres, *relres; + +int +main(int argc, char **argv) +{ + char query[4000]; + char relname[256]; + char relname2[256]; + char attname[256]; + int count; + + if (argc != 2) + halt("Usage: %s database\n", argv[0]); + + connectdb(argv[1], NULL, NULL, NULL, NULL); + on_error_continue(); + on_error_stop(); + + doquery("BEGIN WORK"); + doquery("\ + DECLARE c_attributes BINARY CURSOR FOR \ + SELECT relname, a.attname \ + FROM pg_class c, pg_attribute a, pg_type t \ + WHERE a.attnum > 0 AND \ + relkind = 'r' AND \ + typname = 'oid' AND \ + a.attrelid = c.oid AND \ + a.atttypid = t.oid \ + ORDER BY 1; \ + "); + doquery("FETCH ALL IN c_attributes"); + attres = get_result(); + + doquery("\ + DECLARE c_relations BINARY CURSOR FOR \ + SELECT relname \ + FROM pg_class c \ + WHERE relkind = 'r' AND \ + relname != 'pg_user' \ + ORDER BY 1; \ + "); + doquery("FETCH ALL IN c_relations"); + relres = get_result(); + + set_result(attres); + while (fetch(relname, attname) != END_OF_TUPLES) + { + set_result(relres); + reset_fetch(); + while (fetch(relname2) != END_OF_TUPLES) + { + unset_result(relres); + sprintf(query,"\ + DECLARE c_matches BINARY CURSOR FOR \ + SELECT count(*) + FROM %s t1, %s t2 \ + WHERE t1.%s = t2.oid", relname, relname2, attname); + + doquery(query); + doquery("FETCH ALL IN c_matches"); + fetch(&count); + if (count != 0) + printf("Join %s.%s => %s.oid\n", relname, attname, relname2); + doquery("CLOSE c_matches"); + set_result(relres); + } + set_result(attres); + } + + set_result(relres); + doquery("CLOSE c_relations"); + PQclear(relres); + + set_result(attres); + doquery("CLOSE c_attributes"); + PQclear(attres); + unset_result(attres); + + doquery("COMMIT WORK"); + + disconnectdb(); + return 0; +} diff --git a/contrib/pginterface/README b/contrib/pginterface/README index 42fd0a5dfe..32b0957242 100644 --- a/contrib/pginterface/README +++ b/contrib/pginterface/README @@ -22,6 +22,11 @@ useful if you are running the query engine on a system with a different architecture than the database server. If you pass a NULL pointer, the column is skipped, and you can use libpq to handle it as you wish. +There are two functions, get_result() and set_result, that allow you to +handle multiple result sets at the same time. + +There is a reset_fetch() that starts the fetch back at the beginning. + There is a demo program called pginsert that demonstrates how the library can be used. diff --git a/contrib/pginterface/pginterface.c b/contrib/pginterface/pginterface.c index 3c19943c26..52b1011e76 100644 --- a/contrib/pginterface/pginterface.c +++ b/contrib/pginterface/pginterface.c @@ -22,6 +22,9 @@ static PGresult *res = NULL; static int on_error_state = ON_ERROR_STOP; +static in_result_block = false; +static was_get_unset_result = false; + /* LOCAL VARIABLES */ static int tuple; @@ -64,9 +67,10 @@ disconnectdb() PGresult * doquery(char *query) { - if (res != NULL) + if (res != NULL && in_result_block == false && was_get_unset_result == false) PQclear(res); + was_get_unset_result = false; res = PQexec(conn, query); if (on_error_state == ON_ERROR_STOP && @@ -187,3 +191,69 @@ on_error_continue() { on_error_state = ON_ERROR_CONTINUE; } + + +/* +** +** get_result +** +*/ +PGresult *get_result() +{ + was_get_unset_result = true; + /* we have to store the fetch location somewhere */ + memcpy(&res->cmdStatus[CMDSTATUS_LEN-sizeof(tuple)],&tuple, sizeof(tuple)); + return res; +} + +/* +** +** set_result +** +*/ +void set_result(PGresult *newres) +{ + if (newres == NULL) + halt("set_result called with null result pointer\n"); + + if (res != NULL && was_get_unset_result == false) + if (in_result_block == false) + PQclear(res); + else + memcpy(&res->cmdStatus[CMDSTATUS_LEN-sizeof(tuple)], &tuple, sizeof(tuple)); + + in_result_block = true; + was_get_unset_result = false; + memcpy(&tuple, &newres->cmdStatus[CMDSTATUS_LEN-sizeof(tuple)], sizeof(tuple)); + res = newres; +} + + +/* +** +** unset_result +** +*/ +void unset_result(PGresult *oldres) +{ + if (oldres == NULL) + halt("unset_result called with null result pointer\n"); + + if (in_result_block == false) + halt("Unset of result without being set.\n"); + + was_get_unset_result = true; + memcpy(&oldres->cmdStatus[CMDSTATUS_LEN-sizeof(tuple)], &tuple, sizeof(tuple)); + in_result_block = false; +} + +/* +** +** reset_fetch +** +*/ +void reset_fetch() +{ + tuple = 0; +} + diff --git a/contrib/pginterface/pginterface.h b/contrib/pginterface/pginterface.h index ad8320aca9..5f856ac016 100644 --- a/contrib/pginterface/pginterface.h +++ b/contrib/pginterface/pginterface.h @@ -10,5 +10,9 @@ int fetch(void *param,...); int fetchwithnulls(void *param,...); void on_error_continue(); void on_error_stop(); +PGresult *get_result(); +void set_result(PGresult *newres); +void unset_result(PGresult *oldres); +void reset_fetch(); #define END_OF_TUPLES (-1) diff --git a/doc/src/graphics/catalogs.ps b/doc/src/graphics/catalogs.ps new file mode 100644 index 0000000000..21ef9fdcf0 --- /dev/null +++ b/doc/src/graphics/catalogs.ps @@ -0,0 +1,1018 @@ +%!PS-Adobe-3.0 +%%Creator: groff version 1.09 +%%CreationDate: Sat Feb 24 21:37:20 1996 +%%DocumentNeededResources: font Times-Bold +%%+ font Times-Italic +%%+ font Times-Roman +%%+ font Courier +%%+ font Symbol +%%DocumentSuppliedResources: file manual-er.eps +%%+ file manual-files.eps +%%+ file manual-arch.eps +%%+ procset grops 1.09 0 +%%Pages: 1 +%%PageOrder: Ascend +%%Orientation: Portrait +%%EndComments +%%BeginProlog +%%BeginResource: procset grops 1.09 0 +/setpacking where{ +pop +currentpacking +true setpacking +}if +/grops 120 dict dup begin +/SC 32 def +/A/show load def +/B{0 SC 3 -1 roll widthshow}bind def +/C{0 exch ashow}bind def +/D{0 exch 0 SC 5 2 roll awidthshow}bind def +/E{0 rmoveto show}bind def +/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def +/G{0 rmoveto 0 exch ashow}bind def +/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/I{0 exch rmoveto show}bind def +/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def +/K{0 exch rmoveto 0 exch ashow}bind def +/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/M{rmoveto show}bind def +/N{rmoveto 0 SC 3 -1 roll widthshow}bind def +/O{rmoveto 0 exch ashow}bind def +/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/Q{moveto show}bind def +/R{moveto 0 SC 3 -1 roll widthshow}bind def +/S{moveto 0 exch ashow}bind def +/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/SF{ +findfont exch +[exch dup 0 exch 0 exch neg 0 0]makefont +dup setfont +[exch/setfont cvx]cvx bind def +}bind def +/MF{ +findfont +[5 2 roll +0 3 1 roll +neg 0 0]makefont +dup setfont +[exch/setfont cvx]cvx bind def +}bind def +/level0 0 def +/RES 0 def +/PL 0 def +/LS 0 def +/PLG{ +gsave newpath clippath pathbbox grestore +exch pop add exch pop +}bind def +/BP{ +/level0 save def +1 setlinecap +1 setlinejoin +72 RES div dup scale +LS{ +90 rotate +}{ +0 PL translate +}ifelse +1 -1 scale +}bind def +/EP{ +level0 restore +showpage +}bind def +/DA{ +newpath arcn stroke +}bind def +/SN{ +transform +.25 sub exch .25 sub exch +round .25 add exch round .25 add exch +itransform +}bind def +/DL{ +SN +moveto +SN +lineto stroke +}bind def +/DC{ +newpath 0 360 arc closepath +}bind def +/TM matrix def +/DE{ +TM currentmatrix pop +translate scale newpath 0 0 .5 0 360 arc closepath +TM setmatrix +}bind def +/RC/rcurveto load def +/RL/rlineto load def +/ST/stroke load def +/MT/moveto load def +/CL/closepath load def +/FL{ +currentgray exch setgray fill setgray +}bind def +/BL/fill load def +/LW/setlinewidth load def +/RE{ +findfont +dup maxlength 1 index/FontName known not{1 add}if dict begin +{ +1 index/FID ne{def}{ pop pop}ifelse +}forall +/Encoding exch def +dup/FontName exch def +currentdict end definefont pop +}bind def +/DEFS 0 def +/EBEGIN{ +moveto +DEFS begin +}bind def +/EEND/end load def +/CNT 0 def +/level1 0 def +/PBEGIN{ +/level1 save def +translate +div 3 1 roll div exch scale +neg exch neg exch translate +0 setgray +0 setlinecap +1 setlinewidth +0 setlinejoin +10 setmiterlimit +[] 0 setdash +/setstrokeadjust where{ +pop +false setstrokeadjust +}if +/setoverprint where{ +pop +false setoverprint +}if +newpath +/CNT countdictstack def +userdict begin +/showpage{} def +}bind def +/PEND{ +clear +countdictstack CNT sub{end}repeat +level1 restore +}bind def +end def +/setpacking where{ +pop +setpacking +}if +%%EndResource +%%IncludeResource: font Times-Bold +%%IncludeResource: font Times-Italic +%%IncludeResource: font Times-Roman +%%IncludeResource: font Courier +%%IncludeResource: font Symbol +grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 +def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron +/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent +/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen +/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon +/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O +/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex +/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y +/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft +/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl +/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut +/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash +/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen +/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft +/logicalnot/minus/registered/macron/degree/plusminus/twosuperior +/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior +/ordmasculine/guilsinglright/onequarter/onehalf/threequarters +/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE +/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex +/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn +/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla +/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis +/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash +/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def +/Courier@0 ENC0/Courier RE/Times-Roman@0 ENC0/Times-Roman RE +/Times-Italic@0 ENC0/Times-Italic RE/Times-Bold@0 ENC0/Times-Bold RE +%%EndProlog +%%Page: 23 1 +%%BeginPageSetup +BP +%%EndPageSetup +.44 LW 77.5 109.2 72 109.2 DL 80.5 109.2 75 109.2 DL 86 109.2 80.5 109.2 +DL 91.5 109.2 86 109.2 DL 97 109.2 91.5 109.2 DL 102.5 109.2 97 109.2 DL +108 109.2 102.5 109.2 DL 113.5 109.2 108 109.2 DL 119 109.2 113.5 109.2 +DL 124.5 109.2 119 109.2 DL 130 109.2 124.5 109.2 DL 135.5 109.2 130 +109.2 DL 141 109.2 135.5 109.2 DL 146.5 109.2 141 109.2 DL 152 109.2 +146.5 109.2 DL 157.5 109.2 152 109.2 DL 163 109.2 157.5 109.2 DL 168.5 +109.2 163 109.2 DL 174 109.2 168.5 109.2 DL 179.5 109.2 174 109.2 DL 185 +109.2 179.5 109.2 DL 190.5 109.2 185 109.2 DL 196 109.2 190.5 109.2 DL +201.5 109.2 196 109.2 DL 207 109.2 201.5 109.2 DL 212.5 109.2 207 109.2 +DL 218 109.2 212.5 109.2 DL 223.5 109.2 218 109.2 DL 229 109.2 223.5 +109.2 DL 234.5 109.2 229 109.2 DL 240 109.2 234.5 109.2 DL 245.5 109.2 +240 109.2 DL 251 109.2 245.5 109.2 DL 256.5 109.2 251 109.2 DL 262 109.2 +256.5 109.2 DL 267.5 109.2 262 109.2 DL 273 109.2 267.5 109.2 DL 278.5 +109.2 273 109.2 DL 284 109.2 278.5 109.2 DL 289.5 109.2 284 109.2 DL 295 +109.2 289.5 109.2 DL 300.5 109.2 295 109.2 DL 306 109.2 300.5 109.2 DL +311.5 109.2 306 109.2 DL 317 109.2 311.5 109.2 DL 322.5 109.2 317 109.2 +DL 328 109.2 322.5 109.2 DL 333.5 109.2 328 109.2 DL 339 109.2 333.5 +109.2 DL 344.5 109.2 339 109.2 DL 350 109.2 344.5 109.2 DL 355.5 109.2 +350 109.2 DL 361 109.2 355.5 109.2 DL 366.5 109.2 361 109.2 DL 372 109.2 +366.5 109.2 DL 377.5 109.2 372 109.2 DL 383 109.2 377.5 109.2 DL 388.5 +109.2 383 109.2 DL 394 109.2 388.5 109.2 DL 399.5 109.2 394 109.2 DL 405 +109.2 399.5 109.2 DL 410.5 109.2 405 109.2 DL 416 109.2 410.5 109.2 DL +421.5 109.2 416 109.2 DL 427 109.2 421.5 109.2 DL 432.5 109.2 427 109.2 +DL 438 109.2 432.5 109.2 DL 443.5 109.2 438 109.2 DL 449 109.2 443.5 +109.2 DL 454.5 109.2 449 109.2 DL 460 109.2 454.5 109.2 DL 465.5 109.2 +460 109.2 DL 471 109.2 465.5 109.2 DL 476.5 109.2 471 109.2 DL 482 109.2 +476.5 109.2 DL 487.5 109.2 482 109.2 DL 493 109.2 487.5 109.2 DL 498.5 +109.2 493 109.2 DL 504 109.2 498.5 109.2 DL 0 0 432 754 -433.278 761 72 +568.878 PBEGIN +%%BeginDocument: manual-er.eps +%%Title: stdin +%%Creator: fig2dev Version 3.1 Patchlevel 0 +%%CreationDate: Sat Feb 24 21:36:26 1996 +%%For: jolly@arcadia.CS.Berkeley.EDU (Jolly Chen,421 Soda,(510) 6421863,540-5955) +%%Orientation: Portrait +%%BoundingBox: 0 0 754 761 +%%Pages: 0 +%%BeginSetup +%%IncludeFeature: *PageSize Letter +%%EndSetup +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {} def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +-30.0 776.0 translate +1 -1 scale + +/clp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/l {lineto} bind def +/m {moveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit + 0.90000 0.90000 sc +0.500 slw +% Polyline +n 194 414 m 259 414 l 259 454 l 274 454 l gs col-1 s gr +% Polyline +n 194 234 m 274 234 l gs col-1 s gr +% Polyline +n 259 134 m 239 134 l 239 394 l 199 394 l gs col-1 s gr +% Polyline +n 259 54 m 219 54 l 219 389 l gs col-1 s gr +% Polyline +n 199 389 m 219 389 l gs col-1 s gr +% Polyline +n 279 254 m 259 254 l 259 399 l 199 399 l gs col-1 s gr +% Polyline +n 179 234 m 199 234 l gs col-1 s gr +% Polyline +n 259 74 m 199 74 l 199 214 l 179 214 l gs col-1 s gr +% Polyline +n 379 294 m 399 294 l gs col-1 s gr +% Polyline +n 384 239 m 459 239 l 459 514 l 499 514 l gs col-1 s gr +% Polyline +n 459 494 m 499 494 l gs col-1 s gr +% Polyline +n 379 274 m 514 274 l gs col-1 s gr +% Polyline +n 379 474 m 439 474 l gs col-1 s gr +% Polyline +n 379 494 m 439 494 l gs col-1 s gr +% Polyline +n 379 514 m 439 514 l gs col-1 s gr +% Polyline +n 379 534 m 439 534 l gs col-1 s gr +% Polyline +n 379 554 m 439 554 l gs col-1 s gr +% Polyline +n 379 574 m 439 574 l gs col-1 s gr +% Polyline +n 379 594 m 439 594 l gs col-1 s gr +% Polyline +n 379 614 m 439 614 l gs col-1 s gr +% Polyline +n 379 634 m 439 634 l gs col-1 s gr +% Polyline +n 379 654 m 439 654 l gs col-1 s gr +% Polyline +n 439 279 m 514 279 l gs col-1 s gr +% Polyline +n 434 439 m 444 449 l gs col-1 s gr +% Polyline +n 404 269 m 414 279 l gs col-1 s gr +% Polyline +n 454 439 m 464 449 l gs col-1 s gr +% Polyline +n 619 634 m 659 634 l gs col-1 s gr +% Polyline +n 634 519 m 644 529 l gs col-1 s gr +% Polyline +n 654 579 m 664 589 l gs col-1 s gr +% Polyline +n 499 494 m 519 494 l gs col-1 s gr +% Polyline +n 499 514 m 519 514 l gs col-1 s gr +% Polyline +n 599 104 m 599 79 l 514 79 l 514 104 l clp gs col-1 s gr +% Polyline +n 624 124 m 624 104 l 514 104 l 514 124 l clp gs col-1 s gr +% Polyline +n 459 534 m 499 534 l gs col-1 s gr +% Polyline +n 499 534 m 519 534 l gs col-1 s gr +% Polyline +n 459 534 m 459 514 l gs col-1 s gr +% Polyline +n 384 229 m 499 229 l 499 314 l 519 314 l gs col-1 s gr +% Polyline +n 624 114 m 639 114 l 639 354 l 619 354 l gs col-1 s gr +% Polyline +n 384 454 m 419 454 l 419 414 l 739 414 l gs col-1 s gr +% Polyline +n 384 449 m 399 449 l 399 399 l 699 399 l 699 54 l 739 54 l gs col-1 s gr +% Polyline +n 624 449 m 719 449 l 719 94 l 739 94 l gs col-1 s gr +% Polyline +n 679 134 m 744 134 l gs col-1 s gr +% Polyline +n 674 159 m 684 169 l gs col-1 s gr +% Polyline +n 839 74 m 859 74 l 859 249 l 844 249 l gs col-1 s gr +% Polyline +n 844 254 m 859 254 l 859 434 l 839 434 l gs col-1 s gr +% Polyline +n 624 269 m 679 269 l 679 114 l 739 114 l gs col-1 s gr +% Polyline +n 624 274 m 679 274 l 679 474 l 739 474 l gs col-1 s gr +% Polyline +n 521 284 m 514 284 514 357 7 arcto 4 {pop} repeat 514 364 617 364 7 arcto 4 {pop} repeat 624 364 624 291 7 arcto 4 {pop} repeat 624 284 521 284 7 arcto 4 {pop} repeat clp gs col-1 s gr +% Polyline +n 179 604 m 179 579 l 74 579 l 74 604 l clp gs col-1 s gr +% Polyline +n 184 704 m 184 679 l 74 679 l 74 704 l clp gs col-1 s gr +% Polyline +n 81 604 m 74 604 74 617 7 arcto 4 {pop} repeat 74 624 177 624 7 arcto 4 {pop} repeat 184 624 184 611 7 arcto 4 {pop} repeat 184 604 81 604 7 arcto 4 {pop} repeat clp gs col-1 s gr +% Polyline +n 184 724 m 184 704 l 74 704 l 74 724 l clp gs col-1 s gr +% Polyline +n 179 614 m 199 614 l 199 714 l 184 714 l gs col-1 s gr +% Polyline +n 184 764 m 184 724 l 74 724 l 74 764 l clp gs col-1 s gr +% Polyline +n 184 784 m 184 764 l 74 764 l 74 784 l clp gs col-1 s gr +% Polyline +n 81 724 m 74 724 74 777 7 arcto 4 {pop} repeat 74 784 177 784 7 arcto 4 {pop} repeat 184 784 184 731 7 arcto 4 {pop} repeat 184 724 81 724 7 arcto 4 {pop} repeat clp gs col-1 s gr +% Polyline +n 166 804 m 159 804 159 812 7 arcto 4 {pop} repeat 159 819 172 819 7 arcto 4 {pop} repeat 179 819 179 811 7 arcto 4 {pop} repeat 179 804 166 804 7 arcto 4 {pop} repeat clp gs col-1 s gr +% Polyline +n 439 654 m 439 279 l gs col-1 s gr +% Polyline + [4.4] 0 setdash +n 359 94 m 419 94 l 419 269 l 514 269 l gs col-1 s gr [] 0 setdash +% Polyline + [4.4] 0 setdash +n 384 234 m 479 234 l 479 334 l 519 334 l gs col-1 s gr [] 0 setdash +% Polyline + [4.4] 0 setdash +n 239 739 m 279 739 l gs col-1 s gr [] 0 setdash +% Polyline +n 239 759 m 279 759 l gs col-1 s gr +% Polyline + [4.4] 0 setdash +n 379 314 m 399 314 l gs col-1 s gr [] 0 setdash +% Polyline + [4.4] 0 setdash +n 379 334 m 399 334 l gs col-1 s gr [] 0 setdash +% Polyline + [4.4] 0 setdash +n 399 294 m 399 334 l gs col-1 s gr [] 0 setdash +% Polyline +n 399 274 m 399 294 l gs col-1 s gr +% Polyline + [4.4] 0 setdash +n 619 614 m 639 614 l gs col-1 s gr [] 0 setdash +% Polyline + [4.4] 0 setdash +n 619 594 m 639 594 l gs col-1 s gr [] 0 setdash +% Polyline +n 521 464 m 514 464 514 677 7 arcto 4 {pop} repeat 514 684 617 684 7 arcto 4 {pop} repeat 624 684 624 471 7 arcto 4 {pop} repeat 624 464 521 464 7 arcto 4 {pop} repeat clp gs col-1 s gr +% Polyline + [4.4] 0 setdash +n 639 594 m 639 614 l gs col-1 s gr [] 0 setdash +% Polyline + [4.4] 0 setdash +n 619 574 m 639 574 l gs col-1 s gr [] 0 setdash +% Polyline + [4.4] 0 setdash +n 619 554 m 639 554 l gs col-1 s gr [] 0 setdash +% Polyline + [4.4] 0 setdash +n 624 454 m 639 454 l 639 594 l gs col-1 s gr [] 0 setdash +% Polyline + [4.4] 0 setdash +n 619 654 m 659 654 l gs col-1 s gr [] 0 setdash +% Polyline + [4.4] 0 setdash +n 619 674 m 659 674 l gs col-1 s gr [] 0 setdash +% Polyline + [4.4] 0 setdash +n 659 674 m 659 654 l gs col-1 s gr [] 0 setdash +% Polyline +n 624 279 m 659 279 l 659 634 l gs col-1 s gr +% Polyline + [4.4] 0 setdash +n 659 634 m 659 654 l gs col-1 s gr [] 0 setdash +% Polyline +n 154 184 m 154 159 l 69 159 l 69 184 l clp gs col-1 s gr +% Polyline +n 76 184 m 69 184 69 237 7 arcto 4 {pop} repeat 69 244 172 244 7 arcto 4 {pop} repeat 179 244 179 191 7 arcto 4 {pop} repeat 179 184 76 184 7 arcto 4 {pop} repeat clp gs col-1 s gr +% Polyline +n 69 224 m 179 224 l gs col-1 s gr +% Polyline +n 174 414 m 194 414 l gs col-1 s gr +% Polyline +n 179 399 m 199 399 l gs col-1 s gr +% Polyline +n 179 394 m 199 394 l gs col-1 s gr +% Polyline +n 179 389 m 199 389 l gs col-1 s gr +% Polyline +n 179 404 m 179 384 l 69 384 l 69 404 l clp gs col-1 s gr +% Polyline +n 154 384 m 154 359 l 69 359 l 69 384 l clp gs col-1 s gr +% Polyline +n 179 424 m 179 404 l 69 404 l 69 424 l clp gs col-1 s gr +% Polyline +n 359 224 m 359 199 l 274 199 l 274 224 l clp gs col-1 s gr +% Polyline +n 384 244 m 384 224 l 274 224 l 274 244 l clp gs col-1 s gr +% Polyline +n 384 344 m 384 244 l 274 244 l 274 344 l clp gs col-1 s gr +% Polyline +n 339 44 m 339 19 l 254 19 l 254 44 l clp gs col-1 s gr +% Polyline +n 261 44 m 254 44 254 137 7 arcto 4 {pop} repeat 254 144 357 144 7 arcto 4 {pop} repeat 364 144 364 51 7 arcto 4 {pop} repeat 364 44 261 44 7 arcto 4 {pop} repeat clp gs col-1 s gr +% Polyline +n 254 124 m 364 124 l gs col-1 s gr +% Polyline +n 819 44 m 819 19 l 734 19 l 734 44 l clp gs col-1 s gr +% Polyline +n 741 44 m 734 44 734 137 7 arcto 4 {pop} repeat 734 144 837 144 7 arcto 4 {pop} repeat 844 144 844 51 7 arcto 4 {pop} repeat 844 44 741 44 7 arcto 4 {pop} repeat clp gs col-1 s gr +% Polyline +n 734 104 m 844 104 l gs col-1 s gr +% Polyline +n 819 244 m 819 219 l 734 219 l 734 244 l clp gs col-1 s gr +% Polyline +n 844 264 m 844 244 l 734 244 l 734 264 l clp gs col-1 s gr +% Polyline +n 599 264 m 599 239 l 514 239 l 514 264 l clp gs col-1 s gr +% Polyline +n 624 284 m 624 264 l 514 264 l 514 284 l clp gs col-1 s gr +% Polyline +n 624 364 m 624 284 l 514 284 l 514 364 l clp gs col-1 s gr +% Polyline +n 514 344 m 624 344 l gs col-1 s gr +% Polyline +n 819 404 m 819 379 l 734 379 l 734 404 l clp gs col-1 s gr +% Polyline +n 741 404 m 734 404 734 477 7 arcto 4 {pop} repeat 734 484 837 484 7 arcto 4 {pop} repeat 844 484 844 411 7 arcto 4 {pop} repeat 844 404 741 404 7 arcto 4 {pop} repeat clp gs col-1 s gr +% Polyline +n 734 464 m 844 464 l gs col-1 s gr +% Polyline +n 599 444 m 599 419 l 514 419 l 514 444 l clp gs col-1 s gr +% Polyline +n 624 464 m 624 444 l 514 444 l 514 464 l clp gs col-1 s gr +% Polyline +n 624 544 m 624 464 l 514 464 l 514 544 l clp gs col-1 s gr +% Polyline +n 624 684 m 624 544 l 514 544 l 514 684 l clp gs col-1 s gr +% Polyline +n 384 464 m 384 444 l 274 444 l 274 464 l clp gs col-1 s gr +% Polyline +n 359 444 m 359 419 l 274 419 l 274 444 l clp gs col-1 s gr +% Polyline +n 384 664 m 384 464 l 274 464 l 274 664 l clp gs col-1 s gr +% Interp Spline +n 219 799 m + 219.84 787.54 219.84 782.54 219 779 curveto + 217.75 773.72 212.79 763.10 209 759 curveto + 205.29 754.99 199.04 751.24 184 744 curveto + gs col-1 s gr + +n 190.34 749.27 m 184.00 744.00 l 192.08 745.67 l gs col-1 s gr +/Times-Roman findfont 14.00 scalefont setfont +589 339 m +gs 1 -1 sc ([8]) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +299 79 m +gs 1 -1 sc ([8]) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +119 659 m +gs 1 -1 sc (REFERS-TO) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +79 779 m +gs 1 -1 sc (non-key) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +249 459 m +gs 1 -1 sc (1) col-1 show gr +% Polyline +n 74 194 m 59 194 l 59 394 l 69 394 l gs col-1 s gr +/Times-Roman findfont 14.00 scalefont setfont +184 429 m +gs 1 -1 sc (0:N) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +189 859 m +gs 1 -1 sc (identified by the non-oid primary key in other contexts\).) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +49 399 m +gs 1 -1 sc (1) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +34 189 m +gs 1 -1 sc (13:N) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +264 229 m +gs 1 -1 sc (1) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +184 229 m +gs 1 -1 sc (0:N) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +184 209 m +gs 1 -1 sc (1) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +229 89 m +gs 1 -1 sc (0:N) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +209 379 m +gs 1 -1 sc (1) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +229 379 m +gs 1 -1 sc (1) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +249 379 m +gs 1 -1 sc (1) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +229 129 m +gs 1 -1 sc (0:N) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +229 49 m +gs 1 -1 sc (0:N) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +389 439 m +gs 1 -1 sc (1) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +409 439 m +gs 1 -1 sc (1) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +389 349 m +gs 1 -1 sc (0:N) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +504 264 m +gs 1 -1 sc (1) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +489 349 m +gs 1 -1 sc (0:N) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +489 329 m +gs 1 -1 sc (0:N) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +389 224 m +gs 1 -1 sc (1) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +629 369 m +gs 1 -1 sc (0:N) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +629 109 m +gs 1 -1 sc (1) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +429 669 m +gs 1 -1 sc (0:N) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +504 294 m +gs 1 -1 sc (1) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +369 89 m +gs 1 -1 sc (0:N) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +469 254 m +gs 1 -1 sc (1) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +389 254 m +gs 1 -1 sc (0:1) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +284 739 m +gs 1 -1 sc (optional) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +284 759 m +gs 1 -1 sc (mandatory) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +424 194 m +gs 1 -1 sc (0:1) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +709 49 m +gs 1 -1 sc (0:N) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +709 89 m +gs 1 -1 sc (0:N) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +629 444 m +gs 1 -1 sc (1) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +629 469 m +gs 1 -1 sc (1) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +629 629 m +gs 1 -1 sc (0:N) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +664 639 m +gs 1 -1 sc (0:N) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +649 294 m +gs 1 -1 sc (1) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +629 264 m +gs 1 -1 sc (1) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +669 299 m +gs 1 -1 sc (1) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +709 489 m +gs 1 -1 sc (0:N) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +689 429 m +gs 1 -1 sc (0:N) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +849 449 m +gs 1 -1 sc (0:N) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +849 69 m +gs 1 -1 sc (0:N) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +849 244 m +gs 1 -1 sc (1) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +849 269 m +gs 1 -1 sc (1) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +654 134 m +gs 1 -1 sc (0:N) col-1 show gr +/Times-Roman findfont 18.00 scalefont setfont +39 569 m +gs 1 -1 sc (KEY:) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +74 239 m +gs 1 -1 sc (atttypid) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +279 259 m +gs 1 -1 sc (typrelid) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +279 279 m +gs 1 -1 sc (typinput) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +279 299 m +gs 1 -1 sc (typoutput) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +279 319 m +gs 1 -1 sc (typreceive) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +279 339 m +gs 1 -1 sc (typsend) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +259 139 m +gs 1 -1 sc (indexrelid) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +739 119 m +gs 1 -1 sc (amopselect) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +739 139 m +gs 1 -1 sc (amopnpages) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +519 359 m +gs 1 -1 sc (prolang) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +739 479 m +gs 1 -1 sc (amproc) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +519 559 m +gs 1 -1 sc (oprcom) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +519 579 m +gs 1 -1 sc (oprnegate) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +519 599 m +gs 1 -1 sc (oprlsortop) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +519 619 m +gs 1 -1 sc (oprrsortop) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +519 639 m +gs 1 -1 sc (oprcode) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +519 659 m +gs 1 -1 sc (oprrest) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +519 679 m +gs 1 -1 sc (oprjoin) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +279 479 m +gs 1 -1 sc (amgettuple) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +279 499 m +gs 1 -1 sc (aminsert) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +279 519 m +gs 1 -1 sc (amdelete) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +279 539 m +gs 1 -1 sc (amgetattr) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +279 559 m +gs 1 -1 sc (ambeginscan) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +279 579 m +gs 1 -1 sc (amrescan) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +279 599 m +gs 1 -1 sc (amendscan) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +279 619 m +gs 1 -1 sc (ammarkpos) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +279 639 m +gs 1 -1 sc (amrestrpos) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +279 659 m +gs 1 -1 sc (ambuild) col-1 show gr +/Times-Bold findfont 14.00 scalefont setfont +79 599 m +gs 1 -1 sc (DEPENDENT) col-1 show gr +/Times-Bold findfont 14.00 scalefont setfont +79 699 m +gs 1 -1 sc (INDEPENDENT) col-1 show gr +/Times-Bold findfont 14.00 scalefont setfont +74 179 m +gs 1 -1 sc (pg_attribute) col-1 show gr +/Times-Bold findfont 14.00 scalefont setfont +74 379 m +gs 1 -1 sc (pg_class) col-1 show gr +/Times-Bold findfont 14.00 scalefont setfont +259 39 m +gs 1 -1 sc (pg_index) col-1 show gr +/Times-Bold findfont 14.00 scalefont setfont +279 219 m +gs 1 -1 sc (pg_type) col-1 show gr +/Times-Bold findfont 14.00 scalefont setfont +279 439 m +gs 1 -1 sc (pg_am) col-1 show gr +/Times-Bold findfont 14.00 scalefont setfont +519 259 m +gs 1 -1 sc (pg_proc) col-1 show gr +/Times-Bold findfont 14.00 scalefont setfont +519 99 m +gs 1 -1 sc (pg_language) col-1 show gr +/Times-Bold findfont 14.00 scalefont setfont +739 39 m +gs 1 -1 sc (pg_amop) col-1 show gr +/Times-Bold findfont 14.00 scalefont setfont +739 239 m +gs 1 -1 sc (pg_opclass) col-1 show gr +/Times-Bold findfont 14.00 scalefont setfont +739 399 m +gs 1 -1 sc (pg_amproc) col-1 show gr +/Times-Bold findfont 14.00 scalefont setfont +519 439 m +gs 1 -1 sc (pg_operator) col-1 show gr +/Times-BoldItalic findfont 14.00 scalefont setfont +74 199 m +gs 1 -1 sc (attrelid) col-1 show gr +/Times-BoldItalic findfont 14.00 scalefont setfont +74 219 m +gs 1 -1 sc (attnum) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +74 419 m +gs 1 -1 sc (relam) col-1 show gr +/Times-BoldItalic findfont 14.00 scalefont setfont +74 399 m +gs 1 -1 sc (oid) col-1 show gr +/Times-BoldItalic findfont 14.00 scalefont setfont +259 59 m +gs 1 -1 sc (indrelid) col-1 show gr +/Times-BoldItalic findfont 14.00 scalefont setfont +259 79 m +gs 1 -1 sc (indkey) col-1 show gr +/Times-BoldItalic findfont 14.00 scalefont setfont +259 99 m +gs 1 -1 sc (indproc) col-1 show gr +/Times-BoldItalic findfont 14.00 scalefont setfont +259 119 m +gs 1 -1 sc (indpred) col-1 show gr +/Times-BoldItalic findfont 14.00 scalefont setfont +279 239 m +gs 1 -1 sc (oid) col-1 show gr +/Times-BoldItalic findfont 14.00 scalefont setfont +279 459 m +gs 1 -1 sc (oid) col-1 show gr +/Times-BoldItalic findfont 14.00 scalefont setfont +519 279 m +gs 1 -1 sc (oid) col-1 show gr +/Times-BoldItalic findfont 14.00 scalefont setfont +519 119 m +gs 1 -1 sc (oid) col-1 show gr +/Times-BoldItalic findfont 14.00 scalefont setfont +739 59 m +gs 1 -1 sc (amopid) col-1 show gr +/Times-BoldItalic findfont 14.00 scalefont setfont +739 79 m +gs 1 -1 sc (amopclaid) col-1 show gr +/Times-BoldItalic findfont 14.00 scalefont setfont +739 99 m +gs 1 -1 sc (amopopr) col-1 show gr +/Times-BoldItalic findfont 14.00 scalefont setfont +739 259 m +gs 1 -1 sc (oid) col-1 show gr +/Times-BoldItalic findfont 14.00 scalefont setfont +739 419 m +gs 1 -1 sc (amid) col-1 show gr +/Times-BoldItalic findfont 14.00 scalefont setfont +739 439 m +gs 1 -1 sc (amopclaid) col-1 show gr +/Times-BoldItalic findfont 14.00 scalefont setfont +739 459 m +gs 1 -1 sc (amprocnum) col-1 show gr +/Times-BoldItalic findfont 14.00 scalefont setfont +519 459 m +gs 1 -1 sc (oid) col-1 show gr +/Times-BoldItalic findfont 14.00 scalefont setfont +79 719 m +gs 1 -1 sc (primary key) col-1 show gr +/Times-BoldItalic findfont 14.00 scalefont setfont +79 619 m +gs 1 -1 sc (foreign key) col-1 show gr +/Times-Italic findfont 14.00 scalefont setfont +79 739 m +gs 1 -1 sc (non-oid primary) col-1 show gr +/Times-Italic findfont 14.00 scalefont setfont +84 759 m +gs 1 -1 sc (key \(if any\)) col-1 show gr +/Times-Italic findfont 14.00 scalefont setfont +519 479 m +gs 1 -1 sc (oprname) col-1 show gr +/Times-Italic findfont 14.00 scalefont setfont +519 499 m +gs 1 -1 sc (oprleft) col-1 show gr +/Times-Italic findfont 14.00 scalefont setfont +519 519 m +gs 1 -1 sc (oprright) col-1 show gr +/Times-Italic findfont 14.00 scalefont setfont +519 539 m +gs 1 -1 sc (oprresult) col-1 show gr +/Times-Italic findfont 14.00 scalefont setfont +519 299 m +gs 1 -1 sc (proname) col-1 show gr +/Times-Italic findfont 14.00 scalefont setfont +519 319 m +gs 1 -1 sc (prorettype) col-1 show gr +/Times-Italic findfont 14.00 scalefont setfont +519 339 m +gs 1 -1 sc (proargtypes) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +189 819 m +gs 1 -1 sc (indicates these key values are alternate primary keys) col-1 show gr +/Times-Roman findfont 14.00 scalefont setfont +189 839 m +gs 1 -1 sc (\(i.e., this class is generally identified by oid but may be) col-1 show gr +$F2psEnd +restore +%%EndDocument +end PEND/F0 11/Times-Bold@0 SF(Figur)177.701 595.278 Q 2.75(e3)-.198 G +/F1 11/Times-Roman@0 SF 5.5(.T)-2.75 G(he major)-5.5 E/F2 10 +/Times-Roman@0 SF(POSTGRES)2.75 E F1(system catalogs.)2.75 E 77.5 +608.478 72 608.478 DL 80.5 608.478 75 608.478 DL 86 608.478 80.5 608.478 +DL 91.5 608.478 86 608.478 DL 97 608.478 91.5 608.478 DL 102.5 608.478 +97 608.478 DL 108 608.478 102.5 608.478 DL 113.5 608.478 108 608.478 DL +119 608.478 113.5 608.478 DL 124.5 608.478 119 608.478 DL 130 608.478 +124.5 608.478 DL 135.5 608.478 130 608.478 DL 141 608.478 135.5 608.478 +DL 146.5 608.478 141 608.478 DL 152 608.478 146.5 608.478 DL 157.5 +608.478 152 608.478 DL 163 608.478 157.5 608.478 DL 168.5 608.478 163 +608.478 DL 174 608.478 168.5 608.478 DL 179.5 608.478 174 608.478 DL 185 +608.478 179.5 608.478 DL 190.5 608.478 185 608.478 DL 196 608.478 190.5 +608.478 DL 201.5 608.478 196 608.478 DL 207 608.478 201.5 608.478 DL +212.5 608.478 207 608.478 DL 218 608.478 212.5 608.478 DL 223.5 608.478 +218 608.478 DL 229 608.478 223.5 608.478 DL 234.5 608.478 229 608.478 DL +240 608.478 234.5 608.478 DL 245.5 608.478 240 608.478 DL 251 608.478 +245.5 608.478 DL 256.5 608.478 251 608.478 DL 262 608.478 256.5 608.478 +DL 267.5 608.478 262 608.478 DL 273 608.478 267.5 608.478 DL 278.5 +608.478 273 608.478 DL 284 608.478 278.5 608.478 DL 289.5 608.478 284 +608.478 DL 295 608.478 289.5 608.478 DL 300.5 608.478 295 608.478 DL 306 +608.478 300.5 608.478 DL 311.5 608.478 306 608.478 DL 317 608.478 311.5 +608.478 DL 322.5 608.478 317 608.478 DL 328 608.478 322.5 608.478 DL +333.5 608.478 328 608.478 DL 339 608.478 333.5 608.478 DL 344.5 608.478 +339 608.478 DL 350 608.478 344.5 608.478 DL 355.5 608.478 350 608.478 DL +361 608.478 355.5 608.478 DL 366.5 608.478 361 608.478 DL 372 608.478 +366.5 608.478 DL 377.5 608.478 372 608.478 DL 383 608.478 377.5 608.478 +DL 388.5 608.478 383 608.478 DL 394 608.478 388.5 608.478 DL 399.5 +608.478 394 608.478 DL 405 608.478 399.5 608.478 DL 410.5 608.478 405 +608.478 DL 416 608.478 410.5 608.478 DL 421.5 608.478 416 608.478 DL 427 +608.478 421.5 608.478 DL 432.5 608.478 427 608.478 DL 438 608.478 432.5 +608.478 DL 443.5 608.478 438 608.478 DL 449 608.478 443.5 608.478 DL +454.5 608.478 449 608.478 DL 460 608.478 454.5 608.478 DL 465.5 608.478 +460 608.478 DL 471 608.478 465.5 608.478 DL 476.5 608.478 471 608.478 DL +482 608.478 476.5 608.478 DL 487.5 608.478 482 608.478 DL 493 608.478 +487.5 608.478 DL 498.5 608.478 493 608.478 DL 504 608.478 498.5 608.478 +DL 13.75(\(3\) T)113.5 649.078 R .962(ypes and procedures)-.88 F/F3 8 +/Times-Roman@0 SF(6)-4.4 I F1 .961(are central to the schema.)3.712 4.4 +N .961(Nearly e)6.461 F -.165(ve)-.275 G .961(ry catalog contains).165 F +.739(some reference to instances in one or both of these classes.) +142.826 662.278 R -.165(Fo)6.239 G 3.489(re).165 G(xample,)-3.654 E F2 +(POST)3.489 E(-)-.92 E(GRES)142.826 675.478 Q F1 .182(frequently uses t\ +ype signatures \(e.g., of functions and operators\) to identify)2.933 F +.32 LW 76 685.078 72 685.078 DL 80 685.078 76 685.078 DL 84 685.078 80 +685.078 DL 88 685.078 84 685.078 DL 92 685.078 88 685.078 DL 96 685.078 +92 685.078 DL 100 685.078 96 685.078 DL 104 685.078 100 685.078 DL 108 +685.078 104 685.078 DL 112 685.078 108 685.078 DL 116 685.078 112 +685.078 DL 120 685.078 116 685.078 DL 124 685.078 120 685.078 DL 128 +685.078 124 685.078 DL 132 685.078 128 685.078 DL 136 685.078 132 +685.078 DL 140 685.078 136 685.078 DL 144 685.078 140 685.078 DL 148 +685.078 144 685.078 DL 152 685.078 148 685.078 DL 156 685.078 152 +685.078 DL 160 685.078 156 685.078 DL 164 685.078 160 685.078 DL 168 +685.078 164 685.078 DL 172 685.078 168 685.078 DL 176 685.078 172 +685.078 DL 180 685.078 176 685.078 DL 184 685.078 180 685.078 DL 188 +685.078 184 685.078 DL 192 685.078 188 685.078 DL 196 685.078 192 +685.078 DL 200 685.078 196 685.078 DL 204 685.078 200 685.078 DL 208 +685.078 204 685.078 DL 212 685.078 208 685.078 DL 216 685.078 212 +685.078 DL/F4 5/Times-Roman@0 SF(6)93.6 695.478 Q F3 1.28 -.64(We u)2 +3.2 P(se the w).64 E(ords)-.08 E/F5 8/Times-Italic@0 SF(pr)2 E(ocedur) +-.36 E(e)-.296 E F3(and)2 E F5(function)2 E F3(more or less interchang)2 +E(ably)-.04 E(.)-.52 E F0(23)282.5 756 Q EP +%%Trailer +end +%%EOF -- 2.40.0