1. 17 Sep, 2007 1 commit
  2. 13 Sep, 2007 1 commit
  3. 12 Sep, 2007 3 commits
  4. 11 Sep, 2007 4 commits
    • marko's avatar
      branches/zip: ha_innobase::add_index(): Fix a race condition that · 5cff2592
      marko authored
      existed before the fast-index-creation code was merged, in r1414.
      
      Do not call row_prebuilt_table_obsolete(innodb_table) until after
      the table has been renamed to a temporary name.  Otherwise, the
      following could happen when creating a clustered index on table T:
      
      (a1) copy T to T#1
      (a2) mark T obsolete
      (b1) add the name of T to the background drop list
      (a3) rename T to T#2 and T#1 to T
      (b2) drop the table on the background
      
      These steps are executed by two threads, a and b.
      
      If b1 is executed after a3, all is fine: the name T#2 will be added
      to the background drop list.  If b1 is executed before a3, the name
      T will be added, and T#2 will survive.
      5cff2592
    • marko's avatar
      branches/zip: Minor cleanup. · cee36690
      marko authored
      row_add_table_to_background_drop_list(): Replace the dict_table_t*
      parameter with const char* (the table name).
      
      row_check_table_for_mysql(): Replace prebuilt->table with table.
      cee36690
    • inaam's avatar
      branches/zip: Undo changes commited in r1832. · 22d5997d
      inaam authored
      These should have gone to branches/fts.
      
      Spotted by: Marko and Ken
      22d5997d
    • inaam's avatar
      branches/zip: undo changes made in r1763. · ae1bf9e3
      inaam authored
      These should have gone in branches/fts
      
      Spotted by: Marko and Ken
      ae1bf9e3
  5. 10 Sep, 2007 2 commits
  6. 07 Sep, 2007 2 commits
    • marko's avatar
      branches/zip: UNIV_MEM_ASSERT_AND_FREE(): · 8f98e909
      marko authored
      Use UNIV_MEM_ASSERT_W() instead of UNIV_MEM_ASSERT_RW().
      The memory area need not be initialized.
      This mistake was made in r1815.
      8f98e909
    • marko's avatar
      branches/zip: Decode table names when displaying error messages in · 6b4c37d6
      marko authored
      fast index creation.
      
      innobase_convert_tablename(): New function, to remove the filename
      encoding of a database and table name.
      
      ha_innobase::add_index(): Invoke innobase_convert_tablename() before
      calling my_error().
      
      innodb-index.result: Update the error messages.
      6b4c37d6
  7. 06 Sep, 2007 5 commits
  8. 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
  9. 04 Sep, 2007 2 commits
  10. 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
  11. 31 Aug, 2007 1 commit
  12. 30 Aug, 2007 2 commits
  13. 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
  14. 27 Aug, 2007 1 commit
  15. 23 Aug, 2007 2 commits