Commit graph

828 commits

Author SHA1 Message Date
marko
8ee0f733e5 branches/zip: buf_page_set_old(): Improve UNIV_LRU_DEBUG diagnostics
in order to catch the buf_pool->LRU_old corruption reported in Issue #381.

buf_LRU_old_init(): Set the property from the tail towards the front
of the buf_pool->LRU list, in order not to trip the debug check.
2009-10-28 14:10:34 +00:00
marko
abcd0a5f0b branches/zip: row_prebuilt_struct::prebuilts: Unused field, remove. 2009-10-26 07:32:23 +00:00
sunny
7847d84d5b branches/zip: Change page_mem_alloc_free() to inline.
Fix Bug #47058 - Failure to compile innodb_plugin on solaris 10u7 + spro cc/CC 5.10
2009-10-14 21:29:01 +00:00
calvin
6642d4703f branches/zip: non-functional changes
Changes from MySQL to fix build issue.
2009-10-13 14:23:35 +00:00
pekka
bb437b0f2a branches/zip: Revert r6044 which added os_file_is_same() function
(issue#186). This functionality is moved to Hot Backup source tree.
2009-10-08 08:24:56 +00:00
pekka
4ed1a96fe7 branches/zip:
Add os_file_is_same() function for Hot Backup (inside ifdef UNIV_HOTBACKUP).
This is part of the fix for Issue #186.
Note! The Windows implementation is incomplete.
2009-10-06 13:44:54 +00:00
calvin
e0e33cb44e branches/zip: non-functional changes
Fix typo.
2009-09-30 19:32:02 +00:00
marko
73efafc2aa branches/zip: recv_no_log_write: New debug flag for tracking down
Mantis Issue #347.  No modifications should be made to the database
while recv_apply_hashed_log_recs() is about to complete.
2009-09-30 12:55:23 +00:00
marko
3b38bf02cb branches/zip: Do not write to PAGE_INDEX_ID after page creation,
not even when restoring an uncompressed page after a compression failure.

btr_page_reorganize_low(): On compression failure, do not restore
those page header fields that should not be affected by the
reorganization.  Instead, compare the fields.

page_zip_decompress(): Add the parameter ibool all, for copying all
page header fields.  Pass the parameter all=TRUE on block read
completion, redo log application, and page_zip_validate(); pass
all=FALSE in all other cases.

page_zip_reorganize(): Do not restore the uncompressed page on
failure.  It will be restored (to pre-modification state) by the
caller anyway.

rb://167, Issue #346
2009-09-28 07:52:25 +00:00
calvin
7020976943 branches/zip: fix bug#47055 unconditional exit(1) on ERROR_WORKING_SET_QUOTA
1453 (0x5AD) for InnoDB backend

When error ERROR_WORKING_SET_QUOTA or ERROR_NO_SYSTEM_RESOURCES
occurs, yields for 100ms and retries the operation.

Approved by: Heikki (on IM)
2009-09-25 18:14:43 +00:00
vasil
23a1c5d3a1 branches/zip:
Fix typo.
2009-09-18 16:06:46 +00:00
marko
d6faf6c464 branches/zip: Introduce UNIV_LOG_LSN_DEBUG and MLOG_LSN for redo log
diagnostics.  This was written in order to better track down
Issue #313 in InnoDB Hot Backup.

MLOG_LSN: A new redo log entry type, for recording the current log
sequence number (LSN).  This will be checked in an assertion in
recv_parse_log_rec().

rb://161, discussed with Sunny and Vasil.
2009-09-16 07:07:21 +00:00
marko
e0090e408c branches/zip: ut0ut.h: Do not #include "os0sync.h" #ifdef UNIV_HOTBACKUP.
Since r5872, the InnoDB Hot Backup build was broken.
Fix it by not defining any thread synchronization primitives in ut0ut.h.
InnoDB Hot Backup is a single-threaded program.
2009-09-15 10:26:01 +00:00
vasil
78b505b47f branches/zip:
Back-merge c5880 and c5881 from branches/embedded-1.0:

  ------------------------------------------------------------------------
  r5880 | vasil | 2009-09-12 17:28:44 +0300 (Sat, 12 Sep 2009) | 18 lines
  Changed paths:
     M /branches/embedded-1.0/configure.in
     M /branches/embedded-1.0/include/os0sync.h
     M /branches/embedded-1.0/srv/srv0start.c
  
  branches/embedded-1.0:
  
  Clean up and simplify the code that surrounds the atomic ops:
  
  * Simplify the code that prints what atomics are used:
  Instead of repeating the same conditions on which each atomics are used
  use just one printf that prints a variable defined by the code which
  chooses what atomics to use.
  
  * In os0sync.h pick up each atomic variant only if it has been selected
  by autoconf (based on IB_ATOMIC_MODE_* macros). Define the startup message
  to be printed.
  
  * In configure.in: check what user has chosen and if he has chosen
  something that is not available, emit an error. If nothing has been chosen
  explicitly by the user, auto select an option according to the described
  logic in configure.in.
  
  ------------------------------------------------------------------------
  r5881 | vasil | 2009-09-12 20:08:27 +0300 (Sat, 12 Sep 2009) | 4 lines
  Changed paths:
     M /branches/embedded-1.0/configure.in
  
  branches/embedded-1.0:
  
  Fix syntax error in test program.
  
  ------------------------------------------------------------------------
2009-09-14 07:38:45 +00:00
vasil
f2bb363bc8 branches/zip:
Remove unnecessary macro.
2009-09-12 11:11:25 +00:00
vasil
729cb51007 branches/zip:
Explicitly include os0sync.h to the places where HAVE_ATOMIC_BUILTINS and
INNODB_RW_LOCKS_USE_ATOMICS are used to avoid potential problems.
2009-09-12 08:35:17 +00:00
vasil
a2b17a33ca branches/zip:
Rename HAVE_SOLARIS_ATOMICS to HAVE_IB_SOLARIS_ATOMICS and 
IB_HAVE_PAUSE_INSTRUCTION to HAVE_IB_PAUSE_INSTRUCTION so they
all follow the same HAVE_IB_* convention.
2009-09-12 08:25:44 +00:00
vasil
7bb8d19ceb branches/zip:
Define HAVE_ATOMIC_BUILTINS and INNODB_RW_LOCKS_USE_ATOMICS in os0sync.h
instead of in univ.i. The code expects os_*() macros to be present if
HAVE_ATOMIC_BUILTINS and INNODB_RW_LOCKS_USE_ATOMICS are defined. So define
them next to defining the os_*() macros.
2009-09-12 08:13:44 +00:00
vasil
ff368dec8a branches/zip:
Include ut0auxconf.h only if none of the macros it would define is defined.
The check when to include this header was outdated from the time when there
was only one macro involved.

Move the atomics checks that are in univ.i outside of
#if windows ... #else ... #endif
This simplifies the code and removes some duplicates like defining
HAVE_ATOMIC_BUILTINS if HAVE_WINDOWS_ATOMICS is defined in both branches.

Do not define the same macro HAVE_ATOMIC_PTHREAD_T for different events.
Instead define HAVE_IB_ATOMIC_PTHREAD_T_GCC and
HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS.
2009-09-12 07:33:11 +00:00
vasil
69bf228c69 branches/zip:
Move the check whether to include ut0auxconf.h before everything because
we are now even checking for GCC atomics, we relied on MySQL to define
this macro before.
2009-09-12 07:01:17 +00:00
vasil
96c1bc3244 branches/zip:
Update comment to reflect reality.
2009-09-12 06:43:45 +00:00
marko
7fd517a79d branches/zip: Roll back recovered dictionary transactions before
dropping incomplete indexes (Issue #337).

trx_rollback_or_clean_recovered(ibool all): New function, split from
trx_rollback_or_clean_all_recovered().  all==FALSE will only roll back
dictionary transactions.

recv_recovery_from_checkpoint_finish(): Call
trx_rollback_or_clean_recovered(FALSE) before
row_merge_drop_temp_indexes().

rb://158 approved by Sunny Bains
2009-09-10 10:29:46 +00:00
marko
3bd1a9fbfd branches/zip: Reduce mutex contention that was introduced when
addressing Bug #45015 (Issue #316), in r5703.

buf_page_set_accessed_make_young(): New auxiliary function, called by
buf_page_get_zip(), buf_page_get_gen(),
buf_page_optimistic_get_func(). Call ut_time_ms() outside of
buf_pool_mutex. Use cached access_time.

buf_page_set_accessed(): Add the parameter time_ms, so that
ut_time_ms() need not be called while holding buf_pool_mutex.

buf_page_optimistic_get_func(), buf_page_get_known_nowait(): Read
buf_page_t::access_time without holding buf_pool_mutex. This should be
OK, because the field is only used for heuristic purposes.

buf_page_peek_if_too_old(): If buf_pool->freed_page_clock == 0, return
FALSE, so that we will not waste time moving blocks in the LRU list in
the warm-up phase or when the workload fits in the buffer pool.

rb://156 approved by Sunny Bains
2009-09-10 09:47:09 +00:00
marko
baaf443343 branches/zip: buf_page_release(): De-stutter the function comment. 2009-09-10 09:10:20 +00:00
marko
5bae37f691 branches/zip: trx_cleanup_at_db_startup(): Fix a typo in comment. 2009-09-10 04:29:31 +00:00
marko
944431f027 branches/zip: buf_page_is_accessed(): Correct the function comment. 2009-09-09 06:25:00 +00:00
marko
2b85929647 branches/zip: buf_page_peek_if_too_old(): Silence a compiler warning
that was introduced in r5779 on 32-bit systems.
2009-09-09 06:00:59 +00:00
marko
3952b42b75 branches/zip: ut_time_ms(): Return ulint, not uint. 2009-09-09 05:50:50 +00:00
marko
5419aefd62 branches/zip: buf_page_peek_if_too_old(): Make the bitmasking work when
buf_pool->freed_page_clock is wider than 32 bits.
2009-09-09 05:17:19 +00:00
marko
3596a58d3e branches/zip: MLOG_MULTI_REC_END: Correct the comment. 2009-09-03 10:05:44 +00:00
marko
932c00c32c branches/zip: log_reserve_and_write_fast(): Do not cache the log_sys pointer
in a local variable.
2009-09-03 07:55:36 +00:00
marko
92e8d1b2b6 branches/zip: log_check_log_recs(): Enclose in #ifdef UNIV_LOG_DEBUG.
Add const qualifiers.
2009-09-03 07:38:22 +00:00
marko
1a83ac7fc4 branches/zip: ut_align(): Make ptr const, like in ut_align_down(). 2009-09-03 07:28:35 +00:00
marko
2ee3352082 branches/zip: log_reserve_and_write_fast(): Remove the redundant
output parameter "success".
Success is also indicated by a nonzero return value.
2009-09-03 05:36:12 +00:00
marko
1e7704391e branches/zip: Enclose some timestamp functions in #ifndef UNIV_HOTBACKUP. 2009-09-02 06:53:19 +00:00
marko
f1acb7fb8a branches/zip: univ.i: Do not undefine PACKAGE or VERSION.
InnoDB source code does not refer to these macros.
2009-09-02 06:43:09 +00:00
sunny
c4aa83a630 branches/zip: Fix a regression introduced by the fix for bug#26316. We check
whether a transaction holds any AUTOINC locks before we acquire the kernel
mutex and release those locks.

Fix for rb://153. Approved by Marko.
2009-09-02 06:05:15 +00:00
vasil
66771d73e9 branches/zip:
Fix Bug#46718 InnoDB plugin incompatible with gcc 4.1 (at least: on PPC): "Undefined symbol"

by implementing our own check in plug.in instead of using the result from
the check from MySQL because it is insufficient.

Approved by:	Marko (rb://154)
2009-08-31 06:47:49 +00:00
inaam
3811787c3e branches/zip
Remove unused macros as we erased the random readahead code in r5703.
Also fixed some comments.
2009-08-27 15:20:35 +00:00
inaam
8658a2c43d branches/zip rb://147
Done away with following two status variables:

innodb_buffer_pool_read_ahead_rnd
innodb_buffer_pool_read_ahead_seq

Introduced two new status variables:
innodb_buffer_pool_read_ahead = number of pages read as part of
readahead since server startup
innodb_buffer_pool_read_ahead_evicted = number of pages that are read
in as readahead but were evicted before ever being accessed since
server startup i.e.: a measure of how badly our readahead is
performing

SHOW INNODB STATUS will show two extra numbers in buffer pool section:
pages read ahead/sec and pages evicted without access/sec

Approved by: Marko
2009-08-27 15:00:27 +00:00
marko
1a9bfd68d0 branches/zip: dict_index_find_cols(): On column name lookup failure,
return DB_CORRUPTION (HA_ERR_CRASHED) instead of abnormally
terminating the server.  Also, disable the previously added diagnostic
output to the error log, because mysql-test-run does not like extra
output in the error log.  (Bug #44571)

dict_index_add_to_cache(): Handle errors from dict_index_find_cols().

mysql-test/innodb_bug44571.test: A test case for triggering the bug.

rb://135 approved by Sunny Bains.
2009-08-27 10:56:24 +00:00
marko
0f7895d477 branches/zip: Replace the constant 3/8 ratio that controls the LRU_old
size with the settable global variable innodb_old_blocks_pct. The
minimum and maximum values are 5 and 95 per cent, respectively. The
default is 100*3/8, in line with the old behavior.

ut_time_ms(): New utility function, to return the current time in
milliseconds. TODO: Is there a more efficient timestamp function, such
as rdtsc divided by a power of two?

buf_LRU_old_threshold_ms: New variable, corresponding to
innodb_old_blocks_time. The value 0 is the default behaviour: no
timeout before making blocks 'new'.

bpage->accessed, bpage->LRU_position, buf_pool->ulint_clock: Remove.

bpage->access_time: New field, replacing bpage->accessed. Protected by
buf_pool_mutex instead of bpage->mutex. Updated when a page is created
or accessed the first time in the buffer pool.

buf_LRU_old_ratio, innobase_old_blocks_pct: New variables,
corresponding to innodb_old_blocks_pct

buf_LRU_old_ratio_update(), innobase_old_blocks_pct_update(): Update
functions for buf_LRU_old_ratio, innobase_old_blocks_pct.

buf_page_peek_if_too_old(): Compare ut_time_ms() to bpage->access_time
if buf_LRU_old_threshold_ms && bpage->old.  Else observe
buf_LRU_old_ratio and bpage->freed_page_clock.

buf_pool_t: Add n_pages_made_young, n_pages_not_made_young,
n_pages_made_young_old, n_pages_not_made_young, for statistics.

buf_print(): Display buf_pool->n_pages_made_young,
buf_pool->n_pages_not_made_young.  This function is only for crash
diagnostics.

buf_print_io(): Display buf_pool->LRU_old_len and quantities derived
from buf_pool->n_pages_made_young, buf_pool->n_pages_not_made_young.
This function is invoked by SHOW ENGINE INNODB STATUS.

rb://129 approved by Heikki Tuuri.  This addresses Bug #45015.
2009-08-27 06:25:00 +00:00
vasil
3894dcdae7 branches/zip:
Merge a change from MySQL:

 http://lists.mysql.com/commits/80832

 2968 Jonathan Perkin	2009-08-14
      Build fixes for Windows, AIX, HP/UX and Sun Studio11, from Timothy Smith.
      modified:
        CMakeLists.txt
        cmd-line-utils/readline/util.c
        storage/innodb_plugin/handler/i_s.cc
        storage/innodb_plugin/include/univ.i
2009-08-26 12:15:59 +00:00
marko
018a9efafa branches/zip: UNIV_DEBUG_LOCK_VALIDATE: Move the definition to univ.i. 2009-08-26 12:14:59 +00:00
marko
1fc7553e2d branches/zip: buf_page_t: Clarify that bpage->list may contain garbage.
This comment was provoked by Inaam.
2009-08-26 10:25:26 +00:00
marko
bf0ee2f149 branches/zip: trx_undo_rec_copy(): Add const qualifier to undo_rec.
This is a non-functional change.
2009-08-12 12:16:37 +00:00
marko
38657b251e branches/zip: trx_general_rollback_for_mysql(): Remove the redundant
parameter partial. If savept==NULL, partial==FALSE.
2009-08-11 10:42:37 +00:00
marko
5c3850c842 branches/zip: Bump the version number to 1.0.5 after releasing 1.0.4. 2009-08-11 08:54:16 +00:00
calvin
173f74eabe branches/zip: remove duplicate "the" in comments. 2009-08-06 22:04:03 +00:00
marko
3d5e2e868d branches/zip: Replace <number> with NUMBER in some comments,
to avoid problems with Doxygen XML output.
2009-08-05 10:06:55 +00:00