From afa81b5e10378a42f045e043b4cb058d0cbfe9cf Mon Sep 17 00:00:00 2001 From: qiuyang19960521 Date: Sun, 22 Dec 2024 14:57:39 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix(compile):=20ha=5Fctc.so=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E5=8A=A0=E8=BD=BD=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- storage/ctc/ctc_srv.h | 20 ++++++++++++++++++++ storage/ctc/mysql_cantian_plugin.cc | 27 +++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/storage/ctc/ctc_srv.h b/storage/ctc/ctc_srv.h index 82fcd40..3d2cbc9 100644 --- a/storage/ctc/ctc_srv.h +++ b/storage/ctc/ctc_srv.h @@ -606,6 +606,26 @@ typedef struct en_ctcpart_scan_range { uint64_t ssn; } ctcpart_scan_range_t; +typedef int (*ctc_execute_rewrite_open_conn_t)(uint32_t thd_id, ctc_ddl_broadcast_request *broadcast_req); +typedef int (*ctc_ddl_execute_update_t)(uint32_t thd_id, ctc_ddl_broadcast_request *broadcast_req, bool *allow_fail); +typedef int (*ctc_ddl_execute_set_opt_t)(uint32_t thd_id, ctc_set_opt_request *broadcast_req, bool allow_fail); +typedef int (*close_mysql_connection_t)(uint32_t thd_id, uint32_t mysql_inst_id); +typedef int (*ctc_ddl_execute_lock_tables_t)(ctc_handler_t *tch, char *db_name, ctc_lock_table_info *lock_info, int *err_code); +typedef int (*ctc_ddl_execute_unlock_tables_t)(ctc_handler_t *tch, uint32_t mysql_inst_id, ctc_lock_table_info *lock_info); +typedef int (*ctc_invalidate_mysql_dd_cache_t)(ctc_handler_t *tch, ctc_invalidate_broadcast_request *broadcast_req, int *err_code); +typedef int (*ctc_set_cluster_role_by_cantian_t)(bool is_slave); + +typedef struct mysql_engine_intf_t { + ctc_execute_rewrite_open_conn_t ctc_execute_rewrite_open_conn; + ctc_ddl_execute_update_t ctc_ddl_execute_update; + ctc_ddl_execute_set_opt_t ctc_ddl_execute_set_opt; + close_mysql_connection_t close_mysql_connection; + ctc_ddl_execute_lock_tables_t ctc_ddl_execute_lock_tables; + ctc_ddl_execute_unlock_tables_t ctc_ddl_execute_unlock_tables; + ctc_invalidate_mysql_dd_cache_t ctc_invalidate_mysql_dd_cache; + ctc_set_cluster_role_by_cantian_t ctc_set_cluster_role_by_cantian; +} sql_engine_intf; + /* General Control Interface */ int srv_wait_instance_startuped(void); int ctc_alloc_inst_id(uint32_t *inst_id); diff --git a/storage/ctc/mysql_cantian_plugin.cc b/storage/ctc/mysql_cantian_plugin.cc index 2eb2b15..ad3491b 100644 --- a/storage/ctc/mysql_cantian_plugin.cc +++ b/storage/ctc/mysql_cantian_plugin.cc @@ -53,6 +53,9 @@ const char *cantiand_get_dbversion() } extern "C" int cantiand_lib_main(int argc, char *argv[]); +#ifdef WITH_CANTIAN +extern "C" int register_sql_intf(sql_engine_intf *sql_intf); +#endif extern "C" void ct_singlep_shutdown(); static std::string get_cantiand_mode() { @@ -75,6 +78,23 @@ static std::string get_cantiand_home_dir() { return home_dir; } +#ifdef WITH_CANTIAN +static sql_engine_intf g_local_sql_intf; +sql_engine_intf *get_local_sql_intf() +{ + g_local_sql_intf.ctc_invalidate_mysql_dd_cache = ctc_invalidate_mysql_dd_cache; + g_local_sql_intf.ctc_execute_rewrite_open_conn = ctc_execute_rewrite_open_conn; + g_local_sql_intf.ctc_ddl_execute_update = ctc_ddl_execute_update; + g_local_sql_intf.ctc_ddl_execute_set_opt = ctc_ddl_execute_set_opt; + g_local_sql_intf.close_mysql_connection = close_mysql_connection; + g_local_sql_intf.ctc_ddl_execute_lock_tables = ctc_ddl_execute_lock_tables; + g_local_sql_intf.ctc_ddl_execute_unlock_tables = ctc_ddl_execute_unlock_tables; + g_local_sql_intf.ctc_set_cluster_role_by_cantian = ctc_set_cluster_role_by_cantian; + ctc_log_system("get local sql function success."); + return &g_local_sql_intf; +} +#endif + static void *mysql_cantian_startup_thread(void *p) { DBUG_TRACE; struct mysql_cantian_context *con = (struct mysql_cantian_context *)p; @@ -86,6 +106,13 @@ static void *mysql_cantian_startup_thread(void *p) { std::string mode = get_cantiand_mode(); std::string home_dir = get_cantiand_home_dir(); int ret; +#ifdef WITH_CANTIAN + ret = register_sql_intf(get_local_sql_intf()); + if (ret != CT_SUCCESS) { + ctc_log_error("register_sql_intf error"); + return nullptr; + } +#endif if (mode != "open") { char const *argv[] = {"/home/regress/install/bin/cantiand", mode.c_str(), "-D", home_dir.c_str()}; -- Gitee From 8ea5c8ebc16ef3397b21dcb089683c139a1d93a4 Mon Sep 17 00:00:00 2001 From: lijiachen Date: Tue, 24 Dec 2024 20:40:04 +0800 Subject: [PATCH 2/2] fix cond uint64 --- .../suite/ctc/r/ctc_cond_pushdown.result | 186 ++++++++++++++++++ mysql-test/suite/ctc/t/ctc_cond_pushdown.test | 184 +++++++++++++++++ 2 files changed, 370 insertions(+) diff --git a/mysql-test/suite/ctc/r/ctc_cond_pushdown.result b/mysql-test/suite/ctc/r/ctc_cond_pushdown.result index ccc5617..532f28f 100644 --- a/mysql-test/suite/ctc/r/ctc_cond_pushdown.result +++ b/mysql-test/suite/ctc/r/ctc_cond_pushdown.result @@ -2060,3 +2060,189 @@ Warnings: Warning 1292 Truncated incorrect INTEGER value: 'a' Warning 1292 Truncated incorrect INTEGER value: 'a' drop table tb_cache; +create table t0(int_1 tinyint not null, +uint_1 tinyint unsigned not null, +int_2 smallint not null, +uint_2 smallint unsigned not null, +int_3 mediumint not null, +uint_3 mediumint unsigned not null, +int_4 int not null, +uint_4 int unsigned not null, +int_8 bigint not null, +uint_8 bigint unsigned not null); +insert into t0 values (-128, 0, -32768, 0, -8388608, 0, -2147483648, 0, -9223372036854775808, 0); +insert into t0 values ( -2, 1, -2, 1, -2, 1, -2, 1, -2, 1); +insert into t0 values ( -1, 2, -1, 2, -1, 2, -1, 2, -1, 2); +insert into t0 values ( 0, 3, 0, 3, 0, 3, 0, 3, 0, 3); +insert into t0 values ( 1, 126, 1, 32767, 65536, 8388608, 1, 2147483648, 1, 9223372036854775808); +insert into t0 values ( 2, 127, 256, 32768, 65537, 8388609, 16777215, 2147483649, 4294967296, 9223372036854775809); +insert into t0 values ( 126, 128, 32766, 65534, 8388606, 16777214, 2147483646, 4294967294, 9223372036854775806, 18446744073709551614); +insert into t0 values ( 127, 255, 32767, 65535, 8388607, 16777215, 2147483647, 4294967295, 9223372036854775807, 18446744073709551615); +update t0 set int_1 = 128 where int_1 = 127; +ERROR 22003: Out of range value for column 'int_1' at row 1 +update t0 set int_1 = 128 where uint_1 = 255; +ERROR 22003: Out of range value for column 'int_1' at row 1 +update t0 set int_1 = 128 where int_2 = 32767; +ERROR 22003: Out of range value for column 'int_1' at row 1 +update t0 set int_1 = 128 where uint_2 = 65535; +ERROR 22003: Out of range value for column 'int_1' at row 1 +update t0 set int_1 = 128 where int_3 = 8388607; +ERROR 22003: Out of range value for column 'int_1' at row 1 +update t0 set int_1 = 128 where uint_3 = 16777215; +ERROR 22003: Out of range value for column 'int_1' at row 1 +update t0 set int_1 = 128 where int_4 = 2147483647; +ERROR 22003: Out of range value for column 'int_1' at row 1 +update t0 set int_1 = 128 where uint_4 = 4294967295; +ERROR 22003: Out of range value for column 'int_1' at row 1 +update t0 set int_1 = 128 where int_8 = 9223372036854775807; +ERROR 22003: Out of range value for column 'int_1' at row 1 +update t0 set int_1 = 128 where uint_8 = 18446744073709551615; +ERROR 22003: Out of range value for column 'int_1' at row 1 +create table t1 (a tinyint, b TIME); +insert into t1 values(1, '2000-01-01 00:00:00'),(2, '2001-01-01 00:00:00'),(3, '2002-01-01 00:00:00'); +Warnings: +Note 1292 Incorrect time value: '2000-01-01 00:00:00' for column 'b' at row 1 +Note 1292 Incorrect time value: '2001-01-01 00:00:00' for column 'b' at row 2 +Note 1292 Incorrect time value: '2002-01-01 00:00:00' for column 'b' at row 3 +update t1 set a = 128 where b = '2001-01-01 00:00:00'; +ERROR 22003: Out of range value for column 'a' at row 1 +create table t2 (a tinyint, b year); +insert into t2 values(1, 2000),(2,2001),(3,2002); +update t2 set a = 128 where b = 2001; +ERROR 22003: Out of range value for column 'a' at row 1 +create table t3 (a tinyint, b date); +insert into t3 values(1, '2000-01-01'),(2, '2001-01-01'),(3, '2002-01-01'); +update t3 set a = 128 where b = '2001-01-01'; +ERROR 22003: Out of range value for column 'a' at row 1 +create table t4 (a tinyint, b datetime); +insert into t4 values(1, '2000-01-01 00:00:00'),(2, '2001-01-01 00:00:00'),(3, '2002-01-01 00:00:00'); +update t4 set a = 128 where b = '2001-01-01 00:00:00'; +ERROR 22003: Out of range value for column 'a' at row 1 +create table t5 (a tinyint, b timestamp); +insert into t5 values(1, '2000-01-01 00:00:00'),(2, '2001-01-01 00:00:00'),(3, '2002-01-01 00:00:00'); +select * from t5 where b = '2001-01-01 00:00:00'; +a b +2 2001-01-01 00:00:00 +update t5 set a = 128 where b = '2001-01-01 00:00:00'; +ERROR 22003: Out of range value for column 'a' at row 2 +select * from t5; +a b +1 2000-01-01 00:00:00 +2 2001-01-01 00:00:00 +3 2002-01-01 00:00:00 +set @old_time_zone = @@session.time_zone; +set @@session.time_zone = '+08:00'; +select * from t5; +a b +1 2000-01-01 05:00:00 +2 2001-01-01 05:00:00 +3 2002-01-01 05:00:00 +select * from t5 where b = '2001-01-01 05:00:00'; +a b +2 2001-01-01 05:00:00 +set @@session.time_zone = @old_time_zone; +create table t6 (a tinyint, b decimal(10,0)); +insert into t6 values(1, 2000),(2,2001),(3,2002); +update t6 set a = 128 where b = 2001; +ERROR 22003: Out of range value for column 'a' at row 1 +create table t7 (a tinyint, b varchar(10)); +insert into t7 values(1, '2000'),(2, '2001'),(3, '2002'); +update t7 set a = 128 where b = '2001'; +ERROR 22003: Out of range value for column 'a' at row 1 +create table t8 (a tinyint, b char(10)); +insert into t8 values(1, '2000'),(2, '2001'),(3, '2002'); +update t8 set a = 128 where b = '2001'; +ERROR 22003: Out of range value for column 'a' at row 1 +create table t9 (a tinyint, b bool); +insert into t9 values(1, true),(2, false),(3, null); +update t9 set a = 128 where b = true; +ERROR 22003: Out of range value for column 'a' at row 1 +update t9 set a = 128 where b = false; +ERROR 22003: Out of range value for column 'a' at row 2 +update t9 set a = 128 where b = null; +select * from t9; +a b +1 1 +2 0 +3 NULL +create table t10 (a tinyint, b enum('true', 'false', 'null')); +insert into t10 values(1, 'true'),(2, 'false'),(3, 'null'); +update t10 set a = 128 where b = 'null'; +ERROR 22003: Out of range value for column 'a' at row 3 +create table t11 (a tinyint, b set('true', 'false', 'null')); +insert into t11 values(1, 'true'),(2, 'false'),(3, 'null'); +update t11 set a = 128 where b = 'null'; +ERROR 22003: Out of range value for column 'a' at row 3 +create table t12 (a tinyint, b float); +insert into t12 values(1, 1.0),(2, 2.0),(3, 3.0); +update t12 set a = 128 where b = 2.0; +ERROR 22003: Out of range value for column 'a' at row 1 +create table t13 (a tinyint, b double); +insert into t13 values(1, 1.0),(2, 2.0),(3, 3.0); +update t13 set a = 128 where b = 2.0; +ERROR 22003: Out of range value for column 'a' at row 1 +set @@optimizer_switch='engine_condition_pushdown=off'; +update t0 set int_1 = 128 where int_1 = 127; +ERROR 22003: Out of range value for column 'int_1' at row 8 +update t0 set int_1 = 128 where uint_1 = 255; +ERROR 22003: Out of range value for column 'int_1' at row 8 +update t0 set int_1 = 128 where int_2 = 32767; +ERROR 22003: Out of range value for column 'int_1' at row 8 +update t0 set int_1 = 128 where uint_2 = 65535; +ERROR 22003: Out of range value for column 'int_1' at row 8 +update t0 set int_1 = 128 where int_3 = 8388607; +ERROR 22003: Out of range value for column 'int_1' at row 8 +update t0 set int_1 = 128 where uint_3 = 16777215; +ERROR 22003: Out of range value for column 'int_1' at row 8 +update t0 set int_1 = 128 where int_4 = 2147483647; +ERROR 22003: Out of range value for column 'int_1' at row 8 +update t0 set int_1 = 128 where uint_4 = 4294967295; +ERROR 22003: Out of range value for column 'int_1' at row 8 +update t0 set int_1 = 128 where int_8 = 9223372036854775807; +ERROR 22003: Out of range value for column 'int_1' at row 8 +update t0 set int_1 = 128 where uint_8 = 18446744073709551615; +ERROR 22003: Out of range value for column 'int_1' at row 8 +update t1 set a = 128 where b = '2001-01-01 00:00:00'; +ERROR 22003: Out of range value for column 'a' at row 1 +update t2 set a = 128 where b = 2001; +ERROR 22003: Out of range value for column 'a' at row 2 +update t3 set a = 128 where b = '2001-01-01'; +ERROR 22003: Out of range value for column 'a' at row 2 +update t4 set a = 128 where b = '2001-01-01 00:00:00'; +ERROR 22003: Out of range value for column 'a' at row 2 +update t5 set a = 128 where b = '2001-01-01 00:00:00'; +ERROR 22003: Out of range value for column 'a' at row 2 +update t6 set a = 128 where b = 2001; +ERROR 22003: Out of range value for column 'a' at row 2 +update t7 set a = 128 where b = '2001'; +ERROR 22003: Out of range value for column 'a' at row 2 +update t8 set a = 128 where b = '2001'; +ERROR 22003: Out of range value for column 'a' at row 2 +update t9 set a = 128 where b = true; +ERROR 22003: Out of range value for column 'a' at row 1 +update t9 set a = 128 where b = false; +ERROR 22003: Out of range value for column 'a' at row 2 +update t9 set a = 128 where b = null; +update t10 set a = 128 where b = 'null'; +ERROR 22003: Out of range value for column 'a' at row 3 +update t11 set a = 128 where b = 'null'; +ERROR 22003: Out of range value for column 'a' at row 3 +update t12 set a = 128 where b = 2.0; +ERROR 22003: Out of range value for column 'a' at row 2 +update t13 set a = 128 where b = 2.0; +ERROR 22003: Out of range value for column 'a' at row 2 +set @@optimizer_switch='engine_condition_pushdown=on'; +drop table t0; +drop table t1; +drop table t2; +drop table t3; +drop table t4; +drop table t5; +drop table t6; +drop table t7; +drop table t8; +drop table t9; +drop table t10; +drop table t11; +drop table t12; +drop table t13; diff --git a/mysql-test/suite/ctc/t/ctc_cond_pushdown.test b/mysql-test/suite/ctc/t/ctc_cond_pushdown.test index f4c93f1..42d1265 100644 --- a/mysql-test/suite/ctc/t/ctc_cond_pushdown.test +++ b/mysql-test/suite/ctc/t/ctc_cond_pushdown.test @@ -640,3 +640,187 @@ execute stmt1 using @arg2; set @arg3 = 'a'; execute stmt1 using @arg3; drop table tb_cache; + + +create table t0(int_1 tinyint not null, + uint_1 tinyint unsigned not null, + int_2 smallint not null, + uint_2 smallint unsigned not null, + int_3 mediumint not null, + uint_3 mediumint unsigned not null, + int_4 int not null, + uint_4 int unsigned not null, + int_8 bigint not null, + uint_8 bigint unsigned not null); + +insert into t0 values (-128, 0, -32768, 0, -8388608, 0, -2147483648, 0, -9223372036854775808, 0); +insert into t0 values ( -2, 1, -2, 1, -2, 1, -2, 1, -2, 1); +insert into t0 values ( -1, 2, -1, 2, -1, 2, -1, 2, -1, 2); +insert into t0 values ( 0, 3, 0, 3, 0, 3, 0, 3, 0, 3); +insert into t0 values ( 1, 126, 1, 32767, 65536, 8388608, 1, 2147483648, 1, 9223372036854775808); +insert into t0 values ( 2, 127, 256, 32768, 65537, 8388609, 16777215, 2147483649, 4294967296, 9223372036854775809); +insert into t0 values ( 126, 128, 32766, 65534, 8388606, 16777214, 2147483646, 4294967294, 9223372036854775806, 18446744073709551614); +insert into t0 values ( 127, 255, 32767, 65535, 8388607, 16777215, 2147483647, 4294967295, 9223372036854775807, 18446744073709551615); +--error 1264 +update t0 set int_1 = 128 where int_1 = 127; +--error 1264 +update t0 set int_1 = 128 where uint_1 = 255; +--error 1264 +update t0 set int_1 = 128 where int_2 = 32767; +--error 1264 +update t0 set int_1 = 128 where uint_2 = 65535; +--error 1264 +update t0 set int_1 = 128 where int_3 = 8388607; +--error 1264 +update t0 set int_1 = 128 where uint_3 = 16777215; +--error 1264 +update t0 set int_1 = 128 where int_4 = 2147483647; +--error 1264 +update t0 set int_1 = 128 where uint_4 = 4294967295; +--error 1264 +update t0 set int_1 = 128 where int_8 = 9223372036854775807; +--error 1264 +update t0 set int_1 = 128 where uint_8 = 18446744073709551615; + +create table t1 (a tinyint, b TIME); +insert into t1 values(1, '2000-01-01 00:00:00'),(2, '2001-01-01 00:00:00'),(3, '2002-01-01 00:00:00'); +--error 1264 +update t1 set a = 128 where b = '2001-01-01 00:00:00'; + +create table t2 (a tinyint, b year); +insert into t2 values(1, 2000),(2,2001),(3,2002); +--error 1264 +update t2 set a = 128 where b = 2001; + +create table t3 (a tinyint, b date); +insert into t3 values(1, '2000-01-01'),(2, '2001-01-01'),(3, '2002-01-01'); +--error 1264 +update t3 set a = 128 where b = '2001-01-01'; + +create table t4 (a tinyint, b datetime); +insert into t4 values(1, '2000-01-01 00:00:00'),(2, '2001-01-01 00:00:00'),(3, '2002-01-01 00:00:00'); +--error 1264 +update t4 set a = 128 where b = '2001-01-01 00:00:00'; + +create table t5 (a tinyint, b timestamp); +insert into t5 values(1, '2000-01-01 00:00:00'),(2, '2001-01-01 00:00:00'),(3, '2002-01-01 00:00:00'); +select * from t5 where b = '2001-01-01 00:00:00'; +--error 1264 +update t5 set a = 128 where b = '2001-01-01 00:00:00'; +select * from t5; +set @old_time_zone = @@session.time_zone; +set @@session.time_zone = '+08:00'; +select * from t5; +select * from t5 where b = '2001-01-01 05:00:00'; +set @@session.time_zone = @old_time_zone; +create table t6 (a tinyint, b decimal(10,0)); +insert into t6 values(1, 2000),(2,2001),(3,2002); +--error 1264 +update t6 set a = 128 where b = 2001; + +create table t7 (a tinyint, b varchar(10)); +insert into t7 values(1, '2000'),(2, '2001'),(3, '2002'); +--error 1264 +update t7 set a = 128 where b = '2001'; + +create table t8 (a tinyint, b char(10)); +insert into t8 values(1, '2000'),(2, '2001'),(3, '2002'); +--error 1264 +update t8 set a = 128 where b = '2001'; + +create table t9 (a tinyint, b bool); +insert into t9 values(1, true),(2, false),(3, null); +--error 1264 +update t9 set a = 128 where b = true; +--error 1264 +update t9 set a = 128 where b = false; +#--error 1264 +update t9 set a = 128 where b = null; +select * from t9; +create table t10 (a tinyint, b enum('true', 'false', 'null')); +insert into t10 values(1, 'true'),(2, 'false'),(3, 'null'); +--error 1264 +update t10 set a = 128 where b = 'null'; + +create table t11 (a tinyint, b set('true', 'false', 'null')); +insert into t11 values(1, 'true'),(2, 'false'),(3, 'null'); +--error 1264 +update t11 set a = 128 where b = 'null'; + +create table t12 (a tinyint, b float); +insert into t12 values(1, 1.0),(2, 2.0),(3, 3.0); +--error 1264 +update t12 set a = 128 where b = 2.0; + +create table t13 (a tinyint, b double); +insert into t13 values(1, 1.0),(2, 2.0),(3, 3.0); +--error 1264 +update t13 set a = 128 where b = 2.0; + +set @@optimizer_switch='engine_condition_pushdown=off'; +--error 1264 +update t0 set int_1 = 128 where int_1 = 127; +--error 1264 +update t0 set int_1 = 128 where uint_1 = 255; +--error 1264 +update t0 set int_1 = 128 where int_2 = 32767; +--error 1264 +update t0 set int_1 = 128 where uint_2 = 65535; +--error 1264 +update t0 set int_1 = 128 where int_3 = 8388607; +--error 1264 +update t0 set int_1 = 128 where uint_3 = 16777215; +--error 1264 +update t0 set int_1 = 128 where int_4 = 2147483647; +--error 1264 +update t0 set int_1 = 128 where uint_4 = 4294967295; +--error 1264 +update t0 set int_1 = 128 where int_8 = 9223372036854775807; +--error 1264 +update t0 set int_1 = 128 where uint_8 = 18446744073709551615; +--error 1264 +update t1 set a = 128 where b = '2001-01-01 00:00:00'; +--error 1264 +update t2 set a = 128 where b = 2001; +--error 1264 +update t3 set a = 128 where b = '2001-01-01'; +--error 1264 +update t4 set a = 128 where b = '2001-01-01 00:00:00'; +--error 1264 +update t5 set a = 128 where b = '2001-01-01 00:00:00'; +--error 1264 +update t6 set a = 128 where b = 2001; +--error 1264 +update t7 set a = 128 where b = '2001'; +--error 1264 +update t8 set a = 128 where b = '2001'; +--error 1264 +update t9 set a = 128 where b = true; +--error 1264 +update t9 set a = 128 where b = false; +#--error 1264 +update t9 set a = 128 where b = null; +--error 1264 +update t10 set a = 128 where b = 'null'; +--error 1264 +update t11 set a = 128 where b = 'null'; +--error 1264 +update t12 set a = 128 where b = 2.0; +--error 1264 +update t13 set a = 128 where b = 2.0; +set @@optimizer_switch='engine_condition_pushdown=on'; + +drop table t0; +drop table t1; +drop table t2; +drop table t3; +drop table t4; +drop table t5; +drop table t6; +drop table t7; +drop table t8; +drop table t9; +drop table t10; +drop table t11; +drop table t12; +drop table t13; -- Gitee