Status: Confirmed (View Workflow)
Affects Version/s: 10.3, 10.4, 10.5, 10.6, 10.7, 10.8, 10.9, 10.10
Environment:Reproduced on Windows 10 and Windows Server 2016
I have found a critical bug in Aria (Page storage format) where tables are wiped if someone runs a repair command with the USE_FRM flag.
REPAIR TABLE X USE_FRM
This bug only exists for databases that use an encryption plugin. In our case we use a file encryption plugin, however it is likely this bug affects all types of encryption plugin.
Disabling the encryption plugin or changing the storage format to Dynamic will prevent the USE_FRM from wiping the table.
However, since we require Data Encryption at Rest, we have to use encryption and Page storage format.
To reproduce, set up a Windows VM with MariaDB 10.5.13 (or later) installed.
Load on a file-based encryption plugin (or any other encryption plugin).
Then create a database and some tables and add data.
Finally, run a repair table command with the additional flag USE_FRM.
Now disconnect and reconnect to the Database and you will see all data has been removed.
A proposed dirty fix could be the following:
If table type is Aria and Storage Format is Page and encryption is enabled, then ignore USE_FRM flag if its passed in.