From 9d9b3817c1096b71c975dcc6a772aa77123e2992 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20Ozan=20Akg=C3=BCl?= Date: Mon, 29 May 2023 13:53:00 +0300 Subject: [PATCH] Single Shard Table Columnar UDFs Tests (#6937) Adds columnar UDF tests for single shard tables. --- .../expected/single_shard_table_udfs.out | 76 +++++++++++++++++++ .../regress/sql/single_shard_table_udfs.sql | 33 ++++++++ 2 files changed, 109 insertions(+) diff --git a/src/test/regress/expected/single_shard_table_udfs.out b/src/test/regress/expected/single_shard_table_udfs.out index c1a63de89..612110ea6 100644 --- a/src/test/regress/expected/single_shard_table_udfs.out +++ b/src/test/regress/expected/single_shard_table_udfs.out @@ -354,5 +354,81 @@ DETAIL: Distribution column types don't match for update_col_4 and update_col_1 SELECT update_distributed_table_colocation('update_col_4', colocate_with:='update_col_1'); ERROR: cannot colocate tables update_col_1 and update_col_4 DETAIL: Distribution column types don't match for update_col_1 and update_col_4. +-- test columnar UDFs +CREATE TABLE columnar_tbl (a INT) USING COLUMNAR; +SELECT create_distributed_table('columnar_tbl', NULL, colocate_with:='none'); + create_distributed_table +--------------------------------------------------------------------- + +(1 row) + +SELECT * FROM columnar.options WHERE relation = 'columnar_tbl'::regclass; + relation | chunk_group_row_limit | stripe_row_limit | compression | compression_level +--------------------------------------------------------------------- + columnar_tbl | 10000 | 150000 | zstd | 3 +(1 row) + +SELECT alter_columnar_table_set('columnar_tbl', compression_level => 2); + alter_columnar_table_set +--------------------------------------------------------------------- + +(1 row) + +SELECT * FROM columnar.options WHERE relation = 'columnar_tbl'::regclass; + relation | chunk_group_row_limit | stripe_row_limit | compression | compression_level +--------------------------------------------------------------------- + columnar_tbl | 10000 | 150000 | zstd | 2 +(1 row) + +SELECT alter_columnar_table_reset('columnar_tbl', compression_level => true); + alter_columnar_table_reset +--------------------------------------------------------------------- + +(1 row) + +SELECT * FROM columnar.options WHERE relation = 'columnar_tbl'::regclass; + relation | chunk_group_row_limit | stripe_row_limit | compression | compression_level +--------------------------------------------------------------------- + columnar_tbl | 10000 | 150000 | zstd | 3 +(1 row) + +SELECT columnar_internal.upgrade_columnar_storage(c.oid) +FROM pg_class c, pg_am a +WHERE c.relam = a.oid AND amname = 'columnar' AND relname = 'columnar_tbl'; + upgrade_columnar_storage +--------------------------------------------------------------------- + +(1 row) + +SELECT columnar_internal.downgrade_columnar_storage(c.oid) +FROM pg_class c, pg_am a +WHERE c.relam = a.oid AND amname = 'columnar' AND relname = 'columnar_tbl'; + downgrade_columnar_storage +--------------------------------------------------------------------- + +(1 row) + +CREATE OR REPLACE FUNCTION columnar_storage_info( + rel regclass, + version_major OUT int4, + version_minor OUT int4, + storage_id OUT int8, + reserved_stripe_id OUT int8, + reserved_row_number OUT int8, + reserved_offset OUT int8) + STRICT + LANGUAGE c AS 'citus', $$columnar_storage_info$$; +SELECT version_major, version_minor, reserved_stripe_id, reserved_row_number, reserved_offset FROM columnar_storage_info('columnar_tbl'); + version_major | version_minor | reserved_stripe_id | reserved_row_number | reserved_offset +--------------------------------------------------------------------- + 2 | 0 | 1 | 1 | 16336 +(1 row) + +SELECT columnar.get_storage_id(oid) = storage_id FROM pg_class, columnar_storage_info('columnar_tbl') WHERE relname = 'columnar_tbl'; + ?column? +--------------------------------------------------------------------- + t +(1 row) + SET client_min_messages TO WARNING; DROP SCHEMA null_dist_key_udfs CASCADE; diff --git a/src/test/regress/sql/single_shard_table_udfs.sql b/src/test/regress/sql/single_shard_table_udfs.sql index a865e8619..440bd2c70 100644 --- a/src/test/regress/sql/single_shard_table_udfs.sql +++ b/src/test/regress/sql/single_shard_table_udfs.sql @@ -163,5 +163,38 @@ SELECT create_distributed_table ('update_col_4', 'a', colocate_with:='none'); SELECT update_distributed_table_colocation('update_col_1', colocate_with:='update_col_4'); SELECT update_distributed_table_colocation('update_col_4', colocate_with:='update_col_1'); +-- test columnar UDFs +CREATE TABLE columnar_tbl (a INT) USING COLUMNAR; +SELECT create_distributed_table('columnar_tbl', NULL, colocate_with:='none'); + +SELECT * FROM columnar.options WHERE relation = 'columnar_tbl'::regclass; +SELECT alter_columnar_table_set('columnar_tbl', compression_level => 2); +SELECT * FROM columnar.options WHERE relation = 'columnar_tbl'::regclass; +SELECT alter_columnar_table_reset('columnar_tbl', compression_level => true); +SELECT * FROM columnar.options WHERE relation = 'columnar_tbl'::regclass; + +SELECT columnar_internal.upgrade_columnar_storage(c.oid) +FROM pg_class c, pg_am a +WHERE c.relam = a.oid AND amname = 'columnar' AND relname = 'columnar_tbl'; + +SELECT columnar_internal.downgrade_columnar_storage(c.oid) +FROM pg_class c, pg_am a +WHERE c.relam = a.oid AND amname = 'columnar' AND relname = 'columnar_tbl'; + +CREATE OR REPLACE FUNCTION columnar_storage_info( + rel regclass, + version_major OUT int4, + version_minor OUT int4, + storage_id OUT int8, + reserved_stripe_id OUT int8, + reserved_row_number OUT int8, + reserved_offset OUT int8) + STRICT + LANGUAGE c AS 'citus', $$columnar_storage_info$$; + +SELECT version_major, version_minor, reserved_stripe_id, reserved_row_number, reserved_offset FROM columnar_storage_info('columnar_tbl'); + +SELECT columnar.get_storage_id(oid) = storage_id FROM pg_class, columnar_storage_info('columnar_tbl') WHERE relname = 'columnar_tbl'; + SET client_min_messages TO WARNING; DROP SCHEMA null_dist_key_udfs CASCADE;