mirror of https://github.com/citusdata/citus.git
112 lines
3.7 KiB
SQL
112 lines
3.7 KiB
SQL
SHOW server_version \gset
|
|
SELECT substring(:'server_version', '\d+')::int > 11 AS server_version_above_eleven
|
|
\gset
|
|
\if :server_version_above_eleven
|
|
\else
|
|
\q
|
|
\endif
|
|
|
|
CREATE SCHEMA upgrade_columnar;
|
|
SET search_path TO upgrade_columnar, public;
|
|
|
|
CREATE TYPE compfoo AS (f1 int, f2 text);
|
|
|
|
CREATE TABLE test_retains_data (a int, b text, c compfoo, d int[]) USING columnar;
|
|
|
|
INSERT INTO test_retains_data VALUES
|
|
(1, 'abc', (1, '4'), ARRAY[1,2,3,4]),
|
|
(2, 'pi', (3, '192'), ARRAY[3,1,4,1,5]),
|
|
(3, 'earth', (4, '22'), ARRAY[1,2,7,5,6]);
|
|
|
|
--
|
|
-- Verify that after upgrade we can read data for tables whose
|
|
-- relfilenode has changed before upgrade.
|
|
--
|
|
|
|
-- truncate
|
|
CREATE TABLE test_truncated (a int) USING columnar;
|
|
INSERT INTO test_truncated SELECT * FROM generate_series(1, 10);
|
|
SELECT count(*) FROM test_truncated;
|
|
|
|
SELECT relfilenode AS relfilenode_pre_truncate
|
|
FROM pg_class WHERE oid = 'test_truncated'::regclass::oid \gset
|
|
|
|
TRUNCATE test_truncated;
|
|
|
|
SELECT relfilenode AS relfilenode_post_truncate
|
|
FROM pg_class WHERE oid = 'test_truncated'::regclass::oid \gset
|
|
|
|
SELECT :relfilenode_post_truncate <> :relfilenode_pre_truncate AS relfilenode_changed;
|
|
|
|
INSERT INTO test_truncated SELECT * FROM generate_series(11, 13);
|
|
SELECT count(*) FROM test_truncated;
|
|
|
|
-- vacuum full
|
|
CREATE TABLE test_vacuum_full (a int) USING columnar;
|
|
INSERT INTO test_vacuum_full SELECT * FROM generate_series(1, 10);
|
|
SELECT count(*) FROM test_vacuum_full;
|
|
|
|
SELECT relfilenode AS relfilenode_pre_vacuum_full
|
|
FROM pg_class WHERE oid = 'test_vacuum_full'::regclass::oid \gset
|
|
|
|
VACUUM FULL test_vacuum_full;
|
|
|
|
SELECT relfilenode AS relfilenode_post_vacuum_full
|
|
FROM pg_class WHERE oid = 'test_vacuum_full'::regclass::oid \gset
|
|
|
|
SELECT :relfilenode_post_vacuum_full <> :relfilenode_pre_vacuum_full AS relfilenode_changed;
|
|
|
|
INSERT INTO test_vacuum_full SELECT * FROM generate_series(11, 13);
|
|
SELECT count(*) FROM test_vacuum_full;
|
|
|
|
-- alter column type
|
|
CREATE TABLE test_alter_type (a int) USING columnar;
|
|
INSERT INTO test_alter_type SELECT * FROM generate_series(1, 10);
|
|
SELECT count(*) FROM test_alter_type;
|
|
|
|
SELECT relfilenode AS relfilenode_pre_alter
|
|
FROM pg_class WHERE oid = 'test_alter_type'::regclass::oid \gset
|
|
|
|
ALTER TABLE test_alter_type ALTER COLUMN a TYPE text;
|
|
|
|
SELECT relfilenode AS relfilenode_post_alter
|
|
FROM pg_class WHERE oid = 'test_alter_type'::regclass::oid \gset
|
|
|
|
SELECT :relfilenode_pre_alter <> :relfilenode_post_alter AS relfilenode_changed;
|
|
|
|
INSERT INTO test_alter_type SELECT * FROM generate_series(11, 13);
|
|
SELECT count(*) FROM test_alter_type;
|
|
|
|
-- materialized view
|
|
CREATE MATERIALIZED VIEW matview(a, b) USING columnar AS
|
|
SELECT floor(a/3), array_agg(b) FROM test_retains_data GROUP BY 1;
|
|
|
|
SELECT relfilenode AS relfilenode_pre_refresh
|
|
FROM pg_class WHERE oid = 'matview'::regclass::oid \gset
|
|
|
|
REFRESH MATERIALIZED VIEW matview;
|
|
|
|
SELECT relfilenode AS relfilenode_post_refresh
|
|
FROM pg_class WHERE oid = 'matview'::regclass::oid \gset
|
|
|
|
SELECT :relfilenode_pre_alter <> :relfilenode_post_alter AS relfilenode_changed;
|
|
|
|
--
|
|
-- Test that we retain options
|
|
--
|
|
|
|
SET columnar.stripe_row_count TO 5000;
|
|
SET columnar.chunk_row_count TO 1000;
|
|
SET columnar.compression TO 'pglz';
|
|
|
|
CREATE TABLE test_options_1(a int, b int) USING columnar;
|
|
INSERT INTO test_options_1 SELECT i, floor(i/1000) FROM generate_series(1, 10000) i;
|
|
|
|
CREATE TABLE test_options_2(a int, b int) USING columnar;
|
|
INSERT INTO test_options_2 SELECT i, floor(i/1000) FROM generate_series(1, 10000) i;
|
|
SELECT alter_columnar_table_set('test_options_2', chunk_row_count => 2000);
|
|
SELECT alter_columnar_table_set('test_options_2', stripe_row_count => 6000);
|
|
SELECT alter_columnar_table_set('test_options_2', compression => 'none');
|
|
INSERT INTO test_options_2 SELECT i, floor(i/2000) FROM generate_series(1, 10000) i;
|
|
|