aboutsummaryrefslogtreecommitdiff
path: root/src/backend/rewrite/rewriteHandler.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/rewrite/rewriteHandler.c')
-rw-r--r--src/backend/rewrite/rewriteHandler.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c
index 3a50642fce8..c0d25b15c60 100644
--- a/src/backend/rewrite/rewriteHandler.c
+++ b/src/backend/rewrite/rewriteHandler.c
@@ -144,6 +144,13 @@ AcquireRewriteLocks(Query *parsetree, bool forUpdatePushedDown)
lockmode = AccessShareLock;
rel = heap_open(rte->relid, lockmode);
+
+ /*
+ * While we have the relation open, update the RTE's relkind,
+ * just in case it changed since this rule was made.
+ */
+ rte->relkind = rel->rd_rel->relkind;
+
heap_close(rel, NoLock);
break;
@@ -1393,7 +1400,7 @@ markQueryForLocking(Query *qry, Node *jtnode,
if (rte->rtekind == RTE_RELATION)
{
/* ignore foreign tables */
- if (get_rel_relkind(rte->relid) != RELKIND_FOREIGN_TABLE)
+ if (rte->relkind != RELKIND_FOREIGN_TABLE)
{
applyLockingClause(qry, rti, forUpdate, noWait, pushedDown);
rte->requiredPerms |= ACL_SELECT_FOR_UPDATE;