From 7ce746654a1321a9210ce99d2d1d4129c80298ed Mon Sep 17 00:00:00 2001 From: zy-kkk Date: Fri, 10 Nov 2023 10:32:09 +0800 Subject: [PATCH] [test](jdbc) add doris and sqlserver jdbc catalog test case (#26656) --- .../sqlserver/init/03-create-table.sql | 33 ++++++++++++ .../sqlserver/init/04-insert.sql | 34 ++++++++++++ .../jdbc/test_doris_jdbc_catalog.out | 53 +++++++++++++++++++ .../jdbc/test_sqlserver_jdbc_catalog.out | 43 +++++++++++++++ .../jdbc/test_doris_jdbc_catalog.groovy | 12 +++++ .../jdbc/test_sqlserver_jdbc_catalog.groovy | 6 ++- 6 files changed, 180 insertions(+), 1 deletion(-) diff --git a/docker/thirdparties/docker-compose/sqlserver/init/03-create-table.sql b/docker/thirdparties/docker-compose/sqlserver/init/03-create-table.sql index a491647e785ec0..cddd38f7863789 100644 --- a/docker/thirdparties/docker-compose/sqlserver/init/03-create-table.sql +++ b/docker/thirdparties/docker-compose/sqlserver/init/03-create-table.sql @@ -101,3 +101,36 @@ CREATE TABLE dbo.t_id ( Name nvarchar(100) ); +CREATE TABLE dbo.all_type ( + id int PRIMARY KEY NOT NULL, + name varchar(10) NULL, + age int NULL, + tinyint_value tinyint NULL, + smallint_value smallint NULL, + bigint_value bigint NULL, + real_value real NULL, + float_value float NULL, + floatn_value float(5) NULL, + decimal_value decimal(38,0) NULL, + numeric_value numeric(38,0) NULL, + decimal_value2 decimal(38,10) NULL, + numeric_value2 numeric(38,10) NULL, + char_value char(20) NULL, + varchar_value varchar(20) NULL, + varcharmax_value varchar(max) NULL, + nchar_value nchar(20) NULL, + nvarchar_value nvarchar(20) NULL, + nvarcharmax_value nvarchar(max) NULL, + date_value date NULL, + time_value time NULL, + datetime_value datetime NULL, + datetime2_value datetime2 NULL, + smalldatetime_value smalldatetime NULL, + datetimeoffset_value datetimeoffset NULL, + text_value text NULL, + ntext_value ntext NULL, + money_value money NULL, + smallmoney_value smallmoney NULL, + bit_value bit NULL +); + diff --git a/docker/thirdparties/docker-compose/sqlserver/init/04-insert.sql b/docker/thirdparties/docker-compose/sqlserver/init/04-insert.sql index f4f67523dfb607..c18f629707d814 100644 --- a/docker/thirdparties/docker-compose/sqlserver/init/04-insert.sql +++ b/docker/thirdparties/docker-compose/sqlserver/init/04-insert.sql @@ -63,3 +63,37 @@ VALUES ( INSERT INTO dbo.t_id (ID, Name) VALUES (NEWID(), 'Data 1'); INSERT INTO dbo.t_id (ID, Name) VALUES (NEWID(), 'Data 2'); +Insert into dbo.all_type values +( +1, +'doris', +18, +0, +1, +1, +123.123, +123.123, +123.123, +12345678901234567890123456789012345678, +12345678901234567890123456789012345678, +1234567890123456789012345678.0123456789, +1234567890123456789012345678.0123456789, +'Make Doris Great!', +'Make Doris Great!', +'Make Doris Great!', +'Make Doris Great!', +'Make Doris Great!', +'Make Doris Great!', +'2023-01-17', +'16:49:05.1234567', +'2023-01-17 16:49:05', +'2023-01-17 16:49:05.1234567', +'2023-01-17 16:49:05', +'2023-01-17 16:49:05+08:00', +'Make Doris Great!', +'Make Doris Great!', +922337203685477.5807, +214748.3647, +0 +), +(2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); diff --git a/regression-test/data/external_table_p0/jdbc/test_doris_jdbc_catalog.out b/regression-test/data/external_table_p0/jdbc/test_doris_jdbc_catalog.out index 011a1f2a4b5cfc..2e686056d40a57 100644 --- a/regression-test/data/external_table_p0/jdbc/test_doris_jdbc_catalog.out +++ b/regression-test/data/external_table_p0/jdbc/test_doris_jdbc_catalog.out @@ -28,10 +28,12 @@ doris_jdbc_catalog 6 doris6 -- !base1 -- +\N \N \N \N \N \N \N \N \N \N \N \N \N \N \N true 1 1 1 1 1 1.0 1.0 1.00000 1.0000000000 2021-01-01 2021-01-01T00:00 a a {"a":1} -- !arr1 -- 1 [1] [1] [1] [1] [1] [1] [1] [1] [1.00000] [1.0000000000] ["2021-01-01"] ["2021-01-01 00:00:00.000"] ["a"] ["a"] ["a"] +2 \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N -- !tb1 -- 1 1 @@ -56,10 +58,61 @@ doris_jdbc_catalog 6 1 -- !base2 -- +\N \N \N \N \N \N \N \N \N \N \N \N \N \N \N true 1 1 1 1 1 1.0 1.0 1.00000 1.0000000000 2021-01-01 2021-01-01T00:00 a a {"a":1} -- !arr2 -- 1 [1] [1] [1] [1] [1] [1] [1] [1] [1.00000] [1.0000000000] ["2021-01-01"] ["2021-01-01 00:00:00.000"] ["a"] ["a"] ["a"] +2 \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N + +-- !ctas_base -- +2 + +-- !ctas_arr -- +2 + +-- !desc_ctas_base -- +bool_col BOOLEAN Yes true \N +tinyint_col TINYINT Yes true \N +smallint_col SMALLINT Yes true \N +int_col INT Yes false \N NONE +bigint_col BIGINT Yes false \N NONE +largeint_col LARGEINT Yes false \N NONE +float_col FLOAT Yes false \N NONE +double_col DOUBLE Yes false \N NONE +decimal_col DECIMAL(10, 5) Yes false \N NONE +decimal_col2 DECIMAL(30, 10) Yes false \N NONE +date_col DATE Yes false \N NONE +datetime_col DATETIME(3) Yes false \N NONE +char_col CHAR(10) Yes false \N NONE +varchar_col VARCHAR(10) Yes false \N NONE +json_col JSON Yes false \N NONE + +-- !desc_ctas_arr -- +int_col INT Yes true \N +arr_bool_col ARRAY Yes false [] NONE +arr_tinyint_col ARRAY Yes false [] NONE +arr_smallint_col ARRAY Yes false [] NONE +arr_int_col ARRAY Yes false [] NONE +arr_bigint_col ARRAY Yes false [] NONE +arr_largeint_col ARRAY Yes false [] NONE +arr_float_col ARRAY Yes false [] NONE +arr_double_col ARRAY Yes false [] NONE +arr_decimal1_col ARRAY Yes false [] NONE +arr_decimal2_col ARRAY Yes false [] NONE +arr_date_col ARRAY Yes false [] NONE +arr_datetime_col ARRAY Yes false [] NONE +arr_char_col ARRAY Yes false [] NONE +arr_varchar_col ARRAY Yes false [] NONE +arr_string_col ARRAY Yes false [] NONE + +-- !query_ctas_base -- +\N \N \N \N \N \N \N \N \N \N \N \N \N \N \N +true 1 1 1 1 1 1.0 1.0 1.00000 1.0000000000 2021-01-01 2021-01-01T00:00 a a {"a":1} + +-- !query_ctas_arr -- +1 [1] [1] [1] [1] [1] [1] [1] [1] [1.00000] [1.0000000000] ["2021-01-01"] ["2021-01-01 00:00:00.000"] ["a"] ["a"] ["a"] +2 \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N -- !sql -- doris_jdbc_catalog diff --git a/regression-test/data/external_table_p0/jdbc/test_sqlserver_jdbc_catalog.out b/regression-test/data/external_table_p0/jdbc/test_sqlserver_jdbc_catalog.out index 17ddfbfee81a4e..9906bb10f558d4 100644 --- a/regression-test/data/external_table_p0/jdbc/test_sqlserver_jdbc_catalog.out +++ b/regression-test/data/external_table_p0/jdbc/test_sqlserver_jdbc_catalog.out @@ -56,6 +56,49 @@ -- !id -- 2 +-- !all_type -- +1 doris 18 0 1 1 123.123 123.123 123.123 12345678901234567890123456789012345678 12345678901234567890123456789012345678 1234567890123456789012345678.0123456789 1234567890123456789012345678.0123456789 Make Doris Great! Make Doris Great! Make Doris Great! Make Doris Great! Make Doris Great! Make Doris Great! 2023-01-17 16:49:05.123 2023-01-17T16:49:05 2023-01-17T16:49:05.123456 2023-01-17T16:49 2023-01-17 16:49:05 +08:00 Make Doris Great! Make Doris Great! 922337203685477.5807 214748.3647 false +2 \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N + +-- !ctas -- +2 + +-- !desc_query_ctas -- +id INT No true \N +name TEXT Yes false \N NONE +age INT Yes false \N NONE +tinyint_value SMALLINT Yes false \N NONE +smallint_value SMALLINT Yes false \N NONE +bigint_value BIGINT Yes false \N NONE +real_value FLOAT Yes false \N NONE +float_value DOUBLE Yes false \N NONE +floatn_value FLOAT Yes false \N NONE +decimal_value DECIMAL Yes false \N NONE +numeric_value DECIMAL Yes false \N NONE +decimal_value2 DECIMAL(38, 10) Yes false \N NONE +numeric_value2 DECIMAL(38, 10) Yes false \N NONE +char_value TEXT Yes false \N NONE +varchar_value TEXT Yes false \N NONE +varcharmax_value TEXT Yes false \N NONE +nchar_value TEXT Yes false \N NONE +nvarchar_value TEXT Yes false \N NONE +nvarcharmax_value TEXT Yes false \N NONE +date_value DATE Yes false \N NONE +time_value TEXT Yes false \N NONE +datetime_value DATETIME(3) Yes false \N NONE +datetime2_value DATETIME(6) Yes false \N NONE +smalldatetime_value DATETIME Yes false \N NONE +datetimeoffset_value TEXT Yes false \N NONE +text_value TEXT Yes false \N NONE +ntext_value TEXT Yes false \N NONE +money_value DECIMAL(19, 4) Yes false \N NONE +smallmoney_value DECIMAL(10, 4) Yes false \N NONE +bit_value BOOLEAN Yes false \N NONE + +-- !query_ctas -- +1 doris 18 0 1 1 123.123 123.123 123.123 12345678901234567890123456789012345678 12345678901234567890123456789012345678 1234567890123456789012345678.0123456789 1234567890123456789012345678.0123456789 Make Doris Great! Make Doris Great! Make Doris Great! Make Doris Great! Make Doris Great! Make Doris Great! 2023-01-17 16:49:05.123 2023-01-17T16:49:05 2023-01-17T16:49:05.123456 2023-01-17T16:49 2023-01-17 16:49:05 +08:00 Make Doris Great! Make Doris Great! 922337203685477.5807 214748.3647 false +2 \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N + -- !sql -- INFORMATION_SCHEMA db_accessadmin diff --git a/regression-test/suites/external_table_p0/jdbc/test_doris_jdbc_catalog.groovy b/regression-test/suites/external_table_p0/jdbc/test_doris_jdbc_catalog.groovy index 280d30614deb05..c92f285972d743 100644 --- a/regression-test/suites/external_table_p0/jdbc/test_doris_jdbc_catalog.groovy +++ b/regression-test/suites/external_table_p0/jdbc/test_doris_jdbc_catalog.groovy @@ -122,6 +122,8 @@ suite("test_doris_jdbc_catalog", "p0,external,doris,external_docker,external_doc ); """ sql """insert into ${base_table} values (true, 1, 1, 1, 1, 1, 1.0, 1.0, 1.0, 1.0, '2021-01-01', '2021-01-01 00:00:00.000', 'a', 'a', '{\"a\": 1}');""" + // insert NULL + sql """insert into ${base_table} values (null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);""" order_qt_base1 """ select * from ${base_table} order by int_col; """ sql """drop table if exists ${arr_table}""" @@ -152,6 +154,8 @@ suite("test_doris_jdbc_catalog", "p0,external,doris,external_docker,external_doc """ sql """insert into ${arr_table} values (1, array(true), array(1), array(1), array(1), array(1), array(1), array(1.0), array(1.0), array(1.0), array(1.0), array('2021-01-01'), array('2021-01-01 00:00:00.000'), array('a'), array('a'), array('a'));""" + // insert NULL + sql """insert into ${arr_table} values (2, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);""" order_qt_arr1 """ select * from ${arr_table} order by int_col; """ @@ -167,6 +171,14 @@ suite("test_doris_jdbc_catalog", "p0,external,doris,external_docker,external_doc order_qt_tb2 """ select pin_id, hll_union_agg(user_log_acct) from ${catalog_name}.${internal_db_name}.${hllTable} group by pin_id; """ order_qt_base2 """ select * from ${catalog_name}.${internal_db_name}.${base_table} order by int_col; """ order_qt_arr2 """ select * from ${catalog_name}.${internal_db_name}.${arr_table} order by int_col; """ + sql """ drop table if exists internal.${internal_db_name}.ctas_base; """ + sql """ drop table if exists internal.${internal_db_name}.ctas_arr; """ + order_qt_ctas_base """ create table internal.${internal_db_name}.ctas_base PROPERTIES("replication_num" = "1") as select * from ${catalog_name}.${internal_db_name}.${base_table} order by int_col; """ + order_qt_ctas_arr """ create table internal.${internal_db_name}.ctas_arr PROPERTIES("replication_num" = "1") as select * from ${catalog_name}.${internal_db_name}.${arr_table} order by int_col; """ + qt_desc_ctas_base """ desc internal.${internal_db_name}.ctas_base; """ + qt_desc_ctas_arr """ desc internal.${internal_db_name}.ctas_arr; """ + order_qt_query_ctas_base """ select * from internal.${internal_db_name}.ctas_base order by int_col; """ + order_qt_query_ctas_arr """ select * from internal.${internal_db_name}.ctas_arr order by int_col; """ //clean qt_sql """select current_catalog()""" diff --git a/regression-test/suites/external_table_p0/jdbc/test_sqlserver_jdbc_catalog.groovy b/regression-test/suites/external_table_p0/jdbc/test_sqlserver_jdbc_catalog.groovy index 65a85a8fd3a53d..234c27749cb1a2 100644 --- a/regression-test/suites/external_table_p0/jdbc/test_sqlserver_jdbc_catalog.groovy +++ b/regression-test/suites/external_table_p0/jdbc/test_sqlserver_jdbc_catalog.groovy @@ -71,7 +71,11 @@ suite("test_sqlserver_jdbc_catalog", "p0,external,sqlserver,external_docker,exte order_qt_filter2 """ select * from test_char where 1 = 1 and id = 1 order by id; """ order_qt_filter3 """ select * from test_char where id = 1 order by id; """ order_qt_id """ select count(*) from (select * from t_id) as a; """ - + order_qt_all_type """ select * from all_type order by id; """ + sql """ drop table if exists internal.${internal_db_name}.all_type; """ + order_qt_ctas """ create table internal.${internal_db_name}.ctas_all_type PROPERTIES("replication_num" = "1") as select * from all_type; """ + qt_desc_query_ctas """ desc internal.${internal_db_name}.ctas_all_type; """ + order_qt_query_ctas """ select * from internal.${internal_db_name}.ctas_all_type order by id; """ sql """ drop catalog if exists ${catalog_name} """