564 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			564 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								--disable_warnings
							 | 
						||
| 
								 | 
							
								drop table if exists t1,t2,t3;
							 | 
						||
| 
								 | 
							
								--enable_warnings
							 | 
						||
| 
								 | 
							
								SET SQL_WARNINGS=1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# This failed for Elizabeth Mattijsen
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (
							 | 
						||
| 
								 | 
							
								  ID CHAR(32) NOT NULL,
							 | 
						||
| 
								 | 
							
								  name CHAR(32) NOT NULL,
							 | 
						||
| 
								 | 
							
								  value CHAR(255),
							 | 
						||
| 
								 | 
							
								  INDEX indexIDname (ID(8),name(8))
							 | 
						||
| 
								 | 
							
								) ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES
							 | 
						||
| 
								 | 
							
								('keyword','indexdir','/export/home/local/www/database/indexes/keyword');
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES ('keyword','urlprefix','text/ /text');
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES ('keyword','urlmap','/text/ /');
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES ('keyword','attr','personal employee company');
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES
							 | 
						||
| 
								 | 
							
								('emailgids','indexdir','/export/home/local/www/database/indexes/emailgids');
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES ('emailgids','urlprefix','text/ /text');
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES ('emailgids','urlmap','/text/ /');
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES ('emailgids','attr','personal employee company');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SELECT value FROM t1 WHERE ID='emailgids' AND name='attr';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Problem with many key parts and many or
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (
							 | 
						||
| 
								 | 
							
								  price int(5) DEFAULT '0' NOT NULL,
							 | 
						||
| 
								 | 
							
								  area varchar(40) DEFAULT '' NOT NULL,
							 | 
						||
| 
								 | 
							
								  type varchar(40) DEFAULT '' NOT NULL,
							 | 
						||
| 
								 | 
							
								  transityes enum('Y','N') DEFAULT 'Y' NOT NULL,
							 | 
						||
| 
								 | 
							
								  shopsyes enum('Y','N') DEFAULT 'Y' NOT NULL,
							 | 
						||
| 
								 | 
							
								  schoolsyes enum('Y','N') DEFAULT 'Y' NOT NULL,
							 | 
						||
| 
								 | 
							
								  petsyes enum('Y','N') DEFAULT 'Y' NOT NULL,
							 | 
						||
| 
								 | 
							
								  KEY price (price,area,type,transityes,shopsyes,schoolsyes,petsyes)
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (900,'Vancouver','Shared/Roomate','N','N','N','N');
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (900,'Vancouver','Shared/Roomate','N','N','N','N');
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (900,'Vancouver','Shared/Roomate','','','','');
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (900,'Vancouver','Shared/Roomate','Y','Y','Y','Y');
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (900,'Vancouver','Shared/Roomate','Y','Y','Y','Y');
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (900,'Vancouver','Shared/Roomate','Y','Y','Y','Y');
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (900,'Vancouver','Shared/Roomate','Y','Y','Y','Y');
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (900,'Vancouver','Shared/Roomate','Y','Y','Y','Y');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 SELECT * FROM t1 WHERE area='Vancouver' and transityes='y' and schoolsyes='y' and ( ((type='1 Bedroom' or type='Studio/Bach') and (price<=500)) or ((type='2 Bedroom') and (price<=550)) or ((type='Shared/Roomate') and (price<=300)) or ((type='Room and Board') and (price<=500)) ) and price <= 400;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# No longer a problem with primary key
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (program enum('signup','unique','sliding') not null,  type enum('basic','sliding','signup'),  sites set('mt'),  PRIMARY KEY (program));
							 | 
						||
| 
								 | 
							
								# This no longer give an error for wrong primary key
							 | 
						||
| 
								 | 
							
								ALTER TABLE t1 modify program enum('signup','unique','sliding');
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Test of compressed decimal index.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (
							 | 
						||
| 
								 | 
							
								  name varchar(50) DEFAULT '' NOT NULL,
							 | 
						||
| 
								 | 
							
								  author varchar(50) DEFAULT '' NOT NULL,
							 | 
						||
| 
								 | 
							
								  category decimal(10,0) DEFAULT '0' NOT NULL,
							 | 
						||
| 
								 | 
							
								  email varchar(50),
							 | 
						||
| 
								 | 
							
								  password varchar(50),
							 | 
						||
| 
								 | 
							
								  proxy varchar(50),
							 | 
						||
| 
								 | 
							
								  bitmap varchar(20),
							 | 
						||
| 
								 | 
							
								  msg varchar(255),
							 | 
						||
| 
								 | 
							
								  urlscol varchar(127),
							 | 
						||
| 
								 | 
							
								  urlhttp varchar(127),
							 | 
						||
| 
								 | 
							
								  timeout decimal(10,0),
							 | 
						||
| 
								 | 
							
								  nbcnx decimal(10,0),
							 | 
						||
| 
								 | 
							
								  creation decimal(10,0),
							 | 
						||
| 
								 | 
							
								  livinguntil decimal(10,0),
							 | 
						||
| 
								 | 
							
								  lang decimal(10,0),
							 | 
						||
| 
								 | 
							
								  type decimal(10,0),
							 | 
						||
| 
								 | 
							
								  subcat decimal(10,0),
							 | 
						||
| 
								 | 
							
								  subtype decimal(10,0),
							 | 
						||
| 
								 | 
							
								  reg char(1),
							 | 
						||
| 
								 | 
							
								  scs varchar(255),
							 | 
						||
| 
								 | 
							
								  capacity decimal(10,0),
							 | 
						||
| 
								 | 
							
								  userISP varchar(50),
							 | 
						||
| 
								 | 
							
								  CCident varchar(50) DEFAULT '' NOT NULL,
							 | 
						||
| 
								 | 
							
								  PRIMARY KEY (name,author,category)
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES
							 | 
						||
| 
								 | 
							
								('patnom','patauteur',0,'p.favre@cryo-networks.fr',NULL,NULL,'#p2sndnq6ae5g1u6t','essai salut','scol://195.242.78.119:patauteur.patnom',NULL,NULL,NULL,950036174,-882087474,NULL,3,0,3,'1','Pub/patnom/futur_divers.scs',NULL,'pat','CC1');
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES
							 | 
						||
| 
								 | 
							
								('LeNomDeMonSite','Marc',0,'m.barilley@cryo-networks.fr',NULL,NULL,NULL,NULL,'scol://195.242.78.119:Marc.LeNomDeMonSite',NULL,NULL,NULL,950560434,-881563214,NULL,3,0,3,'1','Pub/LeNomDeMonSite/domus_hibere.scs',NULL,'Marq','CC1');
							 | 
						||
| 
								 | 
							
								select * from t1 where name='patnom' and author='patauteur' and category=0;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Problem with search on partial index
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								create table t1
							 | 
						||
| 
								 | 
							
								(
							 | 
						||
| 
								 | 
							
								  name_id int not null auto_increment,
							 | 
						||
| 
								 | 
							
								  name blob,
							 | 
						||
| 
								 | 
							
								  INDEX name_idx (name(5)),
							 | 
						||
| 
								 | 
							
								  primary key (name_id)
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								INSERT t1 VALUES(NULL,'/');
							 | 
						||
| 
								 | 
							
								INSERT t1 VALUES(NULL,'[T,U]_axpby');         
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1 WHERE name='[T,U]_axpy';
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1 WHERE name='[T,U]_axpby';
							 | 
						||
| 
								 | 
							
								create table t2
							 | 
						||
| 
								 | 
							
								(
							 | 
						||
| 
								 | 
							
								  name_id int not null auto_increment,
							 | 
						||
| 
								 | 
							
								  name char(255) binary,
							 | 
						||
| 
								 | 
							
								  INDEX name_idx (name(5)),
							 | 
						||
| 
								 | 
							
								  primary key (name_id)
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								INSERT t2 select * from t1;
							 | 
						||
| 
								 | 
							
								SELECT * FROM t2 WHERE name='[T,U]_axpy';
							 | 
						||
| 
								 | 
							
								SELECT * FROM t2 WHERE name='[T,U]_axpby';
							 | 
						||
| 
								 | 
							
								# Test possible problems with warnings in CREATE ... SELECT
							 | 
						||
| 
								 | 
							
								CREATE TABLE t3 SELECT * FROM t2 WHERE name='[T,U]_axpby';
							 | 
						||
| 
								 | 
							
								SELECT * FROM t2 WHERE name='[T,U]_axpby';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								drop table t1,t2,t3;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Test bug with long primary key
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								create table t1
							 | 
						||
| 
								 | 
							
								(
							 | 
						||
| 
								 | 
							
								   SEQNO                         numeric(12 ) not null,
							 | 
						||
| 
								 | 
							
								   MOTYPEID                 numeric(12 ) not null,
							 | 
						||
| 
								 | 
							
								   MOINSTANCEID     numeric(12 ) not null,
							 | 
						||
| 
								 | 
							
								   ATTRID                       numeric(12 ) not null,
							 | 
						||
| 
								 | 
							
								   VALUE                         varchar(120) not null,
							 | 
						||
| 
								 | 
							
								   primary key (SEQNO, MOTYPEID, MOINSTANCEID, ATTRID, VALUE )
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (1, 1, 1, 1, 'a'); 
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (1, 1, 1, 1, 'b'); 
							 | 
						||
| 
								 | 
							
								--error ER_DUP_ENTRY
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (1, 1, 1, 1, 'a');
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Test with blob + tinyint key
							 | 
						||
| 
								 | 
							
								# (Failed for Greg Valure)
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (
							 | 
						||
| 
								 | 
							
								  a tinytext NOT NULL,
							 | 
						||
| 
								 | 
							
								  b tinyint(3) unsigned NOT NULL default '0',
							 | 
						||
| 
								 | 
							
								  PRIMARY KEY (a(32),b)
							 | 
						||
| 
								 | 
							
								) ENGINE=MyISAM;
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES ('a',1),('a',2);
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1 WHERE a='a' AND b=2;
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1 WHERE a='a' AND b in (2);
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1 WHERE a='a' AND b in (1,2);
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Test of create key order
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								create table t1 (a int not null unique, b int unique, c int, d int not null primary key, key(c), e int not null unique);
							 | 
						||
| 
								 | 
							
								show keys from t1;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Problem with UNIQUE() with NULL parts and auto increment
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (c CHAR(10) NOT NULL,i INT NOT NULL AUTO_INCREMENT,
							 | 
						||
| 
								 | 
							
								UNIQUE (c,i));
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 (c) VALUES (NULL),(NULL);
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1;
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 (c) VALUES ('a'),('a');
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1;
							 | 
						||
| 
								 | 
							
								DROP TABLE IF EXISTS t1;
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (c CHAR(10) NULL, i INT NOT NULL AUTO_INCREMENT,
							 | 
						||
| 
								 | 
							
								UNIQUE (c,i));
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 (c) VALUES (NULL),(NULL);
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1;
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 (c) VALUES ('a'),('a');
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# longer keys
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								create table t1 (i int, a char(200), b text, unique (a), unique (b(300))) charset utf8;
							 | 
						||
| 
								 | 
							
								insert t1 values (1, repeat('a',210), repeat('b', 310));
							 | 
						||
| 
								 | 
							
								insert t1 values (2, repeat(0xD0B1,215), repeat(0xD0B1, 310));
							 | 
						||
| 
								 | 
							
								select i, length(a), length(b), char_length(a), char_length(b) from t1;
							 | 
						||
| 
								 | 
							
								select i from t1 where a=repeat(_utf8 'a',200);
							 | 
						||
| 
								 | 
							
								select i from t1 where a=repeat(_utf8 0xD0B1,200);
							 | 
						||
| 
								 | 
							
								select i from t1 where b=repeat(_utf8 'b',310);
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Test of key read with primary key (Bug #3497)
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (id int unsigned auto_increment, name char(50), primary key (id)) engine=myisam;
							 | 
						||
| 
								 | 
							
								insert into t1 (name) values ('a'), ('b'),('c'),('d'),('e'),('f'),('g');
							 | 
						||
| 
								 | 
							
								explain select 1 from t1 where id =2;
							 | 
						||
| 
								 | 
							
								explain select 1 from t1 where id =2 or id=3;
							 | 
						||
| 
								 | 
							
								explain select name from t1 where id =2;
							 | 
						||
| 
								 | 
							
								ALTER TABLE t1 DROP PRIMARY KEY, ADD INDEX (id);
							 | 
						||
| 
								 | 
							
								explain select 1 from t1 where id =2;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Test of problem with key read (Bug #3666)
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (numeropost mediumint(8) unsigned NOT NULL default '0', numreponse int(10) unsigned NOT NULL auto_increment, PRIMARY KEY (numeropost,numreponse), UNIQUE KEY numreponse (numreponse));
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 (numeropost,numreponse) VALUES ('1','1'),('1','2'),('2','3'),('2','4');
							 | 
						||
| 
								 | 
							
								SELECT numeropost FROM t1 WHERE numreponse='1';
							 | 
						||
| 
								 | 
							
								EXPLAIN SELECT numeropost FROM t1 WHERE numreponse='1';
							 | 
						||
| 
								 | 
							
								FLUSH TABLES;
							 | 
						||
| 
								 | 
							
								SELECT numeropost FROM t1 WHERE numreponse='1';
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# UNIQUE prefix keys and multi-byte charsets
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								create table t1 (c varchar(30) character set utf8, t text character set utf8, unique (c(2)), unique (t(3))) engine=myisam;
							 | 
						||
| 
								 | 
							
								show create table t1;
							 | 
						||
| 
								 | 
							
								insert t1 values ('cccc', 'tttt'),
							 | 
						||
| 
								 | 
							
								  (0xD0B1212223D0B1D0B1D0B1D0B1D0B1, 0xD0B1D0B1212223D0B1D0B1D0B1D0B1),
							 | 
						||
| 
								 | 
							
								  (0xD0B1222123D0B1D0B1D0B1D0B1D0B1, 0xD0B1D0B1222123D0B1D0B1D0B1D0B1);
							 | 
						||
| 
								 | 
							
								--error ER_DUP_ENTRY
							 | 
						||
| 
								 | 
							
								insert t1 (c) values ('cc22');
							 | 
						||
| 
								 | 
							
								--error ER_DUP_ENTRY
							 | 
						||
| 
								 | 
							
								insert t1 (t) values ('ttt22');
							 | 
						||
| 
								 | 
							
								--error ER_DUP_ENTRY
							 | 
						||
| 
								 | 
							
								insert t1 (c) values (0xD0B1212322D0B1D0B1D0B1D0B1D0B1);
							 | 
						||
| 
								 | 
							
								--error ER_DUP_ENTRY
							 | 
						||
| 
								 | 
							
								insert t1 (t) values (0xD0B1D0B1212322D0B1D0B1D0B1D0B1);
							 | 
						||
| 
								 | 
							
								select c from t1 where c='cccc';
							 | 
						||
| 
								 | 
							
								select t from t1 where t='tttt';
							 | 
						||
| 
								 | 
							
								select c from t1 where c=0xD0B1212223D0B1D0B1D0B1D0B1D0B1;
							 | 
						||
| 
								 | 
							
								select t from t1 where t=0xD0B1D0B1212223D0B1D0B1D0B1D0B1;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# BUG#6151 - myisam index corruption
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								DROP TABLE IF EXISTS t1;
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (
							 | 
						||
| 
								 | 
							
								  c1 int,
							 | 
						||
| 
								 | 
							
								  c2 varbinary(240),
							 | 
						||
| 
								 | 
							
								  UNIQUE KEY (c1),
							 | 
						||
| 
								 | 
							
								  KEY (c2)
							 | 
						||
| 
								 | 
							
								) ENGINE=MyISAM;
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (1,'\Z\Z\Z\Z');
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (2,'\Z\Z\Z\Z\Z\Z');
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (3,'\Z\Z\Z\Z');
							 | 
						||
| 
								 | 
							
								select c1 from t1 where c2='\Z\Z\Z\Z';
							 | 
						||
| 
								 | 
							
								DELETE FROM t1 WHERE (c1 = 1);
							 | 
						||
| 
								 | 
							
								check table t1;
							 | 
						||
| 
								 | 
							
								select c1 from t1 where c2='\Z\Z\Z\Z';
							 | 
						||
| 
								 | 
							
								DELETE FROM t1 WHERE (c1 = 3);
							 | 
						||
| 
								 | 
							
								check table t1;
							 | 
						||
| 
								 | 
							
								select c1 from t1 where c2='\Z\Z\Z\Z';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# test delete of keys in a different order
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								truncate table t1;
							 | 
						||
| 
								 | 
							
								insert into t1 values(1,"aaaa"),(2,"aaab"),(3,"aaac"),(4,"aaccc");
							 | 
						||
| 
								 | 
							
								delete from t1 where c1=3;
							 | 
						||
| 
								 | 
							
								delete from t1 where c1=1;
							 | 
						||
| 
								 | 
							
								delete from t1 where c1=4;
							 | 
						||
| 
								 | 
							
								check table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug 6166: index prefix length of 0 not rejected
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# this test should fail in 5.0
							 | 
						||
| 
								 | 
							
								# to fix it, remove #ifdef in 
							 | 
						||
| 
								 | 
							
								# file sql_yacc.yy(key_part)
							 | 
						||
| 
								 | 
							
								# create dedicated error code for this and
							 | 
						||
| 
								 | 
							
								# and change my_printf_error() to my_error
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--error 1391
							 | 
						||
| 
								 | 
							
								create table t1 (c char(10), index (c(0)));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug #6126: Duplicate columns in keys should fail
							 | 
						||
| 
								 | 
							
								# Bug #6252: (dup)
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								--error 1060
							 | 
						||
| 
								 | 
							
								create table t1 (c char(10), index (c,c));
							 | 
						||
| 
								 | 
							
								--error 1060
							 | 
						||
| 
								 | 
							
								create table t1 (c1 char(10), c2 char(10), index (c1,c2,c1));
							 | 
						||
| 
								 | 
							
								--error 1060
							 | 
						||
| 
								 | 
							
								create table t1 (c1 char(10), c2 char(10), index (c1,c1,c2));
							 | 
						||
| 
								 | 
							
								--error 1060
							 | 
						||
| 
								 | 
							
								create table t1 (c1 char(10), c2 char(10), index (c2,c1,c1));
							 | 
						||
| 
								 | 
							
								create table t1 (c1 char(10), c2 char(10));
							 | 
						||
| 
								 | 
							
								--error 1060
							 | 
						||
| 
								 | 
							
								alter table t1 add key (c1,c1);
							 | 
						||
| 
								 | 
							
								--error 1060
							 | 
						||
| 
								 | 
							
								alter table t1 add key (c2,c1,c1);
							 | 
						||
| 
								 | 
							
								--error 1060
							 | 
						||
| 
								 | 
							
								alter table t1 add key (c1,c2,c1);
							 | 
						||
| 
								 | 
							
								--error 1060
							 | 
						||
| 
								 | 
							
								alter table t1 add key (c1,c1,c2);
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug#11228: DESC shows arbitrary column as "PRI"
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								create table t1 (
							 | 
						||
| 
								 | 
							
								 i1 INT NOT NULL,
							 | 
						||
| 
								 | 
							
								 i2 INT NOT NULL,
							 | 
						||
| 
								 | 
							
								 UNIQUE i1idx (i1),
							 | 
						||
| 
								 | 
							
								 UNIQUE i2idx (i2));
							 | 
						||
| 
								 | 
							
								desc t1;
							 | 
						||
| 
								 | 
							
								show create table t1;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug#12565 - ERROR 1034 when running simple UPDATE or DELETE 
							 | 
						||
| 
								 | 
							
								#             on large MyISAM table
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								create table t1 (
							 | 
						||
| 
								 | 
							
								  c1 int,
							 | 
						||
| 
								 | 
							
								  c2 varchar(20) not null,
							 | 
						||
| 
								 | 
							
								  primary key (c1),
							 | 
						||
| 
								 | 
							
								  key (c2(10))
							 | 
						||
| 
								 | 
							
								) engine=myisam;
							 | 
						||
| 
								 | 
							
								insert into t1 values (1,'');
							 | 
						||
| 
								 | 
							
								insert into t1 values (2,' \t\tTest String');
							 | 
						||
| 
								 | 
							
								insert into t1 values (3,' \n\tTest String');
							 | 
						||
| 
								 | 
							
								update t1 set c2 = 'New Test String' where c1 = 1;
							 | 
						||
| 
								 | 
							
								select * from t1;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# If we use a partial field for a key that is actually the length of the
							 | 
						||
| 
								 | 
							
								# field, and we extend the field, we end up with a key that includes the
							 | 
						||
| 
								 | 
							
								# whole new length of the field.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								create table t1 (a varchar(10), b varchar(10), key(a(10),b(10)));
							 | 
						||
| 
								 | 
							
								show create table t1;
							 | 
						||
| 
								 | 
							
								alter table t1 modify b varchar(20);
							 | 
						||
| 
								 | 
							
								show create table t1;
							 | 
						||
| 
								 | 
							
								alter table t1 modify a varchar(20);
							 | 
						||
| 
								 | 
							
								show create table t1;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug #11227: Incorrectly reporting 'MUL' vs. 'UNI' on varchar
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								create table t1 (a int not null primary key, b varchar(20) not null unique);
							 | 
						||
| 
								 | 
							
								desc t1;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								create table t1 (a int not null primary key, b int not null unique);
							 | 
						||
| 
								 | 
							
								desc t1;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								create table t1 (a int not null primary key, b varchar(20) not null, unique (b(10)));
							 | 
						||
| 
								 | 
							
								desc t1;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								create table t1 (a int not null primary key, b varchar(20) not null, c varchar(20) not null, unique(b(10),c(10)));
							 | 
						||
| 
								 | 
							
								desc t1;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# End of 4.1 tests
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# WL#1563 - Modify MySQL to support on-line CREATE/DROP INDEX
							 | 
						||
| 
								 | 
							
								# To test if this really works, you need to run with --debug
							 | 
						||
| 
								 | 
							
								# and check the trace file.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Create a table with named and unnamed indexes.
							 | 
						||
| 
								 | 
							
								create table t1 (
							 | 
						||
| 
								 | 
							
								    c1 int,
							 | 
						||
| 
								 | 
							
								    c2 char(12),
							 | 
						||
| 
								 | 
							
								    c3 varchar(123),
							 | 
						||
| 
								 | 
							
								    c4 timestamp,
							 | 
						||
| 
								 | 
							
								    index (c1),
							 | 
						||
| 
								 | 
							
								    index i1 (c1),
							 | 
						||
| 
								 | 
							
								    index i2 (c2),
							 | 
						||
| 
								 | 
							
								    index i3 (c3),
							 | 
						||
| 
								 | 
							
								    unique i4 (c4),
							 | 
						||
| 
								 | 
							
								    index i5 (c1, c2, c3, c4),
							 | 
						||
| 
								 | 
							
								    primary key (c2, c3),
							 | 
						||
| 
								 | 
							
								    index (c2, c4));
							 | 
						||
| 
								 | 
							
								show create table t1;
							 | 
						||
| 
								 | 
							
								# Some simple tests.
							 | 
						||
| 
								 | 
							
								alter table t1 drop index c1;
							 | 
						||
| 
								 | 
							
								alter table t1 add index (c1);
							 | 
						||
| 
								 | 
							
								# This creates index 'c1_2'.
							 | 
						||
| 
								 | 
							
								alter table t1 add index (c1);
							 | 
						||
| 
								 | 
							
								alter table t1 drop index i3;
							 | 
						||
| 
								 | 
							
								alter table t1 add index i3 (c3);
							 | 
						||
| 
								 | 
							
								# Two indexes at the same time.
							 | 
						||
| 
								 | 
							
								alter table t1 drop index i2, drop index i4;
							 | 
						||
| 
								 | 
							
								alter table t1 add index i2 (c2), add index i4 (c4);
							 | 
						||
| 
								 | 
							
								# Three indexes, one of them reversely.
							 | 
						||
| 
								 | 
							
								alter table t1 drop index i2, drop index i4, add index i6 (c2, c4);
							 | 
						||
| 
								 | 
							
								alter table t1 add index i2 (c2), add index i4 (c4), drop index i6;
							 | 
						||
| 
								 | 
							
								# include an unique index.
							 | 
						||
| 
								 | 
							
								alter table t1 drop index i2, drop index i4, add unique i4 (c4);
							 | 
						||
| 
								 | 
							
								alter table t1 add index i2 (c2), drop index i4, add index i4 (c4);
							 | 
						||
| 
								 | 
							
								# Modify an index by changing its definition.
							 | 
						||
| 
								 | 
							
								alter table t1 drop index c2, add index (c2(4),c3(7));
							 | 
						||
| 
								 | 
							
								# Change nothing. The new key definition is the same as the old one.
							 | 
						||
| 
								 | 
							
								alter table t1 drop index c2, add index (c2(4),c3(7));
							 | 
						||
| 
								 | 
							
								# Test primary key handling.
							 | 
						||
| 
								 | 
							
								alter table t1 add primary key (c1, c2), drop primary key;
							 | 
						||
| 
								 | 
							
								alter table t1 drop primary key;
							 | 
						||
| 
								 | 
							
								# Drop is checked first. Primary key must exist.
							 | 
						||
| 
								 | 
							
								--error 1091
							 | 
						||
| 
								 | 
							
								alter table t1 add primary key (c1, c2), drop primary key;
							 | 
						||
| 
								 | 
							
								show create table t1;
							 | 
						||
| 
								 | 
							
								# Insert non-unique values.
							 | 
						||
| 
								 | 
							
								insert into t1 values(1, 'a', 'a', NULL);
							 | 
						||
| 
								 | 
							
								insert into t1 values(1, 'b', 'b', NULL);
							 | 
						||
| 
								 | 
							
								# Drop some indexes for new adds.
							 | 
						||
| 
								 | 
							
								alter table t1 drop index i3, drop index i2, drop index i1;
							 | 
						||
| 
								 | 
							
								# Add indexes, one is unique on non-unique values.
							 | 
						||
| 
								 | 
							
								--error ER_DUP_ENTRY
							 | 
						||
| 
								 | 
							
								alter table t1 add index i3 (c3), add index i2 (c2), add unique index i1 (c1);
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug #20604: Test for disabled keys with aggregate functions and FORCE INDEX.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1( a TINYINT, KEY(a) ) ENGINE=MyISAM;
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES( 1 );
							 | 
						||
| 
								 | 
							
								ALTER TABLE t1 DISABLE KEYS;
							 | 
						||
| 
								 | 
							
								EXPLAIN SELECT MAX(a) FROM t1 FORCE INDEX(a);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug #24778: Innodb: No result when using ORDER BY
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (
							 | 
						||
| 
								 | 
							
								  a INTEGER auto_increment PRIMARY KEY,
							 | 
						||
| 
								 | 
							
								  b INTEGER NOT NULL,
							 | 
						||
| 
								 | 
							
								  c INTEGER NOT NULL,
							 | 
						||
| 
								 | 
							
								  d CHAR(64)
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE t2 (
							 | 
						||
| 
								 | 
							
								  a INTEGER auto_increment PRIMARY KEY,
							 | 
						||
| 
								 | 
							
								  b INTEGER NOT NULL,
							 | 
						||
| 
								 | 
							
								  c SMALLINT NOT NULL,
							 | 
						||
| 
								 | 
							
								  d DATETIME NOT NULL,
							 | 
						||
| 
								 | 
							
								  e SMALLINT NOT NULL,
							 | 
						||
| 
								 | 
							
								  f INTEGER NOT NULL,
							 | 
						||
| 
								 | 
							
								  g INTEGER NOT NULL,  
							 | 
						||
| 
								 | 
							
								  h SMALLINT NOT NULL,
							 | 
						||
| 
								 | 
							
								  i INTEGER NOT NULL,
							 | 
						||
| 
								 | 
							
								  j INTEGER NOT NULL,
							 | 
						||
| 
								 | 
							
								  UNIQUE INDEX (b),
							 | 
						||
| 
								 | 
							
								  INDEX (b, d, e, f, g, h, i, j, c),
							 | 
						||
| 
								 | 
							
								  INDEX (c)
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								INSERT INTO t2 VALUES 
							 | 
						||
| 
								 | 
							
								  (NULL, 1, 254, '1000-01-01 00:00:00', 257, 0, 0, 0, 0, 0),
							 | 
						||
| 
								 | 
							
								  (NULL, 2, 1, '2004-11-30 12:00:00', 1, 0, 0, 0, 0, 0),
							 | 
						||
| 
								 | 
							
								  (NULL, 3, 1, '2004-11-30 12:00:00', 1, 0, 0, 2, -21600, 0),
							 | 
						||
| 
								 | 
							
								  (NULL, 4, 1, '2004-11-30 12:00:00', 1, 0, 0, 2, -10800, 0),
							 | 
						||
| 
								 | 
							
								  (NULL, 5, 1, '2004-11-30 12:00:00', 1, 0, 0, 5, -10800, 0),
							 | 
						||
| 
								 | 
							
								  (NULL, 6, 1, '2004-11-30 12:00:00', 102, 0, 0, 0, 0, 0),
							 | 
						||
| 
								 | 
							
								  (NULL, 7, 1, '2004-11-30 12:00:00', 105, 2, 0, 0, 0, 0),
							 | 
						||
| 
								 | 
							
								  (NULL, 8, 1, '2004-11-30 12:00:00', 105, 10, 0, 0, 0, 0);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 (b, c, d) VALUES
							 | 
						||
| 
								 | 
							
								  (3388000, -553000, NULL),
							 | 
						||
| 
								 | 
							
								  (3388000, -553000, NULL);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SELECT *
							 | 
						||
| 
								 | 
							
								FROM t2 c JOIN t1 pa ON c.b = pa.a 
							 | 
						||
| 
								 | 
							
								WHERE c.c = 1
							 | 
						||
| 
								 | 
							
								ORDER BY c.b, c.d
							 | 
						||
| 
								 | 
							
								;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP TABLE t1, t2;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug #31137: Assertion failed: primary_key_no == -1 || primary_key_no == 0
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								create table t1(a int not null, key aa(a), 
							 | 
						||
| 
								 | 
							
								                b char(10) not null, unique key bb(b(1)), 
							 | 
						||
| 
								 | 
							
								                c char(4) not null, unique key cc(c)); 
							 | 
						||
| 
								 | 
							
								desc t1;
							 | 
						||
| 
								 | 
							
								show create table t1;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								create table t1(a int not null, key aa(a), 
							 | 
						||
| 
								 | 
							
								                b char(10) not null, unique key bb(b(1)),
							 | 
						||
| 
								 | 
							
								                c char(4) not null);
							 | 
						||
| 
								 | 
							
								desc t1;
							 | 
						||
| 
								 | 
							
								alter table t1 add unique key cc(c);
							 | 
						||
| 
								 | 
							
								desc t1;
							 | 
						||
| 
								 | 
							
								show create table t1;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--echo End of 5.0 tests
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug #31148: bool close_thread_table(THD*, TABLE**): Assertion
							 | 
						||
| 
								 | 
							
								# `table->key_read == 0' failed.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--disable_warnings
							 | 
						||
| 
								 | 
							
								DROP TABLE IF EXISTS t1;
							 | 
						||
| 
								 | 
							
								--enable_warnings
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (a INT PRIMARY KEY AUTO_INCREMENT);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (), (), ();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SELECT 1 AS c1
							 | 
						||
| 
								 | 
							
								FROM t1
							 | 
						||
| 
								 | 
							
								ORDER BY (
							 | 
						||
| 
								 | 
							
								  SELECT 1 AS c2
							 | 
						||
| 
								 | 
							
								  FROM t1
							 | 
						||
| 
								 | 
							
								  GROUP BY GREATEST(LAST_INSERT_ID(), t1.a) ASC
							 | 
						||
| 
								 | 
							
								  LIMIT 1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug #31974: Wrong EXPLAIN output
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (a INT, b INT, INDEX (a,b));
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 (a, b)
							 | 
						||
| 
								 | 
							
								   VALUES
							 | 
						||
| 
								 | 
							
								     (1,1), (1,2), (1,3), (1,4), (1,5),
							 | 
						||
| 
								 | 
							
								     (2,2), (2,3), (2,1), (3,1), (4,1), (4,2), (4,3), (4,4), (4,5), (4,6);
							 | 
						||
| 
								 | 
							
								EXPLAIN SELECT 1 FROM t1 AS t1_outer WHERE 
							 | 
						||
| 
								 | 
							
								  (SELECT max(b) FROM t1 GROUP BY a HAVING a < 2) > 12;
							 | 
						||
| 
								 | 
							
								SELECT 1 as RES FROM t1 AS t1_outer WHERE 
							 | 
						||
| 
								 | 
							
								  (SELECT max(b) FROM t1 GROUP BY a HAVING a < 2) > 12;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 |