diff options
Diffstat (limited to 'src/backend/rewrite/rewriteDefine.c')
-rw-r--r-- | src/backend/rewrite/rewriteDefine.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/backend/rewrite/rewriteDefine.c b/src/backend/rewrite/rewriteDefine.c index fb576219627..3157aba330d 100644 --- a/src/backend/rewrite/rewriteDefine.c +++ b/src/backend/rewrite/rewriteDefine.c @@ -38,6 +38,7 @@ #include "utils/inval.h" #include "utils/lsyscache.h" #include "utils/rel.h" +#include "utils/snapmgr.h" #include "utils/syscache.h" #include "utils/tqual.h" @@ -418,14 +419,17 @@ DefineQueryRewrite(char *rulename, event_relation->rd_rel->relkind != RELKIND_MATVIEW) { HeapScanDesc scanDesc; + Snapshot snapshot; - scanDesc = heap_beginscan(event_relation, SnapshotNow, 0, NULL); + snapshot = RegisterSnapshot(GetLatestSnapshot()); + scanDesc = heap_beginscan(event_relation, snapshot, 0, NULL); if (heap_getnext(scanDesc, ForwardScanDirection) != NULL) ereport(ERROR, (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), errmsg("could not convert table \"%s\" to a view because it is not empty", RelationGetRelationName(event_relation)))); heap_endscan(scanDesc); + UnregisterSnapshot(snapshot); if (event_relation->rd_rel->relhastriggers) ereport(ERROR, |