mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	- Detect if a table has field of type MYSQL_TYPE_VAR_STRING while running "CHECK TABLE t FOR UPGRADE" and indicate it need to be fixed with "REPAIR TABLE t". - When running a "REPAIR TABLE t" or "ALTER TABLE t FORCE" on the above table, install a special copy function to trim off the trailing spaces which we safely can say that the pre 5.0 mysqld didn't put there. mysql-test/r/varbinary.result: Add test to see that a table with varbinary from 4.1 can be REPAIRED mysql-test/t/varbinary.test: Add test to see that a table with varbinary from 4.1 can be REPAIRED sql/field_conv.cc: Add new field copy function 'do_field_varbinary_pre50' used for copying between MYSQL_TYPE_VAR_STRING and MYSQL_TYPE_VARCHAR. It will remove trailing spaces from the field as MySQL <= 4.1 never stores the trailing spaces for a MYSQL_TYPE_VAR_STRING. Install this new copy function in ALTER TABLEs list of functions to use for copying data during and alter if from field is a <= 4.1 varbinary and to field is 5.0 varbinary. sql/handler.cc: If the table has a pre 5.0 varbinary, table not to be altered so the field type is upgraded to 5.0 version and trailing space can be trimmed. mysql-test/std_data/bug19371.MYD: New BitKeeper file ``mysql-test/std_data/bug19371.MYD'' mysql-test/std_data/bug19371.MYI: New BitKeeper file ``mysql-test/std_data/bug19371.MYI'' mysql-test/std_data/bug19371.frm: New BitKeeper file ``mysql-test/std_data/bug19371.frm''
		
			
				
	
	
		
			81 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| drop table if exists t1;
 | |
| select 0x41,0x41+0,0x41 | 0x7fffffffffffffff | 0,0xffffffffffffffff | 0 ;
 | |
| 0x41	0x41+0	0x41 | 0x7fffffffffffffff | 0	0xffffffffffffffff | 0
 | |
| A	65	9223372036854775807	18446744073709551615
 | |
| select 0x31+1,concat(0x31)+1,-0xf;
 | |
| 0x31+1	concat(0x31)+1	-0xf
 | |
| 50	2	-15
 | |
| select x'31',X'ffff'+0;
 | |
| x'31'	X'ffff'+0
 | |
| 1	65535
 | |
| 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;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	const	UNIQ	UNIQ	8	const	1	
 | |
| Warnings:
 | |
| Note	1003	select `test`.`t1`.`ID` AS `ID`,`test`.`t1`.`UNIQ` AS `UNIQ` from `test`.`t1` where 1
 | |
| drop table t1;
 | |
| select x'hello';
 | |
| ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'x'hello'' at line 1
 | |
| select 0xfg;
 | |
| ERROR 42S22: Unknown column '0xfg' in 'field list'
 | |
| create table t1 select 1 as x, 2 as xx;
 | |
| select x,xx from t1;
 | |
| x	xx
 | |
| 1	2
 | |
| drop table t1;
 | |
| show create table t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `a` varbinary(255) default NULL,
 | |
|   `b` varchar(255) default NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1
 | |
| select length(a), length(b) from t1;
 | |
| length(a)	length(b)
 | |
| 255	3
 | |
| 255	3
 | |
| CHECK TABLE t1 FOR UPGRADE;
 | |
| Table	Op	Msg_type	Msg_text
 | |
| test.t1	check	error	Table upgrade required. Please do "REPAIR TABLE `t1`" to fix it!
 | |
| REPAIR TABLE t1;
 | |
| Table	Op	Msg_type	Msg_text
 | |
| test.t1	repair	status	OK
 | |
| show create table t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `a` varbinary(255) default NULL,
 | |
|   `b` varchar(255) default NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1
 | |
| select length(a), length(b) from t1;
 | |
| length(a)	length(b)
 | |
| 3	3
 | |
| 3	3
 | |
| insert into t1 values("ccc", "ddd");
 | |
| select length(a), length(b) from t1;
 | |
| length(a)	length(b)
 | |
| 3	3
 | |
| 3	3
 | |
| 3	3
 | |
| select hex(a), hex(b) from t1;
 | |
| hex(a)	hex(b)
 | |
| 616161	636363
 | |
| 626262	646464
 | |
| 636363	646464
 | |
| select concat("'", a, "'"), concat("'", b, "'") from t1;
 | |
| concat("'", a, "'")	concat("'", b, "'")
 | |
| 'aaa'	'ccc'
 | |
| 'bbb'	'ddd'
 | |
| 'ccc'	'ddd'
 | |
| drop table t1;
 | |
| create table t1(a varbinary(255));
 | |
| insert into t1 values("aaa   ");
 | |
| select length(a) from t1;
 | |
| length(a)
 | |
| 6
 | |
| alter table t1 modify a varchar(255);
 | |
| select length(a) from t1;
 | |
| length(a)
 | |
| 6
 |