• unknown's avatar
    WL#1563 - Modify MySQL to support fast CREATE/DROP INDEX · 085c97c1
    unknown authored
    NDB cluster is not fully supported. This will be added with
    WL 1892 (NDB Handler: Add support for CREATE/DROP INDEX).
    Some preparatory code for this is already present though.
    A change for the "duplicate key" error message is planned
    for another changeset.
    
    
    include/my_base.h:
      WL#1563 - Modify MySQL to support fast CREATE/DROP INDEX
      Defined a mask of flags which must be the same for two indexes
      if they should compare as compatible.
      Added an error number for a new drop index error message.
    mysql-test/r/key.result:
      WL#1563 - Modify MySQL to support fast CREATE/DROP INDEX
      The test result.
    mysql-test/t/key.test:
      WL#1563 - Modify MySQL to support fast CREATE/DROP INDEX
      The test case.
    sql/handler.cc:
      WL#1563 - Modify MySQL to support fast CREATE/DROP INDEX
      Prepared for a later change in an error message:
      Replace index number by index name for "duplicate key" error.
      Added handling for the new drop index error message.
    sql/handler.h:
      WL#1563 - Modify MySQL to support fast CREATE/DROP INDEX
      Added new flags and methods.
      Removed old flags and methods (from the last attempt).
    sql/share/errmsg.txt:
      WL#1563 - Modify MySQL to support fast CREATE/DROP INDEX
      Added a new error message for drop index.
    sql/sql_table.cc:
      WL#1563 - Modify MySQL to support fast CREATE/DROP INDEX
      Moved definitions to the top of the file.
      In mysql_prepare_table() allow an index to have the name
      "PRIMARY" if it has the key type "Key::PRIMARY".
      Added a parenthesis for readability.
      Removed old code from the last attempt.
      Some changes to compare_tables():
      - Input parameter "List<Key> *key_list" is replaced by
        "KEY *key_info_buffer, uint key_count".
      - Output parameters added: "index_drop_buffer/index_drop_count"
        and "index_add_buffer/index_add_count".
      - Key comparison must now find matching keys in changed
        old and new key lists.
      - Key comparison of a key is easier now because both old
        and new keys are of type 'KEY'.
      Call mysql_prepare_table() before compare_tables(). The
      translated KEY structs are needed at some places now.
      Inserted a code segment for checking alter_table_flags().
      Removed mysql_prepare_table() from the 'partition' branches
      (it is done above now).
      Removed a pair of unnecessary braces.
      Inserted a code segment for executing fast add/drop index.
      Made close of table dependent on whether it was opened.
      Prepared for NDB cluster support.
      Fixed commit to be called outside of LOCK_open.
    085c97c1
handler.cc 80.5 KB