Details
-
Task
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
None
Description
We want to pass more structures through the Bison stack instead of using Lex members.
In particular, we want to get rid of Lex->charset.
Reasons:
- The current implementation is hard to follow and change. It has caused a few bugs already. Passing data through the bison stack is much easier to follow!
- We'll have contextually typed collations soon:
-- Use the xxx_uca1400_as_ci collation of the column implicit character set:
CREATE TABLE t1 (a CHAR(10) COLLATE uca1400_as_ci);
The above will resolve to:
- COLLATE utf8mb4_uca1400_as_ci (in case if the column character set is later resolved to utf8mb4)
- COLLATE utf16_uca1400_as_ci (in case if the column character set is later resolved to utf16
- and so on
So the code logic must be simlified before this change.
This change will also fix a few problems:
Attachments
Issue Links
- blocks
-
MDEV-27009 Add UCA-14.0.0 collations
-
- Closed
-
- causes
-
MDEV-30681 SIGFPE / UBSAN runtime error: division by zero in String::needs_conversion on ALTER
-
- Closed
-
-
MDEV-30805 SIGSEGV in my_convert and UBSAN: member access within null pointer of type 'const struct MY_CHARSET_HANDLER' in my_convert
-
- Closed
-
-
MDEV-34288 SET NAMES DEFAULT crashes `mariadbd --collation-server=utf8mb4_unicode_ci`
-
- Closed
-
- relates to
-
MDEV-27690 Crash on `CHARACTER SET csname COLLATE DEFAULT` in column definition
-
- 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-28067 Multiple conflicting column COLLATE clauses are not rejected
-
- Closed
-
-
MDEV-28118 Wrong collation of `CAST(.. AS CHAR COLLATE DEFAULT)`
-
- Closed
-
-
MDEV-28119 Wrong column collation on MODIFY + CONVERT
-
- 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 |
Status | Open [ 1 ] | In Progress [ 3 ] |
Assignee | Alexander Barkov [ bar ] | Sergei Golubchik [ serg ] |
Status | In Progress [ 3 ] | In Review [ 10002 ] |
Assignee | Sergei Golubchik [ serg ] | Alexander Barkov [ bar ] |
Status | In Review [ 10002 ] | Stalled [ 10000 ] |
Link |
This issue relates to |
Link |
This issue relates to |
Link |
This issue relates to |
Description |
We want to pass more structures through the Bison stack instead of using Lex members.
In particular, we want to get rid of Lex->charset. Reasons: - The current implementation is hard to follow and change. It has caused a few bugs already. Passing data through the bison stack is much easier to follow! - We'll have contextually typed collations soon: {code:sql} -- Use the xxx_uca1400_as_ci collation of the column implicit character set: CREATE TABLE t1 (a CHAR(10) COLLATE uca1400_as_ci); {code} The above will resolve to: - {{COLLATE utf8mb4_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf8mb4}}) - {{COLLATE utf16_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf16}} - and so on So the code logic must be simlified before this change. |
We want to pass more structures through the Bison stack instead of using Lex members.
In particular, we want to get rid of Lex->charset. Reasons: - The current implementation is hard to follow and change. It has caused a few bugs already. Passing data through the bison stack is much easier to follow! - We'll have contextually typed collations soon: {code:sql} -- Use the xxx_uca1400_as_ci collation of the column implicit character set: CREATE TABLE t1 (a CHAR(10) COLLATE uca1400_as_ci); {code} The above will resolve to: - {{COLLATE utf8mb4_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf8mb4}}) - {{COLLATE utf16_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf16}} - and so on So the code logic must be simlified before this change. This change will also fix a few problems: - - - |
Description |
We want to pass more structures through the Bison stack instead of using Lex members.
In particular, we want to get rid of Lex->charset. Reasons: - The current implementation is hard to follow and change. It has caused a few bugs already. Passing data through the bison stack is much easier to follow! - We'll have contextually typed collations soon: {code:sql} -- Use the xxx_uca1400_as_ci collation of the column implicit character set: CREATE TABLE t1 (a CHAR(10) COLLATE uca1400_as_ci); {code} The above will resolve to: - {{COLLATE utf8mb4_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf8mb4}}) - {{COLLATE utf16_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf16}} - and so on So the code logic must be simlified before this change. This change will also fix a few problems: - - - |
We want to pass more structures through the Bison stack instead of using Lex members.
In particular, we want to get rid of Lex->charset. Reasons: - The current implementation is hard to follow and change. It has caused a few bugs already. Passing data through the bison stack is much easier to follow! - We'll have contextually typed collations soon: {code:sql} -- Use the xxx_uca1400_as_ci collation of the column implicit character set: CREATE TABLE t1 (a CHAR(10) COLLATE uca1400_as_ci); {code} The above will resolve to: - {{COLLATE utf8mb4_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf8mb4}}) - {{COLLATE utf16_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf16}} - and so on So the code logic must be simlified before this change. This change will also fix a few problems: - - - - |
Description |
We want to pass more structures through the Bison stack instead of using Lex members.
In particular, we want to get rid of Lex->charset. Reasons: - The current implementation is hard to follow and change. It has caused a few bugs already. Passing data through the bison stack is much easier to follow! - We'll have contextually typed collations soon: {code:sql} -- Use the xxx_uca1400_as_ci collation of the column implicit character set: CREATE TABLE t1 (a CHAR(10) COLLATE uca1400_as_ci); {code} The above will resolve to: - {{COLLATE utf8mb4_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf8mb4}}) - {{COLLATE utf16_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf16}} - and so on So the code logic must be simlified before this change. This change will also fix a few problems: - - - - |
We want to pass more structures through the Bison stack instead of using Lex members.
In particular, we want to get rid of Lex->charset. Reasons: - The current implementation is hard to follow and change. It has caused a few bugs already. Passing data through the bison stack is much easier to follow! - We'll have contextually typed collations soon: {code:sql} -- Use the xxx_uca1400_as_ci collation of the column implicit character set: CREATE TABLE t1 (a CHAR(10) COLLATE uca1400_as_ci); {code} The above will resolve to: - {{COLLATE utf8mb4_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf8mb4}}) - {{COLLATE utf16_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf16}} - and so on So the code logic must be simlified before this change. This change will also fix a few problems: - - - - |
Link |
This issue relates to |
Description |
We want to pass more structures through the Bison stack instead of using Lex members.
In particular, we want to get rid of Lex->charset. Reasons: - The current implementation is hard to follow and change. It has caused a few bugs already. Passing data through the bison stack is much easier to follow! - We'll have contextually typed collations soon: {code:sql} -- Use the xxx_uca1400_as_ci collation of the column implicit character set: CREATE TABLE t1 (a CHAR(10) COLLATE uca1400_as_ci); {code} The above will resolve to: - {{COLLATE utf8mb4_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf8mb4}}) - {{COLLATE utf16_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf16}} - and so on So the code logic must be simlified before this change. This change will also fix a few problems: - - - - |
We want to pass more structures through the Bison stack instead of using Lex members.
In particular, we want to get rid of Lex->charset. Reasons: - The current implementation is hard to follow and change. It has caused a few bugs already. Passing data through the bison stack is much easier to follow! - We'll have contextually typed collations soon: {code:sql} -- Use the xxx_uca1400_as_ci collation of the column implicit character set: CREATE TABLE t1 (a CHAR(10) COLLATE uca1400_as_ci); {code} The above will resolve to: - {{COLLATE utf8mb4_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf8mb4}}) - {{COLLATE utf16_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf16}} - and so on So the code logic must be simlified before this change. This change will also fix a few problems: - - - |
Link |
This issue relates to |
Description |
We want to pass more structures through the Bison stack instead of using Lex members.
In particular, we want to get rid of Lex->charset. Reasons: - The current implementation is hard to follow and change. It has caused a few bugs already. Passing data through the bison stack is much easier to follow! - We'll have contextually typed collations soon: {code:sql} -- Use the xxx_uca1400_as_ci collation of the column implicit character set: CREATE TABLE t1 (a CHAR(10) COLLATE uca1400_as_ci); {code} The above will resolve to: - {{COLLATE utf8mb4_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf8mb4}}) - {{COLLATE utf16_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf16}} - and so on So the code logic must be simlified before this change. This change will also fix a few problems: - - - |
We want to pass more structures through the Bison stack instead of using Lex members.
In particular, we want to get rid of Lex->charset. Reasons: - The current implementation is hard to follow and change. It has caused a few bugs already. Passing data through the bison stack is much easier to follow! - We'll have contextually typed collations soon: {code:sql} -- Use the xxx_uca1400_as_ci collation of the column implicit character set: CREATE TABLE t1 (a CHAR(10) COLLATE uca1400_as_ci); {code} The above will resolve to: - {{COLLATE utf8mb4_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf8mb4}}) - {{COLLATE utf16_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf16}} - and so on So the code logic must be simlified before this change. This change will also fix a few problems: - - - - |
Description |
We want to pass more structures through the Bison stack instead of using Lex members.
In particular, we want to get rid of Lex->charset. Reasons: - The current implementation is hard to follow and change. It has caused a few bugs already. Passing data through the bison stack is much easier to follow! - We'll have contextually typed collations soon: {code:sql} -- Use the xxx_uca1400_as_ci collation of the column implicit character set: CREATE TABLE t1 (a CHAR(10) COLLATE uca1400_as_ci); {code} The above will resolve to: - {{COLLATE utf8mb4_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf8mb4}}) - {{COLLATE utf16_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf16}} - and so on So the code logic must be simlified before this change. This change will also fix a few problems: - - - - |
We want to pass more structures through the Bison stack instead of using Lex members.
In particular, we want to get rid of Lex->charset. Reasons: - The current implementation is hard to follow and change. It has caused a few bugs already. Passing data through the bison stack is much easier to follow! - We'll have contextually typed collations soon: {code:sql} -- Use the xxx_uca1400_as_ci collation of the column implicit character set: CREATE TABLE t1 (a CHAR(10) COLLATE uca1400_as_ci); {code} The above will resolve to: - {{COLLATE utf8mb4_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf8mb4}}) - {{COLLATE utf16_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf16}} - and so on So the code logic must be simlified before this change. This change will also fix a few problems: - - - - |
Link |
This issue relates to |
Description |
We want to pass more structures through the Bison stack instead of using Lex members.
In particular, we want to get rid of Lex->charset. Reasons: - The current implementation is hard to follow and change. It has caused a few bugs already. Passing data through the bison stack is much easier to follow! - We'll have contextually typed collations soon: {code:sql} -- Use the xxx_uca1400_as_ci collation of the column implicit character set: CREATE TABLE t1 (a CHAR(10) COLLATE uca1400_as_ci); {code} The above will resolve to: - {{COLLATE utf8mb4_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf8mb4}}) - {{COLLATE utf16_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf16}} - and so on So the code logic must be simlified before this change. This change will also fix a few problems: - - - - |
We want to pass more structures through the Bison stack instead of using Lex members.
In particular, we want to get rid of Lex->charset. Reasons: - The current implementation is hard to follow and change. It has caused a few bugs already. Passing data through the bison stack is much easier to follow! - We'll have contextually typed collations soon: {code:sql} -- Use the xxx_uca1400_as_ci collation of the column implicit character set: CREATE TABLE t1 (a CHAR(10) COLLATE uca1400_as_ci); {code} The above will resolve to: - {{COLLATE utf8mb4_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf8mb4}}) - {{COLLATE utf16_uca1400_as_ci}} (in case if the column character set is later resolved to {{utf16}} - and so on So the code logic must be simlified before this change. This change will also fix a few problems: - - - - - |
Assignee | Alexander Barkov [ bar ] | Sergei Golubchik [ serg ] |
Status | Stalled [ 10000 ] | In Review [ 10002 ] |
Fix Version/s | 10.9.0 [ 27113 ] | |
Fix Version/s | 10.9 [ 26905 ] | |
Resolution | Fixed [ 1 ] | |
Status | In Review [ 10002 ] | Closed [ 6 ] |
Link |
This issue blocks |
Link |
This issue relates to |
Link |
This issue causes |
Link |
This issue causes |
Link |
This issue causes |
serg, please check the patch with review suggestions addressed:
https://github.com/MariaDB/server/tree/bb-10.9-bar-MDEV-27743
Thanks.