github.com/matrixorigin/matrixone@v0.7.0/test/distributed/cases/ddl/unique_secondary_index.sql (about)

     1  -- create unique/secondary index all type
     2  create table index_01 (col1 bigint primary key,col2 varchar(25),col3 float,col4 varchar(50),unique key num_phone(col2),key num_id(col4));
     3  insert into index_01 values (1,'13456789872',20.23,'5678'),(2,'13873458290',100.00,'23'),(3,NULL,100.00,'23');
     4  insert into index_01 values (67834,'13456789872',20.23,'4090'),(56473,'13456789872',100.00,'5678');
     5  insert into index_01 values (4,'13866666666',20.23,'5678'),(5,'13873458290',100.00,'23'),(6,'13777777777',100.00,'23');
     6  select col2,col4 from index_01;
     7  create table index_02 (col1 bigint primary key,col2 char(25) unique key,col3 float,col4 char(50),key num_id(col4));
     8  insert into index_02 values (67834,'13456789872',20.23,'5678'),(56473,'',100.00,'5678');
     9  insert into index_02 values (1,'',20.23,'5678'),(2,'13873458290',100.00,'23');
    10  insert into index_02 values (67834,'13456799878',20.23,'4090'),(56473,NULL,100.00,'');
    11  insert into index_02 values (3,'excel',0.1,'4090'),(4,'中文',0.2,''),(5,'MMEabc$%^123',0.2,'');
    12  select col2,col4 from index_02;
    13  select * from index_02 where col2="MMEabc$%^123";
    14  create table index_03 (col1 bigint auto_increment primary key,col2 int,col3 float,col4 int,unique key id1(col2),key id2(col4));
    15  insert into index_03(col2,col3,col4) values (10,20.23,4090),(10,100.00,5678);
    16  insert into index_03(col2,col3,col4) values (10,20.23,4090),(11,100.00,4090);
    17  insert into index_03(col2,col3,col4) values (67834,20.23,4090),(56473,100.00,5678),(NULL,0.01,NULL);
    18  insert into index_03(col2,col3,col4) values (-2147483648,1.2,100),(2147483647,2.0,5);
    19  select * from index_03;
    20  select * from index_03 where col2=-2147483648;
    21  create table index_04 (col1 bigint,col2 int primary key,col3 float,col4 bigint,unique key id1(col1),key id2(col4));
    22  insert into index_04 values (67834,2,20.23,4090),(67834,4,100.00,4091);
    23  insert into index_04 values (1,2,20.23,4090),(2,4,100.00,4091),(NULL,3,0.01,NULL);
    24  insert into index_04 values (3,2,20.23,4090),(2,4,100.00,4091),(4,4,100.00,4090);
    25  select * from index_04;
    26  select * from index_04 where col1 between 10 and 1000000;
    27  create table index_05 (col1 smallint unique key,col2 int primary key,col3 float,col4 smallint,key id2(col4));
    28  insert into index_05 values (1,2,20.23,4090),(1,4,100.00,4091);
    29  insert into index_05 values (1,2,20.23,4090),(2,4,100.00,4091),(NULL,3,0.01,NULL);
    30  select * from index_05;
    31  create table index_06 (col1 tinyint,col2 int primary key,col3 float,col4 tinyint,unique key id1(col1),key id2(col4));
    32  insert into index_06 values (1,2,20.23,56),(1,4,100.00,90);
    33  insert into index_06 values (1,2,20.23,56),(2,4,100.00,41),(NULL,3,0.01,NULL);
    34  select * from index_06;
    35  create table index_07 (col1 int unsigned,col2 int primary key,col3 float,col4 int unsigned,unique key id1(col1),key id2(col4));
    36  insert into index_07 values (1,2,20.23,56),(2,4,100.00,41),(NULL,3,0.01,NULL);
    37  insert into index_07 values (1,2,20.23,56),(1,4,100.00,90);
    38  select * from index_07;
    39  create table index_08 (col1 bigint unsigned,col2 int primary key,col3 float,col4 bigint unsigned,unique key id1(col1),key id2(col4));
    40  insert into index_08 values (1,2,20.23,56),(1,4,100.00,90);
    41  insert into index_08 values (1,2,20.23,56),(2,4,100.00,41),(NULL,3,0.01,NULL);
    42  select * from index_08;
    43  create table index_09 (col1 bigint primary key,col2 decimal(4,2),col3 decimal(4,2),unique key d1(col2),key d2(col3));
    44  insert into index_09 values (1000,20.23,20.00),(1200,20.23,0.10);
    45  insert into index_09 values (1000,20.23,20.00),(1200,0.23,20.10),(1100,NULL,NULL);
    46  select * from index_09;
    47  create table index_10 (col1 bigint primary key,col2 float,col3 float,unique key d1(col2),key d2(col3));
    48  insert into index_10 values (1000,20.23,20.00),(1200,20.23,0.10);
    49  insert into index_10 values (1000,20.23,20.00),(1200,0.23,20.10),(1100,NULL,NULL);
    50  select * from index_10;
    51  create table index_11 (col1 bigint primary key,col2 double,col3 double,unique key d1(col2),key d2(col3));
    52  insert into index_11 values (1000,20.23,20.00),(1200,20.23,0.10);
    53  insert into index_11 values (1000,20.23,20.00),(1200,0.23,20.10),(1100,NULL,NULL);
    54  select * from index_11;
    55  create table index_12 (col1 bigint auto_increment primary key,col2 date,col3 date,unique key d1(col2),key d2(col3));
    56  insert into index_12(col2,col3) values ('2013-01-01','2014-02-01'),('2013-01-01','2014-02-20');
    57  insert into index_12(col2,col3) values (NULL,'2014-02-01'),(NULL,NULL);
    58  select col2 from index_12;
    59  create table index_13 (col1 bigint auto_increment primary key,col2 datetime,col3 datetime,unique key d1(col2),key d2(col3));
    60  insert into index_13(col2,col3) values ('2013-01-01 12:00:00','2014-02-01 10:00:00'),('2013-01-01 12:00:00','2014-02-20 05:00:00');
    61  insert into index_13(col2,col3) values (NULL,'2014-02-01 12:00:0'),(NULL,NULL);
    62  create table index_14 (col1 bigint auto_increment primary key,col2 timestamp,col3 timestamp,unique key d1(col2),key d2(col3));
    63  insert into index_14(col2,col3) values ('2013-01-01 12:00:00','2014-02-01 10:00:00'),('2013-01-01 12:00:00','2014-02-20 05:00:00');
    64  insert into index_14(col2,col3) values (NULL,'2014-02-01 12:00:0'),(NULL,NULL);
    65  create table index_15 (col1 bigint primary key,col2 bool,unique key c2(col2));
    66  insert into index_15 values (1,TRUE),(2,FALSE),(3,TRUE);
    67  insert into index_15 values (1,TRUE),(2,FALSE),(3,NULL);
    68  select * from index_15;
    69  -- blob/json/text type not support unique index
    70  create table index_16 (col1 bigint primary key,col2 blob,col3 blob,unique key d1(col2),key d2(col3));
    71  create table index_17 (col1 bigint primary key,col2 json,col3 json,unique key d1(col2),key d2(col3));
    72  create table index_18 (col1 bigint primary key,col2 text,col3 text,unique key d1(col2),key d2(col3));
    73  
    74  --unique index name test
    75  create table index_name (col1 bigint primary key,col2 varchar(25),col3 float,col4 varchar(50),unique key 123(col2),key num_id(col4));
    76  create table index_name (col1 bigint primary key,col2 varchar(25),col3 float,col4 varchar(50),unique key abs@123.abc(col2),key num_id(col4));
    77  create table index_name (col1 bigint primary key,col2 varchar(25),col3 float,col4 varchar(50),unique key default(col2),key num_id(col4));
    78  create table index_name (col1 bigint primary key,col2 varchar(25),col3 float,col4 varchar(50),unique key `default`(col2),key num_id(col4));
    79  drop table index_name;
    80  create table index_name (col1 bigint primary key,col2 varchar(25),col3 float,col4 varchar(50),unique key `123`(col2),key num_id(col4));
    81  drop table index_name;
    82  create table index_name (col1 bigint primary key,col2 varchar(25),col3 float,col4 varchar(50),unique key `abs@123.abc`(col2),key num_id(col4));
    83  drop table index_name;
    84  
    85  --unique index include null and not null,''
    86  create table index_table_01 (col1 bigint auto_increment primary key,col2 varchar(25),col3 float default 87.01,col4 int,unique key num_phone(col2),key num_id(col4));
    87  insert into index_table_01 values (67834,'13456789872',20.23,4090),(56473,'',100.00,5678);
    88  insert into index_table_01 values (34,NULL,4090,1);
    89  insert into index_table_01 values (56478,'',103.00,5670);
    90  select * from index_table_01;
    91  drop table index_table_01;
    92  
    93  create table index_table_02 (col1 bigint primary key,col2 varchar(25) not null,col3 float default 87.01,col4 int,unique key num_phone(col2),key num_id(col4));
    94  insert into index_table_02 values (34,NULL,4090,1);
    95  drop table index_table_02;
    96  
    97  --unique index default
    98  create table index_table_02 (col1 bigint primary key,col2 int default 0,unique key col2(col2));
    99  insert into index_table_02(col1) values (1);
   100  insert into index_table_02(col1) values (2),(3);
   101  drop table index_table_02;
   102  
   103  --only unique key
   104  create table index_table_03 (col1 bigint,col2 int,unique key col2(col2));
   105  insert into index_table_03 values (1,20),(2,NULL),(3,90);
   106  update index_table_03 set col2=10 where col2 is NULL;
   107  select * from index_table_03;
   108  drop table index_table_03;
   109  
   110  --load infile ,insert select
   111  CREATE TABLE IF NOT EXISTS `t_code_rule` (
   112    `code_id` bigint(20) NOT NULL ,
   113    `code_no` varchar(50) NOT NULL,
   114    `org_no` varchar(50) NOT NULL,
   115    `org_name` varchar(50) NOT NULL,
   116    `ancestors` varchar(255) NOT NULL,
   117    `code_rule_no` varchar(50) NOT NULL,
   118    `code_rule_name` varchar(50) NOT NULL,
   119    `code_name` varchar(50) NOT NULL,
   120    `code_type` int(11),
   121    `split` varchar(50) DEFAULT NULL,
   122    `remark` varchar(255),
   123    `create_time` datetime NOT NULL,
   124    `create_user` varchar(50) DEFAULT NULL,
   125    `last_update_time` datetime DEFAULT NULL,
   126    `last_update_user` varchar(50) DEFAULT NULL,
   127    `is_system_code` varchar(20)  NOT NULL DEFAULT 'N',
   128    PRIMARY KEY (`code_id`),
   129    UNIQUE KEY `code_type` (`code_type`),
   130    KEY `code_no` (`code_no`),
   131    KEY `code_rule_no` (`code_rule_no`),
   132    KEY `org_no` (`org_no`)
   133  );
   134  show create table t_code_rule;
   135  load data infile  '$resources/load_data/unique_index_file.csv' into table t_code_rule ;
   136  select code_id,code_type,code_no,code_rule_no,org_no from t_code_rule;
   137  truncate table t_code_rule;
   138  load data infile  '$resources/load_data/unique_index_duplicate.csv' into table t_code_rule;
   139  select code_id,code_type,code_no,code_rule_no,org_no from t_code_rule;
   140  create table index_temp( col1 bigint(20) NOT NULL ,col2 varchar(50) NOT NULL,col3 varchar(50) NOT NULL,col4 varchar(50) NOT NULL,col5 varchar(255) NOT NULL,col6 varchar(50) NOT NULL,col7 varchar(50) NOT NULL,col8 varchar(50) NOT NULL,col9 int(11) ,col10 varchar(50) DEFAULT NULL,col11 varchar(255),col12 datetime NOT NULL,col13 varchar(50) DEFAULT NULL,col14 datetime DEFAULT NULL,col15 varchar(50) DEFAULT NULL,col16 varchar(20)  NOT NULL DEFAULT 'N');
   141  load data infile  '$resources/load_data/unique_index_file.csv' into table index_temp;
   142  insert into t_code_rule select * from index_temp;
   143  select code_id,code_type,code_no,code_rule_no,org_no from t_code_rule;
   144  truncate table index_temp;
   145  load data infile  '$resources/load_data/unique_index_duplicate.csv' into table index_temp;
   146  insert into t_code_rule select * from index_temp;
   147  
   148  --unique index more column
   149  create table index_table_04 (col1 bigint not null auto_increment,col2 varchar(25),col3 int,col4 varchar(50),primary key (col1),unique key m1(col2,col3),key num_id(col4));
   150  insert into index_table_04(col2,col3,col4)  select 'apple',1,'10';
   151  insert into index_table_04(col2,col3,col4)  select 'apple',2,'11';
   152  insert into index_table_04(col2,col3,col4)  select 'apple',2,'12';
   153  insert into index_table_04(col2,col3,col4)  select NULL,NULL,'13';
   154  select * from index_table_04;
   155  drop table index_table_04;
   156  create table index_table_04 (col1 bigint not null auto_increment,col2 varchar(25),col3 int,col4 varchar(50),primary key (col1),unique key m1(col2),unique key m2(col3),key num_id(col4));
   157  insert into index_table_04(col2,col3,col4)  select 'apple',1,'10';
   158  insert into index_table_04(col2,col3,col4)  select 'apple',2,'11';
   159  insert into index_table_04(col2,col3,col4)  select 'apple',2,'12';
   160  insert into index_table_04(col2,col3,col4)  select NULL,NULL,'13';
   161  select * from index_table_04;
   162  
   163  --unique key update/delete/truncate and update duplicate data
   164  create table index_table_05 (col1 bigint not null auto_increment,col2 varchar(25),col3 int,col4 varchar(50),primary key (col1),unique key col2(col2),key num_id(col4));
   165  insert into index_table_05(col2,col3,col4) values ('apple',1,'10'),('store',2,'11'),('bread',3,'12');
   166  select * from index_table_05;
   167  update index_table_05 set col2='chart' where col1=2;
   168  select col2 from index_table_05;
   169  update index_table_05 set col2='bread' where col1=1;
   170  select * from index_table_05;
   171  delete from index_table_05 where col2='apple';
   172  select * from index_table_05;
   173  truncate table index_table_05;
   174  insert into index_table_05(col2,col3,col4) values ('apple',1,'10'),('store',2,'11'),('apple',3,'12');
   175  select * from index_table_05;
   176  drop table index_table_05;
   177  
   178  --rename table
   179  create table index_table_05 (col1 bigint not null auto_increment,col2 varchar(25),col3 int,col4 varchar(50),primary key (col1),unique key col2(col2),key num_id(col4));
   180  insert into index_table_05(col2,col3,col4) values ('apple',1,'10'),('store',2,'11'),('bread',3,'12');
   181  --rename table index_table_05 to index_table_05_new;
   182  --insert into index_table_05_new(col2,col3,col4) values ('apple',4,'13');
   183  --select * from index_table_05_new;
   184  
   185  --only one/more key column
   186  create table index_table_06 (col1 bigint not null auto_increment,col2 varchar(25),col3 int,col4 varchar(50),primary key (col1),key num_id(col4));
   187  insert into index_table_06(col2,col3,col4) values ('apple',1,'10'),('store',2,'11'),('bread',3,'12');
   188  select * from index_table_06;
   189  drop table index_table_06;
   190  create table index_table_06 (col1 bigint not null auto_increment,col2 varchar(25),col3 int default 10,col4 varchar(50),primary key (col1),key col2(col2),key col3(col3));
   191  insert into index_table_06(col2,col3,col4) values ('apple',1,'10'),('store',2,'11'),('bread',2,'12');
   192  insert into index_table_06(col2,col3,col4) values ('read',1,'10'),('write',2,'11'),('bread',3,'10');
   193  insert into index_table_06(col2,col3,col4) values ('read',NULL,'10'),('write',NULL,NULL);
   194  select col2,col3 from index_table_06;
   195  
   196  --abnormal test :create not exists unique/secondary index column
   197  create table index_table_07 (col1 bigint not null auto_increment,col2 varchar(25),col3 int,col4 varchar(50),primary key (col1),unique key col10(col10),key num_id(col4));
   198  create table index_table_07 (col1 bigint not null auto_increment,col2 varchar(25),col3 int,col4 varchar(50),primary key (col1),unique key col2(col2),key num_id(col40));
   199  
   200  --create unique index
   201  create table create_index_01 (col1 bigint primary key,col2 varchar(25),col3 float,col4 varchar(50));
   202  create unique index varchar_index on create_index_01(col2) comment 'create varchar index';
   203  insert into create_index_01 values (1,'13456789872',20.23,'5678'),(2,'13873458290',100.00,'23'),(3,NULL,100.00,'23');
   204  insert into create_index_01 values (67834,'13456789872',20.23,'4090'),(56473,'13456789872',100.00,'5678');
   205  select col2,col4 from create_index_01;
   206  select * from create_index_01 where col2 not in ('13873458290');
   207  drop index varchar_index on create_index_01;
   208  create table create_index_02 (col1 bigint,col2 char(25),col3 float,col4 char(50));
   209  create unique index char_index on create_index_02(col2);
   210  insert into create_index_02 values (1,'',20.23,'5678'),(2,'13873458290',100.00,'23');
   211  insert into create_index_02 values (67834,'13456799878',20.23,'4090'),(56473,NULL,100.00,'');
   212  insert into create_index_02 values (3,'excel',0.1,'4090'),(4,'中文',0.2,''),(5,'MMEabc$%^123',0.2,'');
   213  select col2,col4 from create_index_02;
   214  select * from create_index_02 where col2 like "MME%";
   215  drop index char_index on create_index_02;
   216  create table create_index_03 (col1 bigint auto_increment,col2 int,col3 float,col4 int);
   217  create unique index int_index on create_index_03(col2);
   218  insert into create_index_03(col2,col3,col4) values (10,20.23,4090),(10,100.00,5678);
   219  insert into create_index_03(col2,col3,col4) values (10,20.23,4090),(11,100.00,4090);
   220  insert into create_index_03(col2,col3,col4) values (67834,20.23,4090),(56473,100.00,5678),(NULL,0.01,NULL);
   221  select * from create_index_03;
   222  drop index int_index on create_index_03;
   223  create table create_index_04 (col1 bigint,col2 int primary key,col3 float,col4 bigint);
   224  create unique index bigint_index on create_index_04(col1);
   225  insert into create_index_04 values (67834,2,20.23,4090),(67834,4,100.00,4091);
   226  insert into create_index_04 values (1,2,20.23,4090),(2,4,100.00,4091),(NULL,3,0.01,NULL);
   227  insert into create_index_04 values (-9223372036854775808,5,20.23,4090),(9223372036854775807,6,100.00,4091);
   228  select * from create_index_04;
   229  select * from create_index_04 where col1 in (-9223372036854775808,9223372036854775807);
   230  create table create_index_05 (col1 smallint,col2 int primary key,col3 float,col4 smallint);
   231  create unique index smallint_index on create_index_05(col1);
   232  insert into create_index_05 values (1,2,20.23,4090),(1,4,100.00,4091);
   233  insert into create_index_05 values (1,2,20.23,4090),(2,4,100.00,4091),(NULL,3,0.01,NULL);
   234  select * from create_index_05;
   235  create table create_index_06 (col1 tinyint,col2 int primary key,col3 float,col4 tinyint);
   236  create unique index tinyint_index on create_index_06(col1);
   237  insert into create_index_06 values (1,2,20.23,56),(1,4,100.00,90);
   238  insert into create_index_06 values (1,2,20.23,56),(2,4,100.00,41),(NULL,3,0.01,NULL);
   239  select * from create_index_06;
   240  create table create_index_07 (col1 int unsigned,col2 int primary key,col3 float,col4 int unsigned);
   241  create unique index int_unsigned_index on create_index_07(col1);
   242  insert into create_index_07 values (1,2,20.23,56),(2,4,100.00,41),(NULL,3,0.01,NULL);
   243  insert into create_index_07 values (1,2,20.23,56),(1,4,100.00,90);
   244  select * from create_index_07;
   245  create table create_index_08 (col1 bigint unsigned,col2 int primary key,col3 float,col4 bigint unsigned);
   246  create unique index bigint_unsigned_index on create_index_08(col1);
   247  insert into create_index_08 values (1,2,20.23,56),(1,4,100.00,90);
   248  insert into create_index_08 values (1,2,20.23,56),(2,4,100.00,41),(NULL,3,0.01,NULL);
   249  select * from create_index_08;
   250  create table create_index_09 (col1 bigint primary key,col2 decimal(16,8),col3 decimal(16,8));
   251  create unique index decimal_index on create_index_09(col2);
   252  insert into create_index_09 values (1000,20.23,20.00),(1200,20.23,0.10);
   253  insert into create_index_09 values (1000,20.23,20.00),(1200,0.23,20.10),(1100,NULL,NULL);
   254  select * from create_index_09;
   255  create table create_index_10 (col1 bigint primary key,col2 float,col3 float);
   256  create unique index float_index on create_index_10(col2);
   257  insert into create_index_10 values (1000,20.23,20.00),(1200,20.23,0.10);
   258  insert into create_index_10 values (1000,20.23,20.00),(1200,0.23,20.10),(1100,NULL,NULL);
   259  select * from create_index_10;
   260  create table create_index_11 (col1 bigint primary key,col2 double,col3 double);
   261  create unique index double_index on create_index_11(col2);
   262  insert into create_index_11 values (1000,20.23,20.00),(1200,20.23,0.10);
   263  insert into create_index_11 values (1000,20.23,20.00),(1200,0.23,20.10),(1100,NULL,NULL);
   264  select * from create_index_11;
   265  create table create_index_12(col1 bigint auto_increment primary key,col2 date,col3 date);
   266  create unique index date_index on create_index_12(col2);
   267  insert into create_index_12(col2,col3) values ('2013-01-01','2014-02-01'),('2013-01-01','2014-02-20');
   268  insert into create_index_12(col2,col3) values (NULL,'2014-02-01'),(NULL,NULL);
   269  create table create_index_13 (col1 bigint auto_increment primary key,col2 datetime,col3 datetime);
   270  create unique index datetime_index on create_index_13(col2);
   271  insert into create_index_13(col2,col3) values ('2013-01-01 12:00:00','2014-02-01 10:00:00'),('2013-01-01 12:00:00','2014-02-20 05:00:00');
   272  insert into create_index_13(col2,col3) values (NULL,'2014-02-01 12:00:0'),(NULL,NULL);
   273  create table create_index_14 (col1 bigint auto_increment primary key,col2 timestamp,col3 timestamp);
   274  create unique index timestamp_index on create_index_14(col2);
   275  insert into create_index_14(col2,col3) values ('2013-01-01 12:00:00','2014-02-01 10:00:00'),('2013-01-01 12:00:00','2014-02-20 05:00:00');
   276  insert into create_index_14(col2,col3) values (NULL,'2014-02-01 12:00:0'),(NULL,NULL);
   277  create table create_index_15 (col1 bigint primary key,col2 bool);
   278  create unique index bool_index on create_index_15(col2);
   279  insert into create_index_15 values (1,TRUE),(2,FALSE),(3,TRUE);
   280  insert into create_index_15 values (1,TRUE),(2,FALSE),(3,NULL);
   281  select * from create_index_15;
   282  -- blob/json/text type not support unique index
   283  create table create_index_16 (col1 bigint primary key,col2 blob,col3 blob);
   284  create unique index blob_index on create_index_16(col2);
   285  drop table create_index_16;
   286  create table create_index_17 (col1 bigint primary key,col2 json,col3 json);
   287  create unique index json_index on create_index_17(col2);
   288  drop table create_index_17;
   289  create table create_index_18 (col1 bigint primary key,col2 text,col3 text);
   290  create unique index text_index on create_index_18(col2);
   291  drop table create_index_18;
   292  
   293  --create unique index name test
   294  create table create_index_name (col1 bigint not null auto_increment,col2 varchar(25),col3 int,col4 varchar(50),primary key (col1));
   295  create unique index 123 on create_index_name(col2);
   296  create unique index INdex_123 on create_index_name(col3);
   297  create unique index abs@123.abc on create_index_name(col4);
   298  create unique index index_123 on create_index_name(col3);
   299  create unique index default on create_index_name(col3);
   300  create unique index `default` on create_index_name(col3);
   301  
   302  --create unique index more column
   303  create table create_index_18 (col1 bigint not null auto_increment,col2 varchar(25),col3 int,col4 varchar(50),primary key (col1));
   304  create unique index m1_index on create_index_18(col2,col3);
   305  insert into create_index_18(col2,col3,col4)  select 'apple',1,'10';
   306  insert into create_index_18(col2,col3,col4)  select 'apple',2,'11';
   307  insert into create_index_18(col2,col3,col4)  select 'apple',2,'12';
   308  insert into create_index_18(col2,col3,col4)  select NULL,NULL,'13';
   309  select * from create_index_18;
   310  drop index m1_index on create_index_18;
   311  create unique index m2_index on create_index_18(col2,col3,col4);
   312  truncate table create_index_18;
   313  insert into create_index_18(col2,col3,col4)  select 'apple',1,'10';
   314  insert into create_index_18(col2,col3,col4)  select 'apple',2,'11';
   315  insert into create_index_18(col2,col3,col4)  select 'apple',2,'12';
   316  insert into create_index_18(col2,col3,col4)  select NULL,NULL,'13';
   317  insert into create_index_18(col2,col3,col4)  select 'apple',2,'12';
   318  select * from create_index_18;
   319  drop index m2_index on create_index_18;
   320  create unique index m3_index on create_index_18(col2);
   321  create unique index m4_index on create_index_18(col3);
   322  create unique index m5_index on create_index_18(col4);
   323  select * from create_index_18;
   324  show create table create_index_18;
   325  drop index m3_index on create_index_18;
   326  drop index m4_index on create_index_18;
   327  drop index m5_index on create_index_18;
   328  drop table create_index_18;
   329  create table create_index_18(col1 int,col2 char(15));
   330  insert into create_index_18 values(2,'20');
   331  insert into create_index_18 values(3,'20');
   332  create unique index m1_index on create_index_18(col1);
   333  create unique index m2_index on create_index_18(col1);
   334  create unique index m3_index on create_index_18(col1,col2);
   335  drop table create_index_18;
   336  drop index m3_index on create_index_18;
   337  
   338  --create index update/delete/truncate
   339  create table create_index_19 (col1 bigint not null auto_increment,col2 varchar(25),col3 int,col4 varchar(50),primary key (col1));
   340  create unique index col2 on create_index_19(col2);
   341  insert into create_index_19(col2,col3,col4) values ('apple',1,'10'),('store',2,'11'),('bread',3,'12');
   342  select * from create_index_19;
   343  update create_index_19 set col2='chart' where col1=2;
   344  select col2 from create_index_19;
   345  update create_index_19 set col2='bread' where col1=1;
   346  select * from create_index_19;
   347  delete from create_index_19 where col2='apple';
   348  select * from create_index_19;
   349  truncate table create_index_19;
   350  insert into create_index_19(col2,col3,col4) values ('apple',1,'10'),('store',2,'11'),('apple',3,'12');
   351  select * from create_index_19;
   352  drop table create_index_19;
   353  
   354  --abnormal test: create not exists unique column,drop not exists index
   355  create table create_index_20(col1 int,col2 char(15));
   356  create unique index m3_index on create_index_20(col3);
   357  drop index char_index on create_index_20;
   358  
   359  --grant privilege
   360  drop account if exists unique_test_account;
   361  create account unique_test_account admin_name='admin' identified by '123456';
   362  -- @session:id=1&user=unique_test_account:admin&password=123456
   363  create user if not exists user_1 identified by '123456';
   364  create role if not exists 'unique_priv_1';
   365  grant create database,drop database,connect on account *  to unique_priv_1;
   366  grant create table on database *  to unique_priv_1;
   367  grant all on table *.* to unique_priv_1;
   368  grant unique_priv_1 to user_1;
   369  -- @session
   370  -- @session:id=2&user=unique_test_account:user_1:unique_priv_1&password=123456
   371  create database testdb;
   372  use testdb;
   373  create table create_index_01 (col1 bigint primary key,col2 varchar(25),col3 float,col4 varchar(50));
   374  create unique index varchar_index on create_index_01(col2) comment 'create varchar index';
   375  insert into create_index_01 values (1,'13456789872',20.23,'5678'),(2,'13873458290',100.00,'23'),(3,NULL,100.00,'23');
   376  select col2,col4 from create_index_01;
   377  drop index varchar_index on create_index_01;
   378  drop database testdb;
   379  -- @session
   380  drop account if exists unique_test_account;
   381  
   382  --transaction conflict
   383  use unique_secondary_index;
   384  create table trans_index_01 (col1 bigint primary key,col2 varchar(25),col3 float,col4 varchar(50));
   385  start transaction;
   386  create unique index varchar_index on trans_index_01(col2) comment 'create varchar index';
   387  insert into trans_index_01 values (1,'13456789872',20.23,'5678'),(2,'13873458290',100.00,'23'),(3,NULL,100.00,'23');
   388  -- @session:id=3{
   389  use unique_secondary_index;
   390  insert into trans_index_01 values (1,'13456789872',20.23,'5678'),(2,'13873458290',100.00,'23');
   391  select * from trans_index_01;
   392  -- @session}
   393  select * from trans_index_01;
   394  commit;
   395  select * from trans_index_01;
   396  drop table trans_index_01;
   397  
   398  use unique_secondary_index;
   399  create table trans_index_01 (col1 bigint primary key,col2 varchar(25),col3 float,col4 varchar(50));
   400  create unique index varchar_index on trans_index_01(col2) comment 'create varchar index';
   401  start transaction;
   402  -- @session:id=3{
   403  use unique_secondary_index;
   404  drop index varchar_index on trans_index_01;
   405  insert into trans_index_01 values (1,'13456789872',20.23,'5678'),(2,'13456789872',100.00,'23'),(3,NULL,100.00,'23');
   406  -- @session}
   407  insert into trans_index_01 values (1,'13456789872',20.23,'5678'),(2,'13456789872',100.00,'23'),(3,NULL,100.00,'23');
   408  select * from trans_index_01;
   409  commit;
   410  select * from trans_index_01;
   411  drop table trans_index_01;
   412  
   413  -- secondary ddl
   414  create table create_secondary_01 (col1 bigint primary key,col2 varchar(25) unique key,col3 float,col4 varchar(50));
   415  insert into create_secondary_01 values (1,'13456789872',20.23,'5678'),(2,'13873458290',100.00,'23'),(3,NULL,100.00,'23');
   416  create index varchar_second_index on create_secondary_01(col4) comment 'create varchar index';
   417  show create table create_secondary_01;
   418  insert into create_secondary_01 values (4,'13456789899',20.23,'5678'),(5,'13873458255',100.00,'23');
   419  select * from create_secondary_01;
   420  drop index varchar_second_index on create_secondary_01;
   421  show create table create_secondary_01;
   422  create table create_secondary_02 (col1 bigint,col2 char(25),col3 float,col4 char(50));
   423  create index char_second_index on create_secondary_02(col2);
   424  insert into create_secondary_02 values (1,'',20.23,'5678'),(2,'13873458290',100.00,'23');
   425  select col2,col4 from create_secondary_02;
   426  drop index char_second_index on create_secondary_02;
   427  create table create_secondary_03 (col1 bigint auto_increment,col2 int default 1000,col3 float,col4 int);
   428  create index int_second_index on create_secondary_03(col2);
   429  insert into create_secondary_03(col3,col4) values (20.23,4090),(100.00,5678);
   430  select * from create_secondary_03;
   431  drop index int_second_index on create_secondary_03;
   432  create table create_secondary_04 (col1 bigint,col2 int primary key,col3 float,col4 bigint);
   433  create index bigint_index on create_secondary_04(col1);
   434  insert into create_secondary_04 values (1,2,20.23,4090),(2,4,100.00,4091),(NULL,3,0.01,NULL);
   435  select * from create_secondary_04;
   436  create table create_secondary_05 (col1 smallint,col2 int primary key,col3 float,col4 smallint);
   437  create index smallint_second_index on create_secondary_05(col1);
   438  insert into create_secondary_05 values (1,2,20.23,4090),(1,4,100.00,4091);
   439  select * from create_secondary_05;
   440  create table create_secondary_06 (col1 tinyint,col2 int primary key,col3 float,col4 tinyint);
   441  create index tinyint_second_index on create_secondary_06(col1);
   442  insert into create_secondary_06 values (1,2,20.23,56),(1,4,100.00,90);
   443  select * from create_secondary_06;
   444  create table create_secondary_07 (col1 int unsigned,col2 int primary key,col3 float,col4 int unsigned);
   445  create index int_unsigned_index on create_secondary_07(col1);
   446  insert into create_secondary_07 values (1,2,20.23,56),(1,4,100.00,90);
   447  show create table create_secondary_07;
   448  select * from create_secondary_07;
   449  create table create_secondary_08 (col1 bigint unsigned,col2 int primary key,col3 float,col4 bigint unsigned);
   450  create index bigint_unsigned_index on create_secondary_08(col1);
   451  insert into create_secondary_08 values (1,2,20.23,56),(2,4,100.00,41),(NULL,3,0.01,NULL);
   452  select * from create_secondary_08;
   453  create table create_secondary_09 (col1 bigint primary key,col2 decimal(16,8),col3 decimal(16,8));
   454  create index decimal_index on create_secondary_09(col2);
   455  insert into create_secondary_09 values (1000,20.23,20.00),(1200,0.23,20.10),(1100,NULL,NULL);
   456  select * from create_secondary_09;
   457  create table create_secondary_10 (col1 bigint primary key,col2 float,col3 float);
   458  insert into create_secondary_10 values (1000,20.23,20.00),(1200,0.23,20.10),(1100,NULL,NULL);
   459  create index float_index on create_secondary_10(col2);
   460  select * from create_secondary_10;
   461  create table create_secondary_11 (col1 bigint primary key,col2 double,col3 double);
   462  create index double_index on create_secondary_11(col2);
   463  insert into create_secondary_11 values (1000,20.23,20.00),(1200,20.23,0.10);
   464  select * from create_secondary_11;
   465  create table create_secondary_12(col1 bigint auto_increment primary key,col2 date,col3 date);
   466  create index date_index on create_secondary_12(col2);
   467  insert into create_secondary_12(col2,col3) values ('2013-01-01','2014-02-01'),('2013-01-01','2014-02-20');
   468  create table create_secondary_13 (col1 bigint auto_increment primary key,col2 datetime,col3 datetime);
   469  create index datetime_index on create_secondary_13(col2);
   470  insert into create_secondary_13(col2,col3) values (NULL,'2014-02-01 12:00:0'),(NULL,NULL);
   471  create table create_secondary_14 (col1 bigint auto_increment primary key,col2 timestamp,col3 timestamp);
   472  create index timestamp_index on create_secondary_14(col2);
   473  insert into create_secondary_14(col2,col3) values ('2013-01-01 12:00:00','2014-02-01 10:00:00'),('2013-01-01 12:00:00','2014-02-20 05:00:00');
   474  create table create_secondary_15 (col1 bigint primary key,col2 bool);
   475  create index bool_index on create_secondary_15(col2);
   476  insert into create_secondary_15 values (1,TRUE),(2,FALSE),(3,TRUE);
   477  select * from create_secondary_15;
   478  -- blob/json/text type not support unique index
   479  create table create_secondary_16 (col1 bigint primary key,col2 blob,col3 blob);
   480  create index blob_index on create_secondary_16(col2);
   481  drop table create_secondary_16;
   482  create table create_secondary_17 (col1 bigint primary key,col2 json,col3 json);
   483  create index json_index on create_secondary_17(col2);
   484  drop table create_secondary_17;
   485  create table create_secondary_18 (col1 bigint primary key,col2 text,col3 text);
   486  create index text_index on create_secondary_18(col2);
   487  drop table create_secondary_18;
   488  
   489  --more column secondary key
   490  drop table create_secondary_01;
   491  create table create_secondary_01 (col1 bigint primary key,col2 varchar(25) unique key,col3 float,col4 varchar(50),col5 int);
   492  create index secondary_key on create_secondary_01(col4,col5);
   493  insert into create_secondary_01 values (1,'13456789872',20.23,'5678',99),(2,'13873458290',100.00,'23',9),(3,NULL,100.00,'23',99);
   494  select * from create_secondary_01;
   495  show create table create_secondary_01;
   496  drop index secondary_key on create_secondary_01;
   497  truncate table create_secondary_01;
   498  show create table create_secondary_01;
   499  drop table create_secondary_01;
   500  
   501  --primary key create secondary key
   502  create table create_secondary_01 (col1 bigint primary key,col2 varchar(25) unique key,col3 float,col4 varchar(50),col5 int);
   503  create index secondary_key1 on create_secondary_01(col1);
   504  create index secondary_key2 on create_secondary_01(col1,col2);
   505  show create table create_secondary_01;
   506  drop index secondary_key1 on create_secondary_01;
   507  drop index secondary_key2 on create_secondary_01;
   508  create index secondary_key1 on create_secondary_01(col4,col5);
   509  create index secondary_key1 on create_secondary_01(col4,col5);
   510  drop table create_secondary_01;
   511  
   512  --anormal test
   513  create table create_secondary_01 (col1 bigint primary key,col2 varchar(25) unique key,col3 float,col4 varchar(50),col5 int);
   514  drop index secondary_key1 on create_secondary_01;
   515  create unique index secondary_key1 on create_secondary_01(col1);
   516  create index secondary_key1 on create_secondary_01(col1);
   517  show create table create_secondary_01;