1. 05 Sep, 2007 3 commits
    • marko's avatar
      branches/zip: ha_innobase:add_index(): Report HA_ERR_TABLE_EXIST when the · 489d8296
      marko authored
      temporary table cannot be created or renamed.
      
      innodb-index.test,result: Add test cases where a temporary table already
      exists.
      489d8296
    • marko's avatar
      branches/zip: Simplify crash recovery in fast index creation. · 52a89286
      marko authored
      trx_t: Remove dict_undo_list and dict_redo_list.
      
      innobase_create_temporary_tablename(): Replace TEMP_TABLE_PREFIX with
      a table name suffix "#1" or "#2".  In this way, the user can restore
      precious data, should anything go wrong.  It is possible to reach an
      inconsistent state, because the creation, deletion and renaming of
      single-table tablespaces are not transactional.
      
      ut_print_namel(), fil_make_ibd_name(), innobase_rename_table(): Remove
      the special treatment of TEMP_TABLE_PREFIX.
      
      Introduce TEMP_INDEX_PREFIX == 0xff for temporary indexes.  This byte
      cannot occur in index names since MySQL 4.1.  However, it might have
      been possible to use this byte in MySQL 4.0.
      
      recv_recovery_from_checkpoint_finish(): Call the new function
      row_merge_drop_temp_indexes(), to drop all indexes whose name starts
      with the byte 0xff.
      
      row_merge_rename_indexes(): Renamed from row_merge_rename_index().
      Remove the parameter "index".
      
      row_drop_table_for_mysql(): Unconditionally call trx_commit_for_mysql().
      
      row_drop_table_for_mysql_no_commit(): Correct the function commit,
      based on the corrected comment of row_drop_table_for_mysql().  Rely on
      table->to_be_dropped instead of TEMP_TABLE_PREFIX.
      
      ha_innobase::add_index(): Simplify the control flow.
      52a89286
    • marko's avatar
      branches/zip: lock_rec_enqueue_waiting(): When a record lock wait occurs · 63805a30
      marko authored
      in a dictionary operation, display also the name of the index.
      63805a30
  2. 04 Sep, 2007 2 commits
  3. 03 Sep, 2007 5 commits
    • vasil's avatar
      Add functions that retrieve some lock_t characteristics, needed in · ccb384e2
      vasil authored
      INFORMATION_SCHEMA implementation:
      
      lock_get_trx_id()
      lock_get_mode_str()
      lock_get_type_str()
      lock_get_table_id()
      lock_get_table_name()
      lock_rec_get_index_name()
      lock_rec_get_space_id()
      lock_rec_get_page_no()
      
      Approved by:	Marko
      ccb384e2
    • marko's avatar
      branches/zip: row_merge_drop_table(): Replace the · 73311227
      marko authored
      row_drop_table_for_mysql() call with a call to
      row_drop_table_for_mysql_no_commit().  The last parameter of
      the function is ibool drop_db, not ibool do_commit.  Also,
      since r1790 of trunk it is not necessary to copy table->name.
      73311227
    • vasil's avatar
      branches/zip: · 4c8d01ef
      vasil authored
      Move lock_rec_find_set_bit() from lock0priv.h to lock0lock.h. This
      function is needed in the INFORMATION_SCHEMA implementation which
      currently resides in trx/
      
      Approved by:	Marko
      4c8d01ef
    • marko's avatar
      branches/zip: Merge 1783:1792 from trunk. · 97b8960b
      marko authored
      97b8960b
    • marko's avatar
      branches/zip: Enclose the definition of dict_index_t::trx_id in · 37e72081
      marko authored
      #ifdef ROW_MERGE_IS_INDEX_USABLE, to avoid growing the memory
      footprint until MySQL implements and calls the virtual method
      handler::is_index_available() or something equivalent.
      37e72081
  4. 31 Aug, 2007 1 commit
  5. 30 Aug, 2007 2 commits
  6. 29 Aug, 2007 6 commits
    • marko's avatar
      branches/zip: Relax the string type check of some built-in functions · 63b2f038
      marko authored
      of the InnoDB SQL parser.
      
      pars_is_string_type(): New function.  Returns TRUE iff mtype equals
      DATA_VARCHAR, DATA_CHAR, DATA_FIXBINARY, or DATA_BINARY.
      
      pars_resolve_func_data_type(): Replace checks for DATA_VARCHAR with
      pars_is_string_type().  For example, the NAME column of SYS_INDEXES,
      SYS_TABLES, and SYS_COLUMNS is of DATA_BINARY type, although it
      contains a UTF-8 character string.  This affects the functions
      TO_NUMBER, BINARY_TO_NUMBER, LENGTH, INSTR, and SUBSTR.
      63b2f038
    • marko's avatar
      branches/zip: pars_func_get_class(), pars_resolve_func_data_type(): · ffce28bf
      marko authored
      Replace if-else with switch-case.
      ffce28bf
    • marko's avatar
      branches/zip: ha_innobase::add_index(): Remove a remark about row0mysql.c · a9c7b3c5
      marko authored
      in a comment about latching the data dictionary.  The data dictionary may
      be latched elsewhere too.
      a9c7b3c5
    • marko's avatar
      branches/zip: Remove some checks if an index or a table is a temporary one · 64dfb280
      marko authored
      created in fast index creation.
      
      dict_load_indexes(): Always complain if the first index is not clustered.
      
      lock_table_enqueue_waiting(): Always complain about lock waits in
      a dictionary operation.
      
      row_merge_rename_tables(): Add an assertion that dict_sys->mutex is
      being held.
      
      row_undo_mod_del_unmark_sec_and_undo_update(): Make the test about
      temporary indexes more readable.
      
      row_create_table_for_mysql(): Do not retry creating a temporary table
      in fast index creation.  Orphaned temporary tables will have to be dropped
      in crash recovery.
      64dfb280
    • marko's avatar
      branches/zip: Simplify the locking of the data dictionary. · 3131340b
      marko authored
      row_upd_index_is_referenced(), row_upd_check_references_constraints(),
      row_purge_parse_undo_rec(): Remove duplicated code that calls
      row_mysql_unfreeze_data_dictionary().
      
      row_undo_ins_remove_clust_rec():
      Assert that the data dictionary is X-latched.  Do not attempt to re-latch
      the data dictionary, because doing so introduces race conditions.  This
      re-latching was probably made unnecessary already in r1676, which keeps
      the data dictionary X-latched in ha_innobase::add_index() for the complete
      duration of the data dictionary operations.
      
      row_undo_ins_parse_undo_rec(): Do not attempt to acquire the data dictionary
      latch.  The data dictionary should be already X-latched when a transaction
      that modifies system tables is rolled back.  This also holds in the rollback
      during crash recovery: trx_rollback_active() will X-latch the data dictionary
      when needed.
      3131340b
    • marko's avatar
      branches/zip: hash_create(): Remove two unused variables. They should have · da70d126
      marko authored
      been removed in r1752.
      da70d126
  7. 27 Aug, 2007 1 commit
  8. 23 Aug, 2007 2 commits
  9. 22 Aug, 2007 2 commits
  10. 21 Aug, 2007 6 commits
  11. 20 Aug, 2007 8 commits
  12. 16 Aug, 2007 2 commits
    • marko's avatar
      branches/zip: Rename mem_heap_calloc() and mem_calloc() to · e1c3be5e
      marko authored
      mem_heap_zalloc() and mem_zalloc(), because calloc() in the C runtime
      library takes two size parameters, not one.
      
      mem_heap_zalloc(): Add debug assertions.  Document that the return value
      is never NULL.
      e1c3be5e
    • marko's avatar
      branches/zip: Fix bugs in the creation or dropping of the clustered index · 1bbbcbfe
      marko authored
      (PRIMARY KEY or UNIQUE INDEX on NOT NULL columns).
      
      innodb-index.test: Remove the --replace_regex directives.  Replace correct
      values to the "Duplicate entry" messages.  This will cause the test to
      fail until we somehow return the duplicate key values to MySQL.
      Add test cases for creating or dropping UNIQUE INDEX or PRIMARY KEY.
      
      innobase_copy_index_def(): Allow the function to copy a clustered index
      definition to a secondary one (UNIQUE INDEX).
      
      innobase_create_key_def(): Check the NOT NULL flag from the correct
      place.  Copy the clustered index if it is a UNIQUE INDEX.
      
      ha_innobase::prepare_drop_index(): Refuse to drop the clustered index.
      1bbbcbfe