aboutsummaryrefslogtreecommitdiff
path: root/src/backend/rewrite/rewriteDefine.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2008-11-09 21:24:33 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2008-11-09 21:24:33 +0000
commite4718f2c9eff30dedd022fac53a1f874aa1955d8 (patch)
treeafd1c98430fa8ba0ae6efe897745cc314d08eaed /src/backend/rewrite/rewriteDefine.c
parent1d577f5e49400465bd8cc3f91b67d03a551528c3 (diff)
downloadpostgresql-e4718f2c9eff30dedd022fac53a1f874aa1955d8.tar.gz
postgresql-e4718f2c9eff30dedd022fac53a1f874aa1955d8.zip
Replace pg_class.reltriggers with relhastriggers, which is just a boolean hint
("there might be triggers") rather than an exact count. This is necessary catalog infrastructure for the upcoming patch to reduce the strength of locking needed for trigger addition/removal. Split out and committed separately for ease of reviewing/testing. In passing, also get rid of the unused pg_class columns relukeys, relfkeys, and relrefs, which haven't been maintained in many years and now have no chance of ever being maintained (because of wishing to avoid locking). Simon Riggs
Diffstat (limited to 'src/backend/rewrite/rewriteDefine.c')
-rw-r--r--src/backend/rewrite/rewriteDefine.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/backend/rewrite/rewriteDefine.c b/src/backend/rewrite/rewriteDefine.c
index 6f40944ef26..6212add6bcb 100644
--- a/src/backend/rewrite/rewriteDefine.c
+++ b/src/backend/rewrite/rewriteDefine.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/rewrite/rewriteDefine.c,v 1.131 2008/11/02 01:45:28 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/rewrite/rewriteDefine.c,v 1.132 2008/11/09 21:24:32 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -371,7 +371,11 @@ DefineQueryRewrite(char *rulename,
*
* If so, check that the relation is empty because the storage for the
* relation is going to be deleted. Also insist that the rel not have
- * any triggers, indexes, or child tables.
+ * any triggers, indexes, or child tables. (Note: these tests are
+ * too strict, because they will reject relations that once had such
+ * but don't anymore. But we don't really care, because this whole
+ * business of converting relations to views is just a kluge to allow
+ * loading ancient pg_dump files.)
*/
if (event_relation->rd_rel->relkind != RELKIND_VIEW)
{
@@ -385,7 +389,7 @@ DefineQueryRewrite(char *rulename,
RelationGetRelationName(event_relation))));
heap_endscan(scanDesc);
- if (event_relation->rd_rel->reltriggers != 0)
+ if (event_relation->rd_rel->relhastriggers)
ereport(ERROR,
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("could not convert table \"%s\" to a view because it has triggers",