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

Ensure that table is truly dropped when using DROP TABLE



    • Task
    • Status: Closed (View Workflow)
    • Critical
    • Resolution: Fixed
    • 10.5.4
    • Server
    • None


      This task is based on a patch/idea from Ali-SQL: "[Feature] Issue#34 Support force drop table" and a patch from Tencent related to the same problem.

      Usually the meta data is not consistent between server layer and InnoDB layer.
      So we supply a new syntax to clear the meta data.
      1. DROP TABLE FORCE t1;
      2. ALTER TABLE t1 DROP PARTITION force p2;


      In the end we decided to support the idea of FORCE but without the FORCE keyword:

      • If a .frm table doesn't exists, try dropping the table from all storage engines.
      • If the .frm table exists but the table does not exist in the engine try dropping the table from all storage engines.
      • Update storage engines using many table files (.CSV, MyISAM, Aria) to succeed with the drop even if some of the files are missing.
      • Add HTON_AUTOMATIC_DELETE_TABLE to handlerton's where delete_table() is not needed and always succeed. This is used by ha_delete_table_force() to know which handlers to ignore when trying to drop a table without a .frm file.

      The disadvantage of this solution is that a DROP TABLE on a non existing table will be a bit slower as we have to ask all active storage engines if they know anything about the table.

      Things left to do in another MDEV:

      • Handle dropping of partitioned tables without .par file or .frm
      • Verify that one can drop partitions with a DROP TABLE #mysql50#...


        Issue Links

          There are no Sub-Tasks for this issue.



              monty Michael Widenius
              svoj Sergey Vojtovich
              1 Vote for this issue
              9 Start watching this issue



                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.