207 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			207 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Simple test for blackhole example
							 | 
						||
| 
								 | 
							
								# Taken from the select test
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								-- source include/not_embedded.inc
							 | 
						||
| 
								 | 
							
								-- source include/have_blackhole.inc
							 | 
						||
| 
								 | 
							
								-- source include/have_log_bin.inc
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The server need to be started in $MYSQLTEST_VARDIR since it
							 | 
						||
| 
								 | 
							
								# uses ../../std_data/
							 | 
						||
| 
								 | 
							
								-- source include/uses_vardir.inc
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--disable_warnings
							 | 
						||
| 
								 | 
							
								drop table if exists t1,t2;
							 | 
						||
| 
								 | 
							
								--enable_warnings
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (
							 | 
						||
| 
								 | 
							
								  Period smallint(4) unsigned zerofill DEFAULT '0000' NOT NULL,
							 | 
						||
| 
								 | 
							
								  Varor_period smallint(4) unsigned DEFAULT '0' NOT NULL
							 | 
						||
| 
								 | 
							
								) ENGINE=blackhole;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (9410,9412);
							 | 
						||
| 
								 | 
							
								  
							 | 
						||
| 
								 | 
							
								select period from t1;
							 | 
						||
| 
								 | 
							
								select * from t1;
							 | 
						||
| 
								 | 
							
								select t1.* from t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Create test table
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE TABLE t2 (
							 | 
						||
| 
								 | 
							
								  auto int NOT NULL auto_increment,
							 | 
						||
| 
								 | 
							
								  fld1 int(6) unsigned zerofill DEFAULT '000000' NOT NULL,
							 | 
						||
| 
								 | 
							
								  companynr tinyint(2) unsigned zerofill DEFAULT '00' NOT NULL,
							 | 
						||
| 
								 | 
							
								  fld3 char(30) DEFAULT '' NOT NULL,
							 | 
						||
| 
								 | 
							
								  fld4 char(35) DEFAULT '' NOT NULL,
							 | 
						||
| 
								 | 
							
								  fld5 char(35) DEFAULT '' NOT NULL,
							 | 
						||
| 
								 | 
							
								  fld6 char(4) DEFAULT '' NOT NULL,
							 | 
						||
| 
								 | 
							
								  primary key (auto)
							 | 
						||
| 
								 | 
							
								) ENGINE=blackhole;  
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								INSERT INTO t2 VALUES (1192,068305,00,'Colombo','hardware','colicky','');
							 | 
						||
| 
								 | 
							
								INSERT INTO t2 VALUES (1193,000000,00,'nondecreasing','implant','thrillingly','');
							 | 
						||
| 
								 | 
							
								--enable_query_log
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Search with a key
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								select t2.fld3 from t2 where companynr = 58 and fld3 like "%imaginable%";
							 | 
						||
| 
								 | 
							
								select fld3 from t2 where fld3 like "%cultivation" ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Search with a key using sorting and limit the same time
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								select t2.fld3,companynr from t2 where companynr = 57+1 order by fld3;
							 | 
						||
| 
								 | 
							
								select fld3,companynr from t2 where companynr = 58 order by fld3;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								select fld3 from t2 order by fld3 desc limit 10;
							 | 
						||
| 
								 | 
							
								select fld3 from t2 order by fld3 desc limit 5;
							 | 
						||
| 
								 | 
							
								select fld3 from t2 order by fld3 desc limit 5,5;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Search with a key having a constant with each unique key.
							 | 
						||
| 
								 | 
							
								# The table is read directly with read-next on fld3
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								select t2.fld3 from t2 where fld3 = 'honeysuckle';
							 | 
						||
| 
								 | 
							
								select t2.fld3 from t2 where fld3 LIKE 'honeysuckl_';
							 | 
						||
| 
								 | 
							
								select t2.fld3 from t2 where fld3 LIKE 'hon_ysuckl_';
							 | 
						||
| 
								 | 
							
								select t2.fld3 from t2 where fld3 LIKE 'honeysuckle%';
							 | 
						||
| 
								 | 
							
								select t2.fld3 from t2 where fld3 LIKE 'h%le';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								select t2.fld3 from t2 where fld3 LIKE 'honeysuckle_';
							 | 
						||
| 
								 | 
							
								select t2.fld3 from t2 where fld3 LIKE 'don_t_find_me_please%';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Test sorting with a used key (there is no need for sorting)
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								select t2.fld3 from t2 where fld3 >= 'honeysuckle' and fld3 <= 'honoring' order by fld3;
							 | 
						||
| 
								 | 
							
								select fld1,fld3 from t2 where fld3="Colombo" or fld3 = "nondecreasing" order by fld3;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Test for fulltext
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (a VARCHAR(200), b TEXT, FULLTEXT (a,b));
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES('MySQL has now support', 'for full-text search'),
							 | 
						||
| 
								 | 
							
								                       ('Full-text indexes', 'are called collections'),
							 | 
						||
| 
								 | 
							
								                          ('Only MyISAM tables','support collections'),
							 | 
						||
| 
								 | 
							
								             ('Function MATCH ... AGAINST()','is used to do a search'),
							 | 
						||
| 
								 | 
							
								        ('Full-text search in MySQL', 'implements vector space model');
							 | 
						||
| 
								 | 
							
								SHOW INDEX FROM t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# nl search
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								select * from t1 where MATCH(a,b) AGAINST ("collections");
							 | 
						||
| 
								 | 
							
								explain extended select * from t1 where MATCH(a,b) AGAINST ("collections");
							 | 
						||
| 
								 | 
							
								select * from t1 where MATCH(a,b) AGAINST ("indexes");
							 | 
						||
