blob: 1b6dfe8506fe32a9223f47669a396b6cbb166d03 [file] [log] [blame]
-- Tests to validate AOCO column size and compression reporting functions and views
-- start_matchignore
-- m/.*compression_ratio .*[02-9]+[.]?(\d+)?/
-- end_matchignore
CREATE SCHEMA aoco_size;
-- Test gp_toolkit.get_column_size(oid)
CREATE TABLE aoco_size.heap(i int, j int) distributed by (i);
CREATE TABLE aoco_size.aorow(i int, j int) using ao_row distributed by (i);
CREATE TABLE aoco_size.aocol
(
i int,
j int ENCODING (compresstype=zstd, compresslevel=5),
k bigint ENCODING (compresstype=rle_type, compresslevel=1),
dropped int -- doesn't report dropped columns
)
USING ao_column
DISTRIBUTED BY (i)
PARTITION BY RANGE (j);
ALTER TABLE aoco_size.aocol DROP COLUMN dropped;
-- Attach 2 partitions with different column encodings
CREATE TABLE aoco_size.aocol_part_t1
(
i int,
j int ENCODING (compresstype=zlib, compresslevel=1),
k bigint ENCODING (compresstype=zlib, compresslevel=1)
)
USING ao_column
DISTRIBUTED BY (i);
CREATE TABLE aoco_size.aocol_part_t2
(
i int,
j int ENCODING (compresstype=zstd, compresslevel=3),
k bigint ENCODING (compresstype=zstd, compresslevel=1)
)
USING ao_column
DISTRIBUTED BY (i);
ALTER TABLE aoco_size.aocol ATTACH PARTITION aoco_size.aocol_part_t1 FOR VALUES FROM (1) TO (500);
ALTER TABLE aoco_size.aocol ATTACH PARTITION aoco_size.aocol_part_t2 FOR VALUES FROM (500) TO (1001);
-- Non-existent name/OID.
SELECT * FROM gp_toolkit.get_column_size('aoco_size.foo'::regclass);
-- Non AOCO relations
SELECT * FROM gp_toolkit.get_column_size('aoco_size.heap'::regclass);
SELECT * FROM gp_toolkit.get_column_size('aoco_size.aorow'::regclass);
-- Partition parent
SELECT * FROM gp_toolkit.get_column_size('aoco_size.aocol'::regclass) ORDER BY 1,2;
INSERT INTO aoco_size.aocol SELECT i, i, i FROM generate_series(1, 1000) i;
SELECT * FROM gp_toolkit.get_column_size('aoco_size.aocol_part_t1'::regclass) ORDER BY 1,2;
-1U: SELECT * FROM gp_toolkit.get_column_size('aoco_size.aocol_part_t1'::regclass) ORDER BY 1,2;
0U: SELECT * FROM gp_toolkit.get_column_size('aoco_size.aocol_part_t1'::regclass) ORDER BY 1,2;
SELECT * FROM gp_toolkit.get_column_size('aoco_size.aocol_part_t2'::regclass) ORDER BY 1,2;
-1U: SELECT * FROM gp_toolkit.get_column_size('aoco_size.aocol_part_t2'::regclass) ORDER BY 1,2;
0U: SELECT * FROM gp_toolkit.get_column_size('aoco_size.aocol_part_t2'::regclass) ORDER BY 1,2;
-- Test gp_toolkit.gp_column_size view
SELECT relname, gp_segment_id, attnum, attname, size, size_uncompressed, compression_ratio FROM gp_toolkit.gp_column_size where schema='aoco_size';
-1U: SELECT relname, gp_segment_id, attnum, attname, size, size_uncompressed, compression_ratio FROM gp_toolkit.gp_column_size where schema='aoco_size';
0U: SELECT relname, gp_segment_id, attnum, attname, size, size_uncompressed, compression_ratio FROM gp_toolkit.gp_column_size where schema='aoco_size';
-- Test gp_toolkit.gp_column_size_summary view
SELECT relname, attnum, size, size_uncompressed, compression_ratio FROM gp_toolkit.gp_column_size_summary WHERE schema='aoco_size';
DROP SCHEMA aoco_size CASCADE;