| Bug #99331 | The SDI files of the MyISAM tables are not updated after server upgrade | ||
|---|---|---|---|
| Submitted: | 23 Apr 2020 8:33 | Modified: | 20 Jul 2020 8:49 | 
| Reporter: | Roberto Castellino | Email Updates: | |
| Status: | Not a Bug | Impact on me: | |
| Category: | MySQL Server: MyISAM storage engine | Severity: | S3 (Non-critical) | 
| Version: | 8.0.19 | OS: | CentOS (7) | 
| Assigned to: | CPU Architecture: | x86 | |
| Tags: | SDI | ||
   [23 Apr 2020 8:33]
   Roberto Castellino        
  
 
   [23 Apr 2020 13:04]
   MySQL Verification Team        
  Hi Mr. Castellino, Thank you for your feedback. I have one important question. When you have updated our server to 8.0.19, how exactly have you run mysql_upgrade program ??? Thanks in advance.
   [23 Apr 2020 13:11]
   MySQL Verification Team        
  Hi Mr. Castellino, MySQL upgrade does not have to be used anymore. On the other hand, I repeated your behaviour. Verified as reported.
   [23 Apr 2020 13:37]
   Roberto Castellino        
  Hi Sinisa, I simply do an update via yum (my server run on a Centos7 distro). After the update i check tables with Mysql Workbench and manually using CHECK table statements. The tables were fine, with no need for upgrades. I found the problem when i tried to restore a table from files, using IMPORT TABLE, and i saw the version in sdi files was not correct.
   [23 Apr 2020 14:01]
   MySQL Verification Team        
  Ciao Roberto, I have repeated this behaviour and this bug is verified now. Seems that this is a regression bug, from the fixed bug Bug #30326020, Bug #96943. Thank you.
   [20 Jul 2020 8:49]
   Erlend Dahl        
  Posted by developer Sivert Sorumgaard:
======================================
The SDI files are not re-generated on upgrade for performance reasons. After
upgrading from e.g. 8.0.18 to 8.0.19, we will see the following contents of
the sdi file:
{"mysqld_version_id":80018,"dd_version":80017,"sdi_version":80016,"dd_object_t
ype":"Table","dd_object":{"name":"t" ...
If we try to import a table like this into a 8.0.19 server, we get the error
message:
  ERROR 3613 (HY000): Imported sdi version (80016) is not compatible with
current (80019)
To fix this issue, we can execute 'CHECK TABLE t FOR UPGRADE', while running
the upgraded server, i.e., 8.0.19 in this case. We get the following output:
  +--------+-------+----------+----------+
  | Table  | Op    | Msg_type | Msg_text |
  +--------+-------+----------+----------+
  | t.     | check | status   | OK       |
  +--------+-------+----------+----------+
  1 row in set (0.00 sec)
Now, the SDI file should have been re-generated (note that the server and SDI
versions have changed. There were no changes to the DD tables between these
two server versions, so the DD version stays the same):
{"mysqld_version_id":80019,"dd_version":80017,"sdi_version":80019,"dd_object_t
ype":"Table","dd_object":{"name":"t" ...
If we now try to import it, we should succeed:
  mysql> import table from 't_340.sdi';
  Query OK, 0 rows affected (0.01 sec)
Hence, as far as we can see, this is working the way it was designed.
 
   [20 Jul 2020 13:50]
   MySQL Verification Team        
  Thank you, Erlend.
