IMPALA-12893: (part 2): Upgrade Iceberg to version 1.5.2

This patch updates CDP_BUILD_NUMBER to 71942734 to in order to
upgrade Iceberg to 1.5.2.

This patch updates some tests so they pass with Iceberg 1.5.2. The
behavior changes of Iceberg 1.5.2 are (compared to 1.3.1):
 * Iceberg V2 tables are created by default
 * Metadata tables have different schema
 * Parquet compression is explicitly set for new tables (even for ORC
   tables)
 * Sequence numbers are assigned a bit differently

Updated the tests where needed.

Code changes to accomodate for the above behavior changes:
 * SHOW CREATE TABLE adds 'format-version'='1' for Iceberg V1 tables
 * CREATE TABLE statements don't throw errors when Parquet compression
   is set for ORC tables

Change-Id: Ic4f9ed3f7ee9f686044023be938d6b1d18c8842e
Reviewed-on: http://gerrit.cloudera.org:8080/23670
Reviewed-by: Riza Suminto <riza.suminto@cloudera.com>
Tested-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
This commit is contained in:
Zoltan Borok-Nagy
2024-03-28 20:26:55 +01:00
committed by Impala Public Jenkins
parent e4a508529c
commit 275f03f10d
10 changed files with 112 additions and 173 deletions

View File

@@ -352,91 +352,6 @@ DESCRIBE FORMATTED iceberg_changing_parq_tblprops;
string, string, string
====
---- QUERY
CREATE TABLE iceberg_upgrade_v2_no_write_mode (i INT) STORED AS ICEBERG;
DESCRIBE FORMATTED iceberg_upgrade_v2_no_write_mode;
---- RESULTS: VERIFY_IS_NOT_IN
'','write.delete.mode ','merge-on-read '
'','write.update.mode ','merge-on-read '
'','write.merge.mode ','merge-on-read '
---- TYPES
string, string, string
====
---- QUERY
# Setting format-version to 1 doesn't add write modes.
ALTER TABLE iceberg_upgrade_v2_no_write_mode SET TBLPROPERTIES('format-version'='1');
DESCRIBE FORMATTED iceberg_upgrade_v2_no_write_mode;
---- RESULTS: VERIFY_IS_NOT_IN
'','write.delete.mode ','merge-on-read '
'','write.update.mode ','merge-on-read '
'','write.merge.mode ','merge-on-read '
---- TYPES
string, string, string
====
---- QUERY
ALTER TABLE iceberg_upgrade_v2_no_write_mode SET TBLPROPERTIES('format-version'='2');
DESCRIBE FORMATTED iceberg_upgrade_v2_no_write_mode;
---- RESULTS: VERIFY_IS_SUBSET
'','write.delete.mode ','merge-on-read '
'','write.update.mode ','merge-on-read '
'','write.merge.mode ','merge-on-read '
---- TYPES
string, string, string
====
---- QUERY
CREATE TABLE iceberg_upgrade_v2_delete_mode (i INT) STORED AS ICEBERG;
ALTER TABLE iceberg_upgrade_v2_delete_mode
SET TBLPROPERTIES('format-version'='2', 'write.delete.mode'='copy-on-write');
DESCRIBE FORMATTED iceberg_upgrade_v2_delete_mode;
---- RESULTS: VERIFY_IS_SUBSET
'','write.delete.mode ','copy-on-write '
---- TYPES
string, string, string
====
---- QUERY
DESCRIBE FORMATTED iceberg_upgrade_v2_delete_mode;
---- RESULTS: VERIFY_IS_NOT_IN
'','write.update.mode ','merge-on-read '
'','write.merge.mode ','merge-on-read '
---- TYPES
string, string, string
====
---- QUERY
CREATE TABLE iceberg_upgrade_v2_update_mode (i INT) STORED AS ICEBERG;
ALTER TABLE iceberg_upgrade_v2_update_mode
SET TBLPROPERTIES('format-version'='2', 'write.update.mode'='copy-on-write');
DESCRIBE FORMATTED iceberg_upgrade_v2_update_mode;
---- RESULTS: VERIFY_IS_SUBSET
'','write.update.mode ','copy-on-write '
---- TYPES
string, string, string
====
---- QUERY
DESCRIBE FORMATTED iceberg_upgrade_v2_update_mode;
---- RESULTS: VERIFY_IS_NOT_IN
'','write.delete.mode ','merge-on-read '
'','write.merge.mode ','merge-on-read '
---- TYPES
string, string, string
====
---- QUERY
CREATE TABLE iceberg_upgrade_v2_merge_mode (i INT) STORED AS ICEBERG;
ALTER TABLE iceberg_upgrade_v2_merge_mode
SET TBLPROPERTIES('format-version'='2', 'write.merge.mode'='merge-on-read');
DESCRIBE FORMATTED iceberg_upgrade_v2_merge_mode;
---- RESULTS: VERIFY_IS_SUBSET
'','write.merge.mode ','merge-on-read '
---- TYPES
string, string, string
====
---- QUERY
DESCRIBE FORMATTED iceberg_upgrade_v2_merge_mode;
---- RESULTS: VERIFY_IS_NOT_IN
'','write.update.mode ','merge-on-read '
'','write.delete.mode ','merge-on-read '
---- TYPES
string, string, string
====
---- QUERY
# Add a column that already exists and a new column that does not exist with
# "if not exists" clause.
ALTER TABLE ice_alter_cols ADD IF NOT EXISTS COLUMNS (a bigint, d bigint)

