I’m getting puzzled here… And only really started to see this on 8.0.26/8.0.25 and do not see anything in the changelogs that has changed
A Simple Table change (less than 10 rows in the table) The following two commands were issued
"sqltext": "Alter table `Ref`.`UC_DevType_Acronym` change `UCA_Acro_Type` `UCA_Acro_Category` varchar(32) CHARSET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,add column `UCA_Acro_Group` varchar(8) NULL after `UCA_Acro_LongName`,add column `UCA_Acro_Type` varchar(32) NULL after `UCA_Acro_Group`",
Then the following was issued
"sqltext": "Alter table `Ref`.`UC_DevType_Acronym` change `UCA_Acro_Group` `UCA_Acro_Group` varchar(8) CHARSET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL first,change `UCA_Acro_Type` `UCA_Acro_Type` varchar(32) CHARSET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL after `UCA_Acro_Group`, drop primary key, add primary key
(`UCA_Acro_Group`, `UCA_Acro_Type`, `UCA_Acro_Category`, `UCA_Acro_ShortName`)",
The second one generated an Invalid use of NULL value, Error_code: 1138
As UCA_Acro_Group was null but being changed to not null and being added to the primary key.
Once this command was issued the cluster started a vote and kicked the node out that it was issued on. Yet the 1138 error happened on other nodes… Why was it kicked out?
I thought maybe TOI but does not seem to be the case here
Total Order Isolation (TOI) method, “ the cluster replicates the schema change query as a statement before its execution .” What this means in practice is that a DDL issued in one node is replicated to other nodes in the cluster before it is even executed in the source node, let alone completed successfully.
Then I thought ok maybe NBO was somehow a default… But nope that is disabled as well
wsrep_values.txt (6.9 KB)
full_log_tab_delimited.txt (80.7 KB)
crashlog.txt (18.1 KB)