Details
-
Bug
-
Status: Closed (View Workflow)
-
Critical
-
Resolution: Fixed
-
5.5(EOL), 10.0(EOL), 10.1(EOL), 10.2(EOL), 10.3(EOL), 10.4(EOL)
Description
One way how the InnoDB internal data dictionary can get out of sync with the .frm files is when columns are renamed between upper case and lower case, so that there is no change when considering a case-insensitive match.
A change in MySQL 5.6.22 adjusted fill_alter_inplace_info() so that for InnoDB, it performs a case-sensitive column name comparison, while for other storage engines it uses the old my_strcasecmp().
A more robust fix would be to make all column name comparisons in InnoDB case insensitive. This is safe to do, because there are no indexes defined on the InnoDB internal data dictionary tables SYS_COLUMNS and SYS_FOREIGN_COLS.
Attachments
Issue Links
- causes
-
MDEV-18041 Database corruption after renaming a prefix-indexed column
- Closed
- duplicates
-
MDEV-16696 Changing column case, does not update constraint case
- Closed
- relates to
-
MDEV-5800 indexes on virtual (not materialized) columns
- Closed
-
MDEV-13625 Merge InnoDB test cases from MySQL 5.6
- Closed
-
MDEV-13838 Wrong result after altering a partitioned table
- Closed
-
MDEV-16557 Remove INNOBASE_SHARE::idx_trans_tbl
- Closed
-
MDEV-23852 alter table rename column to uppercase doesn't work
- Closed