mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Reviewing new pushed code
- CHAR() now returns binary string as default - CHAR(X*65536+Y*256+Z) is now equal to CHAR(X,Y,Z) independent of the character set for CHAR() - Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait() (Some old systems returns ETIME and it's safer to test for both values than to try to write a wrapper for each old system) - Fixed new introduced bug in NOT BETWEEN X and X - Ensure we call commit_by_xid or rollback_by_xid for all engines, even if one engine has failed - Use octet2hex() for all conversion of string to hex - Simplify and optimize code client/mysqldump.c: Simple optimizations of new code Indentation fixes client/mysqltest.c: Removed not needed variable include/mysql_com.h: Made octec2hex() more usable mysql-test/r/ctype_utf8.result: CHAR() now returns binary string as default mysql-test/r/func_str.result: CHAR() now returns binary string as default mysql-test/r/range.result: Added test to verify new introduced bug in NOT BETWEEN X and X mysql-test/r/user_var-binlog.result: CHAR() now returns binary string as default mysql-test/r/view.result: More tests of view rename mysql-test/t/ctype_utf8.test: CHAR() now returns binary string as default mysql-test/t/func_str.test: CHAR() now returns binary string as default mysql-test/t/range.test: Added test to verify new introduced bug in NOT BETWEEN X and X mysql-test/t/view.test: More tests of view rename mysys/mf_keycache.c: Indentation changes Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait() mysys/my_os2cond.c: Fix to MySQL coding style Optimized functions mysys/thr_lock.c: Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait() mysys/thr_mutex.c: Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait() server-tools/instance-manager/instance.cc: Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait() server-tools/instance-manager/thread_registry.cc: Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait() sql/ha_federated.cc: Use octet2hex() sql/ha_ndbcluster.cc: Removed not used variable sql/handler.cc: Simplify code Use *NONE* instead of 'none' for not existing storage engine Ensure we call commit_by_xid or rollback_by_xid for all engines, even if one engine has failed sql/item.h: Remove not needed test for *ref. (If ref is set, it should never point at 0) sql/item_func.cc: Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait() Simplify code More comments Require that last argument to find_and_check_access() is given (Made code shorter and faster) sql/item_strfunc.cc: Changed CHAR() to return result in binary collation CHAR(X*65536+Y*256+Z) is now equal to CHAR(X,Y,Z) independent of the character set for CHAR() Bar will shortly add the following syntax: CHAR(.... USING character_set) and ensure that CONVERT(CHAR(....) USING utf8) cuts not legal utf8 strings Use ocet2hex() sql/item_strfunc.h: CHAR() now returns a binary string sql/log_event.cc: Use octet2hex() Simplify code sql/parse_file.cc: Indentation fixes Use for() instead of while() sql/password.c: Make octet2hex() more generally usable by returning pointer to end 0 sql/slave.cc: Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait() sql/sql_base.cc: Indentation fixes sql/sql_insert.cc: Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait() sql/sql_manager.cc: Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait() sql/sql_parse.cc: Don't check thd->db when checking for function privileges sql/sql_prepare.cc: Fixed wrong merge sql/sql_select.cc: Fixed new bug for NOT BETWEEN X and X sql/sql_show.cc: Removed not used variable sql/sql_table.cc: Indentation fixed Removed DBUG_PRINT that is obvious from context sql/sql_view.cc: Simplify code sql/unireg.cc: Use octet2hex()
This commit is contained in:
@ -1079,29 +1079,31 @@ char(53647)
|
||||
select char(0xff,0x8f);
|
||||
char(0xff,0x8f)
|
||||
<EFBFBD><EFBFBD>
|
||||
Warnings:
|
||||
Warning 1300 Invalid utf8 character string: 'FF8F'
|
||||
set sql_mode=traditional;
|
||||
select char(0xff,0x8f);
|
||||
char(0xff,0x8f)
|
||||
NULL
|
||||
Warnings:
|
||||
Error 1300 Invalid utf8 character string: 'FF8F'
|
||||
<EFBFBD><EFBFBD>
|
||||
select convert(char(0xff,0x8f) using utf8);
|
||||
convert(char(0xff,0x8f) using utf8)
|
||||
<EFBFBD><EFBFBD>
|
||||
select char(195);
|
||||
char(195)
|
||||
NULL
|
||||
Warnings:
|
||||
Error 1300 Invalid utf8 character string: 'C3'
|
||||
<EFBFBD>
|
||||
select convert(char(195) using utf8);
|
||||
convert(char(195) using utf8)
|
||||
<EFBFBD>
|
||||
select char(196);
|
||||
char(196)
|
||||
NULL
|
||||
Warnings:
|
||||
Error 1300 Invalid utf8 character string: 'C4'
|
||||
select char(2557);
|
||||
char(2557)
|
||||
NULL
|
||||
Warnings:
|
||||
Error 1300 Invalid utf8 character string: 'FD'
|
||||
<EFBFBD>
|
||||
select convert(char(196) using utf8);
|
||||
convert(char(196) using utf8)
|
||||
<EFBFBD>
|
||||
select hex(char(2557));
|
||||
hex(char(2557))
|
||||
09FD
|
||||
select hex(convert(char(2557) using utf8));
|
||||
hex(convert(char(2557) using utf8))
|
||||
09FD
|
||||
set names utf8;
|
||||
create table t1 (a char(1)) default character set utf8;
|
||||
create table t2 (a char(1)) default character set utf8;
|
||||
|
@ -21,6 +21,9 @@ length(_latin1'\n\t\n\b\0\\_\\%\\')
|
||||
select concat('monty',' was here ','again'),length('hello'),char(ascii('h')),ord('h');
|
||||
concat('monty',' was here ','again') length('hello') char(ascii('h')) ord('h')
|
||||
monty was here again 5 h 104
|
||||
select hex(char(256));
|
||||
hex(char(256))
|
||||
0100
|
||||
select locate('he','hello'),locate('he','hello',2),locate('lo','hello',2) ;
|
||||
locate('he','hello') locate('he','hello',2) locate('lo','hello',2)
|
||||
1 0 4
|
||||
@ -598,7 +601,7 @@ collation(hex(130)) coercibility(hex(130))
|
||||
latin1_swedish_ci 4
|
||||
select collation(char(130)), coercibility(hex(130));
|
||||
collation(char(130)) coercibility(hex(130))
|
||||
latin1_swedish_ci 4
|
||||
binary 4
|
||||
select collation(format(130,10)), coercibility(format(130,10));
|
||||
collation(format(130,10)) coercibility(format(130,10))
|
||||
latin1_swedish_ci 4
|
||||
@ -720,7 +723,7 @@ t1 CREATE TABLE `t1` (
|
||||
`oct(130)` varchar(64) NOT NULL default '',
|
||||
`conv(130,16,10)` varchar(64) NOT NULL default '',
|
||||
`hex(130)` varchar(6) NOT NULL default '',
|
||||
`char(130)` varchar(1) NOT NULL default '',
|
||||
`char(130)` varbinary(1) NOT NULL default '',
|
||||
`format(130,10)` varchar(4) NOT NULL default '',
|
||||
`left(_latin2'a',1)` varchar(1) character set latin2 NOT NULL default '',
|
||||
`right(_latin2'a',1)` varchar(1) character set latin2 NOT NULL default '',
|
||||
|
@ -809,4 +809,11 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
explain select * from t2 where a = 'a' or a='a ';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ref a a 13 const # Using where
|
||||
update t1 set a='b' where a<>'a';
|
||||
explain select * from t1 where a not between 'b' and 'b';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range a a 13 NULL # Using where
|
||||
select * from t1 where a not between 'b' and 'b';
|
||||
a filler
|
||||
a
|
||||
drop table t1,t2,t3;
|
||||
|
@ -11,7 +11,7 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 98 User var 1 139 @`a b`=_latin1 0x68656C6C6F COLLATE latin1_swedish_ci
|
||||
master-bin.000001 139 Query 1 231 use `test`; INSERT INTO t1 VALUES(@`a b`)
|
||||
master-bin.000001 231 User var 1 273 @`var1`=_latin1 0x273B616161 COLLATE latin1_swedish_ci
|
||||
master-bin.000001 273 User var 1 311 @`var2`=_latin1 0x61 COLLATE latin1_swedish_ci
|
||||
master-bin.000001 273 User var 1 311 @`var2`=_binary 0x61 COLLATE binary
|
||||
master-bin.000001 311 Query 1 411 use `test`; insert into t1 values (@var1),(@var2)
|
||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||
@ -24,7 +24,7 @@ SET @@session.sql_mode=0;
|
||||
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||
INSERT INTO t1 VALUES(@`a b`);
|
||||
SET @`var1`:=_latin1 0x273B616161 COLLATE `latin1_swedish_ci`;
|
||||
SET @`var2`:=_latin1 0x61 COLLATE `latin1_swedish_ci`;
|
||||
SET @`var2`:=_binary 0x61 COLLATE `binary`;
|
||||
SET TIMESTAMP=10000;
|
||||
insert into t1 values (@var1),(@var2);
|
||||
# End of log file
|
||||
|
@ -847,13 +847,16 @@ cast(1 as char(3))
|
||||
drop view v1;
|
||||
create table t1 (a int);
|
||||
create view v1 as select a from t1;
|
||||
create database seconddb;
|
||||
rename table v1 to seconddb.v1;
|
||||
ERROR HY000: Changing schema from 'test' to 'seconddb' is not allowed.
|
||||
create view v3 as select a from t1;
|
||||
create database mysqltest;
|
||||
rename table v1 to mysqltest.v1;
|
||||
ERROR HY000: Changing schema from 'test' to 'mysqltest' is not allowed.
|
||||
rename table v1 to v2;
|
||||
rename table v3 to v1, v2 to t1;
|
||||
ERROR 42S01: Table 't1' already exists
|
||||
drop table t1;
|
||||
drop view v2;
|
||||
drop database seconddb;
|
||||
drop view v2,v3;
|
||||
drop database mysqltest;
|
||||
create view v1 as select 'a',1;
|
||||
create view v2 as select * from v1 union all select * from v1;
|
||||
create view v3 as select * from v2 where 1 = (select `1` from v2);
|
||||
|
@ -880,9 +880,13 @@ select char(0xff,0x8f);
|
||||
# incorrect value in strict mode: return NULL with "Error" level warning
|
||||
set sql_mode=traditional;
|
||||
select char(0xff,0x8f);
|
||||
select convert(char(0xff,0x8f) using utf8);
|
||||
select char(195);
|
||||
select convert(char(195) using utf8);
|
||||
select char(196);
|
||||
select char(2557);
|
||||
select convert(char(196) using utf8);
|
||||
select hex(char(2557));
|
||||
select hex(convert(char(2557) using utf8));
|
||||
|
||||
#
|
||||
# Bug#12891: UNION doesn't return DISTINCT result for multi-byte characters
|
||||
|
@ -15,6 +15,7 @@ select bit_length('\n\t\r\b\0\_\%\\');
|
||||
select char_length('\n\t\r\b\0\_\%\\');
|
||||
select length(_latin1'\n\t\n\b\0\\_\\%\\');
|
||||
select concat('monty',' was here ','again'),length('hello'),char(ascii('h')),ord('h');
|
||||
select hex(char(256));
|
||||
select locate('he','hello'),locate('he','hello',2),locate('lo','hello',2) ;
|
||||
select instr('hello','HE'), instr('hello',binary 'HE'), instr(binary 'hello','HE');
|
||||
select position(binary 'll' in 'hello'),position('a' in binary 'hello');
|
||||
|
@ -625,4 +625,9 @@ explain select * from t2 where a between 'a' and 'a ';
|
||||
--replace_column 9 #
|
||||
explain select * from t2 where a = 'a' or a='a ';
|
||||
|
||||
update t1 set a='b' where a<>'a';
|
||||
--replace_column 9 #
|
||||
explain select * from t1 where a not between 'b' and 'b';
|
||||
select * from t1 where a not between 'b' and 'b';
|
||||
|
||||
drop table t1,t2,t3;
|
||||
|
@ -790,13 +790,16 @@ drop view v1;
|
||||
#
|
||||
create table t1 (a int);
|
||||
create view v1 as select a from t1;
|
||||
create database seconddb;
|
||||
create view v3 as select a from t1;
|
||||
create database mysqltest;
|
||||
-- error 1450
|
||||
rename table v1 to seconddb.v1;
|
||||
rename table v1 to mysqltest.v1;
|
||||
rename table v1 to v2;
|
||||
--error 1050
|
||||
rename table v3 to v1, v2 to t1;
|
||||
drop table t1;
|
||||
drop view v2;
|
||||
drop database seconddb;
|
||||
drop view v2,v3;
|
||||
drop database mysqltest;
|
||||
|
||||
#
|
||||
# bug handling from VIEWs
|
||||
|
Reference in New Issue
Block a user