546 lines
21 KiB
Plaintext
546 lines
21 KiB
Plaintext
# TestTruncateTable
|
|
drop table if exists truncate_test;
|
|
create table truncate_test (a int);
|
|
insert truncate_test values (1),(2),(3);
|
|
select * from truncate_test;
|
|
truncate table truncate_test;
|
|
select * from truncate_test;
|
|
|
|
# TestViewRecursion
|
|
drop table if exists t;
|
|
drop view if exists recursive_view1, recursive_view2;
|
|
create table if not exists t(a int);
|
|
create definer='root'@'localhost' view recursive_view1 as select * from t;
|
|
create definer='root'@'localhost' view recursive_view2 as select * from recursive_view1;
|
|
drop table t;
|
|
rename table recursive_view2 to t;
|
|
--error 1462
|
|
select * from recursive_view1;
|
|
drop view recursive_view1, t;
|
|
drop table if exists t;
|
|
drop view if exists recursive_view1, recursive_view2;
|
|
|
|
# TestIssue16250
|
|
create table if not exists t(a int);
|
|
create view view_issue16250 as select * from t;
|
|
-- error 1146
|
|
truncate table view_issue16250;
|
|
drop table if exists t;
|
|
drop view if exists view_issue16250;
|
|
|
|
# TestIssue24771
|
|
drop table if exists zy_tab;
|
|
create table if not exists zy_tab (
|
|
zy_code int,
|
|
zy_name varchar(100)
|
|
);
|
|
drop table if exists bj_tab;
|
|
create table if not exists bj_tab (
|
|
bj_code int,
|
|
bj_name varchar(100),
|
|
bj_addr varchar(100),
|
|
bj_person_count int,
|
|
zy_code int
|
|
);
|
|
drop table if exists st_tab;
|
|
create table if not exists st_tab (
|
|
st_code int,
|
|
st_name varchar(100),
|
|
bj_code int
|
|
);
|
|
drop view if exists v_st_2;
|
|
create definer='root'@'localhost' view v_st_2 as
|
|
select st.st_name,bj.bj_name,zy.zy_name
|
|
from (
|
|
select bj_code,
|
|
bj_name,
|
|
zy_code
|
|
from bj_tab as b
|
|
where b.bj_code = 1
|
|
) as bj
|
|
left join zy_tab as zy on zy.zy_code = bj.zy_code
|
|
left join st_tab as st on bj.bj_code = st.bj_code;
|
|
show create view v_st_2;
|
|
select * from v_st_2;
|
|
drop view if exists v_st_2;
|
|
drop table if exists zy_tab;
|
|
drop table if exists bj_tab;
|
|
drop table if exists st_tab;
|
|
|
|
# TestTruncateSequence
|
|
drop sequence if exists seq;
|
|
drop sequence if exists seq1;
|
|
create sequence if not exists seq;
|
|
-- error 1146
|
|
truncate table seq;
|
|
create sequence if not exists seq1 start 10 increment 2 maxvalue 10000 cycle;
|
|
-- error 1146
|
|
truncate table seq1;
|
|
drop sequence if exists seq;
|
|
drop sequence if exists seq1;
|
|
|
|
# TestCreateDropIndex
|
|
drop table if exists drop_test;
|
|
create table if not exists drop_test (a int);
|
|
create index idx_a on drop_test (a);
|
|
drop index idx_a on drop_test;
|
|
drop table drop_test;
|
|
|
|
# TestAutoRandomClusteredPrimaryKey
|
|
drop table if exists t;
|
|
create table t (a bigint auto_random(5), b int, primary key (a, b) clustered);
|
|
insert into t (b) values (1);
|
|
set @@allow_auto_random_explicit_insert = 0;
|
|
-- error 8216
|
|
insert into t values (100, 2);
|
|
set @@allow_auto_random_explicit_insert = 1;
|
|
insert into t values (100, 2);
|
|
select b from t order by b;
|
|
alter table t modify column a bigint auto_random(6);
|
|
drop table t;
|
|
create table t (a bigint, b bigint auto_random(4, 32), primary key (b, a) clustered);
|
|
insert into t (a) values (1);
|
|
select a from t;
|
|
drop table if exists t;
|
|
set @@allow_auto_random_explicit_insert = default;
|
|
|
|
# TestMaxHandleAddIndex
|
|
drop table if exists t;
|
|
create table t(a bigint PRIMARY KEY, b int);
|
|
insert into t values(9223372036854775807, 1);
|
|
insert into t values(-9223372036854775808, 1);
|
|
alter table t add index idx_b(b);
|
|
admin check table t;
|
|
create table t1(a bigint UNSIGNED PRIMARY KEY, b int);
|
|
insert into t1 values(18446744073709551615, 1);
|
|
insert into t1 values(0, 1);
|
|
alter table t1 add index idx_b(b);
|
|
admin check table t1;
|
|
drop table if exists t;
|
|
|
|
# TestIssue9205
|
|
drop table if exists t;
|
|
create table t(c time DEFAULT '12:12:12.8');
|
|
show create table `t`;
|
|
alter table t add column c1 time default '12:12:12.000000';
|
|
show create table `t`;
|
|
alter table t alter column c1 set default '2019-02-01 12:12:10.4';
|
|
show create table `t`;
|
|
alter table t modify c1 time DEFAULT '770:12:12.000000';
|
|
show create table `t`;
|
|
drop table if exists t;
|
|
|
|
# TestCheckDefaultFsp
|
|
drop table if exists t, t2, t3;
|
|
-- error 1067
|
|
create table t ( tt timestamp default now(1));
|
|
-- error 1067
|
|
create table t ( tt timestamp(1) default current_timestamp);
|
|
-- error 1067
|
|
create table t ( tt timestamp(1) default now(2));
|
|
create table t ( tt timestamp(1) default now(1));
|
|
create table t2 ( tt timestamp default current_timestamp());
|
|
create table t3 ( tt timestamp default current_timestamp(0));
|
|
-- error 1067
|
|
alter table t add column ttt timestamp default now(2);
|
|
-- error 1067
|
|
alter table t add column ttt timestamp(5) default current_timestamp;
|
|
-- error 1067
|
|
alter table t add column ttt timestamp(5) default now(2);
|
|
-- error 1067
|
|
alter table t modify column tt timestamp(1) default now();
|
|
-- error 1067
|
|
alter table t modify column tt timestamp(4) default now(5);
|
|
-- error 1067
|
|
alter table t change column tt tttt timestamp(4) default now(5);
|
|
-- error 1067
|
|
alter table t change column tt tttt timestamp(1) default now();
|
|
drop table if exists t, t2, t3;
|
|
|
|
# TestTimestampMinDefaultValue
|
|
drop table if exists tdv;
|
|
create table tdv(a int);
|
|
ALTER TABLE tdv ADD COLUMN ts timestamp DEFAULT '1970-01-01 08:00:01';
|
|
drop table if exists tdv;
|
|
|
|
# TestCreateTableWithTTL
|
|
drop table if exists t;
|
|
CREATE TABLE t (created_at datetime) TTL = `created_at` + INTERVAL 5 DAY;
|
|
SHOW CREATE TABLE t;
|
|
DROP TABLE t;
|
|
-- error 8148
|
|
CREATE TABLE t (id int) TTL = `id` + INTERVAL 5 DAY;
|
|
-- error 8150
|
|
CREATE TABLE t (id int) TTL_ENABLE = 'ON';
|
|
-- error 8150
|
|
CREATE TABLE t (id int) TTL_JOB_INTERVAL = '1h';
|
|
CREATE TABLE t (created_at datetime) TTL_ENABLE = 'ON' TTL = `created_at` + INTERVAL 1 DAY TTL_ENABLE = 'OFF' TTL_JOB_INTERVAL = '1d';
|
|
SHOW CREATE TABLE t;
|
|
DROP TABLE t;
|
|
CREATE TABLE t (created_at datetime) TTL_ENABLE = 'ON' TTL = `created_at` + INTERVAL 1 DAY TTL = `created_at` + INTERVAL 2 DAY TTL = `created_at` + INTERVAL 3 DAY TTL_ENABLE = 'OFF';
|
|
SHOW CREATE TABLE t;
|
|
DROP TABLE t;
|
|
|
|
# TestAlterTTLInfo
|
|
drop table if exists t;
|
|
CREATE TABLE t (created_at datetime, updated_at datetime, wrong_type int) TTL = `created_at` + INTERVAL 5 DAY;
|
|
ALTER TABLE t TTL = `updated_at` + INTERVAL 2 YEAR;
|
|
SHOW CREATE TABLE t;
|
|
ALTER TABLE t TTL_ENABLE = 'OFF';
|
|
SHOW CREATE TABLE t;
|
|
ALTER TABLE t TTL_JOB_INTERVAL = '1d';
|
|
SHOW CREATE TABLE t;
|
|
-- error 1054
|
|
ALTER TABLE t TTL = `not_exist` + INTERVAL 2 YEAR;
|
|
-- error 8148
|
|
ALTER TABLE t TTL = `wrong_type` + INTERVAL 2 YEAR;
|
|
-- error 8149
|
|
ALTER TABLE t DROP COLUMN updated_at;
|
|
-- error 8148
|
|
ALTER TABLE t CHANGE updated_at updated_at_new INT;
|
|
ALTER TABLE t RENAME COLUMN `updated_at` TO `updated_at_2`;
|
|
SHOW CREATE TABLE t;
|
|
ALTER TABLE t CHANGE `updated_at_2` `updated_at_3` date;
|
|
SHOW CREATE TABLE t;
|
|
ALTER TABLE t TTL = `updated_at_3` + INTERVAL 3 YEAR;
|
|
SHOW CREATE TABLE t;
|
|
-- error 8200
|
|
ALTER TABLE t TTL_ENABLE = 'OFF' REMOVE TTL;
|
|
ALTER TABLE t REMOVE TTL;
|
|
SHOW CREATE TABLE t;
|
|
-- error 8150
|
|
ALTER TABLE t TTL_ENABLE = 'OFF';
|
|
-- error 8150
|
|
ALTER TABLE t TTL_JOB_INTERVAL = '1h';
|
|
drop table if exists t;
|
|
|
|
# TestDisableTTLForTempTable
|
|
drop table if exists t;
|
|
--error 8151
|
|
CREATE TEMPORARY TABLE t (created_at datetime) TTL = `created_at` + INTERVAL 5 DAY;
|
|
|
|
# TestDisableTTLForFKParentTable
|
|
set global tidb_enable_foreign_key='ON';
|
|
drop table if exists t, t_1;
|
|
CREATE TABLE t (id int primary key, created_at datetime);
|
|
CREATE TABLE t_1 (t_id int, foreign key fk_t_id(t_id) references t(id));
|
|
--error 8152
|
|
ALTER TABLE t TTL = created_at + INTERVAL 5 YEAR;
|
|
drop table t,t_1;
|
|
CREATE TABLE t (id int primary key, created_at datetime) TTL = created_at + INTERVAL 5 YEAR;
|
|
--error 8152
|
|
CREATE TABLE t_1 (t_id int, foreign key fk_t_id(t_id) references t(id));
|
|
drop table t;
|
|
CREATE TABLE t (id int primary key, created_at datetime) TTL = created_at + INTERVAL 5 YEAR;
|
|
CREATE TABLE t_1 (t_id int);
|
|
--error 8152
|
|
ALTER TABLE t_1 ADD FOREIGN KEY fk_t_id(t_id) references t(id);
|
|
drop table t,t_1;
|
|
set global tidb_enable_foreign_key=default;
|
|
|
|
# TestCreateView
|
|
drop table if exists source_table, t1, t2, test_v_nested;
|
|
drop view if exists view_t, v, v1, v2, v3, v4, v5, v6, v7, v_nested, v_nested2;
|
|
CREATE TABLE source_table (id INT NOT NULL DEFAULT 1, name varchar(255), PRIMARY KEY(id));
|
|
CREATE VIEW view_t AS select id , name from source_table;
|
|
-- error 1050
|
|
CREATE VIEW view_t AS select id , name from source_table;
|
|
-- error 1146
|
|
create view v1 (c,d) as select a,b from t1;
|
|
create table t1 (a int ,b int);
|
|
insert into t1 values (1,2), (1,3), (2,4), (2,5), (3,10);
|
|
create view v1 (c) as select b+1 from t1;
|
|
create view v2 as select b+1 from t1;
|
|
create view v3 as select b+1 as c from t1;
|
|
create view v4 (c) as select b+1 as d from t1;
|
|
create view v5 as select * from t1;
|
|
create view v6 (c,d) as select * from t1;
|
|
-- error 1353
|
|
create view v7 (c,d,e) as select * from t1;
|
|
drop view v1,v2,v3,v4,v5,v6;
|
|
-- error 1351
|
|
create view v1 (c,d) as select a,b+@@global.max_user_connections from t1;
|
|
-- error 1351
|
|
create view v1 (c,d) as select a,b from t1 where a = @@global.max_user_connections;
|
|
-- error 1353
|
|
create view v1 (c,d,e) as select a,b from t1 ;
|
|
-- error 1353
|
|
create view v1 (c) as select a,b from t1 ;
|
|
drop view if exists v1;
|
|
create view v1 (c,d) as select a,b from t1;
|
|
create or replace view v1 (c,d) as select a,b from t1 ;
|
|
create table if not exists t1 (a int ,b int);
|
|
-- error 1347
|
|
create or replace view t1 as select * from t1;
|
|
prepare stmt from "create view v10 (x) as select 1";
|
|
execute stmt;
|
|
drop table if exists t1, t2;
|
|
drop view if exists v;
|
|
-- error 1146
|
|
create view v as select * from t1 union select * from t2;
|
|
create table t1(a int, b int);
|
|
create table t2(a int, b int);
|
|
insert into t1 values(1,2), (1,1), (1,2);
|
|
insert into t2 values(1,1),(1,3);
|
|
create definer='root'@'localhost' view v as select * from t1 union select * from t2;
|
|
--sorted_result
|
|
select * from v;
|
|
alter table t1 drop column a;
|
|
-- error 1356
|
|
select * from v;
|
|
alter table t1 add column a int;
|
|
--sorted_result
|
|
select * from v;
|
|
alter table t1 drop column a;
|
|
alter table t2 drop column b;
|
|
-- error 1356
|
|
select * from v;
|
|
drop view v;
|
|
create view v as (select * from t1);
|
|
drop view v;
|
|
create view v as (select * from t1 union select * from t2);
|
|
drop view v;
|
|
drop view if exists v_if_exists;
|
|
show warnings;
|
|
create view v1_if_exists as (select * from t1);
|
|
drop view if exists v1_if_exists,v2_if_exists,v3_if_exists;
|
|
show warnings;
|
|
create table test_v_nested(a int);
|
|
create definer='root'@'localhost' view v_nested as select * from test_v_nested;
|
|
create definer='root'@'localhost' view v_nested2 as select * from v_nested;
|
|
-- error 1146
|
|
create or replace definer='root'@'localhost' view v_nested as select * from v_nested2;
|
|
drop table test_v_nested;
|
|
drop view v_nested, v_nested2;
|
|
## Refer https://github.com/pingcap/tidb/issues/25876
|
|
select sleep(1);
|
|
-- error 1356
|
|
create view v_stale as select * from source_table as of timestamp date_sub(current_timestamp(3), interval 1 second);
|
|
## Refer https://github.com/pingcap/tidb/issues/32682
|
|
drop view if exists v1,v2;
|
|
drop table if exists t1;
|
|
CREATE TABLE t1(a INT, b INT);
|
|
-- error 1470
|
|
CREATE DEFINER=1234567890abcdefGHIKL1234567890abcdefGHIKL@localhost VIEW v1 AS SELECT a FROM t1;
|
|
-- error 1470
|
|
CREATE DEFINER=some_user_name@host_1234567890abcdefghij1234567890abcdefghij1234567890abcdefghij1234567890abcdefghij1234567890abcdefghij1234567890abcdefghij1234567890abcdefghij1234567890abcdefghij1234567890abcdefghij1234567890abcdefghij1234567890abcdefghij1234567890abcdefghij1234567890X VIEW v2 AS SELECT b FROM t1;
|
|
DROP VIEW IF EXISTS view_t;
|
|
|
|
# TestCreateViewWithOverlongColName
|
|
drop table if exists t;
|
|
drop view if exists v;
|
|
create table t(a int);
|
|
create view v as select distinct'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', max('bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'), 'cccccccccc', 'ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd';
|
|
select * from v;
|
|
select name_exp_1, name_exp_2, cccccccccc, name_exp_4 from v;
|
|
show create view v;
|
|
drop view v;
|
|
CREATE ALGORITHM=UNDEFINED DEFINER=``@`` SQL SECURITY DEFINER VIEW `v` (`name_exp_1`, `name_exp_2`, `cccccccccc`, `name_exp_4`) AS SELECT DISTINCT _UTF8MB4'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' AS `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`,MAX(_UTF8MB4'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb') AS `max('bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb')`,_UTF8MB4'cccccccccc' AS `cccccccccc`,_UTF8MB4'ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd' AS `ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`;
|
|
drop view v ;
|
|
create definer='root'@'localhost' view v as select 'a', 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' from t union select 'ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', count(distinct 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb', 'c');
|
|
select * from v;
|
|
select a, name_exp_2 from v;
|
|
show create view v;
|
|
drop view v;
|
|
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` (`a`, `name_exp_2`) AS SELECT _UTF8MB4'a' AS `a`,_UTF8MB4'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' AS `bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb` FROM `executor__ddl`.`t` UNION SELECT _UTF8MB4'ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' AS `ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc`,COUNT(DISTINCT _UTF8MB4'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb', _UTF8MB4'c') AS `count(distinct 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb', 'c')`;
|
|
drop view v ;
|
|
create definer='root'@'localhost' view v as select 'a' as 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' from t;
|
|
select * from v;
|
|
select name_exp_1 from v;
|
|
show create view v;
|
|
drop view v;
|
|
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` (`name_exp_1`) AS SELECT _UTF8MB4'a' AS `bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb` FROM `executor__ddl`.`t`;
|
|
drop view v ;
|
|
-- error 1059
|
|
create view v(`bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`) as select a from t;
|
|
drop table t;
|
|
|
|
# TestCreateDropTable
|
|
drop table if exists drop_test;
|
|
create table if not exists drop_test (a int);
|
|
drop table if exists drop_test;
|
|
create table drop_test (a int);
|
|
drop table drop_test;
|
|
-- error 1105
|
|
drop table mysql.gc_delete_range;
|
|
|
|
# TestCreateDropView
|
|
drop table if exists t_v, t_v1, t_v2;
|
|
drop view if exists v;
|
|
create or replace view drop_test as select 1,2;
|
|
-- error 1051
|
|
drop table drop_test;
|
|
drop view if exists drop_test;
|
|
-- error 1105
|
|
drop view mysql.gc_delete_range;
|
|
-- error 1051
|
|
drop view drop_test;
|
|
create table t_v(a int);
|
|
-- error 1347
|
|
drop view t_v;
|
|
create table t_v1(a int, b int);
|
|
create table t_v2(a int, b int);
|
|
create view v as select * from t_v1;
|
|
create or replace view v as select * from t_v2;
|
|
select * from information_schema.views where table_name ='v' and table_schema='executor__ddl';
|
|
|
|
# TestTooLargeIdentifierLength
|
|
drop database if exists aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
|
|
create database aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
|
|
drop database aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
|
|
-- error 1059
|
|
create database aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
|
|
|
|
drop table if exists bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
|
|
create table bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb(c int);
|
|
drop table bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
|
|
-- error 1059
|
|
create table bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb(c int);
|
|
|
|
drop table if exists t;
|
|
create table t(cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc int);
|
|
drop table t;
|
|
-- error 1059
|
|
create table t(ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc int);
|
|
|
|
create table t(c int);
|
|
create index dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd on t(c);
|
|
drop index dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd on t;
|
|
-- error 1059
|
|
create index ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd on t(c);
|
|
drop table t;
|
|
-- error 1059
|
|
create table t(c int, index ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd(c));
|
|
|
|
# TestIllegalFunctionCall4GeneratedColumns
|
|
drop table if exists t1;
|
|
-- error 1007
|
|
CREATE database test;
|
|
-- error 3102
|
|
create table t1 (b double generated always as (rand()) virtual);
|
|
-- error 3102
|
|
create table t1 (a varchar(64), b varchar(1024) generated always as (load_file(a)) virtual);
|
|
-- error 3102
|
|
create table t1 (a datetime generated always as (curdate()) virtual);
|
|
-- error 3102
|
|
create table t1 (a datetime generated always as (current_time()) virtual);
|
|
-- error 3102
|
|
create table t1 (a datetime generated always as (current_timestamp()) virtual);
|
|
-- error 3102
|
|
create table t1 (a datetime, b varchar(10) generated always as (localtime()) virtual);
|
|
-- error 3102
|
|
create table t1 (a varchar(1024) generated always as (uuid()) virtual);
|
|
-- error 3102
|
|
create table t1 (a varchar(1024), b varchar(1024) generated always as (is_free_lock(a)) virtual);
|
|
create table t1 (a bigint not null primary key auto_increment, b bigint, c bigint as (b + 1));
|
|
-- error 3102
|
|
alter table t1 add column d varchar(1024) generated always as (database());
|
|
alter table t1 add column d bigint generated always as (b + 1);
|
|
-- error 3102
|
|
alter table t1 modify column d bigint generated always as (connection_id());
|
|
-- error 3102
|
|
alter table t1 change column c cc bigint generated always as (connection_id());
|
|
|
|
# TestGeneratedColumnRelatedDDL
|
|
drop table if exists t1;
|
|
-- error 3109
|
|
create table t1 (a bigint not null primary key auto_increment, b bigint as (a + 1));
|
|
create table t1 (a bigint not null primary key auto_increment, b bigint, c bigint as (b + 1));
|
|
-- error 3109
|
|
alter table t1 add column d bigint generated always as (a + 1);
|
|
alter table t1 add column d bigint generated always as (b + 1);
|
|
-- error 3109
|
|
alter table t1 modify column d bigint generated always as (a + 1);
|
|
|
|
## This mysql compatibility check can be disabled using tidb_enable_auto_increment_in_generated
|
|
set session tidb_enable_auto_increment_in_generated = 1;
|
|
alter table t1 modify column d bigint generated always as (a + 1);
|
|
-- error 1054
|
|
alter table t1 add column e bigint as (z + 1);
|
|
drop table t1;
|
|
create table t1(a int, b int as (a+1), c int as (b+1));
|
|
insert into t1 (a) values (1);
|
|
-- error 3107
|
|
alter table t1 modify column c int as (b+1) first;
|
|
-- error 3107
|
|
alter table t1 modify column b int as (a+1) after c;
|
|
select * from t1;
|
|
set session tidb_enable_auto_increment_in_generated = default;
|
|
|
|
# TestAutoIncrementColumnErrorMessage
|
|
drop table if exists t1;
|
|
CREATE TABLE t1 (t1_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
|
|
-- error 3754
|
|
CREATE INDEX idx1 ON t1 ((t1_id + t1_id));
|
|
|
|
## This mysql compatibility check can be disabled using tidb_enable_auto_increment_in_generated
|
|
SET SESSION tidb_enable_auto_increment_in_generated = 1;
|
|
CREATE INDEX idx1 ON t1 ((t1_id + t1_id));
|
|
SET SESSION tidb_enable_auto_increment_in_generated = default;
|
|
|
|
# TestCheckPrimaryKeyForTTLTable
|
|
set tidb_enable_clustered_index=on;
|
|
drop table if exists t1, t2, t3, t4, t11, t12, t13, t21, t22, t23;
|
|
|
|
## create table should fail when pk contains double/float
|
|
-- error 8153
|
|
create table t1(id float primary key, t timestamp) TTL=`t`+INTERVAL 1 DAY;
|
|
-- error 8153
|
|
create table t1(id float(10,2) primary key, t timestamp) TTL=`t`+INTERVAL 1 DAY;
|
|
-- error 8153
|
|
create table t1(id double primary key, t timestamp) TTL=`t`+INTERVAL 1 DAY;
|
|
-- error 8153
|
|
create table t1(id float(10,2) primary key, t timestamp) TTL=`t`+INTERVAL 1 DAY;
|
|
-- error 8153
|
|
create table t1(id1 int, id2 float, t timestamp, primary key(id1, id2)) TTL=`t`+INTERVAL 1 DAY;
|
|
-- error 8153
|
|
create table t1(id1 int, id2 double, t timestamp, primary key(id1, id2)) TTL=`t`+INTERVAL 1 DAY;
|
|
|
|
## alter table should fail when pk contains double/float
|
|
create table t1(id float primary key, t timestamp);
|
|
create table t2(id double primary key, t timestamp);
|
|
create table t3(id1 int, id2 float, primary key(id1, id2), t timestamp);
|
|
create table t4(id1 int, id2 double, primary key(id1, id2), t timestamp);
|
|
-- error 8153
|
|
alter table t1 TTL=`t`+INTERVAL 1 DAY;
|
|
-- error 8153
|
|
alter table t2 TTL=`t`+INTERVAL 1 DAY;
|
|
-- error 8153
|
|
alter table t3 TTL=`t`+INTERVAL 1 DAY;
|
|
-- error 8153
|
|
alter table t4 TTL=`t`+INTERVAL 1 DAY;
|
|
|
|
## create table should not fail when the pk is not clustered
|
|
create table t11(id float primary key nonclustered, t timestamp) TTL=`t`+INTERVAL 1 DAY;
|
|
create table t12(id double primary key nonclustered, t timestamp) TTL=`t`+INTERVAL 1 DAY;
|
|
create table t13(id1 int, id2 float, t timestamp, primary key(id1, id2) nonclustered) TTL=`t`+INTERVAL 1 DAY;
|
|
|
|
## alter table should not fail when the pk is not clustered
|
|
create table t21(id float primary key nonclustered, t timestamp);
|
|
create table t22(id double primary key nonclustered, t timestamp);
|
|
create table t23(id1 int, id2 float, t timestamp, primary key(id1, id2) nonclustered);
|
|
alter table t21 TTL=`t`+INTERVAL 1 DAY;
|
|
alter table t22 TTL=`t`+INTERVAL 1 DAY;
|
|
alter table t23 TTL=`t`+INTERVAL 1 DAY;
|
|
|
|
set tidb_enable_clustered_index=default;
|
|
|
|
# TestInTxnExecDDLInvalid
|
|
drop table if exists t;
|
|
create table t (c_int int, c_str varchar(40));
|
|
insert into t values (1, 'quizzical hofstadter');
|
|
begin;
|
|
select c_int from t where c_str is not null for update;
|
|
alter table t add index idx_4 (c_str);
|
|
rollback;
|
|
|
|
# TestIssue64948
|
|
DROP TABLE IF EXISTS ttl_src, temp_local, temp_global, normal_copy;
|
|
CREATE TABLE ttl_src (created_at TIMESTAMP) TTL = `created_at` + INTERVAL 1 HOUR;
|
|
CREATE TEMPORARY TABLE temp_local LIKE ttl_src;
|
|
SHOW CREATE TABLE temp_local;
|
|
CREATE GLOBAL TEMPORARY TABLE temp_global LIKE ttl_src ON COMMIT DELETE ROWS;
|
|
SHOW CREATE TABLE temp_global;
|
|
CREATE TABLE normal_copy LIKE ttl_src;
|
|
SHOW CREATE TABLE normal_copy;
|
|
DROP TABLE IF EXISTS ttl_src, temp_local, temp_global, normal_copy; |