diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2019-12-25 15:44:15 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2019-12-25 15:44:15 -0500 |
commit | bb4114a4e2c65f27931cc074214c051dba2876c3 (patch) | |
tree | f197bcc85c7479e20905e9f821893d5c49eb67b3 /src/backend/utils/cache | |
parent | 42f74f49367bee1d3da28c4b383faec29364f320 (diff) | |
download | postgresql-bb4114a4e2c65f27931cc074214c051dba2876c3.tar.gz postgresql-bb4114a4e2c65f27931cc074214c051dba2876c3.zip |
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
Diffstat (limited to 'src/backend/utils/cache')
-rw-r--r-- | src/backend/utils/cache/partcache.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/src/backend/utils/cache/partcache.c b/src/backend/utils/cache/partcache.c index e2144c83aba..bf1754ea382 100644 --- a/src/backend/utils/cache/partcache.c +++ b/src/backend/utils/cache/partcache.c @@ -342,7 +342,6 @@ generate_partition_qual(Relation rel) List *my_qual = NIL, *result = NIL; Relation parent; - bool found_whole_row; /* Guard against stack overflow due to overly deep partition tree */ check_stack_depth(); @@ -388,11 +387,7 @@ generate_partition_qual(Relation rel) * in it to bear this relation's attnos. It's safe to assume varno = 1 * here. */ - result = map_partition_varattnos(result, 1, rel, parent, - &found_whole_row); - /* There can never be a whole-row reference here */ - if (found_whole_row) - elog(ERROR, "unexpected whole-row reference found in partition key"); + result = map_partition_varattnos(result, 1, rel, parent); /* Assert that we're not leaking any old data during assignments below */ Assert(rel->rd_partcheckcxt == NULL); |