pgsql: Clarify use of temporary tables within partition trees
От | Michael Paquier |
---|---|
Тема | pgsql: Clarify use of temporary tables within partition trees |
Дата | |
Msg-id | E1fVSJT-0000Lv-Mw@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Clarify use of temporary tables within partition trees Since their introduction, partition trees have been a bit lossy regarding temporary relations. Inheritance trees respect the following patterns: 1) a child relation can be temporary if the parent is permanent. 2) a child relation can be temporary if the parent is temporary. 3) a child relation cannot be permanent if the parent is temporary. 4) The use of temporary relations also imply that when both parent and child need to be from the same sessions. Partitions share many similar patterns with inheritance, however the handling of the partition bounds make the situation a bit tricky for case 1) as the partition code bases a lot of its lookup code upon PartitionDesc which does not really look after relpersistence. This causes for example a temporary partition created by session A to be visible by another session B, preventing this session B to create an extra partition which overlaps with the temporary one created by A with a non-intuitive error message. There could be use-cases where mixing permanent partitioned tables with temporary partitions make sense, but that would be a new feature. Partitions respect 2), 3) and 4) already. It is a bit depressing to see those error checks happening in MergeAttributes() whose purpose is different, but that's left as future refactoring work. Back-patch down to 10, which is where partitioning has been introduced, except that default partitions do not apply there. Documentation also includes limitations related to the use of temporary tables with partition trees. Reported-by: David Rowley Author: Amit Langote, Michael Paquier Reviewed-by: Ashutosh Bapat, Amit Langote, Michael Paquier Discussion: https://postgr.es/m/CAKJS1f94Ojk0og9GMkRHGt8wHTW=ijq5KzJKuoBoqWLwSVwGmw@mail.gmail.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/1c7c317cd9d1e5647454deed11b55dae764c83bf Modified Files -------------- doc/src/sgml/ddl.sgml | 10 ++++++++++ src/backend/commands/tablecmds.c | 21 +++++++++++++++++++++ src/test/regress/expected/alter_table.out | 13 +++++++++++++ src/test/regress/expected/create_table.out | 10 ++++++++++ src/test/regress/expected/foreign_data.out | 11 +++++++++++ src/test/regress/expected/partition_prune.out | 21 +++++++++++++++++++++ src/test/regress/sql/alter_table.sql | 12 ++++++++++++ src/test/regress/sql/create_table.sql | 9 +++++++++ src/test/regress/sql/foreign_data.sql | 10 ++++++++++ src/test/regress/sql/partition_prune.sql | 8 ++++++++ 10 files changed, 125 insertions(+)
В списке pgsql-committers по дате отправления: