Test interaction with both toast compression types in columnar_insert

pull/7670/head
Karina Litskevich 2024-08-14 10:51:34 +03:00
parent 9e1852eac7
commit 68726877ec
2 changed files with 68 additions and 24 deletions

View File

@ -122,33 +122,54 @@ DROP TABLE test_logical_replication;
-- test toast interactions -- test toast interactions
-- --
-- row table with data in different storage formats -- row table with data in different storage formats
CREATE TABLE test_toast_row(plain TEXT, main TEXT, external TEXT, extended TEXT); CREATE TABLE test_toast_row(
plain TEXT,
main_pglz TEXT COMPRESSION pglz,
main_lz4 TEXT COMPRESSION lz4,
external TEXT,
extended_pglz TEXT COMPRESSION pglz,
extended_lz4 TEXT COMPRESSION lz4
);
ALTER TABLE test_toast_row ALTER COLUMN plain SET STORAGE plain; -- inline, uncompressed ALTER TABLE test_toast_row ALTER COLUMN plain SET STORAGE plain; -- inline, uncompressed
ALTER TABLE test_toast_row ALTER COLUMN main SET STORAGE main; -- inline, compressed ALTER TABLE test_toast_row ALTER COLUMN main_pglz SET STORAGE main; -- inline, compressed using pglz
ALTER TABLE test_toast_row ALTER COLUMN main_lz4 SET STORAGE main; -- inline, compressed using lz4
ALTER TABLE test_toast_row ALTER COLUMN external SET STORAGE external; -- out-of-line, uncompressed ALTER TABLE test_toast_row ALTER COLUMN external SET STORAGE external; -- out-of-line, uncompressed
ALTER TABLE test_toast_row ALTER COLUMN extended SET STORAGE extended; -- out-of-line, compressed ALTER TABLE test_toast_row ALTER COLUMN extended_pglz SET STORAGE extended; -- out-of-line, compressed using pglz
ALTER TABLE test_toast_row ALTER COLUMN extended_lz4 SET STORAGE extended; -- out-of-line, compressed using lz4
INSERT INTO test_toast_row VALUES( INSERT INTO test_toast_row VALUES(
repeat('w', 5000), repeat('x', 5000), repeat('y', 5000), repeat('z', 5000)); repeat('u', 5000), repeat('v', 5000), repeat('w', 5000),
repeat('x', 5000), repeat('y', 5000), repeat('z', 5000)
);
SELECT SELECT
pg_column_size(plain), pg_column_size(main), pg_column_size(plain) AS plain,
pg_column_size(external), pg_column_size(extended) pg_column_size(main_pglz) as main_pglz,
pg_column_size(main_lz4) as main_lz4,
pg_column_size(external) as external,
pg_column_size(extended_pglz) as extended_pglz,
pg_column_size(extended_lz4) as extended_lz4
FROM test_toast_row; FROM test_toast_row;
pg_column_size | pg_column_size | pg_column_size | pg_column_size plain | main_pglz | main_lz4 | external | extended_pglz | extended_lz4
--------------------------------------------------------------------- ---------------------------------------------------------------------
5004 | 69 | 5000 | 65 5004 | 69 | 38 | 5000 | 65 | 34
(1 row) (1 row)
CREATE TABLE test_toast_columnar(plain TEXT, main TEXT, external TEXT, extended TEXT) CREATE TABLE test_toast_columnar(plain TEXT, main_pglz TEXT, main_lz4 TEXT,
external TEXT, extended_pglz TEXT, extended_lz4 TEXT)
USING columnar; USING columnar;
INSERT INTO test_toast_columnar SELECT plain, main, external, extended INSERT INTO test_toast_columnar
SELECT plain, main_pglz, main_lz4, external, extended_pglz, extended_lz4
FROM test_toast_row; FROM test_toast_row;
SELECT SELECT
pg_column_size(plain), pg_column_size(main), pg_column_size(plain) AS plain,
pg_column_size(external), pg_column_size(extended) pg_column_size(main_pglz) as main_pglz,
pg_column_size(main_lz4) as main_lz4,
pg_column_size(external) as external,
pg_column_size(extended_pglz) as extended_pglz,
pg_column_size(extended_lz4) as extended_lz4
FROM test_toast_columnar; FROM test_toast_columnar;
pg_column_size | pg_column_size | pg_column_size | pg_column_size plain | main_pglz | main_lz4 | external | extended_pglz | extended_lz4
--------------------------------------------------------------------- ---------------------------------------------------------------------
5004 | 5004 | 5004 | 5004 5004 | 5004 | 5004 | 5004 | 5004 | 5004
(1 row) (1 row)
select select

View File

@ -83,27 +83,50 @@ DROP TABLE test_logical_replication;
-- --
-- row table with data in different storage formats -- row table with data in different storage formats
CREATE TABLE test_toast_row(plain TEXT, main TEXT, external TEXT, extended TEXT); CREATE TABLE test_toast_row(
plain TEXT,
main_pglz TEXT COMPRESSION pglz,
main_lz4 TEXT COMPRESSION lz4,
external TEXT,
extended_pglz TEXT COMPRESSION pglz,
extended_lz4 TEXT COMPRESSION lz4
);
ALTER TABLE test_toast_row ALTER COLUMN plain SET STORAGE plain; -- inline, uncompressed ALTER TABLE test_toast_row ALTER COLUMN plain SET STORAGE plain; -- inline, uncompressed
ALTER TABLE test_toast_row ALTER COLUMN main SET STORAGE main; -- inline, compressed ALTER TABLE test_toast_row ALTER COLUMN main_pglz SET STORAGE main; -- inline, compressed using pglz
ALTER TABLE test_toast_row ALTER COLUMN main_lz4 SET STORAGE main; -- inline, compressed using lz4
ALTER TABLE test_toast_row ALTER COLUMN external SET STORAGE external; -- out-of-line, uncompressed ALTER TABLE test_toast_row ALTER COLUMN external SET STORAGE external; -- out-of-line, uncompressed
ALTER TABLE test_toast_row ALTER COLUMN extended SET STORAGE extended; -- out-of-line, compressed ALTER TABLE test_toast_row ALTER COLUMN extended_pglz SET STORAGE extended; -- out-of-line, compressed using pglz
ALTER TABLE test_toast_row ALTER COLUMN extended_lz4 SET STORAGE extended; -- out-of-line, compressed using lz4
INSERT INTO test_toast_row VALUES( INSERT INTO test_toast_row VALUES(
repeat('w', 5000), repeat('x', 5000), repeat('y', 5000), repeat('z', 5000)); repeat('u', 5000), repeat('v', 5000), repeat('w', 5000),
repeat('x', 5000), repeat('y', 5000), repeat('z', 5000)
);
SELECT SELECT
pg_column_size(plain), pg_column_size(main), pg_column_size(plain) AS plain,
pg_column_size(external), pg_column_size(extended) pg_column_size(main_pglz) as main_pglz,
pg_column_size(main_lz4) as main_lz4,
pg_column_size(external) as external,
pg_column_size(extended_pglz) as extended_pglz,
pg_column_size(extended_lz4) as extended_lz4
FROM test_toast_row; FROM test_toast_row;
CREATE TABLE test_toast_columnar(plain TEXT, main TEXT, external TEXT, extended TEXT) CREATE TABLE test_toast_columnar(plain TEXT, main_pglz TEXT, main_lz4 TEXT,
external TEXT, extended_pglz TEXT, extended_lz4 TEXT)
USING columnar; USING columnar;
INSERT INTO test_toast_columnar SELECT plain, main, external, extended
INSERT INTO test_toast_columnar
SELECT plain, main_pglz, main_lz4, external, extended_pglz, extended_lz4
FROM test_toast_row; FROM test_toast_row;
SELECT SELECT
pg_column_size(plain), pg_column_size(main), pg_column_size(plain) AS plain,
pg_column_size(external), pg_column_size(extended) pg_column_size(main_pglz) as main_pglz,
pg_column_size(main_lz4) as main_lz4,
pg_column_size(external) as external,
pg_column_size(extended_pglz) as extended_pglz,
pg_column_size(extended_lz4) as extended_lz4
FROM test_toast_columnar; FROM test_toast_columnar;
select select