This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 02372ca2ea [test](jdbc external table) add new jdbc mysql external
table (#14323)
02372ca2ea is described below
commit 02372ca2ead005c64a377a013e9a543aa247b5bd
Author: lsy3993 <[email protected]>
AuthorDate: Sat Nov 19 09:46:48 2022 +0800
[test](jdbc external table) add new jdbc mysql external table (#14323)
---
.../docker-compose/mysql/init/03-create-table.sql | 58 ++++-
.../docker-compose/mysql/init/04-insert.sql | 29 ++-
.../data/jdbc_p0/test_jdbc_query_mysql.out | 47 ++++
.../suites/jdbc_p0/test_jdbc_query_mysql.groovy | 245 +++++++++++++++++++++
4 files changed, 374 insertions(+), 5 deletions(-)
diff --git a/docker/thirdparties/docker-compose/mysql/init/03-create-table.sql
b/docker/thirdparties/docker-compose/mysql/init/03-create-table.sql
index 574dd36f38..84f06ccab3 100644
--- a/docker/thirdparties/docker-compose/mysql/init/03-create-table.sql
+++ b/docker/thirdparties/docker-compose/mysql/init/03-create-table.sql
@@ -44,7 +44,7 @@ CREATE TABLE doris_test.ex_tb2 (
count_value varchar(20)
);
-CREATE TABLE `doris_test.ex_tb3` (
+CREATE TABLE doris_test.ex_tb3 (
`game_code` varchar(20) NOT NULL,
`plat_code` varchar(20) NOT NULL,
`account` varchar(100) NOT NULL,
@@ -56,7 +56,7 @@ CREATE TABLE `doris_test.ex_tb3` (
PRIMARY KEY (`game_code`,`plat_code`,`account`,`login_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-CREATE TABLE `doris_test.ex_tb4` (
+CREATE TABLE doris_test.ex_tb4 (
`products_id` int(11) NOT NULL AUTO_INCREMENT,
`orders_id` int(11) NOT NULL,
`sales_add_time` datetime NOT NULL COMMENT '领款时间',
@@ -66,7 +66,7 @@ CREATE TABLE `doris_test.ex_tb4` (
UNIQUE KEY `idx_orders_id` (`orders_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1985724 DEFAULT CHARSET=utf8;
-CREATE TABLE `doris_test.ex_tb5` (
+CREATE TABLE doris_test.ex_tb5 (
`id` int(10) unsigned not null AUTO_INCREMENT comment "主建",
`apply_id` varchar(32) Default null,
`begin_value` mediumtext,
@@ -80,3 +80,55 @@ CREATE TABLE `doris_test.ex_tb5` (
KEY `idx_apply_id` (`apply_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3732465 DEFAULT CHARSET=utf8mb4;
+CREATE TABLE doris_test.ex_tb6 (
+ `id` bigint(20) PRIMARY KEY,
+ `t_id` bigint(20) NULL,
+ `name` text NULL
+);
+
+CREATE TABLE doris_test.ex_tb7 (
+ `id` varchar(32) NULL DEFAULT "",
+ `user_name` varchar(32) NULL DEFAULT "",
+ `member_list` DECIMAL(10,3)
+);
+
+CREATE TABLE doris_test.ex_tb8 (
+ `date` date NOT NULL COMMENT "",
+ `uid` varchar(64) NOT NULL,
+ `stat_type` int(11) NOT NULL COMMENT "",
+ `price` varchar(255) NULL COMMENT "price"
+);
+
+CREATE TABLE doris_test.ex_tb9 (
+ c_date date null
+);
+
+CREATE TABLE doris_test.ex_tb10 (
+ `aa` varchar(200) NULL,
+ `bb` int NULL,
+ `cc` bigint NULL
+);
+
+CREATE TABLE doris_test.ex_tb11 (
+ `aa` varchar(200) PRIMARY KEY,
+ `bb` int NULL
+);
+
+CREATE TABLE doris_test.ex_tb12 (
+ `cc` varchar(200) PRIMARY KEY,
+ `dd` int NULL
+);
+
+CREATE TABLE doris_test.ex_tb13 (
+ name varchar(128),
+ age INT,
+ idCode varchar(128),
+ cardNo varchar(128),
+ number varchar(128),
+ birthday DATETIME,
+ country varchar(128),
+ gender varchar(128),
+ covid BOOLEAN
+);
+
+
diff --git a/docker/thirdparties/docker-compose/mysql/init/04-insert.sql
b/docker/thirdparties/docker-compose/mysql/init/04-insert.sql
index 6c71488da9..5067a546ab 100644
--- a/docker/thirdparties/docker-compose/mysql/init/04-insert.sql
+++ b/docker/thirdparties/docker-compose/mysql/init/04-insert.sql
@@ -1059,9 +1059,34 @@ insert into doris_test.ex_tb4 values
(1, 111, '2021-09-01 07:01:01', '2021-09-01 08:01:01', 1),
(2, 112, '2021-09-02 07:01:01', '2021-09-02 08:01:01', 1),
(3, 113, '0000-01-01 00:00:00', '2021-12-01 08:01:01', 2),
-(4, 114, '0000-00-00 00:00:00', '2021-12-01 09:01:02', 3),
(5, 115, '2021-09-01 07:02:01', '2021-09-01 08:01:04', 4),
(6, 116, '2021-10-01 07:03:01', '2022-09-01 08:02:05', 5);
-insert into doris_test.ex_tb5 values ('test_apply_id', '123321', 'zhangsan',
'zhangsan', 'ready', 'ok', 2, '2022-01-01 02:03:04');
+insert into doris_test.ex_tb5 values (1, 'test_apply_id', '123321',
'zhangsan', 'zhangsan', 'ready', 'ok', 2, '2022-01-01 02:03:04');
+
+insert into doris_test.ex_tb6 values
(639215401565159424,1143681147589283841,'test'),(639237839376089088,1143681147589283841,"test123");
+
+INSERT INTO doris_test.ex_tb7 VALUES ('2','sim',1.000), ('2','sim',1.001),
('2','sim',1.002);
+
+insert into doris_test.ex_tb8 values ('2022-07-15', '2222', 1, NULL),
('2022-07-15', 'ddddd', 2, '0.5');
+
+insert into doris_test.ex_tb9 values ('2022-01-01'), (null);
+
+insert into doris_test.ex_tb10 values ('a', 1, 2), ('b', 1, 2), ('c', 1, 2),
('d', 3, 2);
+
+insert into doris_test.ex_tb11 values ('a', 1), ('b', 1), ('c', 1);
+
+insert into doris_test.ex_tb12 values ('a', 1), ('b', 1), ('c', 1);
+
+insert into doris_test.ex_tb13 values
+('张三0',11,'1234567','123','321312','1999-02-13','中国','男',false),
+('张三1',11,'12345678','123','321312','1999-02-13','中国','男',false),
+('张三2',11,'12345671','123','321312','1999-02-13','中国','男',false),
+('张三3',11,'12345673','123','321312','1999-02-13','中国','男',false),
+('张三4',11,'123456711','123','321312','1999-02-13','中国','男',false),
+('张三5',11,'1232134567','123','321312','1999-02-13','中国','男',false),
+('张三6',11,'124314567','123','321312','1999-02-13','中国','男',false),
+('张三7',11,'123445167','123','321312','1998-02-13','中国','男',false);
+
+
diff --git a/regression-test/data/jdbc_p0/test_jdbc_query_mysql.out
b/regression-test/data/jdbc_p0/test_jdbc_query_mysql.out
index 78aef06d5a..b288469dde 100644
--- a/regression-test/data/jdbc_p0/test_jdbc_query_mysql.out
+++ b/regression-test/data/jdbc_p0/test_jdbc_query_mysql.out
@@ -1044,3 +1044,50 @@ true abc efg 2022-10-01 3.4 1
2 99 100000 1.2 2022-10-02T12:59:01 24.000
-- !sql --
6 6 0
+-- !sql --
+639215401565159424 1143681147589283841 test
+
+-- !sql --
+639215401565159424 1143681147589283841 test
+
+-- !sql --
+639215401565159424 1143681147589283841 test
+
+-- !sql --
+2 sim 1.000
+2 sim 1.001
+2 sim 1.002
+
+-- !sql --
+2022-07-15 1
+
+-- !sql --
+\N
+2022-02-01
+
+-- !sql --
+0
+
+-- !sql --
+\N 112
+111 \N
+
+-- !sql --
+\N
+2
+
+-- !sql --
+ddddd ddddd ddddd 6
+汇总 汇总 汇总 6
+
+-- !sql --
+a 1
+b 1
+c 1
+d 0
+
+-- !sql --
+
+-- !sql --
+8
+
diff --git a/regression-test/suites/jdbc_p0/test_jdbc_query_mysql.groovy
b/regression-test/suites/jdbc_p0/test_jdbc_query_mysql.groovy
index f7058cd1a4..8f20a14eb3 100644
--- a/regression-test/suites/jdbc_p0/test_jdbc_query_mysql.groovy
+++ b/regression-test/suites/jdbc_p0/test_jdbc_query_mysql.groovy
@@ -317,7 +317,252 @@ suite("test_jdbc_query_mysql", "p0") {
SELECT min(LENGTH(begin_value)), max(LENGTH(begin_value)),
sum(case when begin_value is null then 1 else 0 end)
from $exMysqlTable ;
"""
+
+
+ // test for quotation marks in int
+ sql """ drop table if exists ${exMysqlTable1} """
+ sql """ CREATE EXTERNAL TABLE `${exMysqlTable1}` (
+ `id` bigint(20) NULL,
+ `t_id` bigint(20) NULL,
+ `name` text NULL
+ ) ENGINE=JDBC
+ COMMENT "JDBC Mysql 外部表"
+ PROPERTIES (
+ "resource" = "$jdbcResourceMysql57",
+ "table" = "ex_tb6",
+ "table_type"="mysql"
+ );
+ """
+ order_qt_sql """ select * from $exMysqlTable1 where id in
('639215401565159424') and id='639215401565159424'; """
+ order_qt_sql """ select * from $exMysqlTable1 where id in
(639215401565159424) and id=639215401565159424; """
+ order_qt_sql """ select * from $exMysqlTable1 where id in
('639215401565159424') ; """
+
+
+ // test for decimal
+ sql """ drop table if exists ${exMysqlTable2} """
+ sql """ CREATE EXTERNAL TABLE `${exMysqlTable2}` (
+ `id` varchar(32) NULL DEFAULT "",
+ `user_name` varchar(32) NULL DEFAULT "",
+ `member_list` DECIMAL(10,3)
+ ) ENGINE=JDBC
+ COMMENT "JDBC Mysql 外部表"
+ PROPERTIES (
+ "resource" = "$jdbcResourceMysql57",
+ "table" = "ex_tb7",
+ "table_type"="mysql"
+ );
+ """
+ order_qt_sql """ select * from ${exMysqlTable2} order by member_list;
"""
+
+
+ // test for 'With in in select smt and group by will cause missing
from GROUP BY'
+ sql """ drop table if exists ${exMysqlTable} """
+ sql """ CREATE EXTERNAL TABLE `${exMysqlTable}` (
+ `date` date NOT NULL COMMENT "",
+ `uid` varchar(64) NOT NULL,
+ `stat_type` int(11) NOT NULL COMMENT "",
+ `price` varchar(255) NULL COMMENT "price"
+ ) ENGINE=JDBC
+ COMMENT "JDBC Mysql 外部表"
+ PROPERTIES (
+ "resource" = "$jdbcResourceMysql57",
+ "table" = "ex_tb8",
+ "table_type"="mysql"
+ );
+ """
+ order_qt_sql """ select date, sum(if(stat_type in (1), 1, 0)) from
${exMysqlTable} group by date; """
+
+
+ // test for DATE_ADD
+ sql """ drop table if exists ${exMysqlTable1} """
+ sql """ CREATE EXTERNAL TABLE `${exMysqlTable1}` (
+ c_date date NULL
+ ) ENGINE=JDBC
+ COMMENT "JDBC Mysql 外部表"
+ PROPERTIES (
+ "resource" = "$jdbcResourceMysql57",
+ "table" = "ex_tb9",
+ "table_type"="mysql"
+ );
+ """
+ order_qt_sql """ select DATE_ADD(c_date, INTERVAL 1 month) as c from
${exMysqlTable1} order by c; """
+
+
+ // test for count(1) of subquery
+ // this external table will use doris_test.ex_tb2
+ sql """ drop table if exists ${exMysqlTable2} """
+ sql """
+ CREATE EXTERNAL TABLE ${exMysqlTable2} (
+ `id` int(11) NOT NULL,
+ `count_value` varchar(20) NULL
+ ) ENGINE=JDBC
+ COMMENT "JDBC Mysql 外部表"
+ PROPERTIES (
+ "resource" = "$jdbcResourceMysql57",
+ "table" = "ex_tb2",
+ "table_type"="mysql"
+ );
+ """
+ order_qt_sql """ select count(1) from (select '2022' as dt, sum(id)
from ${exMysqlTable2}) a; """
+
+
+
+ // test for 'select * from (select 1 as a) b full outer join (select
2 as a) c using(a)'
+ // this external table will use doris_test.ex_tb0
+ sql """ drop table if exists ${exMysqlTable} """
+ sql """
+ CREATE EXTERNAL TABLE ${exMysqlTable} (
+ `id` int(11) NOT NULL COMMENT "主键id",
+ `name` string NULL COMMENT "名字"
+ ) ENGINE=JDBC
+ COMMENT "JDBC Mysql 外部表"
+ PROPERTIES (
+ "resource" = "$jdbcResourceMysql57",
+ "table" = "ex_tb0",
+ "table_type"="mysql"
+ );
+ """
+ order_qt_sql """
+ select * from
+ (select id as a from ${exMysqlTable} where id = 111) b
+ full outer join
+ (select id as a from ${exMysqlTable} where id = 112) c
+ using(a);
+ """
+
+
+ // test for 'select CAST(NULL AS CHAR(1))'
+ // this external table will use doris_test.ex_tb9
+ sql """ drop table if exists ${exMysqlTable1} """
+ sql """
+ CREATE EXTERNAL TABLE ${exMysqlTable1} (
+ c_date date NULL
+ ) ENGINE=JDBC
+ COMMENT "JDBC Mysql 外部表"
+ PROPERTIES (
+ "resource" = "$jdbcResourceMysql57",
+ "table" = "ex_tb9",
+ "table_type"="mysql"
+ );
+ """
+ order_qt_sql """
+ select CAST(c_date AS CHAR(1)) as a from ${exMysqlTable1} order by
a;
+ """
+
+
+ // test for string sort
+ // this external table will use doris_test.ex_tb7
+ sql """ drop table if exists ${exMysqlTable2} """
+ sql """
+ CREATE EXTERNAL TABLE ${exMysqlTable2} (
+ `date` date NOT NULL COMMENT "",
+ `uid` varchar(64) NOT NULL,
+ `stat_type` int(11) NOT NULL COMMENT "",
+ `price` varchar(255) NULL COMMENT "price"
+ ) ENGINE=JDBC
+ COMMENT "JDBC Mysql 外部表"
+ PROPERTIES (
+ "resource" = "$jdbcResourceMysql57",
+ "table" = "ex_tb8",
+ "table_type"="mysql"
+ );
+ """
+ order_qt_sql """
+ select * from
+ (select uid as a, uid as b, uid as c, 6 from ${exMysqlTable2}
where stat_type = 2
+ union all
+ select '汇总' as a, '汇总' as b, '汇总' as c, 6) a
+ order by 1,2,3,4;
+ """
+
+
+ // test for query int without quotation marks
+ sql """ drop table if exists ${exMysqlTable} """
+ sql """
+ CREATE EXTERNAL TABLE ${exMysqlTable} (
+ `aa` varchar(200) NULL COMMENT "",
+ `bb` int NULL COMMENT "",
+ `cc` bigint NULL COMMENT ""
+ ) ENGINE=JDBC
+ COMMENT "JDBC Mysql 外部表"
+ PROPERTIES (
+ "resource" = "$jdbcResourceMysql57",
+ "table" = "ex_tb10",
+ "table_type"="mysql"
+ );
+ """
+ order_qt_sql """
+ select t.aa, count(if(t.bb in (1,2) ,true ,null)) as c from
${exMysqlTable} t group by t.aa order by c;
+ """
+
+
+ // test for wrong result
+ sql """ drop table if exists ${exMysqlTable1} """
+ sql """ drop table if exists ${exMysqlTable2} """
+ sql """
+ CREATE EXTERNAL TABLE ${exMysqlTable1} (
+ `aa` varchar(200) NULL COMMENT "",
+ `bb` int NULL COMMENT ""
+ ) ENGINE=JDBC
+ COMMENT "JDBC Mysql 外部表"
+ PROPERTIES (
+ "resource" = "$jdbcResourceMysql57",
+ "table" = "ex_tb11",
+ "table_type"="mysql"
+ );
+ """
+ sql """
+ CREATE EXTERNAL TABLE ${exMysqlTable2} (
+ `cc` varchar(200) NULL COMMENT "",
+ `dd` int NULL COMMENT ""
+ ) ENGINE=JDBC
+ COMMENT "JDBC Mysql 外部表"
+ PROPERTIES (
+ "resource" = "$jdbcResourceMysql57",
+ "table" = "ex_tb12",
+ "table_type"="mysql"
+ );
+ """
+ order_qt_sql """
+ select t.* from ( select * from ${exMysqlTable1} t1 left join
${exMysqlTable2} t2 on t1.aa=t2.cc ) t
+ where dayofweek(current_date())=2 order by aa;
+ """
+
+
+ // test for crash be sql
+ sql """ drop table if exists ${exMysqlTable} """
+ sql """
+ CREATE EXTERNAL TABLE ${exMysqlTable} (
+ name varchar(128),
+ age INT,
+ idCode varchar(128),
+ cardNo varchar(128),
+ number varchar(128),
+ birthday DATETIME,
+ country varchar(128),
+ gender varchar(128),
+ covid BOOLEAN
+ ) ENGINE=JDBC
+ COMMENT "JDBC Mysql 外部表"
+ PROPERTIES (
+ "resource" = "$jdbcResourceMysql57",
+ "table" = "ex_tb13",
+ "table_type"="mysql"
+ );
+ """
+ order_qt_sql """
+ SELECT count(1) FROM (WITH t1 AS ( WITH t AS ( SELECT * FROM
${exMysqlTable})
+ SELECT idCode, COUNT(1) as dataAmount,ROUND(COUNT(1) /
tableWithSum.sumResult,4) as proportion,
+ MD5(idCode) as virtuleUniqKey FROM t,(SELECT COUNT(1) as
sumResult from t) tableWithSum
+ GROUP BY idCode ,tableWithSum.sumResult )
+ SELECT idCode,dataAmount, (CASE WHEN t1.virtuleUniqKey =
tableWithMaxId.max_virtuleUniqKey THEN
+ ROUND(proportion + calcTheTail, 4) ELSE proportion END)
proportion FROM t1,
+ (SELECT (1 - sum(t1.proportion)) as calcTheTail FROM t1 )
tableWithTail,
+ (SELECT virtuleUniqKey as max_virtuleUniqKey FROM t1 ORDER BY
proportion DESC LIMIT 1 ) tableWithMaxId
+ ORDER BY idCode) t_aa;
+ """
}
}
+
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]