| 
								 | 
							
								select * from t1 where MATCH(a,b) AGAINST ("indexes collections");
							 | 
						||
| 
								 | 
							
								select * from t1 where MATCH(a,b) AGAINST ("only");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Test that every DML (except SELECT) and DDL gets into binlog
							 | 
						||
| 
								 | 
							
								# so that blackhole can be used as "binlog propagator"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								reset master;
							 | 
						||
| 
								 | 
							
								drop table t1,t2;
							 | 
						||
| 
								 | 
							
								create table t1 (a int) engine=blackhole;
							 | 
						||
| 
								 | 
							
								delete from t1 where a=10;
							 | 
						||
| 
								 | 
							
								update t1 set a=11 where a=15;
							 | 
						||
| 
								 | 
							
								insert into t1 values(1);
							 | 
						||
| 
								 | 
							
								insert ignore into t1 values(1);
							 | 
						||
| 
								 | 
							
								replace into t1 values(100);
							 | 
						||
| 
								 | 
							
								create table t2 (a varchar(200)) engine=blackhole;
							 | 
						||
| 
								 | 
							
								eval load data infile '../../std_data/words.dat' into table t2;
							 | 
						||
| 
								 | 
							
								alter table t1 add b int;
							 | 
						||
| 
								 | 
							
								alter table t1 drop b;
							 | 
						||
| 
								 | 
							
								create table t3 like t1;
							 | 
						||
| 
								 | 
							
								insert into t1 select * from t3;
							 | 
						||
| 
								 | 
							
								replace into t1 select * from t3;
							 | 
						||
| 
								 | 
							
								# Just to verify
							 | 
						||
| 
								 | 
							
								select * from t1;
							 | 
						||
| 
								 | 
							
								select * from t2;
							 | 
						||
| 
								 | 
							
								select * from t3;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--source include/show_binlog_events.inc
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								drop table t1,t2,t3;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# BUG#27998 - mysqld crashed when executing INSERT DELAYED on a BLACKHOLE
							 | 
						||
| 
								 | 
							
								#             table
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1(a INT) ENGINE=BLACKHOLE;
							 | 
						||
| 
								 | 
							
								INSERT DELAYED INTO t1 VALUES(1);
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#Bug#19717: DELETE Query Error on BLACKHOLE when using WHERE on column with UNIQUE INDEX
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1(a INT, b INT) ENGINE=BLACKHOLE;
							 | 
						||
| 
								 | 
							
								DELETE FROM t1 WHERE a=10;
							 | 
						||
| 
								 | 
							
								ALTER TABLE t1 ADD INDEX(a);
							 | 
						||
| 
								 | 
							
								DELETE FROM t1 WHERE a=10;
							 | 
						||
| 
								 | 
							
								ALTER TABLE t1 DROP INDEX a;
							 | 
						||
| 
								 | 
							
								ALTER TABLE t1 ADD UNIQUE INDEX(a);
							 | 
						||
| 
								 | 
							
								DELETE FROM t1 WHERE a=10;
							 | 
						||
| 
								 | 
							
								ALTER TABLE t1 DROP INDEX a;
							 | 
						||
| 
								 | 
							
								ALTER TABLE t1 ADD PRIMARY KEY(a);
							 | 
						||
| 
								 | 
							
								DELETE FROM t1 WHERE a=10;
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Test that a transaction which is rolled back does not go into binlog
							 | 
						||
| 
								 | 
							
								# and that a transaction which is committed does
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								reset master;
							 | 
						||
| 
								 | 
							
								create table t1 (a int) engine=blackhole;
							 | 
						||
| 
								 | 
							
								set autocommit=0;
							 | 
						||
| 
								 | 
							
								start transaction;
							 | 
						||
| 
								 | 
							
								insert into t1 values(1);
							 | 
						||
| 
								 | 
							
								commit;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								let $master_log_pos_1= query_get_value(SHOW MASTER STATUS, Position, 1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								start transaction;
							 | 
						||
| 
								 | 
							
								insert into t1 values(2);
							 | 
						||
| 
								 | 
							
								rollback;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								let $master_log_pos_2= query_get_value(SHOW MASTER STATUS, Position, 1);
							 | 
						||
| 
								 | 
							
								if (`SELECT $master_log_pos_2 <> $master_log_pos_1`)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  echo $master_log_pos_1 $master_log_pos_2;
							 | 
						||
| 
								 | 
							
								  die Rollbacked transaction has been binlogged;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set autocommit=1;
							 | 
						||
| 
								 | 
							
								drop table if exists t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug#35178 INSERT_ID not written to binary log for inserts against BLACKHOLE backed tables
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# the test checks that explicitly prescribed with set insert_id= value
							 | 
						||
| 
								 | 
							
								# preceeds the following autoincrement insert in a blachhole
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								reset master;
							 | 
						||
| 
								 | 
							
								create table t1 (a int auto_increment, primary key (a)) engine=blackhole;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# not insert_id prescribed insert binlogs with the default set insert_id 1
							 | 
						||
| 
								 | 
							
								insert into t1 values (11), (NULL), (NULL), (NULL);
							 | 
						||
| 
								 | 
							
								set insert_id= 3;
							 | 
						||
| 
								 | 
							
								insert into t1 values (NULL), (33), (NULL);
							 | 
						||
| 
								 | 
							
								set insert_id= 5;
							 | 
						||
| 
								 | 
							
								insert into t1 values (55), (NULL);
							 | 
						||
| 
								 | 
							
								source include/show_binlog_events2.inc;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# cleanup
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# End of tests
							 |