pgsql: Improve compression and storage support with inheritance

Поиск
Список
Период
Сортировка
От Peter Eisentraut
Тема pgsql: Improve compression and storage support with inheritance
Дата
Msg-id E1raxid-006Wtz-TT@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Improve compression and storage support with inheritance

A child table can specify a compression or storage method different
from its parents.  This was previously an error.  (But this was
inconsistently enforced because for example the settings could be
changed later using ALTER TABLE.)  This now also allows an explicit
override if multiple parents have different compression or storage
settings, which was previously an error that could not be overridden.

The compression and storage properties remains unchanged in a child
inheriting from parent(s) after its creation, i.e., when using ALTER
TABLE ...  INHERIT.  (This is not changed.)

Before this change, the error detail would mention the first pair of
conflicting parent compression or storage methods.  But with this
change it waits till the child specification is considered by which
time we may have encountered many such conflicting pairs.  Hence the
error detail after this change does not include the conflicting
compression/storage methods.  Those can be obtained from parent
definitions if necessary.  The code to maintain list of all
conflicting methods or even the first conflicting pair does not seem
worth the convenience it offers.  This change is inline with what we
do with conflicting default values.

Before this commit, the specified storage method could be stored in
ColumnDef::storage (CREATE TABLE ... LIKE) or ColumnDef::storage_name
(CREATE TABLE ...).  This caused the MergeChildAttribute() and
MergeInheritedAttribute() to ignore a storage method specified in the
child definition since it looked only at ColumnDef::storage.  This
commit removes ColumnDef::storage and instead uses
ColumnDef::storage_name to save any storage method specification. This
is similar to how compression method specification is handled.

Author: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Discussion: https://www.postgresql.org/message-id/flat/24656cec-d6ef-4d15-8b5b-e8dfc9c833a7@eisentraut.org

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/0413a556990ba628a3de8a0b58be020fd9a14ed0

Modified Files
--------------
doc/src/sgml/ref/create_table.sgml              |   8 +-
src/backend/catalog/pg_type.c                   |  23 ++++
src/backend/commands/tablecmds.c                | 138 +++++++++++-------------
src/backend/nodes/makefuncs.c                   |   2 +-
src/backend/parser/gram.y                       |   7 +-
src/backend/parser/parse_utilcmd.c              |   7 +-
src/include/catalog/pg_type.h                   |   2 +
src/include/nodes/parsenodes.h                  |   5 +-
src/test/regress/expected/compression.out       | 101 +++++++++++++++--
src/test/regress/expected/compression_1.out     | 111 +++++++++++++++++--
src/test/regress/expected/create_table_like.out |  12 +--
src/test/regress/expected/inherit.out           |  38 +++++++
src/test/regress/sql/compression.sql            |  43 +++++++-
src/test/regress/sql/create_table_like.sql      |   2 +-
src/test/regress/sql/inherit.sql                |  20 ++++
15 files changed, 408 insertions(+), 111 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: pgsql: Remove non-existing file from .gitattributes
Следующее
От: Alexander Korotkov
Дата:
Сообщение: pgsql: Remove timeouts-long.out