MDEV-28767 Collation "binary" is not accepted for databases, tables, columns
MariaDB in a COLLATE clause supported 'binary' only as an identifier: COLLATE `binary` Fixing the parser to understand 'binary' as a keyword: COLLATE binary This is for MySQL compatibility.
This commit is contained in:
parent
cca85eb16e
commit
e60fd6c204
@ -3454,3 +3454,51 @@ DROP TABLE t1;
|
|||||||
#
|
#
|
||||||
# End of 10.5 tests
|
# End of 10.5 tests
|
||||||
#
|
#
|
||||||
|
#
|
||||||
|
# Start of 10.11 tests
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# MDEV-28767 Collation "binary" is not accepted for databases, tables, columns
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a CHAR(1) COLLATE binary);
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` binary(1) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a enum('a') CHARACTER SET binary COLLATE binary DEFAULT NULL);
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` enum('a') CHARACTER SET binary DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a enum('a') COLLATE binary DEFAULT NULL);
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` enum('a') CHARACTER SET binary DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a CHAR(1) CHARACTER SET latin1 COLLATE binary);
|
||||||
|
ERROR 42000: COLLATION 'binary' is not valid for CHARACTER SET 'latin1'
|
||||||
|
CREATE TABLE t1 (a CHAR(10)) COLLATE binary;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` binary(10) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=binary
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a CHAR(10)) CHARACTER SET latin1 COLLATE binary;
|
||||||
|
ERROR 42000: COLLATION 'binary' is not valid for CHARACTER SET 'latin1'
|
||||||
|
CREATE DATABASE db1 COLLATE binary;
|
||||||
|
SHOW CREATE DATABASE db1;
|
||||||
|
Database Create Database
|
||||||
|
db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET binary */
|
||||||
|
DROP DATABASE db1;
|
||||||
|
CREATE DATABASE db1 CHARACTER SET latin1 COLLATE binary;
|
||||||
|
ERROR 42000: COLLATION 'binary' is not valid for CHARACTER SET 'latin1'
|
||||||
|
#
|
||||||
|
# End of 10.11 tests
|
||||||
|
#
|
||||||
|
@ -294,3 +294,50 @@ DROP TABLE t1;
|
|||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.5 tests
|
--echo # End of 10.5 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Start of 10.11 tests
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-28767 Collation "binary" is not accepted for databases, tables, columns
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
# Column level
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a CHAR(1) COLLATE binary);
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a enum('a') CHARACTER SET binary COLLATE binary DEFAULT NULL);
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a enum('a') COLLATE binary DEFAULT NULL);
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--error ER_COLLATION_CHARSET_MISMATCH
|
||||||
|
CREATE TABLE t1 (a CHAR(1) CHARACTER SET latin1 COLLATE binary);
|
||||||
|
|
||||||
|
|
||||||
|
# Table level
|
||||||
|
CREATE TABLE t1 (a CHAR(10)) COLLATE binary;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--error ER_COLLATION_CHARSET_MISMATCH
|
||||||
|
CREATE TABLE t1 (a CHAR(10)) CHARACTER SET latin1 COLLATE binary;
|
||||||
|
|
||||||
|
|
||||||
|
# Database level
|
||||||
|
CREATE DATABASE db1 COLLATE binary;
|
||||||
|
SHOW CREATE DATABASE db1;
|
||||||
|
DROP DATABASE db1;
|
||||||
|
|
||||||
|
--error ER_COLLATION_CHARSET_MISMATCH
|
||||||
|
CREATE DATABASE db1 CHARACTER SET latin1 COLLATE binary;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # End of 10.11 tests
|
||||||
|
--echo #
|
||||||
|
@ -6594,6 +6594,11 @@ collation_name:
|
|||||||
collation_name_or_default:
|
collation_name_or_default:
|
||||||
collation_name { $$=$1; }
|
collation_name { $$=$1; }
|
||||||
| DEFAULT { $$.set_collate_default(); }
|
| DEFAULT { $$.set_collate_default(); }
|
||||||
|
| BINARY // MySQL compatibility
|
||||||
|
{
|
||||||
|
const Lex_exact_collation bin(&my_charset_bin);
|
||||||
|
$$= Lex_extended_collation(bin);
|
||||||
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
opt_default:
|
opt_default:
|
||||||
@ -6654,6 +6659,20 @@ binary:
|
|||||||
{
|
{
|
||||||
$$.set_collate_default();
|
$$.set_collate_default();
|
||||||
}
|
}
|
||||||
|
| charset_or_alias COLLATE_SYM BINARY // MySQL compatibility
|
||||||
|
{
|
||||||
|
const Lex_exact_collation bin(&my_charset_bin);
|
||||||
|
Lex_extended_collation tmp(bin);
|
||||||
|
if (tmp.merge_exact_charset(Lex_exact_charset($1)))
|
||||||
|
MYSQL_YYABORT;
|
||||||
|
$$= Lex_exact_charset_extended_collation_attrs(tmp);
|
||||||
|
}
|
||||||
|
| COLLATE_SYM BINARY // MySQL compatibility
|
||||||
|
{
|
||||||
|
const Lex_exact_collation bin(&my_charset_bin);
|
||||||
|
const Lex_extended_collation tmp(bin);
|
||||||
|
$$= Lex_exact_charset_extended_collation_attrs(tmp);
|
||||||
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
opt_bin_mod:
|
opt_bin_mod:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user