Bug #89287 Enforce that all members do have the same lower_case_table_names value
Submitted: 17 Jan 2018 15:49 Modified: 21 Feb 2018 20:17
Reporter: Nuno Carvalho Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Group Replication Severity:S3 (Non-critical)
Version:5.7.21 OS:Any
Assigned to: CPU Architecture:Any

[17 Jan 2018 15:49] Nuno Carvalho
Description:
Group Replication conflict detection does use schema and table names
as part of the Primary Key Equivalent (PKE) in order to detect and
disallow conflicting transactions.
The value of lower_case_table_names option does change how schema
and tables names are stored and externalized, which depending on the
configuration value may persist a T1 as t1. This difference on a
group can cause inconsistencies:
Example:
  M1: lower_case_table_names=0
  M2: lower_case_table_names=0
  M3: lower_case_table_names=1

  CREATE TABLE T1;
  would be stored as T1 on M1 and M2, but as t1 on M3.

How to repeat:
Please see attached test case.

Suggested fix:
When a server tries to join a group, its lower_case_table_names
value must be compared with the group one, if the value is different
the server must not be allowed to join.
Please see Plugin_gcs_events_handler::compare_member_option_compatibility()
[21 Feb 2018 20:17] David Moss
Posted by developer:
 
Thank you for your feedback, this has been fixed in upcoming versions and the following was added to the 5.7.22 / 8.0.5 changelog:
Group Replication conflict detection uses schema and table names as part of the Primary Key Equivalent (PKE) in order to detect and disallow conflicting transactions. The value of lower_case_table_names system variable changes how schema and table names are stored and externalized, which depending on the configured value could persist a table named T1 as t1. Such a difference in a group could cause inconsistencies. Now, members must all have the same value for lower_case_table_names.
[31 May 2018 14:55] David Moss
Reclosing.