136 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			136 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								# This test uses chmod, can't be run with root permissions
							 | 
						||
| 
								 | 
							
								-- source include/not_as_root.inc
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Initialise
							 | 
						||
| 
								 | 
							
								--disable_warnings
							 | 
						||
| 
								 | 
							
								drop table if exists t1;
							 | 
						||
| 
								 | 
							
								--enable_warnings
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# varbinary as string and number
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								select 0x41,0x41+0,0x41 | 0x7fffffffffffffff | 0,0xffffffffffffffff | 0 ;
							 | 
						||
| 
								 | 
							
								select 0x31+1,concat(0x31)+1,-0xf;
							 | 
						||
| 
								 | 
							
								select x'31',X'ffff'+0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Test of hex constants in WHERE:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								create table t1 (ID int(8) unsigned zerofill not null auto_increment,UNIQ bigint(21) unsigned zerofill not null,primary key (ID),unique (UNIQ) );
							 | 
						||
| 
								 | 
							
								insert into t1 set UNIQ=0x38afba1d73e6a18a;
							 | 
						||
| 
								 | 
							
								insert into t1 set UNIQ=123; 
							 | 
						||
| 
								 | 
							
								explain extended select * from t1 where UNIQ=0x38afba1d73e6a18a;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Test error conditions
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								--error 1064
							 | 
						||
| 
								 | 
							
								select x'hello';
							 | 
						||
| 
								 | 
							
								--error 1054
							 | 
						||
| 
								 | 
							
								select 0xfg;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Test likely error conditions
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								create table t1 select 1 as x, 2 as xx;
							 | 
						||
| 
								 | 
							
								select x,xx from t1;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# End of 4.1 tests
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug #19371 VARBINARY() have trailing zeros after upgrade from 4.1
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Test with a saved table from 4.1
							 | 
						||
| 
								 | 
							
								let $MYSQLD_DATADIR= `select @@datadir`;
							 | 
						||
| 
								 | 
							
								copy_file std_data/bug19371.frm $MYSQLD_DATADIR/test/t1.frm;
							 | 
						||
| 
								 | 
							
								chmod 0777 $MYSQLD_DATADIR/test/t1.frm;
							 | 
						||
| 
								 | 
							
								copy_file std_data/bug19371.MYD $MYSQLD_DATADIR/test/t1.MYD;
							 | 
						||
| 
								 | 
							
								chmod 0777 $MYSQLD_DATADIR/test/t1.MYD;
							 | 
						||
| 
								 | 
							
								copy_file std_data/bug19371.MYI $MYSQLD_DATADIR/test/t1.MYI;
							 | 
						||
| 
								 | 
							
								chmod 0777 $MYSQLD_DATADIR/test/t1.MYI;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Everything _looks_ fine
							 | 
						||
| 
								 | 
							
								show create table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# But the length of the varbinary columns are too long
							 | 
						||
| 
								 | 
							
								select length(a), length(b) from t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Run CHECK TABLE, it should indicate table need a REPAIR TABLE
							 | 
						||
| 
								 | 
							
								CHECK TABLE t1 FOR UPGRADE;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Run REPAIR TABLE to alter the table and repair
							 | 
						||
| 
								 | 
							
								# the varbinary fields
							 | 
						||
| 
								 | 
							
								REPAIR TABLE t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Now check it's back to normal
							 | 
						||
| 
								 | 
							
								show create table t1;
							 | 
						||
| 
								 | 
							
								select length(a), length(b) from t1;
							 | 
						||
| 
								 | 
							
								insert into t1 values("ccc", "ddd");
							 | 
						||
| 
								 | 
							
								select length(a), length(b) from t1;
							 | 
						||
| 
								 | 
							
								select hex(a), hex(b) from t1;
							 | 
						||
| 
								 | 
							
								select concat("'", a, "'"), concat("'", b, "'") from t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Check that the fix does not affect table created with current version
							 | 
						||
| 
								 | 
							
								create table t1(a varbinary(255));
							 | 
						||
| 
								 | 
							
								insert into t1 values("aaa   ");
							 | 
						||
| 
								 | 
							
								select length(a) from t1;
							 | 
						||
| 
								 | 
							
								alter table t1 modify a varchar(255);
							 | 
						||
| 
								 | 
							
								select length(a) from t1;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug#28127 (Some valid identifiers names are not parsed correctly)
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--disable_warnings
							 | 
						||
| 
								 | 
							
								drop table if exists table_28127_a;
							 | 
						||
| 
								 | 
							
								drop table if exists table_28127_b;
							 | 
						||
| 
								 | 
							
								--enable_warnings
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								create table table_28127_a(0b02 int);
							 | 
						||
| 
								 | 
							
								show create table table_28127_a;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								create table table_28127_b(0b2 int);
							 | 
						||
| 
								 | 
							
								show create table table_28127_b;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								drop table table_28127_a;
							 | 
						||
| 
								 | 
							
								drop table table_28127_b;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug#35658 (An empty binary value leads to mysqld crash)
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								select 0b01000001;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								select 0x41;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								select b'01000001';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								select x'41', 0+x'41';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								select N'abc', length(N'abc');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								select N'', length(N'');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								select '', length('');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								select b'', 0+b'';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								select x'', 0+x'';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--error ER_BAD_FIELD_ERROR
							 | 
						||
| 
								 | 
							
								select 0x;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--error ER_BAD_FIELD_ERROR
							 | 
						||
| 
								 | 
							
								select 0b;
							 | 
						||
| 
								 | 
							
								
							 |