aboutsummaryrefslogtreecommitdiff
path: root/src/include/utils/syscache.h
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2007-02-14 01:58:58 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2007-02-14 01:58:58 +0000
commit7bddca3450cc8631e5bf05e43988cf10ae32230e (patch)
tree0bdc9972eb5c687d2dd6d266295de3d317dee229 /src/include/utils/syscache.h
parent65e2f55031802dd1ee8f22d880e49b94b3534483 (diff)
downloadpostgresql-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.h75
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);