mirror of
https://github.com/MariaDB/server.git
synced 2025-08-09 22:24:09 +03:00
This patch changes the main name of 3 byte character set from utf8 to utf8mb3. New old_mode UTF8_IS_UTF8MB3 is added and set TRUE by default, so that utf8 would mean utf8mb3. If not set, utf8 would mean utf8mb4.
182 lines
4.7 KiB
Plaintext
182 lines
4.7 KiB
Plaintext
USE test;
|
|
#
|
|
# MDEV-14013 : sql_mode=EMPTY_STRING_IS_NULL
|
|
#
|
|
set @mode='ORACLE,EMPTY_STRING_IS_NULL';
|
|
SET SESSION character_set_connection=latin2;
|
|
SET SESSION character_set_client=cp1250;
|
|
#
|
|
# Test litteral
|
|
#
|
|
SET sql_mode=@mode;
|
|
select @@sql_mode;
|
|
@@sql_mode
|
|
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,EMPTY_STRING_IS_NULL,SIMULTANEOUS_ASSIGNMENT
|
|
SELECT '',CHARSET(''), null, CHARSET(null), CAST(null as char(10)), CHARSET(CAST(null as char(10))), 'x', CHARSET('x');
|
|
NULL CHARSET('') NULL CHARSET(null) CAST(null as char(10)) CHARSET(CAST(null as char(10))) x CHARSET('x')
|
|
NULL latin2 NULL binary NULL latin2 x latin2
|
|
SELECT CHARSET(NULLIF('','')),NULLIF('','');
|
|
CHARSET(NULLIF('','')) NULLIF('','')
|
|
latin2 NULL
|
|
SET sql_mode=default;
|
|
SELECT '',CHARSET(''), null, CHARSET(null), CAST(null as char(10)), CHARSET(CAST(null as char(10))), 'x', CHARSET('x');
|
|
CHARSET('') NULL CHARSET(null) CAST(null as char(10)) CHARSET(CAST(null as char(10))) x CHARSET('x')
|
|
latin2 NULL binary NULL latin2 x latin2
|
|
SELECT CHARSET(NULLIF('','')),NULLIF('','');
|
|
CHARSET(NULLIF('','')) NULLIF('','')
|
|
latin2 NULL
|
|
#
|
|
# Test NCHAR litteral
|
|
#
|
|
SET sql_mode=@mode;
|
|
SELECT N'',CHARSET(N''), N'x', CHARSET(N'x');
|
|
NULL CHARSET(N'') x CHARSET(N'x')
|
|
NULL utf8mb3 x utf8mb3
|
|
SELECT CHARSET(NULLIF(N'',N'')),NULLIF(N'',N'');
|
|
CHARSET(NULLIF(N'',N'')) NULLIF(N'',N'')
|
|
utf8mb3 NULL
|
|
SET sql_mode=default;
|
|
SELECT N'',CHARSET(N''), N'x', CHARSET(N'x');
|
|
CHARSET(N'') x CHARSET(N'x')
|
|
utf8mb3 x utf8mb3
|
|
SELECT CHARSET(NULLIF(N'',N'')),NULLIF(N'',N'');
|
|
CHARSET(NULLIF(N'',N'')) NULLIF(N'',N'')
|
|
utf8mb3 NULL
|
|
#
|
|
# Test CHARSET prefix litteral
|
|
#
|
|
SET sql_mode=@mode;
|
|
SELECT _cp1250 '',CHARSET(_cp1250 ''), _cp1250 'x', CHARSET(_cp1250 'x');
|
|
NULL CHARSET(_cp1250 '') x CHARSET(_cp1250 'x')
|
|
NULL cp1250 x cp1250
|
|
SELECT CHARSET(NULLIF(_cp1250 '',_cp1250 '')),NULLIF(_cp1250 '',_cp1250 '');
|
|
CHARSET(NULLIF(_cp1250 '',_cp1250 '')) NULLIF(_cp1250 '',_cp1250 '')
|
|
cp1250 NULL
|
|
SET sql_mode=default;
|
|
SELECT _cp1250 '',CHARSET(_cp1250 ''), _cp1250 'x', CHARSET(_cp1250 'x');
|
|
CHARSET(_cp1250 '') x CHARSET(_cp1250 'x')
|
|
cp1250 x cp1250
|
|
SELECT CHARSET(NULLIF(_cp1250 '',_cp1250 '')),NULLIF(_cp1250 '',_cp1250 '');
|
|
CHARSET(NULLIF(_cp1250 '',_cp1250 '')) NULLIF(_cp1250 '',_cp1250 '')
|
|
cp1250 NULL
|
|
SET sql_mode=@mode;
|
|
#
|
|
# Test litteral concat
|
|
#
|
|
SELECT 'a' 'b';
|
|
a
|
|
ab
|
|
SELECT 'a' '';
|
|
a
|
|
a
|
|
SELECT '' 'b';
|
|
b
|
|
b
|
|
SELECT '' '';
|
|
NULL
|
|
NULL
|
|
SELECT '' 'b' 'c';
|
|
b
|
|
bc
|
|
SELECT '' '' 'c';
|
|
c
|
|
c
|
|
SELECT 'a' '' 'c';
|
|
a
|
|
ac
|
|
SELECT 'a' '' '';
|
|
a
|
|
a
|
|
SELECT '' '' '';
|
|
NULL
|
|
NULL
|
|
SELECT '' '' '',CHARSET('' '' '');
|
|
NULL CHARSET('' '' '')
|
|
NULL latin2
|
|
SELECT _latin1'' '' '',CHARSET(_latin1'' '' '');
|
|
NULL CHARSET(_latin1'' '' '')
|
|
NULL latin1
|
|
SELECT N'' '' '',CHARSET(N'' '' '');
|
|
NULL CHARSET(N'' '' '')
|
|
NULL utf8mb3
|
|
#
|
|
# UNION - implicit group by
|
|
#
|
|
SELECT 1, null
|
|
UNION
|
|
SELECT 1 , ''
|
|
ORDER BY 1;
|
|
1 NULL
|
|
1 NULL
|
|
SELECT 1, null
|
|
UNION
|
|
SELECT 1 , N''
|
|
ORDER BY 1;
|
|
1 NULL
|
|
1 NULL
|
|
SELECT 1, null
|
|
UNION
|
|
SELECT 1 , _cp1250 ''
|
|
ORDER BY 1;
|
|
1 NULL
|
|
1 NULL
|
|
SELECT NULLIF(_cp1250 '',_cp1250 '')
|
|
UNION
|
|
SELECT NULLIF(N'',N'');
|
|
NULLIF(_cp1250 '',_cp1250 '')
|
|
NULL
|
|
SELECT 1 , _latin2 ''
|
|
UNION
|
|
SELECT 1 , _cp1250 '';
|
|
ERROR HY000: Illegal mix of collations (latin2_general_ci,IGNORABLE) and (cp1250_general_ci,IGNORABLE) for operation 'UNION'
|
|
SELECT 1, null
|
|
UNION
|
|
SELECT 1 , ''
|
|
UNION
|
|
SELECT 1 , N'';
|
|
1 NULL
|
|
1 NULL
|
|
CREATE TABLE t1 (c1 INT,c2 VARCHAR(10));
|
|
INSERT INTO t1 VALUES (1,'one');
|
|
INSERT INTO t1 VALUES (1,'');
|
|
INSERT INTO t1 VALUES (1,null);
|
|
#
|
|
# Test in a view
|
|
#
|
|
CREATE VIEW v1
|
|
AS SELECT c1, c2
|
|
FROM t1
|
|
UNION
|
|
SELECT c1 , ''
|
|
FROM t1
|
|
ORDER BY 1,2;
|
|
SELECT * FROM v1;
|
|
c1 c2
|
|
1 NULL
|
|
1 one
|
|
SHOW CREATE VIEW v1;
|
|
View Create View character_set_client collation_connection
|
|
v1 CREATE VIEW "v1" AS select "t1"."c1" AS "c1","t1"."c2" AS "c2" from "t1" union select "t1"."c1" AS "c1",NULL AS "NULL" from "t1" order by 1,2 cp1250 latin2_general_ci
|
|
DROP VIEW v1;
|
|
DROP TABLE t1;
|
|
EXPLAIN EXTENDED SELECT '';
|
|
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
|
|
Warnings:
|
|
Note 1003 select NULL AS "NULL"
|
|
EXPLAIN EXTENDED SELECT _latin1'';
|
|
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
|
|
Warnings:
|
|
Note 1003 select NULL AS "NULL"
|
|
EXPLAIN EXTENDED SELECT N'';
|
|
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
|
|
Warnings:
|
|
Note 1003 select NULL AS "NULL"
|
|
EXPLAIN EXTENDED SELECT '' '';
|
|
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
|
|
Warnings:
|
|
Note 1003 select NULL AS "NULL"
|