From 97e4e1fb02e69e90a2cf184bd187fa64bb9e0ae1 Mon Sep 17 00:00:00 2001 From: Mehmet Yilmaz Date: Fri, 27 Dec 2024 15:33:08 +0000 Subject: [PATCH] add pg17 tests update --- src/test/regress/expected/pg17.out | 55 ++++++++++++++++++++++++++++++ src/test/regress/sql/pg17.sql | 46 +++++++++++++++++++++++++ 2 files changed, 101 insertions(+) diff --git a/src/test/regress/expected/pg17.out b/src/test/regress/expected/pg17.out index 74504d340a6..1b8ee0810af 100644 --- a/src/test/regress/expected/pg17.out +++ b/src/test/regress/expected/pg17.out @@ -1519,6 +1519,61 @@ SELECT sample, sample::jsonpath FROM samples ORDER BY id; (13 rows) -- End of testing jsonpath methods +-- Test: Access Method Behavior for Partitioned Tables +-- This test verifies the ability to specify and modify table access methods for partitioned tables +-- using CREATE TABLE ... USING and ALTER TABLE ... SET ACCESS METHOD, including distributed tables. +-- Step 1: Create a partitioned table with a specified access method +CREATE TABLE test_partitioned_alter (id INT PRIMARY KEY, value TEXT) +PARTITION BY RANGE (id) +USING heap; +-- Step 2: Create partitions for the partitioned table +CREATE TABLE test_partition_1 PARTITION OF test_partitioned_alter + FOR VALUES FROM (0) TO (100); +CREATE TABLE test_partition_2 PARTITION OF test_partitioned_alter + FOR VALUES FROM (100) TO (200); +-- Step 3: Distribute the partitioned table +SELECT create_distributed_table('test_partitioned_alter', 'id'); + create_distributed_table +--------------------------------------------------------------------- + +(1 row) + +-- Step 4: Verify that the table and partitions are created and distributed correctly +SELECT relname, relam +FROM pg_class +WHERE relname = 'test_partitioned_alter'; + relname | relam +--------------------------------------------------------------------- + test_partitioned_alter | 2 +(1 row) + +-- Check the partitions' access methods +SELECT relname, relam +FROM pg_class +WHERE relname IN ('test_partition_1', 'test_partition_2') +ORDER BY relname; + relname | relam +--------------------------------------------------------------------- + test_partition_1 | 2 + test_partition_2 | 2 +(2 rows) + +-- Step 5: Test ALTER TABLE ... SET ACCESS METHOD to a different method +ALTER TABLE test_partitioned_alter SET ACCESS METHOD columnar; +-- Step 6: Verify the change is applied to future partitions +CREATE TABLE test_partition_3 PARTITION OF test_partitioned_alter + FOR VALUES FROM (200) TO (300); +SELECT relname, relam +FROM pg_class +WHERE relname = 'test_partition_3'; + relname | relam +--------------------------------------------------------------------- + test_partition_3 | 16413 +(1 row) + +-- Clean up +DROP TABLE test_partitioned_alter CASCADE; +-- End of Test: Access Method Behavior for Partitioned Tables \set VERBOSITY terse SET client_min_messages TO WARNING; DROP SCHEMA pg17 CASCADE; diff --git a/src/test/regress/sql/pg17.sql b/src/test/regress/sql/pg17.sql index 3d400a5259a..90fcf12da4d 100644 --- a/src/test/regress/sql/pg17.sql +++ b/src/test/regress/sql/pg17.sql @@ -844,6 +844,52 @@ SELECT sample, sample::jsonpath FROM samples ORDER BY id; -- End of testing jsonpath methods +-- Test: Access Method Behavior for Partitioned Tables +-- This test verifies the ability to specify and modify table access methods for partitioned tables +-- using CREATE TABLE ... USING and ALTER TABLE ... SET ACCESS METHOD, including distributed tables. + +-- Step 1: Create a partitioned table with a specified access method +CREATE TABLE test_partitioned_alter (id INT PRIMARY KEY, value TEXT) +PARTITION BY RANGE (id) +USING heap; + +-- Step 2: Create partitions for the partitioned table +CREATE TABLE test_partition_1 PARTITION OF test_partitioned_alter + FOR VALUES FROM (0) TO (100); + +CREATE TABLE test_partition_2 PARTITION OF test_partitioned_alter + FOR VALUES FROM (100) TO (200); + +-- Step 3: Distribute the partitioned table +SELECT create_distributed_table('test_partitioned_alter', 'id'); + +-- Step 4: Verify that the table and partitions are created and distributed correctly +SELECT relname, relam +FROM pg_class +WHERE relname = 'test_partitioned_alter'; + +-- Check the partitions' access methods +SELECT relname, relam +FROM pg_class +WHERE relname IN ('test_partition_1', 'test_partition_2') +ORDER BY relname; + +-- Step 5: Test ALTER TABLE ... SET ACCESS METHOD to a different method +ALTER TABLE test_partitioned_alter SET ACCESS METHOD columnar; + +-- Step 6: Verify the change is applied to future partitions +CREATE TABLE test_partition_3 PARTITION OF test_partitioned_alter + FOR VALUES FROM (200) TO (300); + +SELECT relname, relam +FROM pg_class +WHERE relname = 'test_partition_3'; + +-- Clean up +DROP TABLE test_partitioned_alter CASCADE; + +-- End of Test: Access Method Behavior for Partitioned Tables + \set VERBOSITY terse SET client_min_messages TO WARNING; DROP SCHEMA pg17 CASCADE;