Uploaded image for project: 'Percona Server for MySQL'
  1. Percona Server for MySQL
  2. PS-5865

Switching SE from InnoDB to MyRocks isn't supported in 8.0.16

Details

    Description

      Switching SE from InnoDB to MyRocks
      isn't supported in 8.0.16 and results with:

      ERROR 1235 (42000): This version of MySQL doesn't yet support 'ENCRYPTION for the RocksDB storage engine'
      

      Testcase:

      mysql> show create table world.City;
      +-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
      | Table | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                         |
      +-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
      | City  | CREATE TABLE `City` (
        `ID` int(11) NOT NULL AUTO_INCREMENT,
        `Name` char(35) NOT NULL DEFAULT '',
        `CountryCode` char(3) NOT NULL DEFAULT '',
        `District` char(20) NOT NULL DEFAULT '',
        `Population` int(11) NOT NULL DEFAULT '0',
        PRIMARY KEY (`ID`),
        KEY `CountryCode` (`CountryCode`),
        CONSTRAINT `city_ibfk_1` FOREIGN KEY (`CountryCode`) REFERENCES `Country` (`Code`)
      ) ENGINE=InnoDB AUTO_INCREMENT=4080 DEFAULT CHARSET=latin1 |
      +-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
      1 row in set (0.00 sec)
      mysql> Bye
      root@stretch:~# mysql
      Welcome to the MySQL monitor.  Commands end with ; or \g.
      Your MySQL connection id is 25
      Server version: 8.0.16-7 Percona Server (GPL), Release '7', Revision '613e312'
      Copyright (c) 2009-2019 Percona LLC and/or its affiliates
      Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
      Oracle is a registered trademark of Oracle Corporation and/or its
      affiliates. Other names may be trademarks of their respective
      owners.
      Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
      mysql> use world;
      Reading table information for completion of table and column names
      You can turn off this feature to get a quicker startup with -A
      Database changed
      mysql> ALTER TABLE City DROP FOREIGN KEY city_ibfk_1;
      Query OK, 0 rows affected (0.03 sec)
      Records: 0  Duplicates: 0  Warnings: 0
      mysql> ALTER TABLE City Engine=RocksDB;
      ERROR 1235 (42000): This version of MySQL doesn't yet support 'ENCRYPTION for the RocksDB storage engine'
      

      From discussion with robert.golebiowski this is by the upstream design:

      • EVERY table now has ENCRYPTION clause assigned. Un-encrypted tables have ENCRYPTION='N', encrypted ENCRYPTION='Y'
      • MySQL introduced this check HTON_SUPPORTS_TABLE_ENCRYPTION and if SE supports it - its tables get ENCRYPTION='Y/N' assigned
      • now when you ALTER table with ENGINE that do not support encryption you will get this error because this engine do not support any ENCRYPTION clause Y or N

      Attachments

        Issue Links

          Activity

            People

              george.lorch George Lorch (Inactive)
              hrvoje.matijakovic Hrvoje Matijakovic
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0 minutes
                  0m
                  Logged:
                  Time Spent - 1 day, 2 hours, 5 minutes
                  1d 2h 5m

                  Smart Checklist