mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
44b2807e4b
Fixed bug in end space handle for WHERE text_column="constant" heap/hp_hash.c: Optimzations (no change of logic) libmysql/libmysql.c: Added missing casts (portability fix) myisam/mi_key.c: Changed macro to take arguments and not depend on local variables Simple indentation fixes ? mysql-test/r/connect.result: Added test for setting empty password mysql-test/r/create_select_tmp.result: TYPE -> ENGINE mysql-test/r/ctype_utf8.result: Combine drop's mysql-test/r/endspace.result: Added more tests to test end space behaviour mysql-test/r/having.result: Added missing DROP TABLE mysql-test/r/type_blob.result: Added more tests to ensure that fix for BLOB usage is correct mysql-test/r/type_timestamp.result: Add test from 4.0 mysql-test/t/connect.test: Added test for setting empty password mysql-test/t/create_select_tmp.test: TYPE -> ENGINE mysql-test/t/ctype_utf8.test: Combine drop's mysql-test/t/endspace.test: Added more tests to test end space behaviour mysql-test/t/having.test: Added missing DROP TABLE mysql-test/t/type_blob.test: Added more tests to ensure that fix for BLOB usage is correct mysql-test/t/type_timestamp.test: Add test from 4.0 sql/field.cc: Removed not used variable Portability fix (cast) Simplified Field_str::double() Simple indentation cleanups sql/field.h: Removed not needed class variable sql/item_cmpfunc.cc: Indentation fix sql/item_strfunc.cc: Use on stack variable for Item_str_func::val() instead of str_value. This makes it safe to use str_value inside the Item's val function. Cleaned up LEFT() usage, thanks to the above change sql/item_sum.cc: Indentation cleanups sql/protocol.cc: Added missing cast sql/sql_acl.cc: Indentatin cleanups. Added missing cast Simple optimization of get_sort() sql/sql_select.cc: Don't use 'ref' to search on text field that is not of type BINARY (use 'range' instead). The reson is that for 'ref' we use 'index_next_same' to read the next possible row. For text fields, rows in a ref may not come in order, like for 'x', 'x\t' 'x ' (stored in this order) which causes a search for 'column='x ' to fail sql/tztime.cc: Simple cleanup strings/ctype-bin.c: Comment fixes strings/ctype-mb.c: Changed variable names for arguments
102 lines
4.3 KiB
Text
102 lines
4.3 KiB
Text
#
|
|
# Test problem with characters < ' ' at end of strings (Bug #3152)
|
|
#
|
|
|
|
-- source include/have_innodb.inc
|
|
--disable_warnings
|
|
drop table if exists t1;
|
|
--enable_warnings
|
|
|
|
select 'a' = 'a', 'a' = 'a ', 'a ' = 'a';
|
|
select 'a\0' = 'a', 'a\0' < 'a', 'a\0' > 'a';
|
|
select 'a' = 'a\0', 'a' < 'a\0', 'a' > 'a\0';
|
|
select 'a\0' = 'a ', 'a\0' < 'a ', 'a\0' > 'a ';
|
|
select 'a ' = 'a\0', 'a ' < 'a\0', 'a ' > 'a\0';
|
|
select 'a a' > 'a', 'a \0' < 'a';
|
|
select binary 'a a' > 'a', binary 'a \0' > 'a', binary 'a\0' > 'a';
|
|
|
|
#
|
|
# Test MyISAM tables.
|
|
#
|
|
|
|
create table t1 (text1 varchar(32) not NULL, KEY key1 (text1));
|
|
insert into t1 values ('teststring'), ('nothing'), ('teststring\t');
|
|
check table t1;
|
|
select * from t1 ignore key (key1) where text1='teststring' or text1 like 'teststring_%';
|
|
select * from t1 where text1='teststring' or text1 like 'teststring_%';
|
|
select * from t1 where text1='teststring' or text1 > 'teststring\t';
|
|
select * from t1 order by text1;
|
|
explain select * from t1 order by text1;
|
|
|
|
alter table t1 modify text1 char(32) binary not null;
|
|
check table t1;
|
|
select * from t1 ignore key (key1) where text1='teststring' or text1 like 'teststring_%';
|
|
select concat('|', text1, '|') from t1 where text1='teststring' or text1 like 'teststring_%';
|
|
select concat('|', text1, '|') from t1 where text1='teststring' or text1 > 'teststring\t';
|
|
select text1, length(text1) from t1 order by text1;
|
|
select text1, length(text1) from t1 order by binary text1;
|
|
|
|
alter table t1 modify text1 blob not null, drop key key1, add key key1 (text1(20));
|
|
insert into t1 values ('teststring ');
|
|
select concat('|', text1, '|') from t1 order by text1;
|
|
select concat('|', text1, '|') from t1 where text1='teststring' or text1 > 'teststring\t';
|
|
select concat('|', text1, '|') from t1 where text1='teststring';
|
|
select concat('|', text1, '|') from t1 where text1='teststring ';
|
|
|
|
alter table t1 modify text1 text not null, pack_keys=1;
|
|
select concat('|', text1, '|') from t1 where text1='teststring';
|
|
select concat('|', text1, '|') from t1 where text1='teststring ';
|
|
explain select concat('|', text1, '|') from t1 where text1='teststring ';
|
|
select * from t1 where text1 like 'teststring_%';
|
|
select * from t1 where text1='teststring' or text1 like 'teststring_%';
|
|
select concat('|', text1, '|') from t1 where text1='teststring' or text1 > 'teststring\t';
|
|
select concat('|', text1, '|') from t1 order by text1;
|
|
drop table t1;
|
|
|
|
create table t1 (text1 varchar(32) not NULL, KEY key1 (text1)) pack_keys=0;
|
|
insert into t1 values ('teststring'), ('nothing'), ('teststring\t');
|
|
select * from t1 where text1='teststring' or text1 like 'teststring_%';
|
|
select * from t1 where text1='teststring' or text1 >= 'teststring\t';
|
|
drop table t1;
|
|
|
|
# Test HEAP tables (with BTREE keys)
|
|
|
|
create table t1 (text1 varchar(32) not NULL, KEY key1 using BTREE (text1)) engine=heap;
|
|
insert into t1 values ('teststring'), ('nothing'), ('teststring\t');
|
|
select * from t1 ignore key (key1) where text1='teststring' or text1 like 'teststring_%';
|
|
select * from t1 where text1='teststring' or text1 like 'teststring_%';
|
|
select * from t1 where text1='teststring' or text1 >= 'teststring\t';
|
|
select * from t1 order by text1;
|
|
explain select * from t1 order by text1;
|
|
|
|
alter table t1 modify text1 char(32) binary not null;
|
|
select * from t1 order by text1;
|
|
drop table t1;
|
|
|
|
#
|
|
# Test InnoDB tables
|
|
#
|
|
|
|
create table t1 (text1 varchar(32) not NULL, KEY key1 (text1)) engine=innodb;
|
|
insert into t1 values ('teststring'), ('nothing'), ('teststring\t');
|
|
check table t1;
|
|
select * from t1 where text1='teststring' or text1 like 'teststring_%';
|
|
select * from t1 where text1='teststring' or text1 > 'teststring\t';
|
|
select * from t1 order by text1;
|
|
explain select * from t1 order by text1;
|
|
|
|
alter table t1 modify text1 char(32) binary not null;
|
|
select * from t1 order by text1;
|
|
|
|
alter table t1 modify text1 blob not null, drop key key1, add key key1 (text1(20));
|
|
insert into t1 values ('teststring ');
|
|
select concat('|', text1, '|') from t1 order by text1;
|
|
|
|
alter table t1 modify text1 text not null, pack_keys=1;
|
|
select * from t1 where text1 like 'teststring_%';
|
|
|
|
# The following gives wrong result in InnoDB
|
|
select text1, length(text1) from t1 where text1='teststring' or text1 like 'teststring_%';
|
|
select text1, length(text1) from t1 where text1='teststring' or text1 >= 'teststring\t';
|
|
select concat('|', text1, '|') from t1 order by text1;
|
|
drop table t1;
|