diff --git a/src/backend/distributed/deparser/deparse_statistics_stmts.c b/src/backend/distributed/deparser/deparse_statistics_stmts.c index 4da69a041..e6f8fc262 100644 --- a/src/backend/distributed/deparser/deparse_statistics_stmts.c +++ b/src/backend/distributed/deparser/deparse_statistics_stmts.c @@ -12,6 +12,8 @@ */ #include "postgres.h" +#include "distributed/pg_version_constants.h" + #include "distributed/citus_ruleutils.h" #include "distributed/deparser.h" #include "distributed/listutils.h" @@ -231,7 +233,25 @@ AppendStatTypes(StringInfo buf, CreateStatsStmt *stmt) appendStringInfoString(buf, ")"); } +#if PG_VERSION_NUM >= PG_VERSION_14 +static void +AppendColumnNames(StringInfo buf, CreateStatsStmt *stmt) +{ + StatsElem *column = NULL; + foreach_ptr(column, stmt->exprs) + { + const char *columnName = quote_identifier(column->name); + + appendStringInfoString(buf, columnName); + + if (column != llast(stmt->exprs)) + { + appendStringInfoString(buf, ", "); + } + } +} +#else static void AppendColumnNames(StringInfo buf, CreateStatsStmt *stmt) { @@ -257,7 +277,7 @@ AppendColumnNames(StringInfo buf, CreateStatsStmt *stmt) } } } - +#endif static void AppendTableName(StringInfo buf, CreateStatsStmt *stmt) diff --git a/src/test/regress/expected/propagate_statistics.out b/src/test/regress/expected/propagate_statistics.out index 1c798c526..fd4f8e6e2 100644 --- a/src/test/regress/expected/propagate_statistics.out +++ b/src/test/regress/expected/propagate_statistics.out @@ -99,12 +99,7 @@ SELECT create_distributed_table('test','x'); (1 row) -CREATE STATISTICS stats_xy ON (x, y) FROM test; -ERROR: only simple column references are allowed in CREATE STATISTICS -CREATE STATISTICS stats_xy ON x+y FROM test; -ERROR: only simple column references are allowed in CREATE STATISTICS CREATE STATISTICS stats_xy ON x,y FROM test; -CREATE STATISTICS IF NOT EXISTS stats_xy ON x+y FROM test; \c - - - :worker_1_port SELECT stxname FROM pg_statistic_ext diff --git a/src/test/regress/sql/propagate_statistics.sql b/src/test/regress/sql/propagate_statistics.sql index 51d3076f2..898387eaa 100644 --- a/src/test/regress/sql/propagate_statistics.sql +++ b/src/test/regress/sql/propagate_statistics.sql @@ -79,10 +79,7 @@ SELECT create_distributed_table('ownertest','a'); CREATE TABLE test (x int, y int); SELECT create_distributed_table('test','x'); -CREATE STATISTICS stats_xy ON (x, y) FROM test; -CREATE STATISTICS stats_xy ON x+y FROM test; CREATE STATISTICS stats_xy ON x,y FROM test; -CREATE STATISTICS IF NOT EXISTS stats_xy ON x+y FROM test; \c - - - :worker_1_port SELECT stxname