mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
MDEV-35041 Simple comparison causes "Illegal mix of collations" even with default server settings
The task "MDEV-25829 Change default Unicode collation to uca1400_ai_ci" previously changed collation derivation for string user variables from DERIVATION_EXPLICIT to DERIVATION_COERCIBLE, to resolve illegal collation mix conflicts between table columns and user variables when they have different collations. However, DERIVATION_COERCIBLE was a wrong choice because it caused conflicts between string literals and user variables when they have different collations. Adding a new collation derivation level DERIVATION_USERVAR. This makes the collation of a user variable: - weaker than a table column (like it was intended by MDEV-25829) - but stronger than a literal (like it was in pre-MDEV-25829) Cleanup in sql_type.h: Removing the line "- BINARY(expr)" from the before-DERIVATION_CAST comment, as it was on a wrong place. It's also listed on the correct place before DERIVATION_IMPLICIT.
This commit is contained in:
@ -423,7 +423,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
select hex(concat(coercibility('a')));
|
select hex(concat(coercibility('a')));
|
||||||
hex(concat(coercibility('a')))
|
hex(concat(coercibility('a')))
|
||||||
35
|
36
|
||||||
create table t1 as select concat(coercibility('a')) as c1;
|
create table t1 as select concat(coercibility('a')) as c1;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
@ -811,7 +811,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
select coercibility(uuid()), coercibility(cast('a' as char character set latin1));
|
select coercibility(uuid()), coercibility(cast('a' as char character set latin1));
|
||||||
coercibility(uuid()) coercibility(cast('a' as char character set latin1))
|
coercibility(uuid()) coercibility(cast('a' as char character set latin1))
|
||||||
6 4
|
7 4
|
||||||
select charset(concat(uuid(), cast('a' as char character set latin1)));
|
select charset(concat(uuid(), cast('a' as char character set latin1)));
|
||||||
charset(concat(uuid(), cast('a' as char character set latin1)))
|
charset(concat(uuid(), cast('a' as char character set latin1)))
|
||||||
latin1
|
latin1
|
||||||
|
@ -516,7 +516,7 @@ Variable_name Value
|
|||||||
character_set_client latin1
|
character_set_client latin1
|
||||||
SELECT charset('a'),collation('a'),coercibility('a'),'a'='A';
|
SELECT charset('a'),collation('a'),coercibility('a'),'a'='A';
|
||||||
charset('a') collation('a') coercibility('a') 'a'='A'
|
charset('a') collation('a') coercibility('a') 'a'='A'
|
||||||
latin1 latin1_swedish_ci 5 1
|
latin1 latin1_swedish_ci 6 1
|
||||||
explain extended SELECT charset('a'),collation('a'),coercibility('a'),'a'='A';
|
explain extended SELECT charset('a'),collation('a'),coercibility('a'),'a'='A';
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
@ -527,7 +527,7 @@ SHOW VARIABLES LIKE 'collation_client';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
SELECT charset('a'),collation('a'),coercibility('a'),'a'='A';
|
SELECT charset('a'),collation('a'),coercibility('a'),'a'='A';
|
||||||
charset('a') collation('a') coercibility('a') 'a'='A'
|
charset('a') collation('a') coercibility('a') 'a'='A'
|
||||||
latin1 latin1_swedish_ci 5 1
|
latin1 latin1_swedish_ci 6 1
|
||||||
SET @@collation_database=@collation_database;
|
SET @@collation_database=@collation_database;
|
||||||
SET CHARACTER SET 'DEFAULT';
|
SET CHARACTER SET 'DEFAULT';
|
||||||
ERROR 42000: Unknown character set: 'DEFAULT'
|
ERROR 42000: Unknown character set: 'DEFAULT'
|
||||||
@ -687,7 +687,7 @@ RETURN "Testtext";
|
|||||||
END;//
|
END;//
|
||||||
SELECT getText(), CHARSET(getText()), COLLATION(getText()), COERCIBILITY(getText());
|
SELECT getText(), CHARSET(getText()), COLLATION(getText()), COERCIBILITY(getText());
|
||||||
getText() CHARSET(getText()) COLLATION(getText()) COERCIBILITY(getText())
|
getText() CHARSET(getText()) COLLATION(getText()) COERCIBILITY(getText())
|
||||||
Testtext latin1 latin1_swedish_ci 5
|
Testtext latin1 latin1_swedish_ci 6
|
||||||
CREATE TABLE t1 AS SELECT ' - ' AS a UNION SELECT getText();
|
CREATE TABLE t1 AS SELECT ' - ' AS a UNION SELECT getText();
|
||||||
ERROR HY000: Illegal mix of collations for operation 'UNION'
|
ERROR HY000: Illegal mix of collations for operation 'UNION'
|
||||||
DROP FUNCTION getText;
|
DROP FUNCTION getText;
|
||||||
@ -700,7 +700,7 @@ RETURN "Testtext";
|
|||||||
END;//
|
END;//
|
||||||
SELECT getText(), CHARSET(getText()), COLLATION(getText()), COERCIBILITY(getText());
|
SELECT getText(), CHARSET(getText()), COLLATION(getText()), COERCIBILITY(getText());
|
||||||
getText() CHARSET(getText()) COLLATION(getText()) COERCIBILITY(getText())
|
getText() CHARSET(getText()) COLLATION(getText()) COERCIBILITY(getText())
|
||||||
Testtext latin1 latin1_german2_ci 5
|
Testtext latin1 latin1_german2_ci 6
|
||||||
CREATE TABLE t1 AS SELECT ' - ' AS a UNION SELECT getText();
|
CREATE TABLE t1 AS SELECT ' - ' AS a UNION SELECT getText();
|
||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
@ -718,7 +718,7 @@ RETURN "Testtext";
|
|||||||
END;//
|
END;//
|
||||||
SELECT getText(), CHARSET(getText()), COLLATION(getText()), COERCIBILITY(getText());
|
SELECT getText(), CHARSET(getText()), COLLATION(getText()), COERCIBILITY(getText());
|
||||||
getText() CHARSET(getText()) COLLATION(getText()) COERCIBILITY(getText())
|
getText() CHARSET(getText()) COLLATION(getText()) COERCIBILITY(getText())
|
||||||
Testtext latin1 latin1_german2_ci 5
|
Testtext latin1 latin1_german2_ci 6
|
||||||
CREATE TABLE t1 AS SELECT ' - ' AS a UNION SELECT getText();
|
CREATE TABLE t1 AS SELECT ' - ' AS a UNION SELECT getText();
|
||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
|
@ -835,7 +835,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
select hex(concat(coercibility('a')));
|
select hex(concat(coercibility('a')));
|
||||||
hex(concat(coercibility('a')))
|
hex(concat(coercibility('a')))
|
||||||
35
|
36
|
||||||
create table t1 as select concat(coercibility('a')) as c1;
|
create table t1 as select concat(coercibility('a')) as c1;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
@ -1223,7 +1223,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
select coercibility(uuid()), coercibility(cast('a' as char character set latin1));
|
select coercibility(uuid()), coercibility(cast('a' as char character set latin1));
|
||||||
coercibility(uuid()) coercibility(cast('a' as char character set latin1))
|
coercibility(uuid()) coercibility(cast('a' as char character set latin1))
|
||||||
6 4
|
7 4
|
||||||
select charset(concat(uuid(), cast('a' as char character set latin1)));
|
select charset(concat(uuid(), cast('a' as char character set latin1)));
|
||||||
charset(concat(uuid(), cast('a' as char character set latin1)))
|
charset(concat(uuid(), cast('a' as char character set latin1)))
|
||||||
latin1
|
latin1
|
||||||
|
@ -1144,7 +1144,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
select hex(concat(coercibility('a')));
|
select hex(concat(coercibility('a')));
|
||||||
hex(concat(coercibility('a')))
|
hex(concat(coercibility('a')))
|
||||||
35
|
36
|
||||||
create table t1 as select concat(coercibility('a')) as c1;
|
create table t1 as select concat(coercibility('a')) as c1;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
@ -1532,7 +1532,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
select coercibility(uuid()), coercibility(cast('a' as char character set latin1));
|
select coercibility(uuid()), coercibility(cast('a' as char character set latin1));
|
||||||
coercibility(uuid()) coercibility(cast('a' as char character set latin1))
|
coercibility(uuid()) coercibility(cast('a' as char character set latin1))
|
||||||
6 4
|
7 4
|
||||||
select charset(concat(uuid(), cast('a' as char character set latin1)));
|
select charset(concat(uuid(), cast('a' as char character set latin1)));
|
||||||
charset(concat(uuid(), cast('a' as char character set latin1)))
|
charset(concat(uuid(), cast('a' as char character set latin1)))
|
||||||
latin1
|
latin1
|
||||||
|
@ -585,31 +585,31 @@ CHARSET('2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
|||||||
latin2
|
latin2
|
||||||
SELECT COERCIBILITY('2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
SELECT COERCIBILITY('2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
||||||
COERCIBILITY('2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
COERCIBILITY('2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
||||||
5
|
6
|
||||||
SELECT CHARSET(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
SELECT CHARSET(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
||||||
CHARSET(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
CHARSET(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
||||||
binary
|
binary
|
||||||
SELECT COERCIBILITY(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
SELECT COERCIBILITY(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
||||||
COERCIBILITY(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
COERCIBILITY(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
||||||
6
|
7
|
||||||
SELECT CHARSET(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
SELECT CHARSET(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
||||||
CHARSET(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
CHARSET(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
||||||
latin2
|
latin2
|
||||||
SELECT COERCIBILITY(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
SELECT COERCIBILITY(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
||||||
COERCIBILITY(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
COERCIBILITY(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
||||||
5
|
6
|
||||||
SELECT CHARSET(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
SELECT CHARSET(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
||||||
CHARSET(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
CHARSET(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
||||||
latin2
|
latin2
|
||||||
SELECT COERCIBILITY(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
SELECT COERCIBILITY(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
||||||
COERCIBILITY(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
COERCIBILITY(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
||||||
5
|
6
|
||||||
SELECT CHARSET(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT CHARSET(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
CHARSET(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
CHARSET(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
latin2
|
latin2
|
||||||
SELECT COERCIBILITY(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT COERCIBILITY(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
COERCIBILITY(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
COERCIBILITY(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
5
|
6
|
||||||
SELECT HEX(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT HEX(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
HEX(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
HEX(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
323030312D30312D30312030303A30303A3030
|
323030312D30312D30312030303A30303A3030
|
||||||
@ -618,7 +618,7 @@ CHARSET(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
|||||||
latin2
|
latin2
|
||||||
SELECT COERCIBILITY(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT COERCIBILITY(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
COERCIBILITY(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
COERCIBILITY(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
5
|
6
|
||||||
SELECT HEX(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT HEX(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
HEX(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
HEX(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
323030312D30312D30312030303A30303A3030
|
323030312D30312D30312030303A30303A3030
|
||||||
|
@ -2027,7 +2027,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
select hex(concat(coercibility('a')));
|
select hex(concat(coercibility('a')));
|
||||||
hex(concat(coercibility('a')))
|
hex(concat(coercibility('a')))
|
||||||
0035
|
0036
|
||||||
create table t1 as select concat(coercibility('a')) as c1;
|
create table t1 as select concat(coercibility('a')) as c1;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
@ -2415,7 +2415,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
select coercibility(uuid()), coercibility(cast('a' as char character set latin1));
|
select coercibility(uuid()), coercibility(cast('a' as char character set latin1));
|
||||||
coercibility(uuid()) coercibility(cast('a' as char character set latin1))
|
coercibility(uuid()) coercibility(cast('a' as char character set latin1))
|
||||||
6 4
|
7 4
|
||||||
select charset(concat(uuid(), cast('a' as char character set latin1)));
|
select charset(concat(uuid(), cast('a' as char character set latin1)));
|
||||||
charset(concat(uuid(), cast('a' as char character set latin1)))
|
charset(concat(uuid(), cast('a' as char character set latin1)))
|
||||||
latin1
|
latin1
|
||||||
@ -5194,31 +5194,31 @@ CHARSET('2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
|||||||
ucs2
|
ucs2
|
||||||
SELECT COERCIBILITY('2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
SELECT COERCIBILITY('2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
||||||
COERCIBILITY('2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
COERCIBILITY('2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
||||||
5
|
6
|
||||||
SELECT CHARSET(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
SELECT CHARSET(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
||||||
CHARSET(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
CHARSET(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
||||||
binary
|
binary
|
||||||
SELECT COERCIBILITY(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
SELECT COERCIBILITY(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
||||||
COERCIBILITY(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
COERCIBILITY(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
||||||
6
|
7
|
||||||
SELECT CHARSET(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
SELECT CHARSET(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
||||||
CHARSET(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
CHARSET(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
||||||
ucs2
|
ucs2
|
||||||
SELECT COERCIBILITY(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
SELECT COERCIBILITY(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
||||||
COERCIBILITY(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
COERCIBILITY(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
||||||
5
|
6
|
||||||
SELECT CHARSET(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
SELECT CHARSET(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
||||||
CHARSET(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
CHARSET(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
||||||
ucs2
|
ucs2
|
||||||
SELECT COERCIBILITY(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
SELECT COERCIBILITY(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
||||||
COERCIBILITY(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
COERCIBILITY(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
||||||
5
|
6
|
||||||
SELECT CHARSET(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT CHARSET(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
CHARSET(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
CHARSET(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
ucs2
|
ucs2
|
||||||
SELECT COERCIBILITY(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT COERCIBILITY(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
COERCIBILITY(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
COERCIBILITY(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
5
|
6
|
||||||
SELECT HEX(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT HEX(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
HEX(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
HEX(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
0032003000300031002D00300031002D00300031002000300030003A00300030003A00300030
|
0032003000300031002D00300031002D00300031002000300030003A00300030003A00300030
|
||||||
@ -5227,7 +5227,7 @@ CHARSET(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
|||||||
ucs2
|
ucs2
|
||||||
SELECT COERCIBILITY(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT COERCIBILITY(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
COERCIBILITY(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
COERCIBILITY(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
5
|
6
|
||||||
SELECT HEX(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT HEX(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
HEX(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
HEX(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
0032003000300031002D00300031002D00300031002000300030003A00300030003A00300030
|
0032003000300031002D00300031002D00300031002000300030003A00300030003A00300030
|
||||||
|
@ -1395,31 +1395,31 @@ CHARSET('2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
|||||||
utf16
|
utf16
|
||||||
SELECT COERCIBILITY('2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
SELECT COERCIBILITY('2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
||||||
COERCIBILITY('2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
COERCIBILITY('2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
||||||
5
|
6
|
||||||
SELECT CHARSET(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
SELECT CHARSET(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
||||||
CHARSET(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
CHARSET(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
||||||
binary
|
binary
|
||||||
SELECT COERCIBILITY(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
SELECT COERCIBILITY(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
||||||
COERCIBILITY(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
COERCIBILITY(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
||||||
6
|
7
|
||||||
SELECT CHARSET(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
SELECT CHARSET(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
||||||
CHARSET(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
CHARSET(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
||||||
utf16
|
utf16
|
||||||
SELECT COERCIBILITY(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
SELECT COERCIBILITY(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
||||||
COERCIBILITY(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
COERCIBILITY(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
||||||
5
|
6
|
||||||
SELECT CHARSET(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
SELECT CHARSET(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
||||||
CHARSET(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
CHARSET(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
||||||
utf16
|
utf16
|
||||||
SELECT COERCIBILITY(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
SELECT COERCIBILITY(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
||||||
COERCIBILITY(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
COERCIBILITY(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
||||||
5
|
6
|
||||||
SELECT CHARSET(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT CHARSET(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
CHARSET(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
CHARSET(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
utf16
|
utf16
|
||||||
SELECT COERCIBILITY(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT COERCIBILITY(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
COERCIBILITY(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
COERCIBILITY(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
5
|
6
|
||||||
SELECT HEX(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT HEX(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
HEX(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
HEX(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
0032003000300031002D00300031002D00300031002000300030003A00300030003A00300030
|
0032003000300031002D00300031002D00300031002000300030003A00300030003A00300030
|
||||||
@ -1428,7 +1428,7 @@ CHARSET(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
|||||||
utf16
|
utf16
|
||||||
SELECT COERCIBILITY(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT COERCIBILITY(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
COERCIBILITY(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
COERCIBILITY(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
5
|
6
|
||||||
SELECT HEX(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT HEX(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
HEX(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
HEX(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
0032003000300031002D00300031002D00300031002000300030003A00300030003A00300030
|
0032003000300031002D00300031002D00300031002000300030003A00300030003A00300030
|
||||||
|
@ -1666,31 +1666,31 @@ CHARSET('2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
|||||||
utf16le
|
utf16le
|
||||||
SELECT COERCIBILITY('2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
SELECT COERCIBILITY('2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
||||||
COERCIBILITY('2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
COERCIBILITY('2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
||||||
5
|
6
|
||||||
SELECT CHARSET(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
SELECT CHARSET(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
||||||
CHARSET(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
CHARSET(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
||||||
binary
|
binary
|
||||||
SELECT COERCIBILITY(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
SELECT COERCIBILITY(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
||||||
COERCIBILITY(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
COERCIBILITY(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
||||||
6
|
7
|
||||||
SELECT CHARSET(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
SELECT CHARSET(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
||||||
CHARSET(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
CHARSET(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
||||||
utf16le
|
utf16le
|
||||||
SELECT COERCIBILITY(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
SELECT COERCIBILITY(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
||||||
COERCIBILITY(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
COERCIBILITY(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
||||||
5
|
6
|
||||||
SELECT CHARSET(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
SELECT CHARSET(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
||||||
CHARSET(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
CHARSET(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
||||||
utf16le
|
utf16le
|
||||||
SELECT COERCIBILITY(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
SELECT COERCIBILITY(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
||||||
COERCIBILITY(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
COERCIBILITY(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
||||||
5
|
6
|
||||||
SELECT CHARSET(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT CHARSET(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
CHARSET(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
CHARSET(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
utf16le
|
utf16le
|
||||||
SELECT COERCIBILITY(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT COERCIBILITY(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
COERCIBILITY(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
COERCIBILITY(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
5
|
6
|
||||||
SELECT HEX(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT HEX(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
HEX(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
HEX(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
32003000300031002D00300031002D00300031002000300030003A00300030003A0030003000
|
32003000300031002D00300031002D00300031002000300030003A00300030003A0030003000
|
||||||
@ -1699,7 +1699,7 @@ CHARSET(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
|||||||
utf16le
|
utf16le
|
||||||
SELECT COERCIBILITY(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT COERCIBILITY(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
COERCIBILITY(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
COERCIBILITY(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
5
|
6
|
||||||
SELECT HEX(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT HEX(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
HEX(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
HEX(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
32003000300031002D00300031002D00300031002000300030003A00300030003A0030003000
|
32003000300031002D00300031002D00300031002000300030003A00300030003A0030003000
|
||||||
|
@ -1339,31 +1339,31 @@ CHARSET('2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
|||||||
utf32
|
utf32
|
||||||
SELECT COERCIBILITY('2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
SELECT COERCIBILITY('2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
||||||
COERCIBILITY('2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
COERCIBILITY('2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
||||||
5
|
6
|
||||||
SELECT CHARSET(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
SELECT CHARSET(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
||||||
CHARSET(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
CHARSET(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
||||||
binary
|
binary
|
||||||
SELECT COERCIBILITY(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
SELECT COERCIBILITY(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY);
|
||||||
COERCIBILITY(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
COERCIBILITY(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)
|
||||||
6
|
7
|
||||||
SELECT CHARSET(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
SELECT CHARSET(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
||||||
CHARSET(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
CHARSET(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
||||||
utf32
|
utf32
|
||||||
SELECT COERCIBILITY(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
SELECT COERCIBILITY(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
||||||
COERCIBILITY(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
COERCIBILITY(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
||||||
5
|
6
|
||||||
SELECT CHARSET(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
SELECT CHARSET(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
||||||
CHARSET(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
CHARSET(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
||||||
utf32
|
utf32
|
||||||
SELECT COERCIBILITY(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
SELECT COERCIBILITY(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY));
|
||||||
COERCIBILITY(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
COERCIBILITY(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY))
|
||||||
5
|
6
|
||||||
SELECT CHARSET(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT CHARSET(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
CHARSET(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
CHARSET(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
utf32
|
utf32
|
||||||
SELECT COERCIBILITY(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT COERCIBILITY(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
COERCIBILITY(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
COERCIBILITY(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
5
|
6
|
||||||
SELECT HEX(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT HEX(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
HEX(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
HEX(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
000000320000003000000030000000310000002D00000030000000310000002D00000030000000310000002000000030000000300000003A00000030000000300000003A0000003000000030
|
000000320000003000000030000000310000002D00000030000000310000002D00000030000000310000002000000030000000300000003A00000030000000300000003A0000003000000030
|
||||||
@ -1372,7 +1372,7 @@ CHARSET(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
|||||||
utf32
|
utf32
|
||||||
SELECT COERCIBILITY(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT COERCIBILITY(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
COERCIBILITY(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
COERCIBILITY(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
5
|
6
|
||||||
SELECT HEX(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
SELECT HEX(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY));
|
||||||
HEX(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
HEX(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY))
|
||||||
000000320000003000000030000000310000002D00000030000000310000002D00000030000000310000002000000030000000300000003A00000030000000300000003A0000003000000030
|
000000320000003000000030000000310000002D00000030000000310000002D00000030000000310000002000000030000000300000003A00000030000000300000003A0000003000000030
|
||||||
|
@ -1892,7 +1892,7 @@ insert into t1 values('t1_val');
|
|||||||
create view v1 as select 'v1_val' as col1;
|
create view v1 as select 'v1_val' as col1;
|
||||||
select coercibility(col1), collation(col1) from v1;
|
select coercibility(col1), collation(col1) from v1;
|
||||||
coercibility(col1) collation(col1)
|
coercibility(col1) collation(col1)
|
||||||
5 utf8mb3_general_ci
|
6 utf8mb3_general_ci
|
||||||
create view v2 as select col1 from v1 union select col1 from t1;
|
create view v2 as select col1 from v1 union select col1 from t1;
|
||||||
select coercibility(col1), collation(col1)from v2;
|
select coercibility(col1), collation(col1)from v2;
|
||||||
coercibility(col1) collation(col1)
|
coercibility(col1) collation(col1)
|
||||||
@ -2772,7 +2772,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
select hex(concat(coercibility('a')));
|
select hex(concat(coercibility('a')));
|
||||||
hex(concat(coercibility('a')))
|
hex(concat(coercibility('a')))
|
||||||
35
|
36
|
||||||
create table t1 as select concat(coercibility('a')) as c1;
|
create table t1 as select concat(coercibility('a')) as c1;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
@ -3160,7 +3160,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
select coercibility(uuid()), coercibility(cast('a' as char character set latin1));
|
select coercibility(uuid()), coercibility(cast('a' as char character set latin1));
|
||||||
coercibility(uuid()) coercibility(cast('a' as char character set latin1))
|
coercibility(uuid()) coercibility(cast('a' as char character set latin1))
|
||||||
6 4
|
7 4
|
||||||
select charset(concat(uuid(), cast('a' as char character set latin1)));
|
select charset(concat(uuid(), cast('a' as char character set latin1)));
|
||||||
charset(concat(uuid(), cast('a' as char character set latin1)))
|
charset(concat(uuid(), cast('a' as char character set latin1)))
|
||||||
latin1
|
latin1
|
||||||
@ -10805,3 +10805,23 @@ DROP TABLE t1;
|
|||||||
#
|
#
|
||||||
# End of 10.9 tests
|
# End of 10.9 tests
|
||||||
#
|
#
|
||||||
|
#
|
||||||
|
# Start of 11.6 tests
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# MDEV-35041 Simple comparison causes "Illegal mix of collations" even with default server settings
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
SET NAMES utf8mb3;
|
||||||
|
SELECT COLUMN_TYPE INTO @col_type FROM INFORMATION_SCHEMA.COLUMNS
|
||||||
|
WHERE TABLE_NAME='t1';
|
||||||
|
SELECT @col_type != 'binary(128)';
|
||||||
|
@col_type != 'binary(128)'
|
||||||
|
1
|
||||||
|
SELECT COERCIBILITY(@col_type), COERCIBILITY('binary(128)');
|
||||||
|
COERCIBILITY(@col_type) COERCIBILITY('binary(128)')
|
||||||
|
5 6
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# End of 11.6 tests
|
||||||
|
#
|
||||||
|
@ -2535,3 +2535,25 @@ DROP TABLE t1;
|
|||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.9 tests
|
--echo # End of 10.9 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Start of 11.6 tests
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-35041 Simple comparison causes "Illegal mix of collations" even with default server settings
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
SET NAMES utf8mb3;
|
||||||
|
SELECT COLUMN_TYPE INTO @col_type FROM INFORMATION_SCHEMA.COLUMNS
|
||||||
|
WHERE TABLE_NAME='t1';
|
||||||
|
SELECT @col_type != 'binary(128)';
|
||||||
|
SELECT COERCIBILITY(@col_type), COERCIBILITY('binary(128)');
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # End of 11.6 tests
|
||||||
|
--echo #
|
||||||
|
@ -1918,7 +1918,7 @@ insert into t1 values('t1_val');
|
|||||||
create view v1 as select 'v1_val' as col1;
|
create view v1 as select 'v1_val' as col1;
|
||||||
select coercibility(col1), collation(col1) from v1;
|
select coercibility(col1), collation(col1) from v1;
|
||||||
coercibility(col1) collation(col1)
|
coercibility(col1) collation(col1)
|
||||||
5 utf8mb4_general_ci
|
6 utf8mb4_general_ci
|
||||||
create view v2 as select col1 from v1 union select col1 from t1;
|
create view v2 as select col1 from v1 union select col1 from t1;
|
||||||
select coercibility(col1), collation(col1)from v2;
|
select coercibility(col1), collation(col1)from v2;
|
||||||
coercibility(col1) collation(col1)
|
coercibility(col1) collation(col1)
|
||||||
|
@ -1882,7 +1882,7 @@ insert into t1 values('t1_val');
|
|||||||
create view v1 as select 'v1_val' as col1;
|
create view v1 as select 'v1_val' as col1;
|
||||||
select coercibility(col1), collation(col1) from v1;
|
select coercibility(col1), collation(col1) from v1;
|
||||||
coercibility(col1) collation(col1)
|
coercibility(col1) collation(col1)
|
||||||
5 utf8mb4_uca1400_ai_ci
|
6 utf8mb4_uca1400_ai_ci
|
||||||
create view v2 as select col1 from v1 union select col1 from t1;
|
create view v2 as select col1 from v1 union select col1 from t1;
|
||||||
select coercibility(col1), collation(col1)from v2;
|
select coercibility(col1), collation(col1)from v2;
|
||||||
coercibility(col1) collation(col1)
|
coercibility(col1) collation(col1)
|
||||||
|
@ -2008,7 +2008,7 @@ insert into t1 values('t1_val');
|
|||||||
create view v1 as select 'v1_val' as col1;
|
create view v1 as select 'v1_val' as col1;
|
||||||
select coercibility(col1), collation(col1) from v1;
|
select coercibility(col1), collation(col1) from v1;
|
||||||
coercibility(col1) collation(col1)
|
coercibility(col1) collation(col1)
|
||||||
5 utf8mb4_uca1400_ai_ci
|
6 utf8mb4_uca1400_ai_ci
|
||||||
create view v2 as select col1 from v1 union select col1 from t1;
|
create view v2 as select col1 from v1 union select col1 from t1;
|
||||||
select coercibility(col1), collation(col1)from v2;
|
select coercibility(col1), collation(col1)from v2;
|
||||||
coercibility(col1) collation(col1)
|
coercibility(col1) collation(col1)
|
||||||
|
@ -2015,7 +2015,7 @@ insert into t1 values('t1_val');
|
|||||||
create view v1 as select 'v1_val' as col1;
|
create view v1 as select 'v1_val' as col1;
|
||||||
select coercibility(col1), collation(col1) from v1;
|
select coercibility(col1), collation(col1) from v1;
|
||||||
coercibility(col1) collation(col1)
|
coercibility(col1) collation(col1)
|
||||||
5 utf8mb4_uca1400_ai_ci
|
6 utf8mb4_uca1400_ai_ci
|
||||||
create view v2 as select col1 from v1 union select col1 from t1;
|
create view v2 as select col1 from v1 union select col1 from t1;
|
||||||
select coercibility(col1), collation(col1)from v2;
|
select coercibility(col1), collation(col1)from v2;
|
||||||
coercibility(col1) collation(col1)
|
coercibility(col1) collation(col1)
|
||||||
|
@ -2970,7 +2970,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
INSERT INTO t1 (a) VALUES ('test');
|
INSERT INTO t1 (a) VALUES ('test');
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
a b c
|
a b c
|
||||||
test 2 6
|
test 2 7
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
# String result metadata functions
|
# String result metadata functions
|
||||||
|
@ -424,7 +424,7 @@ coercibility(json_unquote(json_object('bar', c))) as coer_json_unquote,
|
|||||||
coercibility('bar') as coer_literal
|
coercibility('bar') as coer_literal
|
||||||
from t1 limit 1;
|
from t1 limit 1;
|
||||||
coll_json_unquote coer_json_unquote coer_literal
|
coll_json_unquote coer_json_unquote coer_literal
|
||||||
utf8mb3_general_ci 4 5
|
utf8mb3_general_ci 4 6
|
||||||
create table t2 as select json_object('foo', json_unquote(json_object('bar', c)),'qux', c) as fld from t1 limit 0;
|
create table t2 as select json_object('foo', json_unquote(json_object('bar', c)),'qux', c) as fld from t1 limit 0;
|
||||||
show create table t2;
|
show create table t2;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
|
@ -1477,10 +1477,10 @@ COERCIBILITY(NAME_CONST('name','test'))
|
|||||||
2
|
2
|
||||||
SELECT COERCIBILITY(NAME_CONST('name',TIME'00:00:00'));
|
SELECT COERCIBILITY(NAME_CONST('name',TIME'00:00:00'));
|
||||||
COERCIBILITY(NAME_CONST('name',TIME'00:00:00'))
|
COERCIBILITY(NAME_CONST('name',TIME'00:00:00'))
|
||||||
6
|
7
|
||||||
SELECT COERCIBILITY(NAME_CONST('name',15));
|
SELECT COERCIBILITY(NAME_CONST('name',15));
|
||||||
COERCIBILITY(NAME_CONST('name',15))
|
COERCIBILITY(NAME_CONST('name',15))
|
||||||
6
|
7
|
||||||
SELECT CONCAT(NAME_CONST('name',15),'오');
|
SELECT CONCAT(NAME_CONST('name',15),'오');
|
||||||
CONCAT(NAME_CONST('name',15),'오')
|
CONCAT(NAME_CONST('name',15),'오')
|
||||||
15오
|
15오
|
||||||
|
@ -869,12 +869,21 @@ SELECT 0xE001 REGEXP CAST(@regCheck AS CHAR);
|
|||||||
Warnings:
|
Warnings:
|
||||||
Warning 1139 Regex error 'UTF-8 error: 1 byte missing at end'
|
Warning 1139 Regex error 'UTF-8 error: 1 byte missing at end'
|
||||||
SELECT 0xE001 REGEXP CAST(@regCheck AS CHAR);
|
SELECT 0xE001 REGEXP CAST(@regCheck AS CHAR);
|
||||||
0xE001 REGEXP CAST(@regCheck AS CHAR)
|
0xE001 REGEXP CAST(@regCheck AS CHAR)
|
||||||
0
|
0
|
||||||
|
Warnings:
|
||||||
|
Warning 1139 Regex error 'UTF-8 error: 1 byte missing at end'
|
||||||
|
# Since 11.5 (MDEV-25829) user variables have DERIVATION_COERCIBLE
|
||||||
|
# so a user variable and a literal in the pattern gave equal results
|
||||||
|
# But since 11.6 (MDEV-35041) user variables have DERIVATION_USERVAR
|
||||||
|
# so the query with a literal is performece as binary:
|
||||||
|
SELECT 0xE001 REGEXP '\\xE0\\x01' AS c1;
|
||||||
c1
|
c1
|
||||||
Warning 1139 Regex error 'UTF-8 error: 1 byte missing at end'
|
1
|
||||||
# Since 11.4 user variables have DERIVATION_COERCIBLE
|
# while the query with a user variable is performed as string
|
||||||
# so a user variable and a literal in the pattern give equal results
|
# with a warning, like in 11.4
|
||||||
|
SET @regCheck= '\\xE0\\x01';
|
||||||
|
SELECT 0xE001 REGEXP @regCheck AS c2;
|
||||||
c2
|
c2
|
||||||
0
|
0
|
||||||
Warnings:
|
Warnings:
|
||||||
|
@ -420,10 +420,16 @@ SET @regCheck= '\\xE0\\x01';
|
|||||||
SELECT 0xE001 REGEXP @regCheck COLLATE latin1_bin;
|
SELECT 0xE001 REGEXP @regCheck COLLATE latin1_bin;
|
||||||
SELECT 0xE001 REGEXP CAST(@regCheck AS CHAR);
|
SELECT 0xE001 REGEXP CAST(@regCheck AS CHAR);
|
||||||
|
|
||||||
--echo # Since 11.4 user variables have DERIVATION_COERCIBLE
|
--echo # Since 11.5 (MDEV-25829) user variables have DERIVATION_COERCIBLE
|
||||||
--echo # so a user variable and a literal in the pattern give equal results
|
--echo # so a user variable and a literal in the pattern gave equal results
|
||||||
|
--echo # But since 11.6 (MDEV-35041) user variables have DERIVATION_USERVAR
|
||||||
|
--echo # so the query with a literal is performece as binary:
|
||||||
|
SELECT 0xE001 REGEXP '\\xE0\\x01' AS c1;
|
||||||
|
|
||||||
|
--echo # while the query with a user variable is performed as string
|
||||||
|
--echo # with a warning, like in 11.4
|
||||||
SET @regCheck= '\\xE0\\x01';
|
SET @regCheck= '\\xE0\\x01';
|
||||||
SELECT 0xE001 REGEXP '\\xE0\\x01' AS c1, 0xE001 REGEXP @regCheck AS c2;
|
SELECT 0xE001 REGEXP @regCheck AS c2;
|
||||||
|
|
||||||
--echo # Testing workaround N1: This makes the pattern to be a binary string:
|
--echo # Testing workaround N1: This makes the pattern to be a binary string:
|
||||||
SET NAMES latin1;
|
SET NAMES latin1;
|
||||||
|
@ -609,103 +609,103 @@ select _latin1'B' COLLATE latin1_general_ci in (_latin1'a',_latin1'b' COLLATE la
|
|||||||
ERROR HY000: Illegal mix of collations (latin1_general_ci,EXPLICIT), (latin1_swedish_ci,COERCIBLE), (latin1_bin,EXPLICIT) for operation 'in'
|
ERROR HY000: Illegal mix of collations (latin1_general_ci,EXPLICIT), (latin1_swedish_ci,COERCIBLE), (latin1_bin,EXPLICIT) for operation 'in'
|
||||||
select collation(bin(130)), coercibility(bin(130));
|
select collation(bin(130)), coercibility(bin(130));
|
||||||
collation(bin(130)) coercibility(bin(130))
|
collation(bin(130)) coercibility(bin(130))
|
||||||
latin1_swedish_ci 5
|
latin1_swedish_ci 6
|
||||||
select collation(oct(130)), coercibility(oct(130));
|
select collation(oct(130)), coercibility(oct(130));
|
||||||
collation(oct(130)) coercibility(oct(130))
|
collation(oct(130)) coercibility(oct(130))
|
||||||
latin1_swedish_ci 5
|
latin1_swedish_ci 6
|
||||||
select collation(conv(130,16,10)), coercibility(conv(130,16,10));
|
select collation(conv(130,16,10)), coercibility(conv(130,16,10));
|
||||||
collation(conv(130,16,10)) coercibility(conv(130,16,10))
|
collation(conv(130,16,10)) coercibility(conv(130,16,10))
|
||||||
latin1_swedish_ci 5
|
latin1_swedish_ci 6
|
||||||
select collation(hex(130)), coercibility(hex(130));
|
select collation(hex(130)), coercibility(hex(130));
|
||||||
collation(hex(130)) coercibility(hex(130))
|
collation(hex(130)) coercibility(hex(130))
|
||||||
latin1_swedish_ci 5
|
latin1_swedish_ci 6
|
||||||
select collation(char(130)), coercibility(hex(130));
|
select collation(char(130)), coercibility(hex(130));
|
||||||
collation(char(130)) coercibility(hex(130))
|
collation(char(130)) coercibility(hex(130))
|
||||||
binary 5
|
binary 6
|
||||||
select collation(format(130,10)), coercibility(format(130,10));
|
select collation(format(130,10)), coercibility(format(130,10));
|
||||||
collation(format(130,10)) coercibility(format(130,10))
|
collation(format(130,10)) coercibility(format(130,10))
|
||||||
latin1_swedish_ci 5
|
latin1_swedish_ci 6
|
||||||
select collation(lcase(_latin2'a')), coercibility(lcase(_latin2'a'));
|
select collation(lcase(_latin2'a')), coercibility(lcase(_latin2'a'));
|
||||||
collation(lcase(_latin2'a')) coercibility(lcase(_latin2'a'))
|
collation(lcase(_latin2'a')) coercibility(lcase(_latin2'a'))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(ucase(_latin2'a')), coercibility(ucase(_latin2'a'));
|
select collation(ucase(_latin2'a')), coercibility(ucase(_latin2'a'));
|
||||||
collation(ucase(_latin2'a')) coercibility(ucase(_latin2'a'))
|
collation(ucase(_latin2'a')) coercibility(ucase(_latin2'a'))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(left(_latin2'a',1)), coercibility(left(_latin2'a',1));
|
select collation(left(_latin2'a',1)), coercibility(left(_latin2'a',1));
|
||||||
collation(left(_latin2'a',1)) coercibility(left(_latin2'a',1))
|
collation(left(_latin2'a',1)) coercibility(left(_latin2'a',1))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(right(_latin2'a',1)), coercibility(right(_latin2'a',1));
|
select collation(right(_latin2'a',1)), coercibility(right(_latin2'a',1));
|
||||||
collation(right(_latin2'a',1)) coercibility(right(_latin2'a',1))
|
collation(right(_latin2'a',1)) coercibility(right(_latin2'a',1))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(substring(_latin2'a',1,1)), coercibility(substring(_latin2'a',1,1));
|
select collation(substring(_latin2'a',1,1)), coercibility(substring(_latin2'a',1,1));
|
||||||
collation(substring(_latin2'a',1,1)) coercibility(substring(_latin2'a',1,1))
|
collation(substring(_latin2'a',1,1)) coercibility(substring(_latin2'a',1,1))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(concat(_latin2'a',_latin2'b')), coercibility(concat(_latin2'a',_latin2'b'));
|
select collation(concat(_latin2'a',_latin2'b')), coercibility(concat(_latin2'a',_latin2'b'));
|
||||||
collation(concat(_latin2'a',_latin2'b')) coercibility(concat(_latin2'a',_latin2'b'))
|
collation(concat(_latin2'a',_latin2'b')) coercibility(concat(_latin2'a',_latin2'b'))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(lpad(_latin2'a',4,_latin2'b')), coercibility(lpad(_latin2'a',4,_latin2'b'));
|
select collation(lpad(_latin2'a',4,_latin2'b')), coercibility(lpad(_latin2'a',4,_latin2'b'));
|
||||||
collation(lpad(_latin2'a',4,_latin2'b')) coercibility(lpad(_latin2'a',4,_latin2'b'))
|
collation(lpad(_latin2'a',4,_latin2'b')) coercibility(lpad(_latin2'a',4,_latin2'b'))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(lpad(_latin2'a',4)), coercibility(lpad(_latin2'a',4));
|
select collation(lpad(_latin2'a',4)), coercibility(lpad(_latin2'a',4));
|
||||||
collation(lpad(_latin2'a',4)) coercibility(lpad(_latin2'a',4))
|
collation(lpad(_latin2'a',4)) coercibility(lpad(_latin2'a',4))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(rpad(_latin2'a',4,_latin2'b')), coercibility(rpad(_latin2'a',4,_latin2'b'));
|
select collation(rpad(_latin2'a',4,_latin2'b')), coercibility(rpad(_latin2'a',4,_latin2'b'));
|
||||||
collation(rpad(_latin2'a',4,_latin2'b')) coercibility(rpad(_latin2'a',4,_latin2'b'))
|
collation(rpad(_latin2'a',4,_latin2'b')) coercibility(rpad(_latin2'a',4,_latin2'b'))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(rpad(_latin2'a',4)), coercibility(rpad(_latin2'a',4));
|
select collation(rpad(_latin2'a',4)), coercibility(rpad(_latin2'a',4));
|
||||||
collation(rpad(_latin2'a',4)) coercibility(rpad(_latin2'a',4))
|
collation(rpad(_latin2'a',4)) coercibility(rpad(_latin2'a',4))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(concat_ws(_latin2'a',_latin2'b')), coercibility(concat_ws(_latin2'a',_latin2'b'));
|
select collation(concat_ws(_latin2'a',_latin2'b')), coercibility(concat_ws(_latin2'a',_latin2'b'));
|
||||||
collation(concat_ws(_latin2'a',_latin2'b')) coercibility(concat_ws(_latin2'a',_latin2'b'))
|
collation(concat_ws(_latin2'a',_latin2'b')) coercibility(concat_ws(_latin2'a',_latin2'b'))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(make_set(255,_latin2'a',_latin2'b',_latin2'c')), coercibility(make_set(255,_latin2'a',_latin2'b',_latin2'c'));
|
select collation(make_set(255,_latin2'a',_latin2'b',_latin2'c')), coercibility(make_set(255,_latin2'a',_latin2'b',_latin2'c'));
|
||||||
collation(make_set(255,_latin2'a',_latin2'b',_latin2'c')) coercibility(make_set(255,_latin2'a',_latin2'b',_latin2'c'))
|
collation(make_set(255,_latin2'a',_latin2'b',_latin2'c')) coercibility(make_set(255,_latin2'a',_latin2'b',_latin2'c'))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(export_set(255,_latin2'y',_latin2'n',_latin2' ')), coercibility(export_set(255,_latin2'y',_latin2'n',_latin2' '));
|
select collation(export_set(255,_latin2'y',_latin2'n',_latin2' ')), coercibility(export_set(255,_latin2'y',_latin2'n',_latin2' '));
|
||||||
collation(export_set(255,_latin2'y',_latin2'n',_latin2' ')) coercibility(export_set(255,_latin2'y',_latin2'n',_latin2' '))
|
collation(export_set(255,_latin2'y',_latin2'n',_latin2' ')) coercibility(export_set(255,_latin2'y',_latin2'n',_latin2' '))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(trim(_latin2' a ')), coercibility(trim(_latin2' a '));
|
select collation(trim(_latin2' a ')), coercibility(trim(_latin2' a '));
|
||||||
collation(trim(_latin2' a ')) coercibility(trim(_latin2' a '))
|
collation(trim(_latin2' a ')) coercibility(trim(_latin2' a '))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(ltrim(_latin2' a ')), coercibility(ltrim(_latin2' a '));
|
select collation(ltrim(_latin2' a ')), coercibility(ltrim(_latin2' a '));
|
||||||
collation(ltrim(_latin2' a ')) coercibility(ltrim(_latin2' a '))
|
collation(ltrim(_latin2' a ')) coercibility(ltrim(_latin2' a '))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(rtrim(_latin2' a ')), coercibility(rtrim(_latin2' a '));
|
select collation(rtrim(_latin2' a ')), coercibility(rtrim(_latin2' a '));
|
||||||
collation(rtrim(_latin2' a ')) coercibility(rtrim(_latin2' a '))
|
collation(rtrim(_latin2' a ')) coercibility(rtrim(_latin2' a '))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(trim(LEADING _latin2' ' FROM _latin2'a')), coercibility(trim(LEADING _latin2'a' FROM _latin2'a'));
|
select collation(trim(LEADING _latin2' ' FROM _latin2'a')), coercibility(trim(LEADING _latin2'a' FROM _latin2'a'));
|
||||||
collation(trim(LEADING _latin2' ' FROM _latin2'a')) coercibility(trim(LEADING _latin2'a' FROM _latin2'a'))
|
collation(trim(LEADING _latin2' ' FROM _latin2'a')) coercibility(trim(LEADING _latin2'a' FROM _latin2'a'))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(trim(TRAILING _latin2' ' FROM _latin2'a')), coercibility(trim(TRAILING _latin2'a' FROM _latin2'a'));
|
select collation(trim(TRAILING _latin2' ' FROM _latin2'a')), coercibility(trim(TRAILING _latin2'a' FROM _latin2'a'));
|
||||||
collation(trim(TRAILING _latin2' ' FROM _latin2'a')) coercibility(trim(TRAILING _latin2'a' FROM _latin2'a'))
|
collation(trim(TRAILING _latin2' ' FROM _latin2'a')) coercibility(trim(TRAILING _latin2'a' FROM _latin2'a'))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(trim(BOTH _latin2' ' FROM _latin2'a')), coercibility(trim(BOTH _latin2'a' FROM _latin2'a'));
|
select collation(trim(BOTH _latin2' ' FROM _latin2'a')), coercibility(trim(BOTH _latin2'a' FROM _latin2'a'));
|
||||||
collation(trim(BOTH _latin2' ' FROM _latin2'a')) coercibility(trim(BOTH _latin2'a' FROM _latin2'a'))
|
collation(trim(BOTH _latin2' ' FROM _latin2'a')) coercibility(trim(BOTH _latin2'a' FROM _latin2'a'))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(repeat(_latin2'a',10)), coercibility(repeat(_latin2'a',10));
|
select collation(repeat(_latin2'a',10)), coercibility(repeat(_latin2'a',10));
|
||||||
collation(repeat(_latin2'a',10)) coercibility(repeat(_latin2'a',10))
|
collation(repeat(_latin2'a',10)) coercibility(repeat(_latin2'a',10))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(reverse(_latin2'ab')), coercibility(reverse(_latin2'ab'));
|
select collation(reverse(_latin2'ab')), coercibility(reverse(_latin2'ab'));
|
||||||
collation(reverse(_latin2'ab')) coercibility(reverse(_latin2'ab'))
|
collation(reverse(_latin2'ab')) coercibility(reverse(_latin2'ab'))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(quote(_latin2'ab')), coercibility(quote(_latin2'ab'));
|
select collation(quote(_latin2'ab')), coercibility(quote(_latin2'ab'));
|
||||||
collation(quote(_latin2'ab')) coercibility(quote(_latin2'ab'))
|
collation(quote(_latin2'ab')) coercibility(quote(_latin2'ab'))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(soundex(_latin2'ab')), coercibility(soundex(_latin2'ab'));
|
select collation(soundex(_latin2'ab')), coercibility(soundex(_latin2'ab'));
|
||||||
collation(soundex(_latin2'ab')) coercibility(soundex(_latin2'ab'))
|
collation(soundex(_latin2'ab')) coercibility(soundex(_latin2'ab'))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(substring(_latin2'ab',1)), coercibility(substring(_latin2'ab',1));
|
select collation(substring(_latin2'ab',1)), coercibility(substring(_latin2'ab',1));
|
||||||
collation(substring(_latin2'ab',1)) coercibility(substring(_latin2'ab',1))
|
collation(substring(_latin2'ab',1)) coercibility(substring(_latin2'ab',1))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(insert(_latin2'abcd',2,3,_latin2'ef')), coercibility(insert(_latin2'abcd',2,3,_latin2'ef'));
|
select collation(insert(_latin2'abcd',2,3,_latin2'ef')), coercibility(insert(_latin2'abcd',2,3,_latin2'ef'));
|
||||||
collation(insert(_latin2'abcd',2,3,_latin2'ef')) coercibility(insert(_latin2'abcd',2,3,_latin2'ef'))
|
collation(insert(_latin2'abcd',2,3,_latin2'ef')) coercibility(insert(_latin2'abcd',2,3,_latin2'ef'))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(replace(_latin2'abcd',_latin2'b',_latin2'B')), coercibility(replace(_latin2'abcd',_latin2'b',_latin2'B'));
|
select collation(replace(_latin2'abcd',_latin2'b',_latin2'B')), coercibility(replace(_latin2'abcd',_latin2'b',_latin2'B'));
|
||||||
collation(replace(_latin2'abcd',_latin2'b',_latin2'B')) coercibility(replace(_latin2'abcd',_latin2'b',_latin2'B'))
|
collation(replace(_latin2'abcd',_latin2'b',_latin2'B')) coercibility(replace(_latin2'abcd',_latin2'b',_latin2'B'))
|
||||||
latin2_general_ci 5
|
latin2_general_ci 6
|
||||||
select collation(encode('abcd','ab')), coercibility(encode('abcd','ab'));
|
select collation(encode('abcd','ab')), coercibility(encode('abcd','ab'));
|
||||||
collation(encode('abcd','ab')) coercibility(encode('abcd','ab'))
|
collation(encode('abcd','ab')) coercibility(encode('abcd','ab'))
|
||||||
binary 5
|
binary 6
|
||||||
create table t1
|
create table t1
|
||||||
select
|
select
|
||||||
bin(130),
|
bin(130),
|
||||||
@ -788,7 +788,7 @@ latin2 latin2_general_ci 2
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
select charset(null), collation(null), coercibility(null);
|
select charset(null), collation(null), coercibility(null);
|
||||||
charset(null) collation(null) coercibility(null)
|
charset(null) collation(null) coercibility(null)
|
||||||
binary binary 7
|
binary binary 8
|
||||||
CREATE TABLE t1 (a int, b int);
|
CREATE TABLE t1 (a int, b int);
|
||||||
CREATE TABLE t2 (a int, b int);
|
CREATE TABLE t2 (a int, b int);
|
||||||
INSERT INTO t1 VALUES (1,1),(2,2);
|
INSERT INTO t1 VALUES (1,1),(2,2);
|
||||||
@ -804,7 +804,7 @@ a b a b
|
|||||||
1 1 NULL NULL
|
1 1 NULL NULL
|
||||||
2 2 2 2
|
2 2 2 2
|
||||||
select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b)
|
select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b)
|
||||||
where coercibility(t2.a) = 6 order by t1.a,t2.a;
|
where coercibility(t2.a) = 7 order by t1.a,t2.a;
|
||||||
a b a b
|
a b a b
|
||||||
1 1 NULL NULL
|
1 1 NULL NULL
|
||||||
2 2 2 2
|
2 2 2 2
|
||||||
|
@ -474,7 +474,7 @@ where collation(t2.a) = _utf8'binary' order by t1.a,t2.a;
|
|||||||
select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b)
|
select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b)
|
||||||
where charset(t2.a) = _utf8'binary' order by t1.a,t2.a;
|
where charset(t2.a) = _utf8'binary' order by t1.a,t2.a;
|
||||||
select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b)
|
select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b)
|
||||||
where coercibility(t2.a) = 6 order by t1.a,t2.a;
|
where coercibility(t2.a) = 7 order by t1.a,t2.a;
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -616,7 +616,7 @@ LOWER(MONTHNAME(19700101))
|
|||||||
january
|
january
|
||||||
SELECT COERCIBILITY(MONTHNAME('1970-01-01')),COERCIBILITY(DAYNAME('1970-01-01'));
|
SELECT COERCIBILITY(MONTHNAME('1970-01-01')),COERCIBILITY(DAYNAME('1970-01-01'));
|
||||||
COERCIBILITY(MONTHNAME('1970-01-01')) COERCIBILITY(DAYNAME('1970-01-01'))
|
COERCIBILITY(MONTHNAME('1970-01-01')) COERCIBILITY(DAYNAME('1970-01-01'))
|
||||||
5 5
|
6 6
|
||||||
CREATE TABLE t1 (datetime datetime, timestamp timestamp, date date, time time);
|
CREATE TABLE t1 (datetime datetime, timestamp timestamp, date date, time time);
|
||||||
INSERT INTO t1 values ("2001-01-02 03:04:05", "2002-01-02 03:04:05", "2003-01-02", "06:07:08");
|
INSERT INTO t1 values ("2001-01-02 03:04:05", "2002-01-02 03:04:05", "2003-01-02", "06:07:08");
|
||||||
SELECT * from t1;
|
SELECT * from t1;
|
||||||
|
@ -69,7 +69,7 @@ weight_string reverse
|
|||||||
1 2
|
1 2
|
||||||
select coercibility(weight_string('test'));
|
select coercibility(weight_string('test'));
|
||||||
coercibility(weight_string('test'))
|
coercibility(weight_string('test'))
|
||||||
5
|
6
|
||||||
select coercibility(weight_string('test' collate latin1_swedish_ci));
|
select coercibility(weight_string('test' collate latin1_swedish_ci));
|
||||||
coercibility(weight_string('test' collate latin1_swedish_ci))
|
coercibility(weight_string('test' collate latin1_swedish_ci))
|
||||||
0
|
0
|
||||||
|
@ -4885,7 +4885,7 @@ UNCOMPRESSED_LENGTH(POINT(1,1))
|
|||||||
0
|
0
|
||||||
SELECT COERCIBILITY(POINT(1,1));
|
SELECT COERCIBILITY(POINT(1,1));
|
||||||
COERCIBILITY(POINT(1,1))
|
COERCIBILITY(POINT(1,1))
|
||||||
5
|
6
|
||||||
SELECT ASCII(POINT(1,1));
|
SELECT ASCII(POINT(1,1));
|
||||||
ASCII(POINT(1,1))
|
ASCII(POINT(1,1))
|
||||||
0
|
0
|
||||||
|
@ -426,7 +426,7 @@ def ORD('a') 3 7 2 N 32897 0 63
|
|||||||
def CRC32('a') 3 10 10 N 32929 0 63
|
def CRC32('a') 3 10 10 N 32929 0 63
|
||||||
def UNCOMPRESSED_LENGTH(COMPRESS('a')) 3 10 1 Y 32896 0 63
|
def UNCOMPRESSED_LENGTH(COMPRESS('a')) 3 10 1 Y 32896 0 63
|
||||||
STRCMP('a','b') OCTET_LENGTH('a') CHAR_LENGTH('a') COERCIBILITY('a') ASCII('a') ORD('a') CRC32('a') UNCOMPRESSED_LENGTH(COMPRESS('a'))
|
STRCMP('a','b') OCTET_LENGTH('a') CHAR_LENGTH('a') COERCIBILITY('a') ASCII('a') ORD('a') CRC32('a') UNCOMPRESSED_LENGTH(COMPRESS('a'))
|
||||||
-1 1 1 5 97 97 3904355907 1
|
-1 1 1 6 97 97 3904355907 1
|
||||||
SELECT
|
SELECT
|
||||||
INTERVAL(2,1,2,3),
|
INTERVAL(2,1,2,3),
|
||||||
REGEXP_INSTR('a','a'),
|
REGEXP_INSTR('a','a'),
|
||||||
|
@ -5152,19 +5152,19 @@ CHARSET(CONCAT(?,_latin1'a'))
|
|||||||
latin1
|
latin1
|
||||||
EXECUTE IMMEDIATE "SELECT COERCIBILITY(?)" USING 5;
|
EXECUTE IMMEDIATE "SELECT COERCIBILITY(?)" USING 5;
|
||||||
COERCIBILITY(?)
|
COERCIBILITY(?)
|
||||||
6
|
7
|
||||||
EXECUTE IMMEDIATE "SELECT COERCIBILITY(?)" USING 5.5;
|
EXECUTE IMMEDIATE "SELECT COERCIBILITY(?)" USING 5.5;
|
||||||
COERCIBILITY(?)
|
COERCIBILITY(?)
|
||||||
6
|
7
|
||||||
EXECUTE IMMEDIATE "SELECT COERCIBILITY(?)" USING 5.5e0;
|
EXECUTE IMMEDIATE "SELECT COERCIBILITY(?)" USING 5.5e0;
|
||||||
COERCIBILITY(?)
|
COERCIBILITY(?)
|
||||||
6
|
7
|
||||||
EXECUTE IMMEDIATE "SELECT COERCIBILITY(?)" USING TIME'10:20:30';
|
EXECUTE IMMEDIATE "SELECT COERCIBILITY(?)" USING TIME'10:20:30';
|
||||||
COERCIBILITY(?)
|
COERCIBILITY(?)
|
||||||
6
|
7
|
||||||
EXECUTE IMMEDIATE "SELECT COERCIBILITY(?)" USING TIMESTAMP'2001-01-01 10:20:30';
|
EXECUTE IMMEDIATE "SELECT COERCIBILITY(?)" USING TIMESTAMP'2001-01-01 10:20:30';
|
||||||
COERCIBILITY(?)
|
COERCIBILITY(?)
|
||||||
6
|
7
|
||||||
#
|
#
|
||||||
# MDEV-14435 Different UNSIGNED flag of out user variable for YEAR parameter for direct vs prepared CALL
|
# MDEV-14435 Different UNSIGNED flag of out user variable for YEAR parameter for direct vs prepared CALL
|
||||||
#
|
#
|
||||||
|
@ -520,7 +520,7 @@ charset(load_file('../../std_data/words.dat')),
|
|||||||
collation(load_file('../../std_data/words.dat')),
|
collation(load_file('../../std_data/words.dat')),
|
||||||
coercibility(load_file('../../std_data/words.dat'));
|
coercibility(load_file('../../std_data/words.dat'));
|
||||||
charset(load_file('../../std_data/words.dat')) collation(load_file('../../std_data/words.dat')) coercibility(load_file('../../std_data/words.dat'))
|
charset(load_file('../../std_data/words.dat')) collation(load_file('../../std_data/words.dat')) coercibility(load_file('../../std_data/words.dat'))
|
||||||
binary binary 5
|
binary binary 6
|
||||||
explain extended select
|
explain extended select
|
||||||
charset(load_file('MYSQLTEST_VARDIR/std_data/words.dat')),
|
charset(load_file('MYSQLTEST_VARDIR/std_data/words.dat')),
|
||||||
collation(load_file('MYSQLTEST_VARDIR/std_data/words.dat')),
|
collation(load_file('MYSQLTEST_VARDIR/std_data/words.dat')),
|
||||||
|
@ -162,13 +162,13 @@ collation(@a:=_latin2'test')
|
|||||||
latin2_general_ci
|
latin2_general_ci
|
||||||
select coercibility(@a:=_latin2'test');
|
select coercibility(@a:=_latin2'test');
|
||||||
coercibility(@a:=_latin2'test')
|
coercibility(@a:=_latin2'test')
|
||||||
5
|
6
|
||||||
select collation(@a:=_latin2'test' collate latin2_bin);
|
select collation(@a:=_latin2'test' collate latin2_bin);
|
||||||
collation(@a:=_latin2'test' collate latin2_bin)
|
collation(@a:=_latin2'test' collate latin2_bin)
|
||||||
latin2_bin
|
latin2_bin
|
||||||
select coercibility(@a:=_latin2'test' collate latin2_bin);
|
select coercibility(@a:=_latin2'test' collate latin2_bin);
|
||||||
coercibility(@a:=_latin2'test' collate latin2_bin)
|
coercibility(@a:=_latin2'test' collate latin2_bin)
|
||||||
5
|
6
|
||||||
select (@a:=_latin2'test' collate latin2_bin) = _latin2'TEST';
|
select (@a:=_latin2'test' collate latin2_bin) = _latin2'TEST';
|
||||||
(@a:=_latin2'test' collate latin2_bin) = _latin2'TEST'
|
(@a:=_latin2'test' collate latin2_bin) = _latin2'TEST'
|
||||||
0
|
0
|
||||||
@ -188,7 +188,7 @@ NULL 5
|
|||||||
set @v1=null, @v2=1, @v3=1.1, @v4=now();
|
set @v1=null, @v2=1, @v3=1.1, @v4=now();
|
||||||
select coercibility(@v1),coercibility(@v2),coercibility(@v3),coercibility(@v4);
|
select coercibility(@v1),coercibility(@v2),coercibility(@v3),coercibility(@v4);
|
||||||
coercibility(@v1) coercibility(@v2) coercibility(@v3) coercibility(@v4)
|
coercibility(@v1) coercibility(@v2) coercibility(@v3) coercibility(@v4)
|
||||||
5 6 6 5
|
5 7 7 5
|
||||||
set session @honk=99;
|
set session @honk=99;
|
||||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '@honk=99' at line 1
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '@honk=99' at line 1
|
||||||
select @@local.max_allowed_packet;
|
select @@local.max_allowed_packet;
|
||||||
|
@ -5694,7 +5694,7 @@ bool Item_func_get_user_var::fix_length_and_dec(THD *thd)
|
|||||||
set_handler(&type_handler_slonglong);
|
set_handler(&type_handler_slonglong);
|
||||||
break;
|
break;
|
||||||
case STRING_RESULT:
|
case STRING_RESULT:
|
||||||
collation.set(m_var_entry->charset(), DERIVATION_COERCIBLE);
|
collation.set(m_var_entry->charset(), DERIVATION_USERVAR);
|
||||||
max_length= MAX_BLOB_WIDTH - 1;
|
max_length= MAX_BLOB_WIDTH - 1;
|
||||||
set_handler(&type_handler_long_blob);
|
set_handler(&type_handler_long_blob);
|
||||||
if (m_var_entry->type_handler()->field_type() == MYSQL_TYPE_GEOMETRY)
|
if (m_var_entry->type_handler()->field_type() == MYSQL_TYPE_GEOMETRY)
|
||||||
@ -5714,7 +5714,7 @@ bool Item_func_get_user_var::fix_length_and_dec(THD *thd)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
collation.set(&my_charset_bin, DERIVATION_COERCIBLE);
|
collation.set(&my_charset_bin, DERIVATION_USERVAR);
|
||||||
null_value= 1;
|
null_value= 1;
|
||||||
set_handler(&type_handler_long_blob);
|
set_handler(&type_handler_long_blob);
|
||||||
max_length= MAX_BLOB_WIDTH;
|
max_length= MAX_BLOB_WIDTH;
|
||||||
|
@ -3018,7 +3018,7 @@ static inline my_repertoire_t &operator|=(my_repertoire_t &a,
|
|||||||
|
|
||||||
enum Derivation
|
enum Derivation
|
||||||
{
|
{
|
||||||
DERIVATION_IGNORABLE= 7, // Explicit NULL
|
DERIVATION_IGNORABLE= 8, // Explicit NULL
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Explicit or implicit conversion from numeric/temporal data to string:
|
Explicit or implicit conversion from numeric/temporal data to string:
|
||||||
@ -3026,17 +3026,20 @@ enum Derivation
|
|||||||
- Numeric user variables
|
- Numeric user variables
|
||||||
- CAST(numeric_or_temporal_expr AS CHAR)
|
- CAST(numeric_or_temporal_expr AS CHAR)
|
||||||
*/
|
*/
|
||||||
DERIVATION_NUMERIC= 6,
|
DERIVATION_NUMERIC= 7,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
- String literals
|
- String literals
|
||||||
|
*/
|
||||||
|
DERIVATION_COERCIBLE= 6,
|
||||||
|
|
||||||
|
/*
|
||||||
- String user variables
|
- String user variables
|
||||||
*/
|
*/
|
||||||
DERIVATION_COERCIBLE= 5,
|
DERIVATION_USERVAR= 5,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
String cast and conversion functions:
|
String cast and conversion functions:
|
||||||
- BINARY(expr)
|
|
||||||
- CAST(string_expr AS CHAR)
|
- CAST(string_expr AS CHAR)
|
||||||
- CONVERT(expr USING cs)
|
- CONVERT(expr USING cs)
|
||||||
*/
|
*/
|
||||||
@ -3162,6 +3165,7 @@ public:
|
|||||||
case DERIVATION_NUMERIC: return "NUMERIC";
|
case DERIVATION_NUMERIC: return "NUMERIC";
|
||||||
case DERIVATION_IGNORABLE: return "IGNORABLE";
|
case DERIVATION_IGNORABLE: return "IGNORABLE";
|
||||||
case DERIVATION_COERCIBLE: return "COERCIBLE";
|
case DERIVATION_COERCIBLE: return "COERCIBLE";
|
||||||
|
case DERIVATION_USERVAR: return "USERVAR";
|
||||||
case DERIVATION_CAST: return "CAST";
|
case DERIVATION_CAST: return "CAST";
|
||||||
case DERIVATION_IMPLICIT: return "IMPLICIT";
|
case DERIVATION_IMPLICIT: return "IMPLICIT";
|
||||||
case DERIVATION_SYSCONST: return "SYSCONST";
|
case DERIVATION_SYSCONST: return "SYSCONST";
|
||||||
|
Reference in New Issue
Block a user