View File

@@ -58,7 +58,7 @@ TIMESTAMP,BIGINT,BIGINT,BOOLEAN
select * from functional_parquet.iceberg_query_metadata.metadata_log_entries;
---- RESULTS
# Example:
# 2023-08-16 12:18:11.061000000,'hdfs://localhost:20500/test-warehouse/functional_parquet.db/iceberg_test_metadata/metadata/00000-0ae98ebd-b200-4381-9d97-1f93954423a9.metadata.json',NULL,NULL,NULL
# 2023-08-16 12:18:11.061000000,'$NAMENODE/test-warehouse/functional_parquet.db/iceberg_test_metadata/metadata/00000-0ae98ebd-b200-4381-9d97-1f93954423a9.metadata.json',NULL,NULL,NULL
row_regex:\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}(\.\d{9})?,'$NAMENODE/test-warehouse/iceberg_test/metadata/iceberg_query_metadata/metadata/.*.metadata.json',NULL,NULL,NULL
row_regex:\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}(\.\d{9})?,'$NAMENODE/test-warehouse/iceberg_test/metadata/iceberg_query_metadata/metadata/.*.metadata.json',\d+,0,1
row_regex:\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}(\.\d{9})?,'$NAMENODE/test-warehouse/iceberg_test/metadata/iceberg_query_metadata/metadata/.*.metadata.json',\d+,0,2
@@ -101,9 +101,9 @@ INT,STRING,BIGINT,INT,BIGINT,INT,INT,INT,INT,INT,INT,STRING
---- QUERY
select * from functional_parquet.iceberg_query_metadata.`partitions`;
---- RESULTS
3,3,1,1,0,0
3,3,1053,1,1,0,0,regex:.*,regex:\d+
---- TYPES
BIGINT,INT,BIGINT,INT,BIGINT,INT
BIGINT, INT, BIGINT, BIGINT, INT, BIGINT, INT, TIMESTAMP, BIGINT
====
---- QUERY
select * from functional_parquet.iceberg_query_metadata.all_data_files;
@@ -995,10 +995,13 @@ describe functional_parquet.iceberg_query_metadata.`partitions`;
---- RESULTS
'record_count','bigint','Count of records in data files','true'
'file_count','int','Count of data files','true'
'total_data_file_size_in_bytes','bigint','Total size in bytes of data files','true'
'position_delete_record_count','bigint','Count of records in position delete files','true'
'position_delete_file_count','int','Count of position delete files','true'
'equality_delete_record_count','bigint','Count of records in equality delete files','true'
'equality_delete_file_count','int','Count of equality delete files','true'
'last_updated_at','timestamp','Commit time of snapshot that last updated this partition','true'
'last_updated_snapshot_id','bigint','Id of snapshot that last updated this partition','true'
---- TYPES
STRING,STRING,STRING,STRING
====

