Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-21209

mysql_tzinfo_to_sql's Galera checks do not work

    XMLWordPrintable

    Details

      Description

      As part of the fix for MDEV-18778, some code was added, which would make mysql_tzinfo_to_sql execute some ALTER TABLE statements if wsrep_on was set. Unfortunately, these checks do *not* work, so the ALTER TABLE statements are executed even if wsrep_on is not set.

      Here's the relevant commit:

      https://github.com/mariadb/server/commit/fa74088838c12210d782aa6c69faa5acebc1d3bc

      It is easy to show that this does not work.

      First, we can see that wsrep_on is not set:

      $ sudo mysql --execute="SELECT @@global.wsrep_on"
      +-------------------+
      | @@global.wsrep_on |
      +-------------------+
      |                 0 |
      +-------------------+
      

      Let's get the server's binary log position:

      $ sudo mysql --execute="SHOW MASTER STATUS"
      +--------------------+----------+--------------+------------------+
      | File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
      +--------------------+----------+--------------+------------------+
      | mariadb-bin.000065 |  6042708 |              |                  |
      +--------------------+----------+--------------+------------------+
      

      And then let's run mysql_tzinfo_to_sql:

      $ mysql_tzinfo_to_sql /usr/share/zoneinfo | sudo mysql mysql
      Warning: Unable to load '/usr/share/zoneinfo/leapseconds' as time zone. Skipping it.
      Warning: Unable to load '/usr/share/zoneinfo/tzdata.zi' as time zone. Skipping it.
      

      If we check the binary log, then we can confirm that the ALTER TABLE statements are executed:

      $ sudo mysqlbinlog --verbose --start-position=6042708 /var/lib/mysql/mariadb-bin.000065 | grep "ALTER"
      ALTER TABLE time_zone ENGINE=InnoDB
      ALTER TABLE time_zone_name ENGINE=InnoDB
      ALTER TABLE time_zone_transition ENGINE=InnoDB
      ALTER TABLE time_zone_transition_type ENGINE=InnoDB
      ALTER TABLE time_zone_transition ORDER BY Time_zone_id, Transition_time
      ALTER TABLE time_zone_transition_type ORDER BY Time_zone_id, Transition_type_id
      ALTER TABLE time_zone ENGINE=MyISAM
      ALTER TABLE time_zone_name ENGINE=MyISAM
      ALTER TABLE time_zone_transition ENGINE=MyISAM
      ALTER TABLE time_zone_transition_type ENGINE=MyISAM
      

      This should obviously not happen.

      The Galera checks should be fixed.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              jplindst Jan Lindström
              Reporter:
              GeoffMontee Geoff Montee
              Votes:
              2 Vote for this issue
              Watchers:
              6 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: