morningman commented on code in PR #33153: URL: https://github.com/apache/doris/pull/33153#discussion_r1553477871
########## regression-test/suites/external_table_p0/hive/ddl/test_hive_ddl_and_ctas.groovy: ########## @@ -217,75 +216,372 @@ suite("test_hive_ddl_and_ctas", "p0,external,hive,external_docker,external_docke (11, 'value_for_pt1', 'value_for_pt2'), (22, 'value_for_pt11', 'value_for_pt22'); """ + } + def destroySrcDDLForCTAS = { String catalog_name -> sql """ switch `${catalog_name}` """ - // 1. external to external un-partitioned table - sql """ CREATE TABLE hive_ctas1 ENGINE=hive AS SELECT col1 FROM unpart_ctas_src; - """ + sql """ DROP TABLE IF EXISTS `test_ctas`.part_ctas_src """ + sql """ DROP TABLE IF EXISTS `test_ctas`.unpart_ctas_src """ + sql """ drop database if exists `test_ctas` """; + sql """ DROP TABLE IF EXISTS internal.test_ctas_olap.part_ctas_olap_src """ + sql """ DROP TABLE IF EXISTS internal.test_ctas_olap.unpart_ctas_olap_src """ + sql """ switch internal """; + sql """ drop database if exists test_ctas_olap """; + } - sql """ INSERT INTO hive_ctas1 SELECT col1 FROM unpart_ctas_src WHERE col1 > 1; - """ + def test_ctas_tbl = { String file_format, String catalog_name -> + generateSrcDDLForCTAS(file_format, catalog_name) + try { + sql """ switch `${catalog_name}` """ + // 1. external to external un-partitioned table + sql """ CREATE TABLE hive_ctas1 ENGINE=hive AS SELECT col1 FROM unpart_ctas_src; + """ - order_qt_ctas_01 """ SELECT * FROM hive_ctas1 """ - sql """ DROP TABLE hive_ctas1 """ + sql """ INSERT INTO hive_ctas1 SELECT col1 FROM unpart_ctas_src WHERE col1 > 1; + """ + sql """ INSERT OVERWRITE TABLE hive_ctas1 SELECT col1 FROM unpart_ctas_src WHERE col1 > 1; + """ - // 2. external to external partitioned table - sql """ CREATE TABLE hive_ctas2 ENGINE=hive AS SELECT col1,pt1,pt2 FROM part_ctas_src WHERE col1>0; + order_qt_ctas_01 """ SELECT * FROM hive_ctas1 """ + sql """ DROP TABLE hive_ctas1 """ + + // 2. external to external partitioned table + sql """ CREATE TABLE hive_ctas2 ENGINE=hive AS SELECT col1,pt1,pt2 FROM part_ctas_src WHERE col1>0; Review Comment: why `hive_ctas2` is a partitioned table? ########## regression-test/suites/external_table_p0/hive/ddl/test_hive_ddl_and_ctas.groovy: ########## @@ -217,75 +216,372 @@ suite("test_hive_ddl_and_ctas", "p0,external,hive,external_docker,external_docke (11, 'value_for_pt1', 'value_for_pt2'), (22, 'value_for_pt11', 'value_for_pt22'); """ + } + def destroySrcDDLForCTAS = { String catalog_name -> sql """ switch `${catalog_name}` """ - // 1. external to external un-partitioned table - sql """ CREATE TABLE hive_ctas1 ENGINE=hive AS SELECT col1 FROM unpart_ctas_src; - """ + sql """ DROP TABLE IF EXISTS `test_ctas`.part_ctas_src """ + sql """ DROP TABLE IF EXISTS `test_ctas`.unpart_ctas_src """ + sql """ drop database if exists `test_ctas` """; + sql """ DROP TABLE IF EXISTS internal.test_ctas_olap.part_ctas_olap_src """ + sql """ DROP TABLE IF EXISTS internal.test_ctas_olap.unpart_ctas_olap_src """ + sql """ switch internal """; + sql """ drop database if exists test_ctas_olap """; + } - sql """ INSERT INTO hive_ctas1 SELECT col1 FROM unpart_ctas_src WHERE col1 > 1; - """ + def test_ctas_tbl = { String file_format, String catalog_name -> + generateSrcDDLForCTAS(file_format, catalog_name) + try { + sql """ switch `${catalog_name}` """ + // 1. external to external un-partitioned table + sql """ CREATE TABLE hive_ctas1 ENGINE=hive AS SELECT col1 FROM unpart_ctas_src; + """ - order_qt_ctas_01 """ SELECT * FROM hive_ctas1 """ - sql """ DROP TABLE hive_ctas1 """ + sql """ INSERT INTO hive_ctas1 SELECT col1 FROM unpart_ctas_src WHERE col1 > 1; + """ + sql """ INSERT OVERWRITE TABLE hive_ctas1 SELECT col1 FROM unpart_ctas_src WHERE col1 > 1; + """ - // 2. external to external partitioned table - sql """ CREATE TABLE hive_ctas2 ENGINE=hive AS SELECT col1,pt1,pt2 FROM part_ctas_src WHERE col1>0; + order_qt_ctas_01 """ SELECT * FROM hive_ctas1 """ + sql """ DROP TABLE hive_ctas1 """ + + // 2. external to external partitioned table + sql """ CREATE TABLE hive_ctas2 ENGINE=hive AS SELECT col1,pt1,pt2 FROM part_ctas_src WHERE col1>0; """ - sql """ INSERT INTO hive_ctas2 SELECT col1,pt1,pt2 FROM part_ctas_src WHERE col1>=22; + sql """ INSERT INTO hive_ctas2 SELECT col1,pt1,pt2 FROM part_ctas_src WHERE col1>=22; + """ + sql """ INSERT OVERWRITE TABLE hive_ctas2 SELECT col1,pt1,pt2 FROM part_ctas_src WHERE col1>=22; """ - order_qt_ctas_02 """ SELECT * FROM hive_ctas2 """ - sql """ DROP TABLE hive_ctas2 """ + order_qt_ctas_02 """ SELECT * FROM hive_ctas2 """ + sql """ DROP TABLE hive_ctas2 """ - // 3. internal to external un-partitioned table - sql """ CREATE TABLE ctas_o1 ENGINE=hive AS SELECT col1,col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; - """ + // 3. internal to external un-partitioned table + sql """ CREATE TABLE ctas_o1 ENGINE=hive AS SELECT col1,col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; + """ - sql """ INSERT INTO ctas_o1 SELECT col1,col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; - """ + sql """ INSERT INTO ctas_o1 SELECT col1,col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; + """ + sql """ INSERT OVERWRITE TABLE ctas_o1 SELECT col1,col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; + """ - order_qt_ctas_03 """ SELECT * FROM ctas_o1 """ - sql """ DROP TABLE ctas_o1 """ + order_qt_ctas_03 """ SELECT * FROM ctas_o1 """ + sql """ DROP TABLE ctas_o1 """ - // 4. internal to external partitioned table - sql """ CREATE TABLE ctas_o2 ENGINE=hive AS SELECT col1,pt1,pt2 FROM internal.test_ctas_olap.part_ctas_olap_src WHERE col1>0; - """ - sql """ INSERT INTO ctas_o2 SELECT col1,pt1,pt2 FROM internal.test_ctas_olap.part_ctas_olap_src WHERE col1>2; - """ - order_qt_ctas_04 """ SELECT * FROM ctas_o2 """ - sql """ DROP TABLE ctas_o2 """ + // 4. internal to external partitioned table + sql """ CREATE TABLE ctas_o2 ENGINE=hive AS SELECT col1,pt1,pt2 FROM internal.test_ctas_olap.part_ctas_olap_src WHERE col1>0; + """ + sql """ INSERT INTO ctas_o2 SELECT col1,pt1,pt2 FROM internal.test_ctas_olap.part_ctas_olap_src WHERE col1>2; + """ + sql """ INSERT OVERWRITE TABLE ctas_o2 SELECT col1,pt1,pt2 FROM internal.test_ctas_olap.part_ctas_olap_src WHERE col1>2; + """ + order_qt_ctas_04 """ SELECT * FROM ctas_o2 """ + sql """ DROP TABLE ctas_o2 """ - // 5. check external to internal un-partitioned table - sql """ use internal.test_ctas_olap """ - sql """ CREATE TABLE olap_ctas1 + // 5. check external to internal un-partitioned table + sql """ use internal.test_ctas_olap """ + sql """ CREATE TABLE olap_ctas1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1" ) AS SELECT col1,col2 FROM `${catalog_name}`.`test_ctas`.unpart_ctas_src; """ - order_qt_ctas_05 """ SELECT * FROM olap_ctas1 """ - sql """ DROP TABLE olap_ctas1 """ + order_qt_ctas_05 """ SELECT * FROM olap_ctas1 """ + sql """ DROP TABLE olap_ctas1 """ - // 6. check external to internal partitioned table - sql """ CREATE TABLE olap_ctas2 + // 6. check external to internal partitioned table Review Comment: No need to check external to internal ########## regression-test/suites/external_table_p0/hive/ddl/test_hive_ddl_and_ctas.groovy: ########## @@ -217,75 +216,372 @@ suite("test_hive_ddl_and_ctas", "p0,external,hive,external_docker,external_docke (11, 'value_for_pt1', 'value_for_pt2'), (22, 'value_for_pt11', 'value_for_pt22'); """ + } + def destroySrcDDLForCTAS = { String catalog_name -> sql """ switch `${catalog_name}` """ - // 1. external to external un-partitioned table - sql """ CREATE TABLE hive_ctas1 ENGINE=hive AS SELECT col1 FROM unpart_ctas_src; - """ + sql """ DROP TABLE IF EXISTS `test_ctas`.part_ctas_src """ + sql """ DROP TABLE IF EXISTS `test_ctas`.unpart_ctas_src """ + sql """ drop database if exists `test_ctas` """; + sql """ DROP TABLE IF EXISTS internal.test_ctas_olap.part_ctas_olap_src """ + sql """ DROP TABLE IF EXISTS internal.test_ctas_olap.unpart_ctas_olap_src """ + sql """ switch internal """; + sql """ drop database if exists test_ctas_olap """; + } - sql """ INSERT INTO hive_ctas1 SELECT col1 FROM unpart_ctas_src WHERE col1 > 1; - """ + def test_ctas_tbl = { String file_format, String catalog_name -> + generateSrcDDLForCTAS(file_format, catalog_name) + try { + sql """ switch `${catalog_name}` """ + // 1. external to external un-partitioned table + sql """ CREATE TABLE hive_ctas1 ENGINE=hive AS SELECT col1 FROM unpart_ctas_src; + """ - order_qt_ctas_01 """ SELECT * FROM hive_ctas1 """ - sql """ DROP TABLE hive_ctas1 """ + sql """ INSERT INTO hive_ctas1 SELECT col1 FROM unpart_ctas_src WHERE col1 > 1; + """ + sql """ INSERT OVERWRITE TABLE hive_ctas1 SELECT col1 FROM unpart_ctas_src WHERE col1 > 1; + """ - // 2. external to external partitioned table - sql """ CREATE TABLE hive_ctas2 ENGINE=hive AS SELECT col1,pt1,pt2 FROM part_ctas_src WHERE col1>0; + order_qt_ctas_01 """ SELECT * FROM hive_ctas1 """ + sql """ DROP TABLE hive_ctas1 """ + + // 2. external to external partitioned table + sql """ CREATE TABLE hive_ctas2 ENGINE=hive AS SELECT col1,pt1,pt2 FROM part_ctas_src WHERE col1>0; """ - sql """ INSERT INTO hive_ctas2 SELECT col1,pt1,pt2 FROM part_ctas_src WHERE col1>=22; + sql """ INSERT INTO hive_ctas2 SELECT col1,pt1,pt2 FROM part_ctas_src WHERE col1>=22; + """ + sql """ INSERT OVERWRITE TABLE hive_ctas2 SELECT col1,pt1,pt2 FROM part_ctas_src WHERE col1>=22; """ - order_qt_ctas_02 """ SELECT * FROM hive_ctas2 """ - sql """ DROP TABLE hive_ctas2 """ + order_qt_ctas_02 """ SELECT * FROM hive_ctas2 """ + sql """ DROP TABLE hive_ctas2 """ - // 3. internal to external un-partitioned table - sql """ CREATE TABLE ctas_o1 ENGINE=hive AS SELECT col1,col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; - """ + // 3. internal to external un-partitioned table + sql """ CREATE TABLE ctas_o1 ENGINE=hive AS SELECT col1,col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; + """ - sql """ INSERT INTO ctas_o1 SELECT col1,col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; - """ + sql """ INSERT INTO ctas_o1 SELECT col1,col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; + """ + sql """ INSERT OVERWRITE TABLE ctas_o1 SELECT col1,col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; + """ - order_qt_ctas_03 """ SELECT * FROM ctas_o1 """ - sql """ DROP TABLE ctas_o1 """ + order_qt_ctas_03 """ SELECT * FROM ctas_o1 """ + sql """ DROP TABLE ctas_o1 """ - // 4. internal to external partitioned table - sql """ CREATE TABLE ctas_o2 ENGINE=hive AS SELECT col1,pt1,pt2 FROM internal.test_ctas_olap.part_ctas_olap_src WHERE col1>0; - """ - sql """ INSERT INTO ctas_o2 SELECT col1,pt1,pt2 FROM internal.test_ctas_olap.part_ctas_olap_src WHERE col1>2; - """ - order_qt_ctas_04 """ SELECT * FROM ctas_o2 """ - sql """ DROP TABLE ctas_o2 """ + // 4. internal to external partitioned table + sql """ CREATE TABLE ctas_o2 ENGINE=hive AS SELECT col1,pt1,pt2 FROM internal.test_ctas_olap.part_ctas_olap_src WHERE col1>0; + """ + sql """ INSERT INTO ctas_o2 SELECT col1,pt1,pt2 FROM internal.test_ctas_olap.part_ctas_olap_src WHERE col1>2; + """ + sql """ INSERT OVERWRITE TABLE ctas_o2 SELECT col1,pt1,pt2 FROM internal.test_ctas_olap.part_ctas_olap_src WHERE col1>2; + """ + order_qt_ctas_04 """ SELECT * FROM ctas_o2 """ + sql """ DROP TABLE ctas_o2 """ - // 5. check external to internal un-partitioned table - sql """ use internal.test_ctas_olap """ - sql """ CREATE TABLE olap_ctas1 + // 5. check external to internal un-partitioned table Review Comment: No need to check external to internal ########## regression-test/suites/external_table_p0/hive/ddl/test_hive_ddl_and_ctas.groovy: ########## @@ -217,75 +216,372 @@ suite("test_hive_ddl_and_ctas", "p0,external,hive,external_docker,external_docke (11, 'value_for_pt1', 'value_for_pt2'), (22, 'value_for_pt11', 'value_for_pt22'); """ + } + def destroySrcDDLForCTAS = { String catalog_name -> sql """ switch `${catalog_name}` """ - // 1. external to external un-partitioned table - sql """ CREATE TABLE hive_ctas1 ENGINE=hive AS SELECT col1 FROM unpart_ctas_src; - """ + sql """ DROP TABLE IF EXISTS `test_ctas`.part_ctas_src """ + sql """ DROP TABLE IF EXISTS `test_ctas`.unpart_ctas_src """ + sql """ drop database if exists `test_ctas` """; + sql """ DROP TABLE IF EXISTS internal.test_ctas_olap.part_ctas_olap_src """ + sql """ DROP TABLE IF EXISTS internal.test_ctas_olap.unpart_ctas_olap_src """ + sql """ switch internal """; + sql """ drop database if exists test_ctas_olap """; + } - sql """ INSERT INTO hive_ctas1 SELECT col1 FROM unpart_ctas_src WHERE col1 > 1; - """ + def test_ctas_tbl = { String file_format, String catalog_name -> + generateSrcDDLForCTAS(file_format, catalog_name) + try { + sql """ switch `${catalog_name}` """ + // 1. external to external un-partitioned table + sql """ CREATE TABLE hive_ctas1 ENGINE=hive AS SELECT col1 FROM unpart_ctas_src; + """ - order_qt_ctas_01 """ SELECT * FROM hive_ctas1 """ - sql """ DROP TABLE hive_ctas1 """ + sql """ INSERT INTO hive_ctas1 SELECT col1 FROM unpart_ctas_src WHERE col1 > 1; + """ + sql """ INSERT OVERWRITE TABLE hive_ctas1 SELECT col1 FROM unpart_ctas_src WHERE col1 > 1; + """ - // 2. external to external partitioned table - sql """ CREATE TABLE hive_ctas2 ENGINE=hive AS SELECT col1,pt1,pt2 FROM part_ctas_src WHERE col1>0; + order_qt_ctas_01 """ SELECT * FROM hive_ctas1 """ + sql """ DROP TABLE hive_ctas1 """ + + // 2. external to external partitioned table + sql """ CREATE TABLE hive_ctas2 ENGINE=hive AS SELECT col1,pt1,pt2 FROM part_ctas_src WHERE col1>0; """ - sql """ INSERT INTO hive_ctas2 SELECT col1,pt1,pt2 FROM part_ctas_src WHERE col1>=22; + sql """ INSERT INTO hive_ctas2 SELECT col1,pt1,pt2 FROM part_ctas_src WHERE col1>=22; + """ + sql """ INSERT OVERWRITE TABLE hive_ctas2 SELECT col1,pt1,pt2 FROM part_ctas_src WHERE col1>=22; """ - order_qt_ctas_02 """ SELECT * FROM hive_ctas2 """ - sql """ DROP TABLE hive_ctas2 """ + order_qt_ctas_02 """ SELECT * FROM hive_ctas2 """ + sql """ DROP TABLE hive_ctas2 """ - // 3. internal to external un-partitioned table - sql """ CREATE TABLE ctas_o1 ENGINE=hive AS SELECT col1,col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; - """ + // 3. internal to external un-partitioned table + sql """ CREATE TABLE ctas_o1 ENGINE=hive AS SELECT col1,col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; + """ - sql """ INSERT INTO ctas_o1 SELECT col1,col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; - """ + sql """ INSERT INTO ctas_o1 SELECT col1,col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; + """ + sql """ INSERT OVERWRITE TABLE ctas_o1 SELECT col1,col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; + """ - order_qt_ctas_03 """ SELECT * FROM ctas_o1 """ - sql """ DROP TABLE ctas_o1 """ + order_qt_ctas_03 """ SELECT * FROM ctas_o1 """ + sql """ DROP TABLE ctas_o1 """ - // 4. internal to external partitioned table - sql """ CREATE TABLE ctas_o2 ENGINE=hive AS SELECT col1,pt1,pt2 FROM internal.test_ctas_olap.part_ctas_olap_src WHERE col1>0; - """ - sql """ INSERT INTO ctas_o2 SELECT col1,pt1,pt2 FROM internal.test_ctas_olap.part_ctas_olap_src WHERE col1>2; - """ - order_qt_ctas_04 """ SELECT * FROM ctas_o2 """ - sql """ DROP TABLE ctas_o2 """ + // 4. internal to external partitioned table + sql """ CREATE TABLE ctas_o2 ENGINE=hive AS SELECT col1,pt1,pt2 FROM internal.test_ctas_olap.part_ctas_olap_src WHERE col1>0; + """ + sql """ INSERT INTO ctas_o2 SELECT col1,pt1,pt2 FROM internal.test_ctas_olap.part_ctas_olap_src WHERE col1>2; + """ + sql """ INSERT OVERWRITE TABLE ctas_o2 SELECT col1,pt1,pt2 FROM internal.test_ctas_olap.part_ctas_olap_src WHERE col1>2; + """ + order_qt_ctas_04 """ SELECT * FROM ctas_o2 """ + sql """ DROP TABLE ctas_o2 """ - // 5. check external to internal un-partitioned table - sql """ use internal.test_ctas_olap """ - sql """ CREATE TABLE olap_ctas1 + // 5. check external to internal un-partitioned table + sql """ use internal.test_ctas_olap """ + sql """ CREATE TABLE olap_ctas1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1" ) AS SELECT col1,col2 FROM `${catalog_name}`.`test_ctas`.unpart_ctas_src; """ - order_qt_ctas_05 """ SELECT * FROM olap_ctas1 """ - sql """ DROP TABLE olap_ctas1 """ + order_qt_ctas_05 """ SELECT * FROM olap_ctas1 """ + sql """ DROP TABLE olap_ctas1 """ - // 6. check external to internal partitioned table - sql """ CREATE TABLE olap_ctas2 + // 6. check external to internal partitioned table + sql """ CREATE TABLE olap_ctas2 PROPERTIES ( "replication_allocation" = "tag.location.default: 1" ) AS SELECT col1,pt1,pt2 FROM `${catalog_name}`.`test_ctas`.part_ctas_src WHERE col1>0; """ - order_qt_ctas_06 """ SELECT * FROM olap_ctas2 """ - sql """ DROP TABLE olap_ctas2 """ + order_qt_ctas_06 """ SELECT * FROM olap_ctas2 """ + sql """ DROP TABLE olap_ctas2 """ + } finally { + destroySrcDDLForCTAS(catalog_name) + } + } - sql """ switch `${catalog_name}` """ - sql """ DROP TABLE `test_ctas`.part_ctas_src """ - sql """ DROP TABLE `test_ctas`.unpart_ctas_src """ - sql """ drop database if exists `test_ctas` """; - sql """ DROP TABLE internal.test_ctas_olap.part_ctas_olap_src """ - sql """ DROP TABLE internal.test_ctas_olap.unpart_ctas_olap_src """ - sql """ switch internal """; - sql """ drop database if exists test_ctas_olap """; + def test_ctas_extend = { String file_format, String catalog_name -> + generateSrcDDLForCTAS(file_format, catalog_name) + sql """ switch ${catalog_name} """ + + try { + sql """ DROP DATABASE IF EXISTS ${catalog_name}.test_ctas_ex """; + sql """ DROP DATABASE IF EXISTS `test_ctas_ex` """; + sql """ CREATE DATABASE IF NOT EXISTS ${catalog_name}.test_ctas_ex + PROPERTIES ( + "location_uri" = "/user/hive/warehouse/test_ctas_ex" + ) + """; + sql """ CREATE DATABASE IF NOT EXISTS `test_ctas_ex` + PROPERTIES ( + "location_uri" = "/user/hive/warehouse/test_ctas_ex" + ) + """; + sql """ use `${catalog_name}`.`test_ctas_ex` """ + + // 1. external to external un-partitioned table + sql """ DROP TABLE IF EXISTS ${catalog_name}.test_ctas_ex.hive_ctas1 """ + sql """ CREATE TABLE ${catalog_name}.test_ctas_ex.hive_ctas1 (col1) ENGINE=hive + PROPERTIES ( + "location_uri" = "/user/hive/warehouse/test_ctas_ex/loc_hive_ctas1", + "file_format"="orc", + "orc.compress"="zlib" + ) AS SELECT col1 FROM test_ctas.unpart_ctas_src; + """ + sql """ INSERT INTO ${catalog_name}.test_ctas_ex.hive_ctas1 + SELECT col1 FROM test_ctas.unpart_ctas_src WHERE col1 > 1; + """ + sql """ INSERT OVERWRITE TABLE ${catalog_name}.test_ctas_ex.hive_ctas1 + SELECT col1 FROM test_ctas.unpart_ctas_src WHERE col1 > 1; + """ + order_qt_ctas_ex01 """ SELECT * FROM hive_ctas1 """ + sql """ DROP TABLE hive_ctas1 """ + + // 2. external to external partitioned table + sql """ DROP TABLE IF EXISTS ${catalog_name}.test_ctas_ex.hive_ctas2 """ + sql """ CREATE TABLE ${catalog_name}.test_ctas_ex.hive_ctas2 (col1,pt1,pt2) ENGINE=hive + PROPERTIES ( + "location_uri" = "/user/hive/warehouse/test_ctas_ex/loc_hive_ctas2", + "file_format"="parquet", + "parquet.compression"="snappy" + ) AS SELECT col1,pt1,pt2 FROM test_ctas.part_ctas_src WHERE col1>0; + """ + sql """ INSERT INTO ${catalog_name}.test_ctas_ex.hive_ctas2 (col1,pt1,pt2) + SELECT col1,pt1,pt2 FROM test_ctas.part_ctas_src WHERE col1>=22; + """ + sql """ INSERT OVERWRITE TABLE hive_ctas2 (col1,pt1,pt2) + SELECT col1,pt1,pt2 FROM test_ctas.part_ctas_src WHERE col1>=22; + """ + sql """ INSERT INTO ${catalog_name}.test_ctas_ex.hive_ctas2 (pt1,col1) + SELECT pt1,col1 FROM test_ctas.part_ctas_src WHERE col1>=22; + """ + order_qt_ctas_ex02 """ SELECT * FROM hive_ctas2 """ + sql """ DROP TABLE hive_ctas2 """ + + // 3. internal to external un-partitioned table + sql """ DROP TABLE IF EXISTS ${catalog_name}.test_ctas_ex.ctas_o1 """ + sql """ CREATE TABLE ${catalog_name}.test_ctas_ex.ctas_o1 ENGINE=hive + PROPERTIES ( + "location_uri" = "/user/hive/warehouse/test_ctas_ex/loc_ctas_o1", + "file_format"="parquet", + "parquet.compression"="snappy" + ) + AS SELECT col1,col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; + """ + sql """ INSERT INTO ${catalog_name}.test_ctas_ex.ctas_o1 (col2,col1) + SELECT col2,col1 FROM internal.test_ctas_olap.unpart_ctas_olap_src; + """ + sql """ INSERT OVERWRITE TABLE ${catalog_name}.test_ctas_ex.ctas_o1 (col2) + SELECT col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; + """ + order_qt_ctas_03 """ SELECT * FROM ctas_o1 """ + sql """ DROP TABLE ctas_o1 """ + + // 4. internal to external partitioned table + sql """ DROP TABLE IF EXISTS ${catalog_name}.test_ctas_ex.ctas_o2 """ + sql """ CREATE TABLE ${catalog_name}.test_ctas_ex.ctas_o2 (col1,col2,pt1) ENGINE=hive + PROPERTIES ( + "location_uri" = "/user/hive/warehouse/test_ctas_ex/loc_ctas_o2", + "file_format"="orc", + "orc.compress"="zlib" + ) + AS SELECT null as col1, pt2 as col2, pt1 FROM internal.test_ctas_olap.part_ctas_olap_src WHERE col1>0; + """ + sql """ INSERT INTO ${catalog_name}.test_ctas_ex.ctas_o2 (col1,pt1,col2) + SELECT col1,pt1,pt2 FROM internal.test_ctas_olap.part_ctas_olap_src; + """ + sql """ INSERT INTO ${catalog_name}.test_ctas_ex.ctas_o2 (col2,pt1,col1) + SELECT pt2,pt1,col1 FROM internal.test_ctas_olap.part_ctas_olap_src; + """ + sql """ INSERT OVERWRITE TABLE ${catalog_name}.test_ctas_ex.ctas_o2 (pt1,col2) + SELECT pt1,col1 FROM internal.test_ctas_olap.part_ctas_olap_src; + """ + order_qt_ctas_04 """ SELECT * FROM ctas_o2 """ + sql """ DROP TABLE ctas_o2 """ + } finally { + destroySrcDDLForCTAS(catalog_name) + } + } + + def test_ddl_exception = { String file_format, String catalog_name -> + sql """ switch ${catalog_name} """ + + sql """ create database if not exists `test_hive_ex` """; + try { + sql """ create database `test_hive_ex` """ + } catch (Exception e) { + suite.getLogger().warn(e.getMessage()) + } + sql """use `${catalog_name}`.`test_hive_ex`""" + + sql """ + CREATE TABLE test_hive_ex.ex_tbl_${file_format}( + `col1` BOOLEAN COMMENT 'col1', + `col2` INT COMMENT 'col2', + `col3` BIGINT COMMENT 'col3', + `col4` CHAR(10) COMMENT 'col4', + `col5` FLOAT COMMENT 'col5', + `col6` DOUBLE COMMENT 'col6', + `col7` DECIMAL(6,4) COMMENT 'col7', + `col8` VARCHAR(11) COMMENT 'col8', + `col9` STRING COMMENT 'col9', + `pt1` VARCHAR COMMENT 'pt1', + `pt2` STRING COMMENT 'pt2', + `pt3` DATE COMMENT 'pt3' + ) ENGINE=hive + PARTITION BY LIST (pt1, pt2) () + PROPERTIES ( + 'file_format'='${file_format}' + ) + """; + + try { + // test columns + sql """ INSERT INTO ex_tbl_${file_format} (`col1`, `col2`, `col3`, `col4`, `col5`, `col6`, `col7`, `col8`, `col9`) + VALUES + (true, 123, 987654321099, 'abcdefghij', 3.1214, 63.28, 123.4567, 'varcharval', 'stringval'); + """ + } catch (Exception e) { + suite.getLogger().warn(e.getMessage()) Review Comment: Use `test action` See: https://doris.apache.org/community/developer-guide/regression-testing#test-action ########## regression-test/suites/external_table_p0/hive/ddl/test_hive_ddl_and_ctas.groovy: ########## @@ -217,75 +216,372 @@ suite("test_hive_ddl_and_ctas", "p0,external,hive,external_docker,external_docke (11, 'value_for_pt1', 'value_for_pt2'), (22, 'value_for_pt11', 'value_for_pt22'); """ + } + def destroySrcDDLForCTAS = { String catalog_name -> sql """ switch `${catalog_name}` """ - // 1. external to external un-partitioned table - sql """ CREATE TABLE hive_ctas1 ENGINE=hive AS SELECT col1 FROM unpart_ctas_src; - """ + sql """ DROP TABLE IF EXISTS `test_ctas`.part_ctas_src """ + sql """ DROP TABLE IF EXISTS `test_ctas`.unpart_ctas_src """ + sql """ drop database if exists `test_ctas` """; + sql """ DROP TABLE IF EXISTS internal.test_ctas_olap.part_ctas_olap_src """ + sql """ DROP TABLE IF EXISTS internal.test_ctas_olap.unpart_ctas_olap_src """ + sql """ switch internal """; + sql """ drop database if exists test_ctas_olap """; + } - sql """ INSERT INTO hive_ctas1 SELECT col1 FROM unpart_ctas_src WHERE col1 > 1; - """ + def test_ctas_tbl = { String file_format, String catalog_name -> + generateSrcDDLForCTAS(file_format, catalog_name) + try { + sql """ switch `${catalog_name}` """ + // 1. external to external un-partitioned table + sql """ CREATE TABLE hive_ctas1 ENGINE=hive AS SELECT col1 FROM unpart_ctas_src; + """ - order_qt_ctas_01 """ SELECT * FROM hive_ctas1 """ - sql """ DROP TABLE hive_ctas1 """ + sql """ INSERT INTO hive_ctas1 SELECT col1 FROM unpart_ctas_src WHERE col1 > 1; + """ + sql """ INSERT OVERWRITE TABLE hive_ctas1 SELECT col1 FROM unpart_ctas_src WHERE col1 > 1; + """ - // 2. external to external partitioned table - sql """ CREATE TABLE hive_ctas2 ENGINE=hive AS SELECT col1,pt1,pt2 FROM part_ctas_src WHERE col1>0; + order_qt_ctas_01 """ SELECT * FROM hive_ctas1 """ + sql """ DROP TABLE hive_ctas1 """ + + // 2. external to external partitioned table + sql """ CREATE TABLE hive_ctas2 ENGINE=hive AS SELECT col1,pt1,pt2 FROM part_ctas_src WHERE col1>0; """ - sql """ INSERT INTO hive_ctas2 SELECT col1,pt1,pt2 FROM part_ctas_src WHERE col1>=22; + sql """ INSERT INTO hive_ctas2 SELECT col1,pt1,pt2 FROM part_ctas_src WHERE col1>=22; + """ + sql """ INSERT OVERWRITE TABLE hive_ctas2 SELECT col1,pt1,pt2 FROM part_ctas_src WHERE col1>=22; """ - order_qt_ctas_02 """ SELECT * FROM hive_ctas2 """ - sql """ DROP TABLE hive_ctas2 """ + order_qt_ctas_02 """ SELECT * FROM hive_ctas2 """ + sql """ DROP TABLE hive_ctas2 """ - // 3. internal to external un-partitioned table - sql """ CREATE TABLE ctas_o1 ENGINE=hive AS SELECT col1,col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; - """ + // 3. internal to external un-partitioned table + sql """ CREATE TABLE ctas_o1 ENGINE=hive AS SELECT col1,col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; + """ - sql """ INSERT INTO ctas_o1 SELECT col1,col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; - """ + sql """ INSERT INTO ctas_o1 SELECT col1,col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; + """ + sql """ INSERT OVERWRITE TABLE ctas_o1 SELECT col1,col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; + """ - order_qt_ctas_03 """ SELECT * FROM ctas_o1 """ - sql """ DROP TABLE ctas_o1 """ + order_qt_ctas_03 """ SELECT * FROM ctas_o1 """ + sql """ DROP TABLE ctas_o1 """ - // 4. internal to external partitioned table - sql """ CREATE TABLE ctas_o2 ENGINE=hive AS SELECT col1,pt1,pt2 FROM internal.test_ctas_olap.part_ctas_olap_src WHERE col1>0; - """ - sql """ INSERT INTO ctas_o2 SELECT col1,pt1,pt2 FROM internal.test_ctas_olap.part_ctas_olap_src WHERE col1>2; - """ - order_qt_ctas_04 """ SELECT * FROM ctas_o2 """ - sql """ DROP TABLE ctas_o2 """ + // 4. internal to external partitioned table + sql """ CREATE TABLE ctas_o2 ENGINE=hive AS SELECT col1,pt1,pt2 FROM internal.test_ctas_olap.part_ctas_olap_src WHERE col1>0; + """ + sql """ INSERT INTO ctas_o2 SELECT col1,pt1,pt2 FROM internal.test_ctas_olap.part_ctas_olap_src WHERE col1>2; + """ + sql """ INSERT OVERWRITE TABLE ctas_o2 SELECT col1,pt1,pt2 FROM internal.test_ctas_olap.part_ctas_olap_src WHERE col1>2; + """ + order_qt_ctas_04 """ SELECT * FROM ctas_o2 """ + sql """ DROP TABLE ctas_o2 """ - // 5. check external to internal un-partitioned table - sql """ use internal.test_ctas_olap """ - sql """ CREATE TABLE olap_ctas1 + // 5. check external to internal un-partitioned table + sql """ use internal.test_ctas_olap """ + sql """ CREATE TABLE olap_ctas1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1" ) AS SELECT col1,col2 FROM `${catalog_name}`.`test_ctas`.unpart_ctas_src; """ - order_qt_ctas_05 """ SELECT * FROM olap_ctas1 """ - sql """ DROP TABLE olap_ctas1 """ + order_qt_ctas_05 """ SELECT * FROM olap_ctas1 """ + sql """ DROP TABLE olap_ctas1 """ - // 6. check external to internal partitioned table - sql """ CREATE TABLE olap_ctas2 + // 6. check external to internal partitioned table + sql """ CREATE TABLE olap_ctas2 PROPERTIES ( "replication_allocation" = "tag.location.default: 1" ) AS SELECT col1,pt1,pt2 FROM `${catalog_name}`.`test_ctas`.part_ctas_src WHERE col1>0; """ - order_qt_ctas_06 """ SELECT * FROM olap_ctas2 """ - sql """ DROP TABLE olap_ctas2 """ + order_qt_ctas_06 """ SELECT * FROM olap_ctas2 """ + sql """ DROP TABLE olap_ctas2 """ + } finally { + destroySrcDDLForCTAS(catalog_name) + } + } - sql """ switch `${catalog_name}` """ - sql """ DROP TABLE `test_ctas`.part_ctas_src """ - sql """ DROP TABLE `test_ctas`.unpart_ctas_src """ - sql """ drop database if exists `test_ctas` """; - sql """ DROP TABLE internal.test_ctas_olap.part_ctas_olap_src """ - sql """ DROP TABLE internal.test_ctas_olap.unpart_ctas_olap_src """ - sql """ switch internal """; - sql """ drop database if exists test_ctas_olap """; + def test_ctas_extend = { String file_format, String catalog_name -> + generateSrcDDLForCTAS(file_format, catalog_name) + sql """ switch ${catalog_name} """ + + try { + sql """ DROP DATABASE IF EXISTS ${catalog_name}.test_ctas_ex """; + sql """ DROP DATABASE IF EXISTS `test_ctas_ex` """; + sql """ CREATE DATABASE IF NOT EXISTS ${catalog_name}.test_ctas_ex + PROPERTIES ( + "location_uri" = "/user/hive/warehouse/test_ctas_ex" + ) + """; + sql """ CREATE DATABASE IF NOT EXISTS `test_ctas_ex` + PROPERTIES ( + "location_uri" = "/user/hive/warehouse/test_ctas_ex" + ) + """; + sql """ use `${catalog_name}`.`test_ctas_ex` """ + + // 1. external to external un-partitioned table + sql """ DROP TABLE IF EXISTS ${catalog_name}.test_ctas_ex.hive_ctas1 """ + sql """ CREATE TABLE ${catalog_name}.test_ctas_ex.hive_ctas1 (col1) ENGINE=hive + PROPERTIES ( + "location_uri" = "/user/hive/warehouse/test_ctas_ex/loc_hive_ctas1", + "file_format"="orc", + "orc.compress"="zlib" + ) AS SELECT col1 FROM test_ctas.unpart_ctas_src; + """ + sql """ INSERT INTO ${catalog_name}.test_ctas_ex.hive_ctas1 + SELECT col1 FROM test_ctas.unpart_ctas_src WHERE col1 > 1; + """ + sql """ INSERT OVERWRITE TABLE ${catalog_name}.test_ctas_ex.hive_ctas1 + SELECT col1 FROM test_ctas.unpart_ctas_src WHERE col1 > 1; + """ + order_qt_ctas_ex01 """ SELECT * FROM hive_ctas1 """ + sql """ DROP TABLE hive_ctas1 """ + + // 2. external to external partitioned table + sql """ DROP TABLE IF EXISTS ${catalog_name}.test_ctas_ex.hive_ctas2 """ + sql """ CREATE TABLE ${catalog_name}.test_ctas_ex.hive_ctas2 (col1,pt1,pt2) ENGINE=hive + PROPERTIES ( + "location_uri" = "/user/hive/warehouse/test_ctas_ex/loc_hive_ctas2", + "file_format"="parquet", + "parquet.compression"="snappy" + ) AS SELECT col1,pt1,pt2 FROM test_ctas.part_ctas_src WHERE col1>0; + """ + sql """ INSERT INTO ${catalog_name}.test_ctas_ex.hive_ctas2 (col1,pt1,pt2) + SELECT col1,pt1,pt2 FROM test_ctas.part_ctas_src WHERE col1>=22; + """ + sql """ INSERT OVERWRITE TABLE hive_ctas2 (col1,pt1,pt2) + SELECT col1,pt1,pt2 FROM test_ctas.part_ctas_src WHERE col1>=22; + """ + sql """ INSERT INTO ${catalog_name}.test_ctas_ex.hive_ctas2 (pt1,col1) + SELECT pt1,col1 FROM test_ctas.part_ctas_src WHERE col1>=22; + """ + order_qt_ctas_ex02 """ SELECT * FROM hive_ctas2 """ + sql """ DROP TABLE hive_ctas2 """ + + // 3. internal to external un-partitioned table + sql """ DROP TABLE IF EXISTS ${catalog_name}.test_ctas_ex.ctas_o1 """ + sql """ CREATE TABLE ${catalog_name}.test_ctas_ex.ctas_o1 ENGINE=hive + PROPERTIES ( + "location_uri" = "/user/hive/warehouse/test_ctas_ex/loc_ctas_o1", + "file_format"="parquet", + "parquet.compression"="snappy" + ) + AS SELECT col1,col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; + """ + sql """ INSERT INTO ${catalog_name}.test_ctas_ex.ctas_o1 (col2,col1) + SELECT col2,col1 FROM internal.test_ctas_olap.unpart_ctas_olap_src; + """ + sql """ INSERT OVERWRITE TABLE ${catalog_name}.test_ctas_ex.ctas_o1 (col2) + SELECT col2 FROM internal.test_ctas_olap.unpart_ctas_olap_src; + """ + order_qt_ctas_03 """ SELECT * FROM ctas_o1 """ + sql """ DROP TABLE ctas_o1 """ + + // 4. internal to external partitioned table + sql """ DROP TABLE IF EXISTS ${catalog_name}.test_ctas_ex.ctas_o2 """ + sql """ CREATE TABLE ${catalog_name}.test_ctas_ex.ctas_o2 (col1,col2,pt1) ENGINE=hive + PROPERTIES ( + "location_uri" = "/user/hive/warehouse/test_ctas_ex/loc_ctas_o2", + "file_format"="orc", + "orc.compress"="zlib" + ) + AS SELECT null as col1, pt2 as col2, pt1 FROM internal.test_ctas_olap.part_ctas_olap_src WHERE col1>0; + """ + sql """ INSERT INTO ${catalog_name}.test_ctas_ex.ctas_o2 (col1,pt1,col2) + SELECT col1,pt1,pt2 FROM internal.test_ctas_olap.part_ctas_olap_src; + """ + sql """ INSERT INTO ${catalog_name}.test_ctas_ex.ctas_o2 (col2,pt1,col1) + SELECT pt2,pt1,col1 FROM internal.test_ctas_olap.part_ctas_olap_src; + """ + sql """ INSERT OVERWRITE TABLE ${catalog_name}.test_ctas_ex.ctas_o2 (pt1,col2) + SELECT pt1,col1 FROM internal.test_ctas_olap.part_ctas_olap_src; + """ + order_qt_ctas_04 """ SELECT * FROM ctas_o2 """ + sql """ DROP TABLE ctas_o2 """ + } finally { + destroySrcDDLForCTAS(catalog_name) + } + } + + def test_ddl_exception = { String file_format, String catalog_name -> + sql """ switch ${catalog_name} """ + + sql """ create database if not exists `test_hive_ex` """; + try { + sql """ create database `test_hive_ex` """ + } catch (Exception e) { + suite.getLogger().warn(e.getMessage()) + } + sql """use `${catalog_name}`.`test_hive_ex`""" + + sql """ + CREATE TABLE test_hive_ex.ex_tbl_${file_format}( + `col1` BOOLEAN COMMENT 'col1', + `col2` INT COMMENT 'col2', + `col3` BIGINT COMMENT 'col3', + `col4` CHAR(10) COMMENT 'col4', + `col5` FLOAT COMMENT 'col5', + `col6` DOUBLE COMMENT 'col6', + `col7` DECIMAL(6,4) COMMENT 'col7', + `col8` VARCHAR(11) COMMENT 'col8', + `col9` STRING COMMENT 'col9', + `pt1` VARCHAR COMMENT 'pt1', + `pt2` STRING COMMENT 'pt2', + `pt3` DATE COMMENT 'pt3' + ) ENGINE=hive + PARTITION BY LIST (pt1, pt2) () + PROPERTIES ( + 'file_format'='${file_format}' + ) + """; + + try { + // test columns + sql """ INSERT INTO ex_tbl_${file_format} (`col1`, `col2`, `col3`, `col4`, `col5`, `col6`, `col7`, `col8`, `col9`) + VALUES + (true, 123, 987654321099, 'abcdefghij', 3.1214, 63.28, 123.4567, 'varcharval', 'stringval'); + """ + } catch (Exception e) { + suite.getLogger().warn(e.getMessage()) Review Comment: You didn't check anything here. It will pass no matter the exception throw or not. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org