View File

@@ -602,14 +602,6 @@ TBLPROPERTIES('write.parquet.dict-size-bytes'='1073741825');
Parquet dictionary page size for Iceberg table should fall in the range of [65536..1073741824]
====
---- QUERY
CREATE TABLE iceberg_wrong_parquet_comp_codec1 ( i int)
STORED AS ICEBERG
TBLPROPERTIES('write.format.default'='orc',
'write.parquet.compression-codec'='snappy');
---- CATCH
write.parquet.compression-codec should be set only for parquet file format
====
---- QUERY
CREATE TABLE iceberg_wrong_parquet_comp_codec2 ( i int)
STORED AS ICEBERG
TBLPROPERTIES('write.parquet.compression-codec'='snapp');
@@ -625,14 +617,6 @@ TBLPROPERTIES('write.parquet.compression-codec'='snapp');
Invalid parquet compression codec for Iceberg table: snapp
====
---- QUERY
CREATE TABLE iceberg_wrong_parquet_comp_level1 ( i int)
STORED AS ICEBERG
TBLPROPERTIES('write.format.default'='orc',
'write.parquet.compression-level'='2');
---- CATCH
write.parquet.compression-level should be set only for parquet file format
====
---- QUERY
CREATE TABLE iceberg_wrong_parquet_comp_level2 ( i int)
STORED AS ICEBERG
TBLPROPERTIES('write.parquet.compression-level'='2');

View File

@@ -507,8 +507,8 @@ SHOW PARTITIONS ice_alter_part;
---- RESULTS
'{"i":"3","d":"18605"}',1,1
'{"i":"4","d":"18606"}',1,1
'{"i":"5","d":null,"d_year":"50","s_bucket_5":"2"}',1,1
'{"i":"6","d":null,"d_year":"50","s_bucket_5":"0"}',1,1
'{"i":"5","d_year":"50","s_bucket_5":"2"}',1,1
'{"i":"6","d_year":"50","s_bucket_5":"0"}',1,1
'{}',2,1
---- TYPES
STRING, BIGINT, BIGINT
@@ -578,10 +578,10 @@ STRING, STRING, STRING, STRING
---- QUERY
SHOW PARTITIONS ice_void;
---- RESULTS
'{"d_year":"34","i":"4","s_null":null}',1,1
'{"i_null":null,"s_trunc":"o","d_year":"31"}',2,1
'{"i_null":null,"s_trunc":"t","d_year":"32"}',1,1
'{"i_null":null,"s_trunc":"t","d_year":"33"}',1,1
'{"i_null":null,"s_trunc":null,"d_year":"34","i":"4","s_null":null}',1,1
---- TYPES
STRING, BIGINT, BIGINT
====
@@ -616,11 +616,11 @@ STRING, STRING, STRING, STRING
---- QUERY
SHOW PARTITIONS ice_void;
---- RESULTS
'{"d_year":"34","i":"4","s_null":null}',1,1
'{"i":"5","s_null":null,"d_null":null}',2,1
'{"i_null":null,"s_trunc":"o","d_year":"31"}',2,1
'{"i_null":null,"s_trunc":"t","d_year":"32"}',1,1
'{"i_null":null,"s_trunc":"t","d_year":"33"}',1,1
'{"i_null":null,"s_trunc":null,"d_year":"34","i":"4","s_null":null}',1,1
'{"i_null":null,"s_trunc":null,"d_year":null,"i":"5","s_null":null,"d_null":null}',2,1
---- TYPES
STRING, BIGINT, BIGINT
====
@@ -658,17 +658,18 @@ STRING, STRING, STRING, STRING
---- QUERY
SHOW PARTITIONS ice_void;
---- RESULTS
'{"d_year":"34","i":"4","s_null":null}',1,1
'{"i":"5","s_null":null,"d_null":null}',2,1
'{"i_null":null,"s_trunc":"o","d_year":"31"}',2,1
'{"i_null":null,"s_trunc":"t","d_year":"32"}',1,1
'{"i_null":null,"s_trunc":"t","d_year":"33"}',1,1
'{"i_null":null,"s_trunc":null,"d_year":"34","i":"4","s_null":null}',1,1
'{"i_null":null,"s_trunc":null,"d_year":null,"i":"5","s_null":null,"d_null":null}',2,1
'{"i_null":null,"s_trunc":null,"d_year":null,"i":null,"s_null":null,"d_null":null}',2,1
'{"s_null":null,"d_null":null,"i_null":null}',2,1
---- TYPES
STRING, BIGINT, BIGINT
====
---- QUERY
create table store_sales partitioned by spec (ss_sold_date_sk) stored as iceberg
create table store_sales partitioned by spec (ss_sold_date_sk)
stored as iceberg
as select * from tpcds_parquet.store_sales;
select count(*) from store_sales;
---- RESULTS
@@ -790,7 +791,7 @@ show partitions special_char_partitions;
'{"i":"3","s":"11=14=31","s_trunc":"11=1"}',1,1
'{"i":"4","s":"","s_trunc":""}',1,1
'{"i":"5","s":null,"s_trunc":null}',1,1
'{"i":null,"s":null,"s_trunc":null,"s2":"98\\/22"}',1,1
'{"s2":"98\\/22"}',1,1
---- TYPES
STRING,BIGINT,BIGINT
====

View File

@@ -43,10 +43,10 @@ select col_i, ICEBERG__DATA__SEQUENCE__NUMBER from ice_tbl order by col_i;
---- TYPES
INT,BIGINT
---- RESULTS
0,0
1,0
3,0
5,0
0,1
1,1
3,1
5,1
====
---- QUERY
# select virtual colum without selecting any other slots.
@@ -54,7 +54,7 @@ select max(ICEBERG__DATA__SEQUENCE__NUMBER) from ice_tbl;
---- TYPES
BIGINT
---- RESULTS
0
1
====
---- QUERY
# Testing data sequence number for unpartitioned V2 tables.

View File

@@ -65,8 +65,8 @@ CREATE EXTERNAL TABLE show_create_table_test_db.ice_with_stats (
)
STORED AS ICEBERG
LOCATION '$$location_uri$$'
TBLPROPERTIES ('OBJCAPABILITIES'='EXTREAD,EXTWRITE', 'engine.hive.enabled'='true', 'external.table.purge'='TRUE', 'impala.computeStatsSnapshotIds'='<NUM>', 'impala.lastComputeStatsTime'='<NUM>', 'table_type'='ICEBERG', 'write.format.default'='parquet');
ALTER TABLE show_create_table_test_db.ice_with_stats SET TBLPROPERTIES ('EXTERNAL'='TRUE', 'OBJCAPABILITIES'='EXTREAD,EXTWRITE', 'engine.hive.enabled'='true', 'external.table.purge'='TRUE', 'impala.computeStatsSnapshotIds'='<NUM>', 'impala.events.catalogServiceId'='<NUM>', 'impala.events.catalogVersion'='<NUM>', 'impala.lastComputeStatsTime'='<NUM>', 'numFiles'='<NUM>', 'numRows'='<NUM>', 'table_type'='ICEBERG', 'totalSize'='<NUM>', 'write.format.default'='parquet');
TBLPROPERTIES ('OBJCAPABILITIES'='EXTREAD,EXTWRITE', 'engine.hive.enabled'='true', 'external.table.purge'='TRUE', 'impala.computeStatsSnapshotIds'='<NUM>', 'impala.lastComputeStatsTime'='<NUM>', 'table_type'='ICEBERG', 'write.delete.mode'='merge-on-read', 'write.format.default'='parquet', 'write.merge.mode'='merge-on-read', 'write.parquet.compression-codec'='snappy', 'write.update.mode'='merge-on-read');
ALTER TABLE show_create_table_test_db.ice_with_stats SET TBLPROPERTIES ('EXTERNAL'='TRUE', 'OBJCAPABILITIES'='EXTREAD,EXTWRITE', 'engine.hive.enabled'='true', 'external.table.purge'='TRUE', 'impala.computeStatsSnapshotIds'='<NUM>', 'impala.events.catalogServiceId'='<NUM>', 'impala.events.catalogVersion'='<NUM>', 'impala.lastComputeStatsTime'='<NUM>', 'numFiles'='<NUM>', 'numRows'='<NUM>', 'table_type'='ICEBERG', 'totalSize'='<NUM>', 'write.delete.mode'='merge-on-read', 'write.format.default'='parquet', 'write.merge.mode'='merge-on-read', 'write.parquet.compression-codec'='snappy', 'write.update.mode'='merge-on-read');
ALTER TABLE show_create_table_test_db.ice_with_stats SET COLUMN STATS i ('numDVs'='1', 'numNulls'='0', 'numTrues'='-1', 'numFalses'='-1');
ALTER TABLE show_create_table_test_db.ice_with_stats SET COLUMN STATS s ('numDVs'='1', 'numNulls'='0', 'maxSize'='1', 'avgSize'='1', 'numTrues'='-1', 'numFalses'='-1');
====

View File

@@ -612,6 +612,9 @@ STORED AS ICEBERG
LOCATION '$$location_uri$$'
TBLPROPERTIES ('TRANSLATED_TO_EXTERNAL'='TRUE',
'external.table.purge'='TRUE',
'write.delete.mode'='merge-on-read',
'write.update.mode'='merge-on-read',
'write.merge.mode'='merge-on-read',
'write.format.default'='parquet',
'write.parquet.compression-codec'='zstd',
'write.parquet.compression-level'='12',
@@ -642,6 +645,9 @@ CREATE EXTERNAL TABLE show_create_table_test_db.iceberg_test2 (
STORED AS ICEBERG
TBLPROPERTIES ('TRANSLATED_TO_EXTERNAL'='TRUE',
'external.table.purge'='TRUE',
'write.delete.mode'='merge-on-read',
'write.update.mode'='merge-on-read',
'write.merge.mode'='merge-on-read',
'write.format.default'='parquet',
'write.parquet.compression-codec'='zstd',
'write.parquet.compression-level'='12',
@@ -674,6 +680,9 @@ CREATE EXTERNAL TABLE show_create_table_test_db.iceberg_test3 (
STORED AS ICEBERG
TBLPROPERTIES ('TRANSLATED_TO_EXTERNAL'='TRUE',
'external.table.purge'='TRUE',
'write.delete.mode'='merge-on-read',
'write.update.mode'='merge-on-read',
'write.merge.mode'='merge-on-read',
'write.format.default'='parquet',
'write.parquet.compression-codec'='zstd',
'write.parquet.compression-level'='12',
@@ -732,6 +741,9 @@ PARTITIONED BY SPEC (
STORED AS ICEBERG
TBLPROPERTIES ('TRANSLATED_TO_EXTERNAL'='TRUE',
'external.table.purge'='TRUE',
'write.delete.mode'='merge-on-read',
'write.update.mode'='merge-on-read',
'write.merge.mode'='merge-on-read',
'write.format.default'='parquet',
'write.parquet.compression-codec'='zstd',
'write.parquet.compression-level'='12',
@@ -756,8 +768,10 @@ CREATE EXTERNAL TABLE show_create_table_test_db.iceberg_test_orc (
STORED AS ICEBERG
LOCATION '$$location_uri$$'
TBLPROPERTIES ('TRANSLATED_TO_EXTERNAL'='TRUE',
'external.table.purge'='TRUE', 'write.format.default'='orc',
'engine.hive.enabled'='true', 'iceberg.catalog'='hadoop.tables')
'external.table.purge'='TRUE', 'write.format.default'='orc',
'engine.hive.enabled'='true', 'iceberg.catalog'='hadoop.tables',
'write.delete.mode'='merge-on-read', 'write.update.mode'='merge-on-read',
'write.merge.mode'='merge-on-read')
====
---- CREATE_TABLE
# Default Iceberg table
@@ -771,8 +785,10 @@ CREATE EXTERNAL TABLE show_create_table_test_db.iceberg_default_tbl (
)
STORED AS ICEBERG
LOCATION '$$location_uri$$'
TBLPROPERTIES ('write.format.default'='parquet', 'engine.hive.enabled'='true',
'external.table.purge'='TRUE', 'table_type'='ICEBERG')
TBLPROPERTIES ('external.table.purge'='TRUE', 'write.format.default'='parquet',
'engine.hive.enabled'='true', 'table_type'='ICEBERG', 'write.delete.mode'='merge-on-read',
'write.update.mode'='merge-on-read', 'write.merge.mode'='merge-on-read',
'write.parquet.compression-codec'='snappy')
====
---- CREATE_TABLE
# Default Iceberg table with ORC format
@@ -789,8 +805,10 @@ CREATE EXTERNAL TABLE show_create_table_test_db.iceberg_default_tbl_orc (
STORED AS ICEBERG
LOCATION '$$location_uri$$'
TBLPROPERTIES ('TRANSLATED_TO_EXTERNAL'='TRUE',
'write.format.default'='orc',
'engine.hive.enabled'='true', 'external.table.purge'='TRUE', 'table_type'='ICEBERG')
'write.format.default'='orc', 'write.parquet.compression-codec'='snappy',
'engine.hive.enabled'='true', 'external.table.purge'='TRUE', 'table_type'='ICEBERG',
'write.update.mode'='merge-on-read', 'write.merge.mode'='merge-on-read',
'write.delete.mode'='merge-on-read')
====
---- CREATE_TABLE
# Iceberg table in HiveCatalog
@@ -807,8 +825,10 @@ CREATE EXTERNAL TABLE show_create_table_test_db.iceberg_hive_cat_explicit (
STORED AS ICEBERG
LOCATION '$$location_uri$$'
TBLPROPERTIES ('TRANSLATED_TO_EXTERNAL'='TRUE',
'write.format.default'='parquet', 'iceberg.catalog'='hive.catalog',
'engine.hive.enabled'='true', 'external.table.purge'='TRUE', 'table_type'='ICEBERG')
'write.format.default'='parquet', 'iceberg.catalog'='hive.catalog',
'engine.hive.enabled'='true', 'external.table.purge'='TRUE', 'table_type'='ICEBERG',
'write.parquet.compression-codec'='snappy', 'write.delete.mode'='merge-on-read',
'write.update.mode'='merge-on-read', 'write.merge.mode'='merge-on-read')
====
---- CREATE_TABLE
CREATE TABLE iceberg_nullable_test (
@@ -835,6 +855,9 @@ STORED AS ICEBERG
LOCATION '$$location_uri$$'
TBLPROPERTIES ('TRANSLATED_TO_EXTERNAL'='TRUE',
'external.table.purge'='TRUE',
'write.delete.mode'='merge-on-read',
'write.update.mode'='merge-on-read',
'write.merge.mode'='merge-on-read',
'write.format.default'='parquet',
'write.parquet.compression-codec'='zstd',
'write.parquet.compression-level'='12',
@@ -858,7 +881,9 @@ PARTITIONED BY SPEC (p, d)
STORED AS ICEBERG
LOCATION '$$location_uri$$'
TBLPROPERTIES ('external.table.purge'='TRUE', 'write.format.default'='parquet',
'engine.hive.enabled'='true', 'table_type'='ICEBERG')
'engine.hive.enabled'='true', 'table_type'='ICEBERG', 'write.parquet.compression-codec'='snappy',
'write.delete.mode'='merge-on-read', 'write.update.mode'='merge-on-read',
'write.merge.mode'='merge-on-read')
====
---- CREATE_TABLE
CREATE TABLE iceberg_ctas
@@ -875,7 +900,9 @@ PARTITIONED BY SPEC (BUCKET(5, id))
STORED AS ICEBERG
LOCATION '$$location_uri$$'
TBLPROPERTIES ('external.table.purge'='TRUE', 'write.format.default'='parquet',
'engine.hive.enabled'='true', 'table_type'='ICEBERG')
'engine.hive.enabled'='true', 'table_type'='ICEBERG', 'write.parquet.compression-codec'='snappy',
'write.delete.mode'='merge-on-read', 'write.update.mode'='merge-on-read',
'write.merge.mode'='merge-on-read')
====
---- CREATE_TABLE
CREATE TABLE iceberg_ctas_ht
@@ -894,8 +921,9 @@ PARTITIONED BY SPEC (BUCKET(5, id))
STORED AS ICEBERG
LOCATION '$$location_uri$$'
TBLPROPERTIES ('TRANSLATED_TO_EXTERNAL'='TRUE',
'external.table.purge'='TRUE', 'write.format.default'='parquet',
'engine.hive.enabled'='true', 'iceberg.catalog'='hadoop.tables')
'external.table.purge'='TRUE', 'write.format.default'='parquet',
'engine.hive.enabled'='true', 'iceberg.catalog'='hadoop.tables', 'write.delete.mode'='merge-on-read',
'write.update.mode'='merge-on-read', 'write.merge.mode'='merge-on-read')
====
---- CREATE_TABLE
CREATE TABLE iceberg_catalogs_hive (i int)
@@ -909,8 +937,10 @@ PARTITIONED BY SPEC (BUCKET(3, i))
STORED AS ICEBERG
LOCATION '$$location_uri$$'
TBLPROPERTIES ('TRANSLATED_TO_EXTERNAL'='TRUE',
'external.table.purge'='TRUE', 'write.format.default'='parquet',
'engine.hive.enabled'='true', 'table_type'='ICEBERG')
'external.table.purge'='TRUE', 'write.format.default'='parquet',
'engine.hive.enabled'='true', 'table_type'='ICEBERG', 'write.parquet.compression-codec'='snappy',
'write.delete.mode'='merge-on-read', 'write.update.mode'='merge-on-read',
'write.merge.mode'='merge-on-read')
====
---- CREATE_TABLE
CREATE TABLE iceberg_catalogs_hadoop (i int)
@@ -924,8 +954,9 @@ PARTITIONED BY SPEC (BUCKET(3, i))
STORED AS ICEBERG
LOCATION '$$location_uri$$'
TBLPROPERTIES ('TRANSLATED_TO_EXTERNAL'='TRUE',
'external.table.purge'='TRUE', 'write.format.default'='parquet',
'engine.hive.enabled'='true', 'iceberg.catalog'='ice_hadoop_cat')
'external.table.purge'='TRUE', 'write.format.default'='parquet',
'engine.hive.enabled'='true', 'iceberg.catalog'='ice_hadoop_cat', 'write.delete.mode'='merge-on-read',
'write.update.mode'='merge-on-read', 'write.merge.mode'='merge-on-read')
====
---- CREATE_TABLE
CREATE TABLE iceberg_void_transform (i int, j int)
@@ -937,7 +968,9 @@ PARTITIONED BY SPEC (VOID(i), VOID(j))
STORED AS ICEBERG
LOCATION '$$location_uri$$'
TBLPROPERTIES ('external.table.purge'='TRUE', 'write.format.default'='parquet',
'engine.hive.enabled'='true', 'table_type'='ICEBERG')
'engine.hive.enabled'='true', 'table_type'='ICEBERG', 'write.parquet.compression-codec'='snappy'
'write.delete.mode'='merge-on-read', 'write.update.mode'='merge-on-read',
'write.merge.mode'='merge-on-read')
====
---- CREATE_TABLE
# Creating V1 tables explicitly should not set 'merge-on-read' write modes if no write mode is
@@ -950,8 +983,9 @@ CREATE EXTERNAL TABLE show_create_table_test_db.ice_explicit_v1 (i INT NULL)
STORED AS ICEBERG
LOCATION '$$location_uri$$'
TBLPROPERTIES ('TRANSLATED_TO_EXTERNAL'='TRUE',
'external.table.purge'='TRUE', 'write.format.default'='parquet',
'engine.hive.enabled'='true', 'table_type'='ICEBERG')
'format-version'='1', 'engine.hive.enabled'='true', 'external.table.purge'='TRUE',
'table_type'='ICEBERG',
'write.format.default'='parquet', 'write.parquet.compression-codec'='snappy')
====
---- CREATE_TABLE
# Creating V2 tables should set 'merge-on-read' write modes if no write mode is specified.
@@ -965,7 +999,8 @@ LOCATION '$$location_uri$$'
TBLPROPERTIES ('TRANSLATED_TO_EXTERNAL'='TRUE',
'external.table.purge'='TRUE', 'write.format.default'='parquet',
'engine.hive.enabled'='true', 'table_type'='ICEBERG', 'write.delete.mode'='merge-on-read',
'write.update.mode'='merge-on-read', 'write.merge.mode'='merge-on-read')
'write.update.mode'='merge-on-read', 'write.merge.mode'='merge-on-read',
'write.parquet.compression-codec'='snappy')
====
---- CREATE_TABLE
# Creating V2 tables should not set write mode if user specified any of it to any value.
@@ -978,8 +1013,9 @@ CREATE EXTERNAL TABLE show_create_table_test_db.ice_v2_explicit_delete (i INT NU
STORED AS ICEBERG
LOCATION '$$location_uri$$'
TBLPROPERTIES ('TRANSLATED_TO_EXTERNAL'='TRUE',
'external.table.purge'='TRUE', 'write.format.default'='parquet',
'engine.hive.enabled'='true', 'table_type'='ICEBERG', 'write.delete.mode'='merge-on-read')
'external.table.purge'='TRUE', 'write.format.default'='parquet',
'engine.hive.enabled'='true', 'table_type'='ICEBERG', 'write.delete.mode'='merge-on-read',
'write.parquet.compression-codec'='snappy')
====
---- CREATE_TABLE
# Creating V2 tables should not set write mode if user specified any of it to any value.
@@ -992,8 +1028,9 @@ CREATE EXTERNAL TABLE show_create_table_test_db.ice_v2_explicit_delete_2 (i INT
STORED AS ICEBERG
LOCATION '$$location_uri$$'
TBLPROPERTIES ('TRANSLATED_TO_EXTERNAL'='TRUE',
'external.table.purge'='TRUE', 'write.format.default'='parquet',
'engine.hive.enabled'='true', 'table_type'='ICEBERG', 'write.delete.mode'='copy-on-write')
'external.table.purge'='TRUE', 'write.format.default'='parquet',
'engine.hive.enabled'='true', 'table_type'='ICEBERG', 'write.delete.mode'='copy-on-write',
'write.parquet.compression-codec'='snappy')
====
---- CREATE_TABLE
# Creating V2 tables should not set write mode if user specified any of it to any value.
@@ -1006,8 +1043,9 @@ CREATE EXTERNAL TABLE show_create_table_test_db.ice_v2_explicit_update (i INT NU
STORED AS ICEBERG
LOCATION '$$location_uri$$'
TBLPROPERTIES ('TRANSLATED_TO_EXTERNAL'='TRUE',
'external.table.purge'='TRUE', 'write.format.default'='parquet',
'engine.hive.enabled'='true', 'table_type'='ICEBERG', 'write.update.mode'='copy-on-write')
'external.table.purge'='TRUE', 'write.format.default'='parquet',
'engine.hive.enabled'='true', 'table_type'='ICEBERG', 'write.update.mode'='copy-on-write',
'write.parquet.compression-codec'='snappy')
====
---- CREATE_TABLE
# Creating V2 tables should not set write mode if user specified any of it to any value.
@@ -1020,8 +1058,9 @@ CREATE EXTERNAL TABLE show_create_table_test_db.ice_v2_explicit_merge (i INT NUL
STORED AS ICEBERG
LOCATION '$$location_uri$$'
TBLPROPERTIES ('TRANSLATED_TO_EXTERNAL'='TRUE',
'external.table.purge'='TRUE', 'write.format.default'='parquet',
'engine.hive.enabled'='true', 'table_type'='ICEBERG', 'write.merge.mode'='copy-on-write')
'external.table.purge'='TRUE', 'write.format.default'='parquet',
'engine.hive.enabled'='true', 'table_type'='ICEBERG', 'write.merge.mode'='copy-on-write',
'write.parquet.compression-codec'='snappy')
====
---- CREATE_TABLE
# Test create Bucketed Table