pgsql: Fix handling of extended expression statistics in CREATE TABLE L

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Fix handling of extended expression statistics in CREATE TABLE L
Дата
Msg-id E1s9tuu-001NMG-62@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix handling of extended expression statistics in CREATE TABLE LIKE.

transformTableLikeClause believed that it could process extended
statistics immediately because "the representation of CreateStatsStmt
doesn't depend on column numbers".  That was true when extended stats
were first introduced, but it was falsified by the addition of
extended stats on expressions: the parsed expression tree is fed
forward by the LIKE option, and that will contain Vars.  So if the
new table doesn't have attnums identical to the old one's (typically
because there are some dropped columns in the old one), that doesn't
work.  The CREATE goes through, but it emits invalid statistics
objects that will cause problems later.

Fortunately, we already have logic that can adapt expression trees
to the possibly-new column numbering.  To use it, we have to delay
processing of CREATE_TABLE_LIKE_STATISTICS into expandTableLikeClause,
just as for other LIKE options that involve expressions.

Per bug #18468 from Alexander Lakhin.  Back-patch to v14 where
extended statistics on expressions were added.

Discussion: https://postgr.es/m/18468-f5add190e3fa5902@postgresql.org

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/5278668d7a460d0fac3578d494c039dbc1fc5e89

Modified Files
--------------
src/backend/parser/parse_utilcmd.c              | 136 +++++++++++-------------
src/test/regress/expected/create_table_like.out |  15 +++
src/test/regress/sql/create_table_like.sql      |   8 ++
3 files changed, 86 insertions(+), 73 deletions(-)


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

Предыдущее
От: noreply@postgresql.org
Дата:
Сообщение: pgsql: Tag refs/tags/REL_17_BETA1 was created
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Fix handling of extended expression statistics in CREATE TABLE L