pg.ddx.io pgsql-committers@postgresql.org mailing list archivehelp / color / mirror / Atom feed
pgsql: Fix handling of extended expression statistics in CREATE TABLE L 4+ messages / 1 participants [nested] [flat]
* pgsql: Fix handling of extended expression statistics in CREATE TABLE L @ 2024-05-22 21:54 Tom Lane <tgl@sss.pgh.pa.us> 0 siblings, 0 replies; 4+ messages in thread From: Tom Lane @ 2024-05-22 21:54 UTC (permalink / raw) To: pgsql-committers@lists.postgresql.org 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(-) ^ permalink raw reply [nested|flat] 4+ messages in thread
* pgsql: Fix handling of extended expression statistics in CREATE TABLE L @ 2024-05-22 21:54 Tom Lane <tgl@sss.pgh.pa.us> 0 siblings, 0 replies; 4+ messages in thread From: Tom Lane @ 2024-05-22 21:54 UTC (permalink / raw) To: pgsql-committers@lists.postgresql.org 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 ------ REL_16_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/2aa90c02dc6983bf0066bf6df18b713fde916cf7 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(-) ^ permalink raw reply [nested|flat] 4+ messages in thread
* pgsql: Fix handling of extended expression statistics in CREATE TABLE L @ 2024-05-22 21:54 Tom Lane <tgl@sss.pgh.pa.us> 0 siblings, 0 replies; 4+ messages in thread From: Tom Lane @ 2024-05-22 21:54 UTC (permalink / raw) To: pgsql-committers@lists.postgresql.org 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 ------ REL_14_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/1015162c353510854a3c47ad10b78029664ab13a 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(-) ^ permalink raw reply [nested|flat] 4+ messages in thread
* pgsql: Fix handling of extended expression statistics in CREATE TABLE L @ 2024-05-22 21:54 Tom Lane <tgl@sss.pgh.pa.us> 0 siblings, 0 replies; 4+ messages in thread From: Tom Lane @ 2024-05-22 21:54 UTC (permalink / raw) To: pgsql-committers@lists.postgresql.org 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 ------ REL_15_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/2f3cfcf7677ff11ca0ca18b67bd8fc1ea6ae6dd5 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(-) ^ permalink raw reply [nested|flat] 4+ messages in thread
end of thread, other threads:[~2024-05-22 21:54 UTC | newest] Thread overview: 4+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2024-05-22 21:54 pgsql: Fix handling of extended expression statistics in CREATE TABLE L Tom Lane <tgl@sss.pgh.pa.us> 2024-05-22 21:54 pgsql: Fix handling of extended expression statistics in CREATE TABLE L Tom Lane <tgl@sss.pgh.pa.us> 2024-05-22 21:54 pgsql: Fix handling of extended expression statistics in CREATE TABLE L Tom Lane <tgl@sss.pgh.pa.us> 2024-05-22 21:54 pgsql: Fix handling of extended expression statistics in CREATE TABLE L Tom Lane <tgl@sss.pgh.pa.us>
This inbox is served by DDX for PostgreSQL; see mirroring instructions for how to clone and mirror all data and code used for this inbox