1. 08 Feb, 2008 2 commits
  2. 07 Feb, 2008 3 commits
    • inaam's avatar
      branches/zip: · c087bec8
      inaam authored
      srv_log_file_size is misspelled as srv_log_filen_size in r2276
      
      reviewed by: non-functional change.
      c087bec8
    • marko's avatar
      branches/zip: make_flex.sh, lexyy.c: Remove some GCC warnings about unused · daf21c2c
      marko authored
      static symbol definitions.
      
      yy_scan_buffer, yy_scan_string, yy_scan_bytes: Leave these unused extern
      function declarations alone.
      
      yypush_buffer_state, yypop_buffer_state, yyswitch_to_buffer, yyget*, yyset*,
      yylex_destroy: Add __attribute__((unused)).
      
      This closes Mantis issue #8.
      daf21c2c
    • marko's avatar
      branches/zip: trx_undo_prev_version_build(): Remove a bogus warning · c30efd86
      marko authored
      about undo_rec possibly being uninitialized.  When trx_undo_get_undo_rec()
      leaves undo_rec uninitialized, both functions will return DB_MISSING_HISTORY
      without dereferencing undo_rec.
      
      This closes Mantis issue #7.
      c30efd86
  3. 06 Feb, 2008 5 commits
    • marko's avatar
      branches/zip: Hide some global variables that were accidentally not hidden · 753a5a1d
      marko authored
      in r2276.  Now the following symbols will be exported when InnoDB is built
      as a dynamic plugin:
      
      * the virtual method pointer table of class ha_innodb
      * the three variables that MySQL will reference when linking at runtime:
      
      	_mysql_plugin_declarations_
      	_mysql_plugin_interface_version_
      	_mysql_sizeof_struct_st_plugin_
      
      Furthermore, the following symbols are weak globals, to allow us to access
      the built-in InnoDB in the mysqld executable, in case it contains a statically
      linked InnoDB:
      
      	builtin_innobase_plugin
      	innodb_hton_ptr
      753a5a1d
    • marko's avatar
      branches/zip: Make the changes to pars0grm.c that were promised in r2276. · 1417f52a
      marko authored
      pars/pars0grm.h: Remove.  The primary file is include/pars0grm.h.
      
      pars/make_bison.sh: Add from trunk.  Somehow, this file was not merged
      at the same time with make_flex.sh.  Add sed magic for replacing the
      file name and for hiding yychars, yynerrs, yylval, and yyparse.
      
      pars/pars0grm.c: Apply the changes made by make_bison.sh.
      1417f52a
    • marko's avatar
      branches/zip: Introduce UNIV_INTERN, a linkage specifier for InnoDB-global · 2c2b06ad
      marko authored
      symbols.  Use it for all definitions of non-static variables and functions.
      
      lexyy.c, make_flex.sh: Declare yylex as UNIV_INTERN, not static.  It is
      referenced from pars0grm.c.
      
      Actually, according to
      	nm .libs/ha_innodb.so|grep -w '[ABCE-TVXYZ]'
      the following symbols are still global:
      
      * The vtable for class ha_innodb
      * pars0grm.c: The function yyparse() and the variables yychar, yylval, yynerrs
      
      The required changes to the Bison-generated file pars0grm.c will be addressed
      in a separate commit, which will add a script similar to make_flex.sh.
      
      The class ha_innodb is renamed from class ha_innobase by a #define.  Thus,
      there will be no clash with the builtin InnoDB.  However, there will be some
      overhead for invoking virtual methods of class ha_innodb.  Ideas for making
      the vtable hidden are welcome.  -fvisibility=hidden is not available in GCC 3.
      2c2b06ad
    • marko's avatar
      branches/zip: Make static all declarations in the Flex-generated · c6d69feb
      marko authored
      lexical analyzer of the InnoDB SQL parser.
      c6d69feb
    • marko's avatar
      1b3c2f5c
  4. 04 Feb, 2008 1 commit
    • marko's avatar
      branches/zip: Apply some fixes suggested by Heikki. · b3c505de
      marko authored
      btr_cur_pessimistic_update(): Note why the externally stored columns
      of a record on a latched page cannot have been purged.
      
      trx_undo_get_undo_rec(): Clarify that the stack of versions is locked
      all the way down to the purge view.
      
      trx_undo_prev_version_build(): Set *old_vers = NULL also when the record
      could have been purged already.  Add some clarifying comments.
      b3c505de
  5. 30 Jan, 2008 1 commit
  6. 29 Jan, 2008 1 commit
    • vasil's avatar
      branches/zip: · 0ad9c404
      vasil authored
      Require PROCESS privileges instead of SUPER to view INFORMATION_SCHEMA tables.
      
      Suggested by:	Sergei Golubchik <serg@mysql.com> (in a private email,
      		pointed http://bugs.mysql.com/32710)
      0ad9c404
  7. 28 Jan, 2008 1 commit
  8. 25 Jan, 2008 3 commits
    • marko's avatar
      branches/zip: Assert in the adaptive hash that the insert buffer B-tree · adab0b86
      marko authored
      is not indexed.
      
      btr_search_update_hash_ref(), btr_search_drop_page_hash_index(),
      btr_search_build_page_hash_index(), btr_search_update_hash_on_delete(),
      btr_search_update_hash_node_on_insert(), btr_search_update_hash_on_insert(),
      btr_search_validate():
      Assert that hashed blocks do not belong to the insert buffer tree.
      
      btr_search_move_or_delete_hash_entries():
      When invoked on the insert buffer tree, assert that neither block is hashed.
      adab0b86
    • marko's avatar
      branches/zip: Fast index creation: Release locks on system tables before · 64c95da8
      marko authored
      creating indexes.  Lock the user table inside the user transaction.
      
      enum trx_dict_op: Remove TRX_OP_INDEX_MAY_WAIT.
      
      ha_innobase::add_index(): Lock the user tables within prebuilt->trx.
      Commit the data dictionary transaction before creating indexes.
      
      ha_innobase::final_drop_index(): Lock the user table within prebuilt->trx.
      64c95da8
    • marko's avatar
      branches/zip: Introduce the accessor function dict_index_is_ibuf() · 7d34b71c
      marko authored
      for determining if an index is the insert buffer B-tree.
      7d34b71c
  9. 24 Jan, 2008 2 commits
  10. 23 Jan, 2008 2 commits
    • marko's avatar
      branches/zip: When storing a longer prefix of an externally stored column · 6523ce6f
      marko authored
      to the undo log, also store the original length of the column, so that the
      changes will be correctly undone in transaction rollback or when fetching
      previous versions of the row.
      
      innodb-zip.test: New file, for tests of the compression.
      
      upd_field_t: Add orig_len, the original length of new_val.
      
      btr_push_update_extern_fields(): Restore the original prefix of the column.
      Add the parameter heap where memory will be allocated if necessary.
      
      trx_undo_rec_get_col_val(): Add the output parameter orig_len.
      
      trx_undo_page_report_modify_ext(): New function: Write an externally
      stored column to the undo log.  This is only called from
      trx_undo_page_report_modify(), and this is the only caller of
      trx_undo_page_fetch_ext().
      
      trx_undo_update_rec_get_update(): Read the original length of the column
      prefix to upd_field->orig_len.
      6523ce6f
    • vasil's avatar
      branches/zip: · 8ab2a1a4
      vasil authored
       
      Include univ.i in mysql_addons.h because univ.i includes innodb_redefine.h
      which is needed to rename the functions in this file with ibd_ prefix in
      the dynamic InnoDB plugin. Aka the renaming magic, required for the dynamic
      plugin to work.
      
      Approved by:	Marko
      8ab2a1a4
  11. 22 Jan, 2008 1 commit
    • inaam's avatar
      branches/zip: · cb2cabb9
      inaam authored
      Cast to  ib_uint64_t the mask for align down before doing the '~' operation on it.
      
      Reviewed by: Heikki
      cb2cabb9
  12. 21 Jan, 2008 1 commit
    • marko's avatar
      branches/zip: row_sel_get_clust_rec_for_mysql(): Similar to the function · 3152fe56
      marko authored
      row_sel_get_clust_rec(), return if a previous version of the clustered index
      record does not exist in the read view.  This bug was made and found by
      Heikki.  It was harmless as long as the clustered index record contained
      a long enough local prefix of externally stored columns, to allow secondary
      index records to be built without fetching BLOBs.
      
      InnoDB transactions should never look at a clustered index record whose
      transaction identifier (DB_TRX_ID) is not visible in the transaction's
      read view.
      3152fe56
  13. 17 Jan, 2008 1 commit
    • marko's avatar
      branches/zip: Avoid infinite page splits on compressed tables. · cf981715
      marko authored
      btr_page_get_sure_split_rec(): Remove the check if insert_size
      exceeds free_space.
      
      btr_page_split_and_insert(): If a compressed page has already been split,
      avoid further splits by inserting the record to an empty page.  As a
      performance optimization, avoid invoking btr_page_insert_fits() on
      compressed tables.
      cf981715
  14. 16 Jan, 2008 7 commits
    • marko's avatar
      branches/zip: btr_page_get_sure_split_rec(): Return NULL when the record · ddd940a9
      marko authored
      is not guaranteed to fit on a compressed page, instead of letting
      an assertion fail.
      ddd940a9
    • marko's avatar
      branches/zip: os_mem_alloc_large(), os_mem_free_large(): · c9b221e8
      marko authored
      Update ut_total_allocated_memory.
      c9b221e8
    • marko's avatar
      branches/zip: Free the buffer pool at shutdown. · 66791e5a
      marko authored
      buf_pool_free(): New function: Free all chunks of the buffer pool.
      
      innobase_shutdown_for_mysql(): Call buf_pool_free() right before
      ut_free_all_mem().
      66791e5a
    • marko's avatar
      branches/zip: Add comments about the lock and latch protection of externally · 7d18bba5
      marko authored
      stored columns (BLOBs).
      
      btr_copy_blob_prefix(), btr_copy_zblob_prefix(),
      btr_copy_externally_stored_field_prefix_low(),
      btr_copy_externally_stored_field_prefix(),
      btr_copy_externally_stored_field(),
      btr_rec_copy_externally_stored_field():
      Note that the page containing the clustered index record that points to
      the BLOB must be latched.
      
      btr_copy_zblob_prefix(): Note that there is no latch on the page, and thus
      all accesses to a given page via this function must be covered by the same
      set of locks or latches.
      
      btr_copy_zblob_prefix(): Note that the block acquired by
      buf_page_get_zip() is protected by an exclusive table lock or
      or by a latch on the clustered index record.
      7d18bba5
    • marko's avatar
      branches/zip: Fetch externally stored columns only when the clustered index · 865b5d6a
      marko authored
      record is protected by a latch or a lock.
      
      dtuple_copy(): New function: Copy a data tuple.
      
      row_upd_replace(): New function: Apply on a row an update vector that
      was built for the clustered index.  Set up a cache of externally stored
      column prefixes if needed.
      
      undo_node_t: Add the fields undo_row, undo_ext.
      
      row_undo_search_clust_to_pcur(): Initialize undo_row and undo_ext.
      
      row_undo_mod_upd_exist_sec(): Instead of fetching prefixes of
      externally stored columns, use the undo_row and undo_ext that were
      initialized in row_undo_search_clust_to_pcur().
      
      upd_node_t: Remove the field n_ext.  Add the fields upd_row and upd_ext.
      
      row_upd_store_row(): Initialize the upd_row and upd_ext fields of upd_node_t.
      
      row_upd_sec_index_entry(), row_upd_clust_rec_by_insert(): Instead of
      fetching prefixes of externally stored columns, use the upd_row
      and upd_ext that were initialized in row_upd_store_row().
      865b5d6a
    • marko's avatar
      branches/zip: row_undo_ins_parse_undo_rec(): Initialize node->update · 35d020df
      marko authored
      so that it will not be uninitialized when the undo record is being
      processed.
      35d020df
    • vasil's avatar
      branches/zip: · 40e01b2f
      vasil authored
       
      Move the column trx_weight near the end in the
      information_schema.innodb_trx table.
      
      Suggested by:	Ken
      Approved by:	Marko
      40e01b2f
  15. 15 Jan, 2008 2 commits
  16. 14 Jan, 2008 3 commits
  17. 11 Jan, 2008 3 commits
    • marko's avatar
      branches/zip: Clarify why certain calls of · 952b0e7f
      marko authored
      btr_rec_copy_externally_stored_field() are safe.
      
      row_merge_copy_blobs(): Note that the table is locked during index creation.
      Therefore, none of its BLOBs can be freed.
      
      row_sel_fetch_columns(): Note that rec must be protected by a page latch.
      Add const qualifier to rec.
      
      row_sel_get_clust_rec(): Note that the clustered index record is protected
      by a page latch that was acquired when the persistent cursor was positioned
      and that the latch will be freed by mini-transaction commit.
      
      row_sel_try_search_shortcut(): Check the delete-mark flag before fetching
      the columns.  Note that the clustered index record is protected
      by a page latch that was acquired when the persistent cursor was positioned
      and that the latch will be freed by mini-transaction commit.
      
      row_sel(), row_search_for_mysql(): Note that the clustered index record
      is protected by a page latch that was acquired when the persistent cursor
      was positioned and that the latch will be freed by mini-transaction commit.
      
      row_sel_field_store_in_mysql_format(): Add const qualifier to data.
      
      row_sel_store_mysql_rec(), row_sel_push_cache_row_for_mysql():
      Add const qualifier to rec.  Note that rec must be protected by a page latch.
      952b0e7f
    • marko's avatar
    • marko's avatar
      branches/zip: Add clarifying comments that the clustered index record must · 31e200da
      marko authored
      be protected from being deleted while any externally stored columns are
      being fetched.
      
      row_ext_create(),
      row_upd_index_replace_new_col_vals(),
      row_upd_index_replace_new_col_vals_index_pos(),
      row_sel_sec_rec_is_for_blob(),
      row_sel_sec_rec_is_for_clust_rec(): Note that the clustered
      index record must be covered by a lock or a page latch.
      
      row_upd_sec_index_entry(), row_upd_clust_rec_by_insert(),
      row_undo_mod_upd_exist_sec(): Note that these functions probably
      do not obtain an appropriate lock on the clustered index record
      before fetching any externally stored columns.
      31e200da
  18. 10 Jan, 2008 1 commit