Re: unsupportable composite type partition keys
Amit Langote <amitlangote09@gmail.com>
From: Amit Langote <amitlangote09@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2019-12-18T06:13:48Z
Lists: pgsql-hackers
On Wed, Dec 18, 2019 at 2:12 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: > Amit Langote <amitlangote09@gmail.com> writes: > > It seems to me that we currently allow expressions that are anonymous > > and self-referencing composite type records as partition key, but > > shouldn't. Allowing them leads to this: > > Hm. Seems like the restrictions here ought to be just about the same > as on index columns, no? That is, it should be roughly a test like > "no pseudo-types". The check you're proposing seems awfully specific, > and I doubt that the equivalent check in CREATE INDEX looks the same. > (But I didn't go look ... I might be wrong.) We also need to disallow self-referencing composite type in the case of partitioning, because otherwise it leads to infinite recursion shown in my first email. The timing of building PartitionDesc is what causes it, because the construction of PartitionBoundInfo in turn requires opening the parent relation if the partition partition key is of self-referencing composite type, because we need the TupleDesc when sorting the partition bounds. Maybe we'll need to rearrange that someday so that PartitionDesc is built outside RelationBuildDesc path, so this infinite recursion doesn't occur, but maybe allowing this case isn't that useful to begin with? Thanks, Amit
Commits
-
Fix CheckAttributeType's handling of collations for ranges.
- f521ef0ae319 9.4.26 landed
- de3d2df75169 10.12 landed
- 74b35eb468dc 13.0 landed
- 742c646c1987 9.6.17 landed
- 65aa155135a5 12.2 landed
- 59047b6d0c93 9.5.21 landed
- 25dc267a1be5 11.7 landed
-
Improve comments in utils/rel.h.
- fbe0232358c1 13.0 landed
-
Allow whole-row Vars to be used in partitioning expressions.
- bb4114a4e2c6 13.0 landed
-
Remove equalPartitionDescs().
- 42f74f49367b 13.0 landed
-
Load relcache entries' partitioning data on-demand, not immediately.
- 5b9312378e2f 13.0 landed
-
Disallow partition key expressions that return pseudo-types.
- ea1205a02a03 10.12 landed
- 7fbb39a967ea 12.2 landed
- 281dd22ac015 11.7 landed
- 39ebb943de9d 13.0 landed
-
Prevent a rowtype from being included in itself via a range.
- 6609c3ad984b 9.5.21 landed
- 4af2531d0393 10.12 landed
- 354d913f9745 9.6.17 landed
- 31dfa40a8341 11.7 landed
- 0d245d13c643 9.4.26 landed
- fc7695891d35 13.0 landed
- 976cb11f6c58 12.2 landed