From bb4114a4e2c65f27931cc074214c051dba2876c3 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Wed, 25 Dec 2019 15:44:15 -0500 Subject: Allow whole-row Vars to be used in partitioning expressions. In the wake of commit 5b9312378, there's no particular reason for this restriction (previously, it was problematic because of the implied rowtype reference). A simple constraint on a whole-row Var probably isn't that useful, but conceivably somebody would want to pass one to a function that extracts a partitioning key. Besides which, we're expending much more code to enforce the restriction than we save by having it, since the latter quantity is now zero. So drop the restriction. Amit Langote Discussion: https://postgr.es/m/CA+HiwqFUzjfj9HEsJtYWcr1SgQ_=iCAvQ=O2Sx6aQxoDu4OiHw@mail.gmail.com --- src/backend/commands/trigger.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) (limited to 'src/backend/commands/trigger.c') diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index 7e9bcb317d5..b9fca3af3c7 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -1144,7 +1144,6 @@ CreateTrigger(CreateTrigStmt *stmt, const char *queryString, CreateTrigStmt *childStmt; Relation childTbl; Node *qual; - bool found_whole_row; childTbl = table_open(partdesc->oids[i], ShareRowExclusiveLock); @@ -1177,16 +1176,10 @@ CreateTrigger(CreateTrigStmt *stmt, const char *queryString, qual = copyObject(whenClause); qual = (Node *) map_partition_varattnos((List *) qual, PRS2_OLD_VARNO, - childTbl, rel, - &found_whole_row); - if (found_whole_row) - elog(ERROR, "unexpected whole-row reference found in trigger WHEN clause"); + childTbl, rel); qual = (Node *) map_partition_varattnos((List *) qual, PRS2_NEW_VARNO, - childTbl, rel, - &found_whole_row); - if (found_whole_row) - elog(ERROR, "unexpected whole-row reference found in trigger WHEN clause"); + childTbl, rel); CreateTrigger(childStmt, queryString, partdesc->oids[i], refRelOid, -- cgit v1.2.3