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;