]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Disallow partition key expressions that return pseudo-types.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 23 Dec 2019 17:53:13 +0000 (12:53 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 23 Dec 2019 17:53:13 +0000 (12:53 -0500)
commit281dd22ac0150603ab82c052a9b5995cc2c5fb8f
treed020e70c2a5632ca60dceb38e4dc84343f717652
parent31dfa40a834177b8e989a59252ee3ce1a3309075
Disallow partition key expressions that return pseudo-types.

This wasn't checked originally, but it should have been, because
in general pseudo-types can't be stored to and retrieved from disk.
Notably, partition bound values of type "record" would not be
interpretable by another session.

In v12 and HEAD, add another flag to CheckAttributeType's repertoire
so that it can produce a specific error message for this case.  That's
infeasible in older branches without an ABI break, so fall back to
a slightly-less-nicely-worded error message in v10 and v11.

Problem noted by Amit Langote, though this patch is not his initial
solution.  Back-patch to v10 where partitioning was introduced.

Discussion: https://postgr.es/m/CA+HiwqFUzjfj9HEsJtYWcr1SgQ_=iCAvQ=O2Sx6aQxoDu4OiHw@mail.gmail.com
src/backend/commands/tablecmds.c
src/test/regress/expected/create_table.out
src/test/regress/sql/create_table.sql