1. 03 Oct, 2007 2 commits
    • marko's avatar
      branches/zip: Silence most GCC 4.2.1 warnings about const pointers. · 6557ba53
      marko authored
      For some reason, GCC 4.2.1 ignores casts (for removing constness)
      in calls to inline functions.
      
      page_align(), ut_align_down(): Make the parameter const void*, but still
      return a non-const pointer.  This is ugly, but these functions cannot be
      replaced with a const-preserving macro in a portable way, given that
      the pointer argument is not always pointing to bytes.
      
      buf_block_get_page_zip(): Implement as a const-preserving macro.
      
      buf_frame_get_page_zip(), buf_block_align(): Add const qualifiers.
      
      lock_rec_get_prev(): Silence GCC 4.2.1 warnings.
      
      mlog_write_initial_log_record(), mlog_write_initial_log_record_fast(),
      mtr_memo_contains(): Add const qualifier to the pointer.
      
      page_header_get_ptr(): Rewrite as page_header_get_offs(), and
      implement as a macro that calls this function.
      6557ba53
    • marko's avatar
      branches/zip: Merge 1918:1937 from trunk. · a344db96
      marko authored
      a344db96
  2. 01 Oct, 2007 4 commits
  3. 28 Sep, 2007 9 commits
  4. 27 Sep, 2007 13 commits
  5. 26 Sep, 2007 8 commits
    • marko's avatar
      branches/zip: Document the minimum size of row_merge_block_t as UNIV_PAGE_SIZE. · f8dffe6a
      marko authored
      row_merge_buf_add(): Add ut_ad(data_size < sizeof(row_merge_block_t))
      and document why it may fail if sizeof row_merge_block_t < UNIV_PAGE_SIZE.
      f8dffe6a
    • marko's avatar
      branches/zip: row_merge_build_indexes(): Call innobase_rec_reset() only once. · 9d234dd0
      marko authored
      row_merge_dup_report(): Do not call innobase_rec_reset().
      9d234dd0
    • marko's avatar
      branches/zip: Clean up some non-inlined functions. · 6b3579a8
      marko authored
      dtuple_create_for_mysql(), dtuple_free_for_mysql(): Remove.
      
      ha_innobase::records_in_range(): Use mem_heap_create(), mem_heap_free(),
      and dtuple_create() instead of the removed functions above.  Since r1587,
      InnoDB C++ functions can invoke inlined C functions.
      6b3579a8
    • marko's avatar
      branches/zip: Implement the reporting of duplicate key values to MySQL. · 03a7cb22
      marko authored
      innobase_rec_to_mysql(): New function, for converting an InnoDB clustered
      index record to MySQL table->record[0].  TODO: convert integer fields.
      Currently, integer fields are in big-endian byte order instead of
      host byte order, and signed integer fields are offset by 0x80000000.
      
      innobase_rec_reset(): New function, for resetting table->record[0].
      
      row_merge_build_indexes(): Add the parameter TABLE* table (the MySQL table
      handle) for reporting duplicate key values.
      
      dtuple_from_fields(): New function, to convert an array of dfield_t* to
      dtuple_t.
      
      dtuple_get_n_ext(): New function, to compute the number of externally stored
      fields.
      
      row_merge_dup_t: Structure for counting and reporting duplicate records.
      
      row_merge_dup_report(): Function for counting and reporting duplicate records.
      
      row_merge_tuple_cmp(), row_merge_tuple_sort(): Replace the ulint* n_dup
      parameter with row_merge_dup_t* dup.
      
      row_merge_buf_sort(): Add the parameter row_merge_dup_t* dup, which is
      NULL when sorting a non-unique index.
      
      row_merge_buf_write(), row_merge_heap_create(), row_merge_read_rec(),
      row_merge_cmp(), row_merge_read_clustered_index(), row_merge_blocks(),
      row_merge(), row_merge_sort(): Add const qualifiers.
      
      row_merge_read_clustered_index(): Use a common error handling branch err_exit.
      Invoke row_merge_buf_sort() differently on unique indexes.
      
      row_merge_blocks(): note TODO: We could invoke innobase_rec_to_mysql()
      to report duplicate key values when creating a clustered index.
      03a7cb22
    • marko's avatar
      branches/zip: Minor cleanup. · d0631476
      marko authored
      dict_find_index_by_max_id(): Rename this static function to its
      only caller, dict_table_get_index_by_max_id().
      
      dict_table_get_index_by_max_id(): Copy the function comment from
      dict_find_index_by_max_id().
      d0631476
    • marko's avatar
      branches/zip: Add some const qualifiers to input parameters. · ff9f1a14
      marko authored
      rec_get_converted_size_comp(), rec_convert_dtuple_to_rec_comp(),
      rec_convert_dtuple_to_rec_new(), rec_convert_dtuple_to_rec(): Add a
      const qualifier to dict_index_t*.
      
      row_search_on_row_ref(): Add const qualifiers to the dict_table_t*
      and dtuple_t* parameters.  Note that pcur is an "out" parameter
      and mtr is "in/out".
      ff9f1a14
    • marko's avatar
      branches/zip: Minor cleanup. · 1db629ed
      marko authored
      row_build_row_ref_fast(): Note that "ref" is an in/out parameter.
      
      row_build_row_ref_from_row(): Add const qualifiers to all "in" parameters.
      1db629ed
    • marko's avatar
      branches/zip: Minor cleanup. · 6e0f43ae
      marko authored
      dtuple_create(): Simplify a pointer expression.  Flag the fields uninitialized
      after initializing them in the debug version.
      
      dtuple_t: Only declare magic_n if UNIV_DEBUG is defined.  The field is
      not assigned to nor tested unless UNIV_DEBUG is defined.
      6e0f43ae
  6. 25 Sep, 2007 1 commit
  7. 24 Sep, 2007 3 commits
    • marko's avatar
      branches/zip: Add some const qualifiers or in/out comments to the · 5c9122e7
      marko authored
      dict_index_t* and dict_table_t* parameters of some functions.
      5c9122e7
    • vasil's avatar
      branches/zip: · a4cc4700
      vasil authored
      Copy any data (currently table name and table index) that may be
      destroyed after releasing the kernel mutex into internal cache's
      storage.
      
      This is done in efficient manner using ha_storage type and a given
      string is copied only once into the cache's storage. Later additions of
      the same string use the already stored string, thus allocating memory
      only once per unique string.
      
      Approved by:	Marko
      a4cc4700
    • vasil's avatar
      branches/zip: · 48ed48eb
      vasil authored
      Add a type that stores chunks of data in its own storage and avoids
      duplicates. Supported methods:
      
      ha_storage_create()
      Allocates new storage object.
      
      ha_storage_put()
      Copies a given data chunk into the storage and returns pointer to the
      copy. If the data chunk is already present, a pointer to the existing
      object is returned and the given data chunk is not copied.
      
      ha_storage_empty()
      Clears (empties) the storage from all data chunks that are stored in it.
      
      ha_storage_free()
      Destroys a storage object. Opposite to ha_storage_create().
      
      Approved by:	Marko
      48ed48eb