Bug #89035 Reject LCTN changing after --initialize
Submitted: 22 Dec 2017 12:04 Modified: 26 Feb 19:47
Reporter: Sivert Sørumgård Email Updates:
Status: Closed Impact on me:
Category:MySQL Server: Data Dictionary Severity:S3 (Non-critical)
Version:8.0.4 OS:Any
Assigned to: CPU Architecture:Any

[22 Dec 2017 12:04] Sivert Sørumgård
It is currently possible to restart the server with a lower_case_table_names setting different from what was used during --initialize. However, the collation of various fields in the DD tables are assigned during --initialize based on the value of LCTN at that time. Thus, after a restart, the DD and the rest of the server may have different semantics regarding how to compare e.g. table names.

How to repeat:

Suggested fix:
To fix this, we should prohibit restarting the server with a different LCTN setting. This means we must also fix numerous MTR tests which exploit this possibility. Possibly, the bootstrap option in the .opt files might be used to force a server initialization rather than a restart.
[26 Feb 19:47] Daniel Price
Posted by developer:
Fixed as of the upcoming 8.0.5 release, and here's the changelog entry:

It is now prohibited to start the server with a lower_case_table_names
setting that is different from the setting used when the server was
initialized. The restriction is necessary because collations used by
various data dictionary table fields are based on the setting defined when
the server is initialized, and restarting the server with a different
setting would introduce inconsistencies with respect to how identifiers
are ordered and compared.