1. 21 Sep, 2007 7 commits
    • marko's avatar
      branches/zip: row_merge_read_clustered_index(): After writing out the · e4ed7666
      marko authored
      merge buffer, write the next record to the beginning of the emptied buffer.
      This fixes one of the bugs mentioned in r1872.
      e4ed7666
    • marko's avatar
      branches/zip: Fix a bug in the merge sort in fast index creation. · fabcf638
      marko authored
      Some bug still remains, because innodb-index.test will lose some
      records from the clustered index after add primary key (a,b(255),c(255))
      when row_merge_block_t is reduced to 8192 bytes.
      
      row_merge(): Add the parameter "half".  Add some Valgrind instrumentation.
      Note that either stream can end before the other one.
      
      row_merge_sort(): Calculate "half" for row_merge().
      fabcf638
    • marko's avatar
      branches/zip: Reduce internal memory fragmentation. · 5c749fa3
      marko authored
      mem_alloc2(): New macro.  This is a variant of mem_alloc() that
      returns the allocated size, which is equal to or greater than
      the requested size.
      
      mem_alloc_func(): Add the output parameter *size for the allocated size.
      When it is set, adjust the parameter passed to mem_heap_alloc().
      
      rec_copy_prefix_to_buf_old(), rec_copy_prefix_to_buf(): Use mem_alloc2()
      instead of mem_alloc().
      5c749fa3
    • marko's avatar
      branches/zip: Add more details to the debug printout enabled by · 5cd8a96f
      marko authored
      row_merge_print_read and row_merge_print_write.
      5cd8a96f
    • marko's avatar
      branches/zip: When creating a memory heap, set the block size to what · 638d5b36
      marko authored
      was actually obtained from the buddy allocator.  This should avoid some
      internal memory fragmentation in mem_heap_create() and mem_heap_alloc().
      
      mem_area_alloc(): Change the in parameter size to an in/out parameter.
      Adjust the size based on what was obtained from pool->free_list[].
      
      mem_heap_create_block(): Adjust block->len to what was obtained from
      mem_area_alloc().
      638d5b36
    • marko's avatar
      branches/zip: innodb-index.test: Add yet another CHECK TABLE and add the · bb97dfee
      marko authored
      column d to two SELECT FROM t1.
      bb97dfee
    • marko's avatar
      branches/zip: Add diagnostic printout. · a44c5905
      marko authored
      rec_print_comp(): New function, sliced from rec_print_new().
      
      rec_print_old(), rec_print_comp(): Print the untruncated length of the column.
      
      row_merge_print_read, row_merge_print_write, row_merge_print_cmp:
      New flags, to enable debug printout in UNIV_DEBUG builds.
      
      row_merge_tuple_print(): New function for UNIV_DEBUG builds.
      
      row_merge_read_rec(): Obey row_merge_print_read.
      
      row_merge_buf_write(), row_merge_write_rec_low(),
      row_merge_write_eof(): Obey row_merge_print_write.
      
      row_merge_cmp(): Obey row_merge_print_cmp.
      a44c5905
  2. 20 Sep, 2007 3 commits
  3. 19 Sep, 2007 8 commits
  4. 17 Sep, 2007 2 commits
  5. 13 Sep, 2007 1 commit
  6. 12 Sep, 2007 3 commits
  7. 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
  8. 10 Sep, 2007 2 commits
  9. 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
  10. 06 Sep, 2007 5 commits
  11. 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