1. 30 Aug, 2007 2 commits
  2. 29 Aug, 2007 6 commits
    • marko's avatar
      branches/zip: Relax the string type check of some built-in functions · 095630bf
      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.
      095630bf
    • marko's avatar
      branches/zip: pars_func_get_class(), pars_resolve_func_data_type(): · 666c6377
      marko authored
      Replace if-else with switch-case.
      666c6377
    • marko's avatar
      branches/zip: ha_innobase::add_index(): Remove a remark about row0mysql.c · 8462fba6
      marko authored
      in a comment about latching the data dictionary.  The data dictionary may
      be latched elsewhere too.
      8462fba6
    • marko's avatar
      branches/zip: Remove some checks if an index or a table is a temporary one · c13f1913
      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.
      c13f1913
    • marko's avatar
      branches/zip: Simplify the locking of the data dictionary. · 91295937
      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.
      91295937
    • marko's avatar
      branches/zip: hash_create(): Remove two unused variables. They should have · 63583d80
      marko authored
      been removed in r1752.
      63583d80
  3. 27 Aug, 2007 1 commit
  4. 23 Aug, 2007 2 commits
  5. 22 Aug, 2007 2 commits
  6. 21 Aug, 2007 6 commits
  7. 20 Aug, 2007 8 commits
  8. 16 Aug, 2007 5 commits
    • marko's avatar
      branches/zip: Rename mem_heap_calloc() and mem_calloc() to · 8634d343
      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.
      8634d343
    • marko's avatar
      branches/zip: Fix bugs in the creation or dropping of the clustered index · 66f6a5ac
      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.
      66f6a5ac
    • marko's avatar
      branches/zip: Minor cleanup. · c541324b
      marko authored
      ha_innobase::add_index(), ha_innobase::prepare_drop_index():
      Remove the redundant thd_test_options() calls.
      The options are tested in check_trx_exists().
      
      ha_innobase::prepare_drop_index(): key cannot be NULL; remove the tests.
      Move the condition for checking foreign keys outside of the loop.
      Remove the redundant error log printout about foreign key dependency.
      c541324b
    • marko's avatar
      branches/zip: Remove redundant type casts. Change the parameter type · 2c7f6f6a
      marko authored
      of ut_strcmp() from const void* to const char*.
      2c7f6f6a
    • marko's avatar
      branches/zip: dict0mem.h: Minor cleanup. · 064e5aae
      marko authored
      Remove the unused constant DICT_NOT_READY.
      Make dict_index_t::type a bit-field, and move it next to other bit-fields.
      Add a const qualifier to dict_index_t::name.
      064e5aae
  9. 15 Aug, 2007 4 commits
    • marko's avatar
      branches/zip: Remove the error code DB_CANNOT_DROP_FOREIGN_INDEX. · 91ee8176
      marko authored
      It was only set by ha_innobase::prepare_drop_index(), which can return
      the appropriate MySQL error code (HA_ERR_DROP_INDEX_FK) directly.
      
      ha_innobase::add_index(): Correct the function comment.
      
      ha_innobase::prepare_drop_index(): Correct the function comment.
      Return MySQL error codes directly.
      
      ha_innobase::final_drop_index(): Correct the function comment.
      91ee8176
    • marko's avatar
      branches/zip: row_mysql_handle_errors(): Replace the if-else with · dddb6592
      marko authored
      switch-case.
      dddb6592
    • marko's avatar
      branches/zip: Performance improvement: · f2186190
      marko authored
      row_merge_buf_add(): Add a prefetch instruction to row->fields.
      Eliminate a variable from the copying loop, and move the termination
      condition to the end of the loop.
      
      row_merge_build_indexes(): Remove the second call to
      trx_start_if_not_started().
      f2186190
    • marko's avatar
      branches/zip: Minor cleanup. · 6b7c6cb3
      marko authored
      trx_t: Change the type of error_info from void* to const dict_index_t*.
      
      trx_get_error_info(): Add const qualifier to trx_t*.  Make this an
      inline function.
      6b7c6cb3
  10. 13 Aug, 2007 4 commits
    • marko's avatar
      branches/zip: Fix two mistakes made in r1414 · b008bc09
      marko authored
      (merging branches/fast-index-creation):
      
      row_truncate_table_for_mysql(), row_drop_table_for_mysql_no_commit():
      Let ut_print_name() output to ef instead of stderr.
      b008bc09
    • marko's avatar
      branches/zip: ha_innobase::add_index(): Do not merely check for a · 04ae127d
      marko authored
      key name "PRIMARY".  If the table has a generated clustered index,
      also check for a UNIQUE INDEX containing no NULL columns.
      
      innobase_create_index_def(): Add the parameter key_primary.
      
      innobase_create_key_def(): Check if the first index is a UNIQUE index
      consisting of NOT NULL columns.
      
      Fixing this bug revealed another one: FOREIGN KEY constraints
      will be lost when a PRIMARY KEY is created.  This is the reason why
      innodb.test will fail.
      04ae127d
    • marko's avatar
      branches/zip: ha_innobase::change_active_index(): Write to the error log · 2cf5070f
      marko authored
      when the index could not be found.
      2cf5070f
    • marko's avatar
      branches/zip: Add some const qualifiers to dict_index_t* and dict_table_t*. · e0009cd4
      marko authored
      innobase_create_key_def(), row_table_got_default_clust_index(),
      row_get_mysql_key_number_for_index(): Add a const qualifier.
      
      dict_table_get_first_index(), dict_table_get_next_index(): Define
      as a const-preserving macro.  Preserve the old function for UNIV_DEBUG,
      but add a const qualifier to the parameter and cast away the constness.
      e0009cd4