Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.2(EOL), 10.3(EOL), 10.4(EOL), 10.5, 10.6, 10.7(EOL), 10.8(EOL), 10.9(EOL)
-
None
Description
If I specify mutiple conflicting COLLATE clauses on the column level, no error is raised:
CREATE OR REPLACE TABLE t1 (a CHAR(10) COLLATE latin1_swedish_ci NOT NULL COLLATE latin1_bin); |
SHOW CREATE TABLE t1; |
+-------+----------------------------------------------------------------------------------------------------------------------------+
|
| Table | Create Table |
|
+-------+----------------------------------------------------------------------------------------------------------------------------+
|
| t1 | CREATE TABLE `t1` (
|
`a` char(10) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
|
+-------+----------------------------------------------------------------------------------------------------------------------------+
|
Notice, the first COLLATE was ignored, the last COLLATE was used.
The same problem is repeatable on the table level. See MDEV-28117.
Attachments
Issue Links
- relates to
-
MDEV-27690 Crash on `CHARACTER SET csname COLLATE DEFAULT` in column definition
-
- Closed
-
-
MDEV-27743 Remove Lex::charset
-
- Closed
-
-
MDEV-27782 Wrong columns when using table level `CHARACTER SET utf8mb4 COLLATE DEFAULT`
-
- Closed
-
-
MDEV-27853 Wrong data type on column `COLLATE DEFAULT` and table `COLLATE some_non_default_collation`
-
- Closed
-
-
MDEV-28117 Multiple conflicting table COLLATE clauses are not rejected
-
- Closed
-
Activity
Field | Original Value | New Value |
---|---|---|
Link |
This issue relates to |
Link |
This issue relates to |
Link |
This issue relates to |
Link |
This issue relates to |
Summary | Multiple conflicting COLLATE clauses are not rejected | Multiple conflicting column COLLATE clauses are not rejected |
Link |
This issue relates to |
Description |
If I specify mutiple conflicting COLLATE clauses on the column level, no error is raised:
{code:sql} CREATE OR REPLACE TABLE t1 (a CHAR(10) COLLATE latin1_swedish_ci NOT NULL COLLATE latin1_bin); SHOW CREATE TABLE t1; {code} {noformat} +-------+----------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------+----------------------------------------------------------------------------------------------------------------------------+ | t1 | CREATE TABLE `t1` ( `a` char(10) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +-------+----------------------------------------------------------------------------------------------------------------------------+ {noformat} Notice, the first COLLATE was ignored, the last COLLATE was used. The same problem is repeatable on the table level: {code:sql} CREATE OR REPLACE TABLE t1 (a CHAR(10)) COLLATE latin1_swedish_ci COLLATE latin1_bin; SHOW CREATE TABLE t1; {code} {noformat} +-------+------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------+------------------------------------------------------------------------------------------------------------------------------+ | t1 | CREATE TABLE `t1` ( `a` char(10) COLLATE latin1_bin DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_bin | +-------+------------------------------------------------------------------------------------------------------------------------------+ {noformat} |
If I specify mutiple conflicting COLLATE clauses on the column level, no error is raised:
{code:sql} CREATE OR REPLACE TABLE t1 (a CHAR(10) COLLATE latin1_swedish_ci NOT NULL COLLATE latin1_bin); SHOW CREATE TABLE t1; {code} {noformat} +-------+----------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------+----------------------------------------------------------------------------------------------------------------------------+ | t1 | CREATE TABLE `t1` ( `a` char(10) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +-------+----------------------------------------------------------------------------------------------------------------------------+ {noformat} Notice, the first COLLATE was ignored, the last COLLATE was used. The same problem is repeatable on the table level. See |
Fix Version/s | 10.9.0 [ 27113 ] | |
Fix Version/s | 10.9 [ 26905 ] | |
Resolution | Fixed [ 1 ] | |
Status | Open [ 1 ] | Closed [ 6 ] |