From 59169edc02c4d50abe4bce640a0871dc113e9318 Mon Sep 17 00:00:00 2001 From: congzhou2603 Date: Wed, 28 Jun 2023 10:50:36 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90bugfix=E3=80=91set(compresstype=3D3)?= =?UTF-8?q?=E7=94=9F=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gausskernel/optimizer/commands/tablecmds.cpp | 5 +++++ .../expected/row_compression/alter_compress_params.out | 9 ++++++++- .../sql/row_compression/alter_compress_params.sql | 6 +++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/gausskernel/optimizer/commands/tablecmds.cpp b/src/gausskernel/optimizer/commands/tablecmds.cpp index a4f42e9d5..61e3bf090 100755 --- a/src/gausskernel/optimizer/commands/tablecmds.cpp +++ b/src/gausskernel/optimizer/commands/tablecmds.cpp @@ -18029,6 +18029,11 @@ bool static transformTableCompressedOptions(Relation rel, bytea* relOption, List errmsg("compress_level=0, compress_chunk_size=4096, compress_prealloc_chunks=0, compress_byte_convert=false, compress_diff_convert=false should be set when compresstype=0"))); } + if (newCompressOpt->compressType == COMPRESS_TYPE_PGZSTD) { + ereport(ERROR, (errcode(ERRCODE_INVALID_OPTION), + errmsg("row-compression feature current not support algorithm is PGZSTD."))); + } + if (newCompressOpt->compressType != COMPRESS_TYPE_ZSTD && newCompressOpt->compressLevel != 0) { ereport(ERROR, (errcode(ERRCODE_INVALID_OPTION), errmsg("compress_level should be used with ZSTD algorithm."))); diff --git a/src/test/regress/expected/row_compression/alter_compress_params.out b/src/test/regress/expected/row_compression/alter_compress_params.out index eb6b28442..a58884ed6 100644 --- a/src/test/regress/expected/row_compression/alter_compress_params.out +++ b/src/test/regress/expected/row_compression/alter_compress_params.out @@ -29,7 +29,9 @@ DROP TABLE alter_compress_params_schema.uncompress_astore_to_cbc_1_cdc_1; -- the new compression parameters is out of the value range CREATE TABLE alter_compress_params_schema.uncompress_astore_to_compresstype_5 (id int, value varchar); INSERT INTO alter_compress_params_schema.uncompress_astore_to_compresstype_5 SELECT generate_series(1,5), 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'; -ALTER TABLE alter_compress_params_schema.uncompress_astore_to_compresstype_5 SET (compresstype = 3); -- fail +ALTER TABLE alter_compress_params_schema.uncompress_astore_to_compresstype_5 SET (compresstype = 5); -- fail +ERROR: value 5 out of bounds for option "compresstype" +DETAIL: Valid values are between "0" and "3". DROP TABLE alter_compress_params_schema.uncompress_astore_to_compresstype_5; CREATE TABLE alter_compress_params_schema.uncompress_astore_to_compresstype__1 (id int, value varchar); INSERT INTO alter_compress_params_schema.uncompress_astore_to_compresstype__1 SELECT generate_series(1,5), 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'; @@ -93,6 +95,11 @@ INSERT INTO alter_compress_params_schema.uncompress_astore_to_compresstype_1_ccs ALTER TABLE alter_compress_params_schema.uncompress_astore_to_compresstype_1_ccs_4096_cpc_2 SET (compresstype = 1, compress_chunk_size = 4096, compress_prealloc_chunks = 2); -- fail ERROR: invalid compress_prealloc_chunks 2, must be less than 2 for uncompress_astore_to_compresstype_1_ccs_4096_cpc_2 DROP TABLE alter_compress_params_schema.uncompress_astore_to_compresstype_1_ccs_4096_cpc_2; +CREATE TABLE alter_compress_params_schema.uncompress_to_compresstype_3 (id int, value varchar); +INSERT INTO alter_compress_params_schema.uncompress_to_compresstype_3 SELECT generate_series(1,5), 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'; +ALTER TABLE alter_compress_params_schema.uncompress_to_compresstype_3 SET (compresstype = 3); -- fail +ERROR: row-compression feature current not support algorithm is PGZSTD. +DROP TABLE alter_compress_params_schema.uncompress_to_compresstype_3; -- set compressed options of column table CREATE TABLE alter_compress_params_schema.alter_column_table_compressed_options (id int, value varchar) WITH (ORIENTATION = column); INSERT INTO alter_compress_params_schema.alter_column_table_compressed_options SELECT generate_series(1,5), 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'; diff --git a/src/test/regress/sql/row_compression/alter_compress_params.sql b/src/test/regress/sql/row_compression/alter_compress_params.sql index a07f92859..3848ba2e2 100644 --- a/src/test/regress/sql/row_compression/alter_compress_params.sql +++ b/src/test/regress/sql/row_compression/alter_compress_params.sql @@ -30,7 +30,7 @@ DROP TABLE alter_compress_params_schema.uncompress_astore_to_cbc_1_cdc_1; -- the new compression parameters is out of the value range CREATE TABLE alter_compress_params_schema.uncompress_astore_to_compresstype_5 (id int, value varchar); INSERT INTO alter_compress_params_schema.uncompress_astore_to_compresstype_5 SELECT generate_series(1,5), 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'; -ALTER TABLE alter_compress_params_schema.uncompress_astore_to_compresstype_5 SET (compresstype = 3); -- fail +ALTER TABLE alter_compress_params_schema.uncompress_astore_to_compresstype_5 SET (compresstype = 5); -- fail DROP TABLE alter_compress_params_schema.uncompress_astore_to_compresstype_5; CREATE TABLE alter_compress_params_schema.uncompress_astore_to_compresstype__1 (id int, value varchar); @@ -88,6 +88,10 @@ INSERT INTO alter_compress_params_schema.uncompress_astore_to_compresstype_1_ccs ALTER TABLE alter_compress_params_schema.uncompress_astore_to_compresstype_1_ccs_4096_cpc_2 SET (compresstype = 1, compress_chunk_size = 4096, compress_prealloc_chunks = 2); -- fail DROP TABLE alter_compress_params_schema.uncompress_astore_to_compresstype_1_ccs_4096_cpc_2; +CREATE TABLE alter_compress_params_schema.uncompress_to_compresstype_3 (id int, value varchar); +INSERT INTO alter_compress_params_schema.uncompress_to_compresstype_3 SELECT generate_series(1,5), 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'; +ALTER TABLE alter_compress_params_schema.uncompress_to_compresstype_3 SET (compresstype = 3); -- fail +DROP TABLE alter_compress_params_schema.uncompress_to_compresstype_3; -- set compressed options of column table CREATE TABLE alter_compress_params_schema.alter_column_table_compressed_options (id int, value varchar) WITH (ORIENTATION = column); INSERT INTO alter_compress_params_schema.alter_column_table_compressed_options SELECT generate_series(1,5), 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb';