1. 21 Jun, 2007 2 commits
    • marko's avatar
      branches/zip: Make merge sort handle externally stored columns. · 5288876e
      marko authored
      Some things still fail in innodb-index.test, and there seems to be
      a race condition (data dictionary lock wait) when running with --valgrind.
      
      dfield_t: Add an "external storage" flag, dfield->ext.
      
      dfield_is_null(), dfield_is_ext(), dfield_set_ext(), dfield_set_null():
      New functions.
      
      dfield_copy(), dfield_copy_data(): Add const qualifiers, fix in/out comments.
      
      data_write_sql_null(): Use memset().
      
      big_rec_field_t: Replace byte* data with const void* data.
      
      ut_ulint_sort(): Remove.
      
      upd_field_t: Remove extern_storage.
      
      upd_node_t: Replace ext_vec, n_ext_vec with n_ext.
      
      row_merge_copy_blobs(): New function.
      
      row_ins_index_entry(): Add the parameter "ibool foreign" for suppressing
      foreign key checks during fast index creation or when inserting into
      secondary indexes.
      
      btr_page_insert_fits(): Add const qualifiers.
      
      btr_cur_add_ext(), upd_ext_vec_contains(): Remove.
      
      dfield_print_also_hex(), dfield_print(): Replace if...else if with switch.
      Observe dfield_is_ext().
      5288876e
    • marko's avatar
      branches/zip: btr_rec_copy_externally_stored_field(): Add const qualifier · d7dbb460
      marko authored
      to rec_t*.  Remove the ut_ad(rec_offs_validate()), because this function
      will be called from row0merge.c on a record that lacks the
      REC_N_NEW_EXTRA_BYTES.
      d7dbb460
  2. 20 Jun, 2007 3 commits
  3. 19 Jun, 2007 2 commits
  4. 18 Jun, 2007 2 commits
    • marko's avatar
      branches/zip: ha_innobase::add_index(): Split some assertions. · 7235ea10
      marko authored
      Remove the variable parent_trx.
      
      Call innobase_register_stmt() in order to work around a MySQL bug
      in mysql_alter_table(), which, as of
      
      ChangeSet@1.2482.61.2, 2007-06-07 16:37:15+02:00, joerg@trift2. +8 -0
      
      commits the transaction before calling ha_innobase::add_index().
      Without re-registering the statement, the ha_commit_stmt(thd)
      in mysql_alter_table() would not invoke innobase_commit.
      7235ea10
    • marko's avatar
      branches/zip: ha_innobase::add_index(): Do not commit the transaction. · 513f7ceb
      marko authored
      It should be committed by MySQL after all.  The error in mysql_alter_table()
      will be worked around in r1584.
      513f7ceb
  5. 13 Jun, 2007 4 commits
    • marko's avatar
      branches/zip: Remove reads of freed memory in fast index creation. · a5ddf51a
      marko authored
      Because row_drop_table_for_mysql_no_commit() checks with dict_load_table()
      if the table was successfully dropped, we cannot pass table->name to it.
      
      row_merge_drop_table(): Pass a copy of table->name to
      row_drop_table_for_mysql().
      
      row_prebuilt_free(): Do not dereference prebuilt->table->name after a
      successful invocation of row_add_table_to_background_drop_list().  The
      table object may be freed at any time.  Remove the debug message
      "Dropping table".
      a5ddf51a
    • marko's avatar
      branches/zip: Fix a few bugs in fast index creation. No more crashes · 62ad3dbd
      marko authored
      occur in mysql-test-run, but mysql-test-run reports some warnings for
      some tests and incorrect results for innodb-index.test.
      
      innobase_start_trx_and_assign_read_view(): Use thd instead of current_thd.
      
      ha_innobase::add_index(): Use ha_thd() instead of current_thd.
      Commit the transaction at the end.
      
      row_merge_rename_index(): Really change the name of the index.  This was
      broken in r1430.
      62ad3dbd
    • marko's avatar
      branches/zip: Merge 1571:1575 from trunk. · 258fb5d4
      marko authored
      258fb5d4
    • marko's avatar
      branches/zip: trx_commit_for_mysql(): Replace ut_a(err) · 251a921e
      marko authored
      with ut_a(err == DB_SUCCESS).
      251a921e
  6. 12 Jun, 2007 2 commits
  7. 11 Jun, 2007 2 commits
    • marko's avatar
      branches/zip: Initialize some uninitialized variables in order to avoid · 5ab4cfd4
      marko authored
      comparing uninitialized values.
      
      dict_mem_table_create(): Initialize table->version_number.
      
      ins_node_create(): Initialize node->table_version_number.
      
      row_create_prebuilt(): Initialize all fields.  Initialize most fields
      by memset(), so that any fields that are added will be initialized
      automatically.
      5ab4cfd4
    • marko's avatar
      branches/zip: Create special single-table tablespace file names for · 1cfcd4f2
      marko authored
      temporary tablespaces in fast index creation.  The tablespaces must
      reside in the same directory as the persistent tablespaces, so that
      they can be renamed without copying.  Namespace collisions are avoided
      by replacing the ".ibd" file name suffix with ".ib1" or ".ib2".
      
      fil_make_ibd_name(): Treat names starting with TEMP_TABLE_PREFIX
      specially.  Document the dependence on
      innobase_create_temporary_tablename().
      1cfcd4f2
  8. 08 Jun, 2007 4 commits
    • marko's avatar
      branches/zip: Fix bugs in merge sort. · 0954bbed
      marko authored
      row_merge_buf_add(): Correctly calculate buf->total_size.
      
      row_merge_buf_write(): Add an assertion about buf->total_size.
      
      row_merge_heap_create(), row_merge_read_rec(), row_merge_insert_index_tuples():
      offsets needs to be 1 + REC_OFFS_HEADER_SIZE + n_fields.  Previously, we
      allocated one element too little.
      
      row_merge_blocks(): Use goto instead of break in the AT_END argument
      of ROW_MERGE_WRITE_GET_NEXT.
      0954bbed
    • marko's avatar
      branches/zip: row_merge_build_indexes(): Allocate all buffers with a · ffe5998e
      marko authored
      single os_mem_alloc_large() call.  The function mem_alloc() that was
      used previously allocates unaligned memory.
      
      row_merge_blocks(): Replace block1, block2, block3 with a single array.
      Replace buf1, buf2, buf3 with buf[3].  Replace b1..b3 with b0..b2.
      Replace mrec1,2 with mrec0,1.  Replace offsets1,2 with offsets0,1.
      
      row_merge(), row_merge_sort(): Replace block1, block2, block3 with a
      single array.
      ffe5998e
    • marko's avatar
      branches/zip: Reimplement merge sort in fast index creation. · fd91f7bb
      marko authored
      The creation of the primary key does not work.  We will have to flag
      externally stored columns and copy the externally stored part from
      the old table.
      
      row_build_index_for_mysql(): Rename to row_merge_build_indexes().
      Move from row0mysql.c to row0merge.c.
      
      Remove private declarations from row0merge.h.  Make many functions static
      in row0merge.c.
      
      cmp_rec_rec_simple(): A new comparison function.
      
      dict_index_get_min_size(): New function.
      
      OS_FILE_FROM_FD(fd): A macro for converting from int to os_file_t.
      
      rec_convert_dtuple_to_rec_comp(): Make the interface lower-level.
      
      rec_get_converted_size_comp(): Return also extra_size.
      
      UT_SORT_FUNCTION_BODY(): Remove reference to an obsolete test program.
      
      row_rec_to_index_entry_low(): New function.
      
      row0merge.c: Implement merge sort based on file streams instead of
      fixed-size blocks.  Sort the small blocks as arrays of dfield_t*,
      because it is faster than invoking rec_get_offsets() for every
      comparison.
      fd91f7bb
    • marko's avatar
      branches/zip: Merge 1553:1556 from trunk. · 2d90ae68
      marko authored
      2d90ae68
  9. 07 Jun, 2007 5 commits
  10. 06 Jun, 2007 2 commits
  11. 04 Jun, 2007 2 commits
    • marko's avatar
      branches/zip: Minor cleanup. · 1d2284c3
      marko authored
      row_merge_mark_prebuilt_obsolete(): Rename to row_prebuilt_table_obsolete()
      and move from row0merge.c to row0mysql.c.  Remove the parameter trx.
      
      row_merge_print_table(): Remove.
      1d2284c3
    • marko's avatar
      branches/zip: Minor cleanup. · d1bf0b7d
      marko authored
      row_remove_indexes_for_mysql(): Rename to row_merge_drop_indexes(),
      move from row0mysql.c to row0merge.c and make the return type void.
      
      row_merge_remove_index(): Rename to row_merge_drop_index() and make
      the return type void.
      d1bf0b7d
  12. 29 May, 2007 1 commit
  13. 28 May, 2007 1 commit
  14. 24 May, 2007 1 commit
  15. 22 May, 2007 4 commits
  16. 21 May, 2007 1 commit
  17. 18 May, 2007 2 commits