diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2007-02-14 01:58:58 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2007-02-14 01:58:58 +0000 |
commit | 7bddca3450cc8631e5bf05e43988cf10ae32230e (patch) | |
tree | 0bdc9972eb5c687d2dd6d266295de3d317dee229 /src/include/utils/syscache.h | |
parent | 65e2f55031802dd1ee8f22d880e49b94b3534483 (diff) | |
download | postgresql-7bddca3450cc8631e5bf05e43988cf10ae32230e.tar.gz postgresql-7bddca3450cc8631e5bf05e43988cf10ae32230e.zip |
Fix up foreign-key mechanism so that there is a sound semantic basis for the
equality checks it applies, instead of a random dependence on whatever
operators might be named "=". The equality operators will now be selected
from the opfamily of the unique index that the FK constraint depends on to
enforce uniqueness of the referenced columns; therefore they are certain to be
consistent with that index's notion of equality. Among other things this
should fix the problem noted awhile back that pg_dump may fail for foreign-key
constraints on user-defined types when the required operators aren't in the
search path. This also means that the former warning condition about "foreign
key constraint will require costly sequential scans" is gone: if the
comparison condition isn't indexable then we'll reject the constraint
entirely. All per past discussions.
Along the way, make the RI triggers look into pg_constraint for their
information, instead of using pg_trigger.tgargs; and get rid of the always
error-prone fixed-size string buffers in ri_triggers.c in favor of building up
the RI queries in StringInfo buffers.
initdb forced due to columns added to pg_constraint and pg_trigger.
Diffstat (limited to 'src/include/utils/syscache.h')
-rw-r--r-- | src/include/utils/syscache.h | 75 |
1 files changed, 38 insertions, 37 deletions
diff --git a/src/include/utils/syscache.h b/src/include/utils/syscache.h index b8e55e57efa..c6967251ce1 100644 --- a/src/include/utils/syscache.h +++ b/src/include/utils/syscache.h @@ -9,7 +9,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/utils/syscache.h,v 1.67 2007/01/05 22:19:59 momjian Exp $ + * $PostgreSQL: pgsql/src/include/utils/syscache.h,v 1.68 2007/02/14 01:58:58 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -28,42 +28,43 @@ * Keep them in alphabetical order. */ -#define AGGFNOID 0 -#define AMNAME 1 -#define AMOID 2 -#define AMOPOPID 3 -#define AMOPSTRATEGY 4 -#define AMPROCNUM 5 -#define ATTNAME 6 -#define ATTNUM 7 -#define AUTHMEMMEMROLE 8 -#define AUTHMEMROLEMEM 9 -#define AUTHNAME 10 -#define AUTHOID 11 -#define CASTSOURCETARGET 12 -#define CLAAMNAMENSP 13 -#define CLAOID 14 -#define CONDEFAULT 15 -#define CONNAMENSP 16 -#define CONOID 17 -#define DATABASEOID 18 -#define INDEXRELID 19 -#define LANGNAME 20 -#define LANGOID 21 -#define NAMESPACENAME 22 -#define NAMESPACEOID 23 -#define OPERNAMENSP 24 -#define OPEROID 25 -#define OPFAMILYAMNAMENSP 26 -#define OPFAMILYOID 27 -#define PROCNAMEARGSNSP 28 -#define PROCOID 29 -#define RELNAMENSP 30 -#define RELOID 31 -#define RULERELNAME 32 -#define STATRELATT 33 -#define TYPENAMENSP 34 -#define TYPEOID 35 +#define AGGFNOID 0 +#define AMNAME 1 +#define AMOID 2 +#define AMOPOPID 3 +#define AMOPSTRATEGY 4 +#define AMPROCNUM 5 +#define ATTNAME 6 +#define ATTNUM 7 +#define AUTHMEMMEMROLE 8 +#define AUTHMEMROLEMEM 9 +#define AUTHNAME 10 +#define AUTHOID 11 +#define CASTSOURCETARGET 12 +#define CLAAMNAMENSP 13 +#define CLAOID 14 +#define CONDEFAULT 15 +#define CONNAMENSP 16 +#define CONSTROID 17 +#define CONVOID 18 +#define DATABASEOID 19 +#define INDEXRELID 20 +#define LANGNAME 21 +#define LANGOID 22 +#define NAMESPACENAME 23 +#define NAMESPACEOID 24 +#define OPERNAMENSP 25 +#define OPEROID 26 +#define OPFAMILYAMNAMENSP 27 +#define OPFAMILYOID 28 +#define PROCNAMEARGSNSP 29 +#define PROCOID 30 +#define RELNAMENSP 31 +#define RELOID 32 +#define RULERELNAME 33 +#define STATRELATT 34 +#define TYPENAMENSP 35 +#define TYPEOID 36 extern void InitCatalogCache(void); extern void InitCatalogCachePhase2(void); |