------------------------------------------------------------------------
r3180 | marko | 2008-11-21 16:36:18 +0200 (Fri, 21 Nov 2008) | 3 lines
branches/zip: buf_LRU_free_block(): Do not assert on ibuf_count until after
it has been determined that the block is not being I/O-fixed.
This corrects the mistake that was made in r3177.
------------------------------------------------------------------------
------------------------------------------------------------------------
r3170 | marko | 2008-11-21 10:11:18 +0200 (Fri, 21 Nov 2008) | 4 lines
branches/zip: dtuple_print(): Dump each field in a separate line,
so that the dumps can be read and compared more easily.
This is related to the change to rec_print_old() and rec_print_comp()
in r3148.
------------------------------------------------------------------------
r3177 | marko | 2008-11-21 16:24:31 +0200 (Fri, 21 Nov 2008) | 3 lines
branches/zip: buf_LRU_free_block(), buf_page_try_get_func(): Assert that
there is nothing in the insert buffer for the page. This is for
tracking down Issue #128.
------------------------------------------------------------------------
------------------------------------------------------------------------
r3036 | marko | 2008-11-12 12:34:30 +0200 (Wed, 12 Nov 2008) | 4 lines
branches/zip: dtuple_validate(): When UNIV_DEBUG_VALGRIND is defined,
rely solely on the UNIV_MEM_ASSERT_RW() check and disable the for loop
that would only cause additional noise.
------------------------------------------------------------------------
r3037 | marko | 2008-11-12 13:52:57 +0200 (Wed, 12 Nov 2008) | 6 lines
branches/zip: row_vers_impl_x_locked_off_kernel(): Remove compilation
warnings about prev_trx_id and vers_del being possibly uninitialized,
by handling the case prev_version == NULL in a single if block.
rb://45 approved by Inaam Rana.
------------------------------------------------------------------------
r3131 | michael | 2008-11-17 14:56:56 +0200 (Mon, 17 Nov 2008) | 9 lines
branches/zip:
rb://53
Improve innodb_supports_xa system variable handling and
reduces the number of retrievals of the value from MySQL.
Approved by: Marko, over IM
------------------------------------------------------------------------
r3132 | michael | 2008-11-17 16:02:01 +0200 (Mon, 17 Nov 2008) | 5 lines
branches/zip: rb://53
Final version of rb://53, fixes the styling of a comment, makes
the definition and the declaration of thd_supports_xa() identical commentwise.
------------------------------------------------------------------------
r3141 | marko | 2008-11-19 16:39:55 +0200 (Wed, 19 Nov 2008) | 1 line
branches/zip: buf_LRU_free_block(): Clarify the function comment.
------------------------------------------------------------------------
r3144 | marko | 2008-11-20 11:39:49 +0200 (Thu, 20 Nov 2008) | 2 lines
branches/zip: rec_get_nth_field_offs_old(): Add UNIV_UNLIKELY hints
to assertion-like tests.
------------------------------------------------------------------------
r3145 | marko | 2008-11-20 12:22:40 +0200 (Thu, 20 Nov 2008) | 20 lines
branches/zip: Always check for "row too large" when executing SQL to create
an index or table. We have to skip this check when loading table definitions
from the data dictionary, because we could otherwise refuse to load old
tables (even uncompressed ones). This addresses Issue #119.
The first "row too large" check was implemented in MySQL 5.0.3
to address MySQL Bug #5682. In the InnoDB Plugin 1.0.2, a more
accurate check was implemented in innodb_strict_mode. We now
make the check unconditional.
dict_create_index_step(): Pass strict=TRUE to dict_index_add_to_cache().
trx_is_strict(), thd_is_strict(): Remove.
innodb-zip.test: Test in innodb_strict_mode=OFF.
innodb_bug36169.test: Ensure that none of the tables can be created.
rb://56 approved by Sunny Bains.
------------------------------------------------------------------------
r3148 | marko | 2008-11-20 13:27:27 +0200 (Thu, 20 Nov 2008) | 3 lines
branches/zip: rec_print_old(), rec_print_comp(): Dump each field in a
separate line, so that the dumps can be read and compared more easily.
------------------------------------------------------------------------
This patch is to improve recovery performance in InnoDB+.
It includes introduction of red-black tree for sorted insertion into
the flush_list and couple of other quirks. More can be found
at: https://svn.innodb.com/innobase/Recovery_Performance_Improvements
Reviewed by: Marko
that were accidentally committed in r2971:
univ.i, ha_innobase::create(): Reduce the uncompressed page size from
16 to 4 kilobytes.
btr_cur_search_to_nth_level(): Print a diagnostic message when the
leaf page of a secondary index is being requested from the disk.
buf_read_ahead_random(), buf_read_ahead_linear(): Disable.
Invoke ibuf_get_volume_buffered_count() as many times as
ibuf_rec_get_volume(rec), so that *n_recs will be updated as appropriate.
This fixes Issue #82: some deletes will be buffered in purge.
buf_pool->watch_ fields to start with the common prefix buf_pool_watch,
so that they can be searched easily:
buf_pool_watch_set(): Renamed from buf_pool_add_watch(). The "add" was
misleading, because only one watch can be active at a time.
buf_pool_watch_clear(): Renamed from buf_pool_remove_watch().
buf_pool_watch_occurred(): Renamed from buf_pool_watch_happened().
buf_page_get_gen(): Once again, zip_size must always match the
compressed page size of the tablespace where the page is requested from.
This seems to hold also for all calls from the insert buffer.
buf_page_optimistic_get_func(): Do not pass mtr to ibuf_page(), because
there is no guarantee that mtr would contain an x-latch to the insert
buffer bitmap page that covers (block->page.space, block->page.offset).
zip_size should always equal fil_space_get_zip_size(space), even when called
from ibuf.
ibuf_page() should be called with mtr=NULL to be equivalent to the original
implementation. We cannot assume that mtr holds an x-latch on the insert
buffer bitmap page that covers the page that is being requested.
from branches/zip.
btr_cur_optimistic_delete(): Split a too long line in the way it is
split in branches/zip.
buf_page_get_gen(): Add missing space in the function comment.
buf_print_io(): Restoer a removed space to the printout.
univ.i: Remove C++-style (or C99-style) comments.
buf0buf.h: Undo the white-space changes to the wrapper macros of
buf_page_get_gen().
ibuf_update_free_bits_low(): Revert the changes. Restore the assertion
that this function must not be invoked on compressed pages. The function
ibuf_update_free_bits_zip() is for compressed pages.
ibuf_insert_to_index_page(): Undo a white-space change.
The followin mysql-tests failed (and they are known to fail):
main.information_schema [ fail ]
main.innodb_file_per_table_basic[ fail ]
main.type_bit_innodb [ fail ]
Tested against : MYSQL_SERVER_VERSION "5.1.28"
buf_LRU_old_adjust_len(): Replace a constant ut_ad() with a preprocessor check.
buf_LRU_free_block(): Remove the check for the unlikely case
buf_pool->LRU_old == prev_b in order to simplify the function.
The check was implemented as part of r2306.
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.
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.
of the buffer pool mutex. Apparently, it is temporarily released also
in older versions of MySQL/InnoDB for the duration of the
btr_search_drop_page_hash_index() call [in buf_LRU_free_block()].
the buffer pool mutex. The instrumentation can be activated by
defining UNIV_DEBUG or UNIV_BUF_DEBUG at compilation time.
buf_pool_mutex_exit_forbidden: New variable. When this is nonzero,
an assertion will fail in buf_pool_mutex_exit().
buf_pool_mutex_exit_forbid(): Macro for declaring that the buffer pool
mutex must not be released. Calls may be nested.
buf_pool_mutex_exit_allow(): Macro for declaring that the buffer pool
mutex may be released. Calls may be nested.
buf_LRU_search_and_free_block(): Prohibit buf_pool_mutex_exit() in the
scope of the function.
buf_LRU_free_block(): Prohibit buf_pool_mutex_exit() in buf_buddy_alloc()
and buf_buddy_free().
buf_LRU_block_remove_hashed_page(): Prohibit buf_pool_mutex_exit()
in buf_buddy_free().
buf_pool->mutex: Rename to buf_pool_mutex, so that the wrappers will have
to be used when changes are merged from other source trees.
buf_pool->zip_mutex: Rename to buf_pool_zip_mutex.
buf_pool_mutex_own(), buf_pool_mutex_enter(), buf_pool_mutex_exit():
Wrappers for buf_pool_mutex.
buf_buddy_min_n_frames into two, also buf_buddy_max_n_frames.
Set the default values in such a way that a strict LRU policy will apply
for replacing compressed or uncompressed page frames in the buffer pool.
These parameters have not yet been exposed to the MySQL layer.
allocating compressed page frames or their control blocks. Also note
that if buf_buddy_alloc() is used for allocating a control block,
it must be initialized before releasing buf_pool->mutex.
buf_page_init_for_read(): When the page hash check fails after
buf_buddy_alloc(), free the uninitialized control block before freeing
the compressed page frame. This fixes a potential error in
buf_buddy_relocate_block().
mutex is temporarily released.
buf_LRU_free_block(), buf_buddy_alloc_clean(): Add an output parameter that
will be assigned TRUE when the buffer pool mutex is released.
This bug was spotted by and fix provided by Sunny.
buf_block_is_uncompressed(): Check that the pointer is aligned. Use the
C modulus operator % instead of ut_align_offset(), because sizeof(buf_block_t)
is not guaranteed to be a power of 2.
point to a buffer pool chunk that has been released when resizing the
buffer pool.
buf_block_is_uncompressed(): Check that the pointer is aligned. Thanks
to this check, it is safe to pass an arbitrary pointer as a guess
to buf_page_get_gen().
buf_buddy_relocate(): Allow the source block to contain uninitialized data.
buf0buddy.c: Replace the remaining VALGRIND_CHECK_ macros with the wrappers
defined in univ.i.
buf_LRU_free_block(): Check that the block descriptor contains valid data.
buf_buddy_relocate(): Check that the source block contains valid data.
buf_page_get_gen(): Do not dereference bpage after calling buf_relocate().
This avoids a bogus Valgrind warning; the memory itself was valid.
buf_page_hash_get(): Check that the returned block descriptor contains
valid data.