mirror of https://github.com/citusdata/citus.git
Extended statistics on expressions - PG14 a4d75c8 (#5224)
(cherry picked from commit 1268415f123b5d99cfacfe207c8670240efc1c00)pull/5209/head
parent
113d5d6615
commit
1ff7186d20
|
@ -241,6 +241,14 @@ AppendColumnNames(StringInfo buf, CreateStatsStmt *stmt)
|
||||||
|
|
||||||
foreach_ptr(column, stmt->exprs)
|
foreach_ptr(column, stmt->exprs)
|
||||||
{
|
{
|
||||||
|
if (!column->name)
|
||||||
|
{
|
||||||
|
ereport(ERROR,
|
||||||
|
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||||
|
errmsg(
|
||||||
|
"only simple column references are allowed in CREATE STATISTICS")));
|
||||||
|
}
|
||||||
|
|
||||||
const char *columnName = quote_identifier(column->name);
|
const char *columnName = quote_identifier(column->name);
|
||||||
|
|
||||||
appendStringInfoString(buf, columnName);
|
appendStringInfoString(buf, columnName);
|
||||||
|
|
|
@ -142,6 +142,20 @@ DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx
|
||||||
-- should error saying table space doesn't exist
|
-- should error saying table space doesn't exist
|
||||||
reindex(TABLESPACE test_tablespace1) index idx;
|
reindex(TABLESPACE test_tablespace1) index idx;
|
||||||
ERROR: tablespace "test_tablespace1" does not exist
|
ERROR: tablespace "test_tablespace1" does not exist
|
||||||
|
reset citus.log_remote_commands;
|
||||||
|
-- CREATE STATISTICS only allow simple column references
|
||||||
|
CREATE TABLE tbl1(a timestamp, b int);
|
||||||
|
SELECT create_distributed_table('tbl1','a');
|
||||||
|
create_distributed_table
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
-- the last one should error out
|
||||||
|
CREATE STATISTICS s1 (dependencies) ON a, b FROM tbl1;
|
||||||
|
CREATE STATISTICS s2 (mcv) ON a, b FROM tbl1;
|
||||||
|
CREATE STATISTICS s3 (ndistinct) ON date_trunc('month', a), date_trunc('day', a) FROM tbl1;
|
||||||
|
ERROR: only simple column references are allowed in CREATE STATISTICS
|
||||||
set citus.log_remote_commands to off;
|
set citus.log_remote_commands to off;
|
||||||
-- error out in case of ALTER TABLE .. DETACH PARTITION .. CONCURRENTLY/FINALIZE
|
-- error out in case of ALTER TABLE .. DETACH PARTITION .. CONCURRENTLY/FINALIZE
|
||||||
-- only if it's a distributed partitioned table
|
-- only if it's a distributed partitioned table
|
||||||
|
|
|
@ -37,6 +37,14 @@ reindex(TABLESPACE test_tablespace, verbose false) index idx ;
|
||||||
reindex(verbose, TABLESPACE test_tablespace) index idx ;
|
reindex(verbose, TABLESPACE test_tablespace) index idx ;
|
||||||
-- should error saying table space doesn't exist
|
-- should error saying table space doesn't exist
|
||||||
reindex(TABLESPACE test_tablespace1) index idx;
|
reindex(TABLESPACE test_tablespace1) index idx;
|
||||||
|
reset citus.log_remote_commands;
|
||||||
|
-- CREATE STATISTICS only allow simple column references
|
||||||
|
CREATE TABLE tbl1(a timestamp, b int);
|
||||||
|
SELECT create_distributed_table('tbl1','a');
|
||||||
|
-- the last one should error out
|
||||||
|
CREATE STATISTICS s1 (dependencies) ON a, b FROM tbl1;
|
||||||
|
CREATE STATISTICS s2 (mcv) ON a, b FROM tbl1;
|
||||||
|
CREATE STATISTICS s3 (ndistinct) ON date_trunc('month', a), date_trunc('day', a) FROM tbl1;
|
||||||
set citus.log_remote_commands to off;
|
set citus.log_remote_commands to off;
|
||||||
|
|
||||||
-- error out in case of ALTER TABLE .. DETACH PARTITION .. CONCURRENTLY/FINALIZE
|
-- error out in case of ALTER TABLE .. DETACH PARTITION .. CONCURRENTLY/FINALIZE
|
||||||
|
@ -73,4 +81,3 @@ SELECT attname || ' ' || attcompression FROM pg_attribute WHERE attrelid::regcla
|
||||||
|
|
||||||
set client_min_messages to error;
|
set client_min_messages to error;
|
||||||
drop schema pg14 cascade;
|
drop schema pg14 cascade;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue