Commit graph

50404 commits

Author SHA1 Message Date
unknown
c4c63a1425 my_uuid_init() was forgotten
mysys/my_uuid.c:
  de-corelate two randominit's
sql/mysqld.cc:
  my_uuid_init() was forgotten here
2007-12-16 12:31:29 +01:00
unknown
fe2636faaa include sys/stat.h
remove duplicate symbol


configure.in:
  include sys/stat.h
include/my_global.h:
  include sys/stat.h
sql/mysqld.cc:
  remove duplicate symbol
2007-12-15 13:07:40 +01:00
unknown
2df4e9996a pushbuild fixes to please gcc and darwin/ppc64
include/my_atomic.h:
  transparent_union doesn't work in g++, doesn't work on darwin/ppc64
storage/maria/ma_blockrec.c:
  compiler warning
storage/maria/ma_loghandler.c:
  compiler warning
storage/maria/ma_page.c:
  compiler warning
2007-12-14 23:26:17 +01:00
unknown
105ce5386d fix for pushbuild test failure
mysql-test/t/ps_maria.test:
  test Maria presence before setting Maria variables
2007-12-14 17:40:08 +01:00
unknown
914f219c83 fix for some gcc -ansi warnings.
storage/maria/ma_checkpoint.c:
  gcc -ansi warnings
storage/maria/ma_pagecache.c:
  comment
storage/maria/ma_recovery.c:
  gcc -ansi warnings
2007-12-14 17:24:46 +01:00
unknown
8e8362cc50 Merge gbichot@bk-internal.mysql.com:/home/bk/mysql-maria
into  gbichot4.local:/home/mysql_src/mysql-maria-monty
2007-12-14 16:14:59 +01:00
unknown
d72c22dee4 WL#3072 - Maria recovery.
* fix for bitmap vs checkpoint bug which could lead to corrupted
tables in case of crashes at certain moments: a bitmap could be flushed
to disk even though it was inconsistent with the log (it could be
flushed before REDO-UNDO are written to the log). One bug remains, need
code from others. Tests added. Fix is to pin unflushable bitmap pages,
and let checkpoint wait for them to be flushable.
* fix for long_trid!=0 assertion failure at Recovery.
* less useless wakeups in the background flush|checkpoint thread.
* store global_trid_generator in checkpoint record.


mysql-test/r/maria-recovery.result:
  result update
mysql-test/t/maria-recovery.test:
  make it easier to locate subtests
storage/maria/ma_bitmap.c:
  When we send a bitmap to the pagecache, if this bitmap is not in a
  flushable state we keep it pinned and add it to a list, it will be
  unpinned when the bitmap is flushable again.
  A new function _ma_bitmap_flush_all() used by checkpoint.
  A new function _ma_bitmap_flushable() used by block format to signal
  when it starts modifying a bitmap and when it is done with it.
storage/maria/ma_blockrec.c:
  When starting a row operation (insert/update/delete), mark that
  the bitmap is not flushable (because for example INSERT is going
  to over-allocate in the bitmap to prevent other threads from using
  our data pages). If a checkpoint comes at this moment it will wait
  for the bitmap to be flushable before flushing it.
  When the operation ends, bitmap becomes flushable again; that
  transition is done under the bitmap's mutex (needed for correct
  synchro with a concurrent checkpoint); but for INSERT/UPDATE this
  happens inside _ma_bitmap_release_unused() at a place where it already
  has the mutex, so the only penalty (mutex adding) is in DELETE and UNDO
  of INSERT. In case of errors after setting the bitmap unflushable,
  we must always set it back to flushable or checkpoint would block.
  Debug possibilities to force a sleep while the bitmap is over-allocated.
  In case of error in get_head_or_tail() in allocate_and_write_block_record(),
  we still need to unpin all pages.
  Bugfix: _ma_apply_redo_insert_row_blobs() produced wrong
  data_file_length.
storage/maria/ma_blockrec.h:
  new bitmap calls.
storage/maria/ma_checkpoint.c:
  filter_flush_indirect not needed anymore (flushing bitmap
  pages happens in _ma_bitmap_flush_all() now). So
  st_filter_param::is_data_file|pages_covered_by_bitmap not needed.
  Other filter_flush* don't need to flush bitmap anymore.
  Add debug possibility to flush all bitmap pages outside of a checkpoint,
  to simulate pagecache LRU eviction.
  When the background flush/checkpoint thread notices it has nothing
  to flush, it now sleeps directly until the next potential checkpoint
  moment instead of waking up every second.
  When in checkpoint we decide to not store a table in the checkpoint record
  (because it has logged no writes for example), we can also skip flushing
  this table.
storage/maria/ma_commit.c:
  comment is out-of-date
storage/maria/ma_key_recover.c:
  comment fix
storage/maria/ma_loghandler.c:
  comment is out-of-date
storage/maria/ma_open.c:
  comment is out-of-date
storage/maria/ma_pagecache.c:
  comment for bug to fix. And we don't take checkpoints at end of REDO
  phase yet so can trust block->type.
storage/maria/ma_recovery.c:
  Comments. Now-unneeded code for incomplete REDO-UNDO groups removed.
  When we forget about an old transaction we must really forget
  about it with bzero() (fixes the "long_trid!=0 assertion" recovery
  bug). When we delete a row with maria_delete() we turn on
  STATE_NOT_OPTIMIZED_ROWS so we do the same when we see a CLR_END
  for an UNDO_ROW_INSERT or when we execute an UNDO_ROW_INSERT (in both
  cases a row was deleted). Pick up max_long_trid from the checkpoint record.
storage/maria/maria_chk.c:
  comment
storage/maria/maria_def.h:
  MARIA_FILE_BITMAP gets new members: 'flushable', 'bitmap_cond' and
  'pinned_pages'.
storage/maria/trnman.c:
  I used to think that recovery only needs to know the maximum TrID
  of the lists of active and committed transactions. But no, sometimes
  both lists can even be empty and their TrID should not be reused.
  So Checkpoint now saves global_trid_generator in the checkpoint record.
storage/maria/trnman_public.h:
  macros to read/store a TrID
mysql-test/r/maria-recovery-bitmap.result:
  result is ok. Without the code fix, we would get a corruption message
  about the bitmap page in CHECK TABLE EXTENDED.
mysql-test/t/maria-recovery-bitmap-master.opt:
  usual when we crash mysqld in tests
mysql-test/t/maria-recovery-bitmap.test:
  test of recovery problems specific of the bitmap pages.
2007-12-14 16:14:12 +01:00
unknown
313bb4831d more cmake fixes 2007-12-14 10:51:07 +01:00
unknown
9c4998fc12 Merge bk-internal.mysql.com:/home/bk/mysql-maria
into  janus.mylan:/usr/home/serg/Abk/mysql-maria
2007-12-14 09:47:36 +01:00
unknown
f970477b36 windows fix: fix the #include directive 2007-12-14 09:47:00 +01:00
unknown
531a78f180 postreview changes.
storage/maria/ma_loghandler.c:
  Using pthread_cond instead of WQUEUE.
2007-12-13 23:46:59 +02:00
unknown
6b89901cdf Merge desktop.sanja.is.com.ua:/home/bell/mysql/bk/mysql-maria
into  desktop.sanja.is.com.ua:/home/bell/mysql/bk/work-maria-testfail


mysql-test/t/maria-recovery.test:
  Auto merged
storage/maria/ma_loghandler.c:
  Auto merged
2007-12-13 22:14:45 +02:00
unknown
77e08a745b Fixed maximum file size change. Now it flush buffer after
switching to new one which prevent deadlock.


mysql-test/r/maria-purge.result:
  Fixed test which use setting maria_checkpoint_interval to force
    checkpoint now.
mysql-test/t/maria-purge.test:
  Fixed test which use setting maria_checkpoint_interval to force
    checkpoint now.
2007-12-13 22:12:44 +02:00
unknown
01ea6c1e7f fixes for windows builds 2007-12-13 19:25:01 +01:00
unknown
92fe98d7d7 restore plug.in - referenced by Makefile.am 2007-12-13 14:48:50 +01:00
unknown
bcf526b72a fixes for make distclean, solaris, macosx, windows
BitKeeper/deleted/.del-plug.in:
  Delete: storage/myisam/plug.in
configure.in:
  MyISAM should be the first plugin in the list for now
  check for thr_yield, just in case
include/my_pthread.h:
  pthread_yield for windows, solaris, macosx
storage/Makefile.am:
  fix for make distclean (myisam was listed twice in SUBDIRS)
2007-12-13 13:28:35 +01:00
unknown
ebafe3e4db Postreview changes.
mysql-test/r/maria-big.result:
  Change to make maria-purge more stable: increasing file size
    to let all records fit in one log.
mysql-test/r/maria-connect.result:
  Change to make maria-purge more stable: increasing file size
    to let all records fit in one log.
mysql-test/r/maria-purge.result:
  Change to make maria-purge more stable.
mysql-test/r/maria.result:
  Change to make maria-purge more stable: increasing file size
    to let all records fit in one log.
mysql-test/r/ps_maria.result:
  Change to make maria-purge more stable: increasing file size
    to let all records fit in one log.
mysql-test/t/maria-big.test:
  Change to make maria-purge more stable: increasing file size
    to let all records fit in one log.
mysql-test/t/maria-connect.test:
  Change to make maria-purge more stable: increasing file size
    to let all records fit in one log.
mysql-test/t/maria-purge.test:
  Change to make maria-purge more stable.
mysql-test/t/maria-recovery.test:
  Change to make maria-purge more stable: increasing file size
    to let all records fit in one log.
mysql-test/t/maria.test:
  Change to make maria-purge more stable: increasing file size
    to let all records fit in one log.
mysql-test/t/ps_maria.test:
  Change to make maria-purge more stable: increasing file size
    to let all records fit in one log.
2007-12-13 12:26:55 +02:00
unknown
298541f7a3 Merge bk-internal.mysql.com:/home/bk/mysql-maria
into  mysql.com:/home/my/mysql-maria


storage/maria/ma_blockrec.c:
  Auto merged
storage/maria/ma_check.c:
  Auto merged
storage/maria/ma_loghandler.c:
  Auto merged
storage/maria/maria_def.h:
  Auto merged
2007-12-13 00:01:19 +02:00
unknown
8224c76fbd Removed MARIA_BASE min_row_length (duplicate of min_block_length)
Cleanup of recent code changes in dbug and my_thr_init
Added name for each safe_mutex (for better DBUG and error reporting)
Fixed that sort_info.max_records is calculated correctly. This fixed a bug in maria_chk
Removed duplicate printing of mutex address in dbug log


dbug/dbug.c:
  Cleanup of recent code changes
include/my_pthread.h:
  Added name for each safe_mutex (for better DBUG and error reporting)
mysys/my_thr_init.c:
  Cleanup of recent code changes
mysys/thr_mutex.c:
  Added name for each safe_mutex (for better DBUG and error reporting)
mysys/wqueue.c:
  Removed some mutex printing (as it's done now when we take mutex)
storage/maria/Makefile.am:
  Fixed that 'make tags' works with xemacs
storage/maria/ma_blockrec.c:
  base.min_row_length -> base.min_block_length
  (As they where basicly the same variable)
storage/maria/ma_check.c:
  Moved more common stuff to initialize_variables_for_repair
  Fixed that sort_info.max_records is calculated correctly. This fixed a bug in maria_chk
storage/maria/ma_create.c:
  More comments
  Fixed that min_pack_length is calculated more correctly
  Removed duplicate variable base.min_row_length
storage/maria/ma_loghandler.c:
  Removed duplicate printing of mutex address
storage/maria/ma_open.c:
  Removed base.min_row_length
storage/maria/ma_packrec.c:
  Removed not anymore needed code
  (One should not change any .base variables as this will affect repair with unpack)
storage/maria/maria_def.h:
  Removed base.min_row_length
2007-12-12 23:57:28 +02:00
unknown
f7df9addba WL#3072 - Maria Recovery: recovery of state.auto_increment.
When we log UNDO_KEY_INSERT for an auto_inc key, we update
state.auto_increment (not anymore at the end of maria_write() except
if this is a non-transactional table). When Recovery sees UNDO_KEY_INSERT
in the REDO phase, it reads the auto_inc value from it and updates
state.auto_increment.


mysql-test/r/maria-recovery.result:
  Without the code fix, there would be in CHECK TABLE:
  "Auto-increment value: 0 is smaller than max used value: 3"
  and no AUTO_INCREMENT= clause in SHOW CREATE TABLE.
mysql-test/t/maria-recovery.test:
  Test of recovery of state.auto_increment: from an old table,
  does the replaying of the log set state.auto_increment to
  what it should be.
storage/maria/ma_check.c:
  new way of calling ma_retrieve_auto_increment(): pass key
storage/maria/ma_key.c:
  ma_retrieve_auto_increment() now operates directly with a pointer
  to the key and not on the record.
storage/maria/ma_key_recover.c:
  dedicated write_hook_for_undo_key_insert(): sets state.auto_increment
  under log's mutex.
storage/maria/ma_key_recover.h:
  Dedicated hook for UNDO_KEY_INSERT, to set state.auto_increment.
  Such hook needs a new member st_msg_write_hook_for_undo_key::auto_increment,
  which contains the auto_increment value inserted.
storage/maria/ma_loghandler.c:
  UNDO_KEY_INSERT gets a dedicated write_hook, to set auto_increment.
storage/maria/ma_recovery.c:
  When in the REDO phase we see UNDO_KEY_INSERT: if the state is older
  than this record, and the key is the auto_increment one, read
  the key's value from the log record and update state.auto_increment.
storage/maria/ma_test_all.sh:
  use $maria_path to be able to run from /dev/shm (faster)
storage/maria/ma_update.c:
  bool is more of C++, using my_bool.
  If table is transactional, state.auto_increment is already updated
  in write_hook_for_undo_key_insert().
storage/maria/ma_write.c:
  If table is transactional, state.auto_increment is not updated at
  the end of maria_write() but rather in write_hook_for_undo_key_insert()
  (under log's mutex, so that a concurrent checkpoint does not read
  state.auto_increment while it is changing - corrupted).
  _ma_ck_write_btree_with_log() extracts the auto_increment value
  from the key, puts it into msg.auto_increment, and this is passed
  to write_hook_for_undo_key_insert().
storage/maria/maria_def.h:
  change of prototype of ma_retrieve_auto_increment()
storage/maria/maria_read_log.c:
  use default log file size. Use separate page caches for table
  and logs (needed if maria_block_size!=TRANSLOG_PAGE_SIZE).
2007-12-12 22:33:36 +01:00
unknown
f84ce57c4f Merge gbichot@bk-internal.mysql.com:/home/bk/mysql-maria
into  gbichot4.local:/home/mysql_src/mysql-maria-monty
2007-12-11 19:41:19 +01:00
unknown
5051a8e093 WL#3072 Maria recovery: small fixes to ma_test_recovery
(output was not repeatable accross machines).


storage/maria/ma_check.c:
  comment
storage/maria/ma_test_recovery.expected:
  output update
storage/maria/ma_test_recovery:
  * data_file_length/key_file_length differ between machines because
  ma_test2 uses srand(). Removing them from output.
  * there is no reason to copy/restore logs, test should work without
  * applying log to recreate tables should not change log, testing this.
2007-12-11 19:38:40 +01:00
unknown
edfa162972 Logfile size put in allowed boumnds. 2007-12-11 18:10:43 +02:00
unknown
894081ceb9 Postmerge changes.
storage/maria/ma_loghandler.c:
  Fixed compiler warning.
  translog_mutex_unlock -> pthread_mutex_unlock: postmerge change.
storage/maria/unittest/ma_test_loghandler_max_lsn-t.c:
  Fixed forgoten log size out of bounds.
2007-12-11 17:12:21 +02:00
unknown
b5b0d94dc0 Merge desktop.sanja.is.com.ua:/home/bell/mysql/bk/mysql-maria
into  desktop.sanja.is.com.ua:/home/bell/mysql/bk/work-maria-logpurge


storage/maria/ma_checkpoint.c:
  Auto merged
storage/maria/ma_loghandler.c:
  Auto merged
storage/maria/ma_loghandler.h:
  Auto merged
storage/maria/ma_recovery.c:
  Auto merged
2007-12-11 15:26:47 +02:00
unknown
fed1d21b1d Post review fix (serg).
Added more checks.


storage/maria/ha_maria.cc:
  Let control size to my_get_opts().
storage/maria/ma_loghandler.c:
  Let control size to my_get_opts().
  Removed unused function.
  Assert to check log file size.
  Additional compilation warnings.
storage/maria/ma_loghandler.h:
  New log size bounds.
  Removed unused function.
storage/maria/unittest/ma_test_loghandler-t.c:
  Fixed test to confirm new log size bounds.
2007-12-11 15:26:08 +02:00
unknown
8120175827 Merge desktop.sanja.is.com.ua:/home/bell/mysql/bk/mysql-maria
into  desktop.sanja.is.com.ua:/home/bell/mysql/bk/work-maria-testfail


storage/maria/ma_loghandler.c:
  Auto merged
2007-12-11 09:17:36 +02:00
unknown
6a6674a674 Page number calculation fixed. 2007-12-11 09:17:10 +02:00
unknown
13f45b160b WL#3072 Maria recovery:
fix for bug: if a crash happened right after writing a REDO like this:
REDO - UNDO - REDO*, then recovery would ignore the last REDO* (ok),
rollback: REDO - UNDO - REDO* - REDO - CLR, and a next recovery would
thus execute REDO* instead of skipping it again. Recovery now logs
LOGREC_INCOMPLETE_GROUP when it meets REDO* for the first time,
to draw a boundary and ensure it is always skipped. Tested by hand.
Note: ma_test_all fails "maria_chk: error: Key 1 - Found too many records"
not due to this patch (failed before).


BitKeeper/triggers/post-commit:
  no truncation of the commit mail, or how to review patches?
mysql-test/include/maria_verify_recovery.inc:
  let caller choose the statement used to crash (sometimes we
  want the crash to happen at special places)
mysql-test/t/maria-recovery.test:
  user of maria_verify_recovery.inc now specifies statement which the
  script should use for crashing.
storage/maria/ma_bitmap.c:
  it's easier to search for all places using functions from the bitmap
  module (like in ma_blockrec.c) if those exported functions all start
  with "_ma_bitmap": renaming some of them.
  Assertion that when we read a bitmap page, overwriting bitmap->map,
  we are not losing information (i.e. bitmap->changed is false).
storage/maria/ma_blockrec.c:
  update to new names. Adding code (disabled, protected by a #ifdef)
  that I use to test certain crash scenarios (more to come).
storage/maria/ma_blockrec.h:
  update to new names
storage/maria/ma_checkpoint.c:
  update to new names
storage/maria/ma_extra.c:
  update to new names
storage/maria/ma_loghandler.c:
  new LOGREC_INCOMPLETE_GROUP
storage/maria/ma_loghandler.h:
  new LOGREC_INCOMPLETE_GROUP
storage/maria/ma_recovery.c:
  When at the end of the REDO phase we have identified some transactions
  with incomplete REDO groups (REDOs without an UNDO or CLR_END),
  for each of them we log LOGREC_INCOMPLETE_GROUP. This way, the
  upcoming UNDO phase can write more records for such transaction,
  a future recovery won't pair the incomplete group with the
  CLR_END (as there is LOGREC_INCOMPLETE_GROUP to draw a boundary).
2007-12-10 23:26:53 +01:00
unknown
12a81c39cd ma_recovery.c:
SCCS merged
.del-ma_key_redo.c:
  Auto merged


BitKeeper/deleted/.del-ma_key_redo.c:
  Auto merged
storage/maria/ma_recovery.c:
  SCCS merged
2007-12-10 19:15:50 +01:00
unknown
11d729166c Merge abelkin@bk-internal.mysql.com:/home/bk/mysql-maria
into  desktop.sanja.is.com.ua:/home/bell/mysql/bk/mysql-maria
2007-12-10 15:52:01 +02:00
unknown
29d18bf0bb Fixed bug in first log file detecting function.
storage/maria/ma_loghandler.c:
  min_file should be for sure unexistant file for right search.
2007-12-10 15:49:57 +02:00
unknown
e8b0bb4769 Fixed bug in allocation of dynamic record buffer in Maria
Unified printing of mutex addresses to make them easier to compare


mysys/thr_mutex.c:
  Unified printing of mutex addresses to make them easier to compare
storage/maria/ma_dynrec.c:
  Fixed indentation
storage/maria/ma_open.c:
  Fixed bug in allocation of dynamic record buffer
2007-12-10 14:21:45 +02:00
unknown
abe1031ea8 Fixed some compiler errors
mysys/my_thr_init.c:
  Added missing DBUG_OFF
storage/maria/ma_loghandler.c:
  Fixed wrong macro
2007-12-10 03:37:29 +02:00
unknown
8373b4deac Fixed core dump when running myisamchk (as this doesn't call translog_init)
Added option --transaction-log to maria_chk


storage/maria/ma_init.c:
  Fixed core dump when running maria_chk (as this doesn't call translog_init)
storage/maria/ma_test_all.sh:
  Added testing of --transaction-log
storage/maria/maria_chk.c:
  Enable logging of repair commands if run with --transaction-log
2007-12-10 03:23:15 +02:00
unknown
457143531f Merge bk-internal.mysql.com:/home/bk/mysql-maria
into  mysql.com:/home/my/mysql-maria


storage/maria/ma_blockrec.c:
  Auto merged
storage/maria/ma_loghandler.c:
  Auto merged
storage/maria/ma_loghandler.h:
  Auto merged
2007-12-10 02:33:21 +02:00
unknown
2f6f08ed88 Added MARIA_SHARE *share to a lot of places to make code simpler
Changed info->s -> share to get more efficent code
Updated arguments to page accessor functions to use MARIA_SHARE * instead of MARIA_HA *.
Tested running tests in quick mode (no balance page on insert and only when critical on delete)
Fixed bug in underflow handling in quick mode
Fixed bug in log handler where it accessed not initialized variable
Fixed bug in log handler where it didn't free mutex in unlikely error condition
Removed double write of page in case of of some underflow conditions
Added DBUG_PRINT in safemutex lock/unlock


dbug/dbug.c:
  Compile without SAFE_MUTEX (to be able to use DBUG_PRINT in safe_mutex code)
  Use calls to get/set my_thread_var->dbug. (Make dbug independent of compile time options for mysys)
include/my_pthread.h:
  Added prototypes for my_thread_var_get_dbug() & my_thread_var_set_dbug()
mysql-test/lib/mtr_report.pl:
  Don't check warnings in log files if we are using --extern
mysys/my_thr_init.c:
  Added my_thread_var_get_dbug() & my_thread_var_set_dbug()
mysys/thr_mutex.c:
  Added DBUG printing of addresses to mutex for lock/unlock
storage/maria/ma_blockrec.c:
  Fixed comment
storage/maria/ma_check.c:
  Added MARIA_SHARE *share to a lot of places to make code simpler
  info->s -> share
  Updated arguments to page accessor functions
storage/maria/ma_close.c:
  Indentation fixes
storage/maria/ma_create.c:
  Calculate min_key_length correctly
storage/maria/ma_dbug.c:
  Indentation fixes
storage/maria/ma_delete.c:
  Added MARIA_SHARE *share to a lot of places to make code simpler
  info->s -> share
  Updated arguments to page accessor functions
  Removed some writing of key pages that underflow (will be written by caller)
  Fixed crashing bug in underflow handling when using quick mode
storage/maria/ma_delete_all.c:
  Indentation fixes
storage/maria/ma_dynrec.c:
  Indentation fixes
storage/maria/ma_extra.c:
  Fixed indentation
  Removed old useless code
  Reset share->changed if we have written state
storage/maria/ma_ft_update.c:
  Added MARIA_SHARE *share to a lot of places to make code simpler
  info->s -> share
  Updated arguments to page accessor functions
storage/maria/ma_info.c:
  Indentation fixes
storage/maria/ma_key_recover.c:
  Added MARIA_SHARE *share to a lot of places to make code simpler
  info->s -> share
  Updated arguments to page accessor functions
storage/maria/ma_locking.c:
  Indentation fixes
storage/maria/ma_loghandler.c:
  Removed wrapper functions translog_mutex_lock and translog_mutex_unlock (safemutex now does same kind of printing)
  Renamed LOGREC_REDO_INSERT_ROW_BLOB to LOGREC_REDO_INSERT_NOT_USED to mark it free
  Fixed some DBUG_PRINT to ensure that convert-dbug-for-diff works
  Fixed bug in translog_flush() that caused log to stop syncing to disk
  Added missing mutex_unlock in case of error
storage/maria/ma_loghandler.h:
  Renamed LOGREC_REDO_INSERT_ROW_BLOB to LOGREC_REDO_INSERT_NOT_USED to mark it free
storage/maria/ma_open.c:
  Indentation fixes
storage/maria/ma_packrec.c:
  Indentation fixes
storage/maria/ma_page.c:
  Added MARIA_SHARE *share to a lot of places to make code simpler
  info->s -> share
  Updated arguments to page accessor functions
  Added check that we never write a key page without content (except in recovery where a key page may temporary be without content)
storage/maria/ma_preload.c:
  Updated arguments to page accessor functions
storage/maria/ma_range.c:
  Updated arguments to page accessor functions
storage/maria/ma_rkey.c:
  Indentation fixes
storage/maria/ma_rprev.c:
  Indentation fixes
storage/maria/ma_rt_index.c:
  Added MARIA_SHARE *share to a lot of places to make code simpler
  info->s -> share
  Updated arguments to page accessor functions
storage/maria/ma_rt_index.h:
  Updated arguments to page accessor functions
storage/maria/ma_rt_key.c:
  Added MARIA_SHARE *share to a lot of places to make code simpler
  info->s -> share
  Updated arguments to page accessor functions
storage/maria/ma_rt_mbr.c:
  Added MARIA_SHARE *share to a lot of places to make code simpler
  info->s -> share
  Updated arguments to page accessor functions
storage/maria/ma_rt_split.c:
  Added MARIA_SHARE *share to a lot of places to make code simpler
  info->s -> share
  Updated arguments to page accessor functions
storage/maria/ma_search.c:
  Added MARIA_SHARE *share to a lot of places to make code simpler
  info->s -> share
  Updated arguments to page accessor functions
storage/maria/ma_sort.c:
  Indentation fixes
storage/maria/ma_statrec.c:
  Indentation fixes
storage/maria/ma_test1.c:
  Added extra undo test
  Flush also keys in -u1, to ensure that the full log is flushed
storage/maria/ma_test2.c:
  Added extra undo test
  Flush also keys in -u1, to ensure that the full log is flushed
storage/maria/ma_test_recovery.expected:
  Updated results
storage/maria/ma_test_recovery:
  Added extra undo test
storage/maria/ma_update.c:
  Indentation fixes
storage/maria/ma_write.c:
  Added MARIA_SHARE *share to a lot of places to make code simpler
  info->s -> share
  Updated arguments to page accessor functions
  Prepare for quick mode for insert (don't balance page)
storage/maria/maria_chk.c:
  Added MARIA_SHARE *share to a lot of places to make code simpler
  info->s -> share
  Updated arguments to page accessor functions
storage/maria/maria_def.h:
  Updated arguments to page accessor functions
2007-12-10 02:32:00 +02:00
unknown
1ec645bd40 Merge desktop.sanja.is.com.ua:/home/bell/mysql/bk/mysql-maria
into  desktop.sanja.is.com.ua:/home/bell/mysql/bk/work-maria-logpurge


mysql-test/r/maria.result:
  Auto merged
storage/maria/ma_checkpoint.c:
  Auto merged
storage/maria/ma_recovery.c:
  Auto merged
storage/maria/ha_maria.cc:
  Merge
storage/maria/ma_loghandler.c:
  Merge
storage/maria/ma_loghandler.h:
  Merge
2007-12-09 20:49:59 +02:00
unknown
771296eb06 Manageable transactional log purge and file size
support added to maria.


mysql-test/r/maria.result:
  New variables added.
storage/maria/ha_maria.cc:
  Variable for transactional log purge method added.
  Variable for transactional log size added.
  SHOW for engine logs added.
  Log flush purge logs in case of "ondemand" type of
    log processing.
storage/maria/ma_checkpoint.c:
  log purge call enabled.
storage/maria/ma_loghandler.c:
  Support for different methods of log purge added.
  Functions for getting information about logs state added.
  Functions for getting/setting log size.
storage/maria/ma_loghandler.h:
  Fixed defines.
  Functions for for transactional log mannegment added.
storage/maria/ma_recovery.c:
  Dependence on TRANSLOG_FILE_SIZE removed.
mysql-test/r/maria-purge.result:
  New BitKeeper file ``mysql-test/r/maria-purge.result''
mysql-test/t/maria-purge.test:
  New BitKeeper file ``mysql-test/t/maria-purge.test''
2007-12-09 19:35:51 +02:00
unknown
f8b7f8be00 Post-review fixes + some locking cleanup.
storage/maria/ma_loghandler.c:
  translog_lock() made safe (non-mutex-protected operation is atomic now).
  Fixed translog_destroy() because it will not work to be
    called several times.
2007-12-06 20:03:38 +02:00
unknown
593bb24d38 Merge desktop.sanja.is.com.ua:/home/bell/mysql/bk/mysql-maria
into  desktop.sanja.is.com.ua:/home/bell/mysql/bk/work-maria-controlfile
2007-12-06 13:33:08 +02:00
unknown
21f63e41cb Trivial postreview changes.
storage/maria/ma_blockrec.c:
  Layout fix.
storage/maria/ma_loghandler.c:
  Renamed struct variable 'class' to avoid problems with c++ compiler.
  Renamed translog_init_scanner to fit othere init functions naming pattern.
  translog_relative_LSN_encode can't return error for now.
  Other trivial postreview changes.
storage/maria/ma_loghandler_lsn.h:
  trivial postreview changes.
storage/maria/ma_recovery.c:
  Renamed translog_init_scanner to fit othere init functions naming pattern.
storage/maria/unittest/ma_loghandler_examples.c:
  Renamed struct variable 'class' to avoid problems with c++ compiler.
storage/maria/unittest/ma_test_loghandler-t.c:
  Renamed translog_init_scanner to fit othere init functions naming pattern.
storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
  Renamed translog_init_scanner to fit othere init functions naming pattern.
storage/maria/unittest/ma_test_loghandler_multithread-t.c:
  Renamed translog_init_scanner to fit othere init functions naming pattern.
2007-12-06 13:32:16 +02:00
unknown
d250ad2f1e Merge abelkin@bk-internal.mysql.com:/home/bk/mysql-maria
into  desktop.sanja.is.com.ua:/home/bell/mysql/bk/mysql-maria
2007-12-05 12:14:52 +02:00
unknown
571ab016c1 Fixed loop condition. 2007-12-05 12:13:02 +02:00
unknown
14a07e822d Merge bk-internal.mysql.com:/home/bk/mysql-maria
into  mysql.com:/home/my/mysql-maria
2007-12-05 10:47:59 +02:00
unknown
f3395adc6e Fixed wrong placement of #ifdef 2007-12-05 10:47:23 +02:00
unknown
809ee8cfae Postreview fix + some improvements of the loop.
Fixed overlaying block waiting during flushing block.
Sync directory only is file size really changed.
Fixed bug in the flush function when we access data
 in file cache and horizon value without mutex protection.
2007-12-05 04:29:59 +02:00
unknown
74b8abc680 Don't give warnings when reading blocks when we know the block may not exist (in maria_read_log)
Don't give warnings when opening a wrong control file in ma_control_file_t (unit test)


BitKeeper/deleted/.del-ma_key_redo.c:
  Delete: storage/maria/ma_key_redo.c
storage/maria/ma_blockrec.c:
  Don't give warnings when reading blocks when we know the block may not exist
storage/maria/ma_pagecache.c:
  Keep a convinience copy of readwrite_flags
storage/maria/ma_pagecache.h:
  Keep a convinience copy of readwrite_flags
storage/maria/unittest/ma_control_file-t.c:
  Don't give warnings when opening a wrong control file
2007-12-05 00:45:32 +02:00
unknown
b9734f0d1a Merge bk-internal.mysql.com:/home/bk/mysql-maria
into  mysql.com:/home/my/mysql-maria


storage/maria/ha_maria.cc:
  Auto merged
storage/maria/ma_loghandler.c:
  Auto merged
storage/maria/ma_loghandler.h:
  Auto merged
storage/maria/unittest/ma_test_loghandler-t.c:
  Auto merged
storage/maria/unittest/ma_test_loghandler_first_lsn-t.c:
  Auto merged
storage/maria/unittest/ma_test_loghandler_max_lsn-t.c:
  Auto merged
storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
  Auto merged
storage/maria/unittest/ma_test_loghandler_multithread-t.c:
  Auto merged
storage/maria/unittest/ma_test_loghandler_noflush-t.c:
  Auto merged
storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
  Auto merged
storage/maria/unittest/ma_test_loghandler_purge-t.c:
  Auto merged
storage/maria/unittest/test_file.c:
  Auto merged
storage/maria/unittest/ma_pagecache_single.c:
  SCCS merged
2007-12-04 23:25:20 +02:00
unknown
ebf7ab7bce Added error HA_ERR_FILE_TOO_SHORT to be used when files are shorter than expected (by my_read/my_pread)
Added debugger hook _my_dbug_put_break_here() that is called if we get a CRC that matches --debug-crc-break (my_crc_dbug_break)
Fixed REDO_REPAIR to use all repair modes (repair, repair_by_sort, repair_paralell
REDO_REPAIR now also logs used key map
Fixed some bugs in REDO logging of key pages
Better error messages from maria_read_log
Added my_readwrite_flags to init_pagecache() to be able to get better error messages and simplify code.
Don't allow pagecaches with less than 8 blocks (Causes strange crashes)
Added EXTRA_DEBUG_KEY_CHANGES. When this is defined some REDO_INDEX entries contains page checksums (these are calculated and checked in DBUG mode, ignored otherwise)
Fixed bug in ma_pagecache unit tests that caused program to sometimes fail
Added some missing calls to MY_INIT() that caused some unit tests to fail
Fixed that TRUNCATE works properly on temporary MyISAM files
Updates some result files to new table checksums results (checksum when NULL fields are ignored)
perl test-insert can be replayed with maria_read_log!


sql/share/Makefile.am:
  Change mode to -rw-rw-r--
BitKeeper/etc/ignore:
  added storage/maria/unittest/page_cache_test_file_1 storage/maria/unittest/pagecache_debug.log
include/maria.h:
  Added maria_tmpdir
include/my_base.h:
  Added error HA_ERR_FILE_TOO_SHORT
include/my_sys.h:
  Added variable my_crc_dbug_check
  Added function my_dbug_put_break_here()
include/myisamchk.h:
  Added org_key_map (Needed for writing REDO record for REPAIR)
mysql-test/r/innodb.result:
  Updated to new checksum algorithm (NULL ignored)
mysql-test/r/mix2_myisam.result:
  Updated to new checksum algorithm (NULL ignored)
mysql-test/r/myisam.result:
  Updated to new checksum algorithm (NULL ignored)
mysql-test/t/myisam.test:
  Added used table
mysys/checksum.c:
  Added DBUG for checksum results
  Added debugger hook so that _my_dbug_put_break_here() is called if we get matching CRC
mysys/lf_alloc-pin.c:
  Fixed compiler warning
mysys/my_handler.c:
  Added new error message
mysys/my_init.c:
  If my_progname is not given, use 'unknown' form my_progname_short
  Added debugger function my_debug_put_break_here()
mysys/my_pread.c:
  In case of too short file when MY_NABP or MY_FNABP is specified, give error HA_ERR_FILE_TO_SHORT
mysys/my_read.c:
  In case of too short file when MY_NABP or MY_FNABP is specified, give error HA_ERR_FILE_TO_SHORT
sql/mysqld.cc:
  Added debug option --debug-crc-break
sql/sql_parse.cc:
  Trivial optimization
storage/maria/ha_maria.cc:
  Renamed variable to be more logical
  Ensure that param.testflag is correct when calling repair
  Added extra argument to init_pagecache
  Set default value for maria_tempdir
storage/maria/ma_blockrec.c:
  Test for HA_ERR_FILE_TOO_SHORT instead for -1
storage/maria/ma_cache.c:
  Test for HA_ERR_FILE_TOO_SHORT instead for -1
storage/maria/ma_check.c:
  Set param->testflag to match how repair is run (needed for REDO logging)
  Simple optimization
  Moved flag if page is node from pagelength to keypage-flag byte
  Log used key map in REDO log.
storage/maria/ma_delete.c:
  Remember previous UNDO entry when writing undo (for future CLR records)
  Moved flag if page is node from pagelength to keypage-flag byte
  Fixed some bugs in redo logging
  Added CRC for some translog REDO_INDEX entries
storage/maria/ma_dynrec.c:
  Test for HA_ERR_FILE_TOO_SHORT instead for -1
storage/maria/ma_ft_update.c:
  Fixed call to _ma_store_page_used()
storage/maria/ma_key_recover.c:
  Added CRC for some translog REDO_INDEX entries
  Removed not needed pagecache_write() in _ma_apply_redo_index()
storage/maria/ma_locking.c:
  Test for HA_ERR_FILE_TOO_SHORT instead for -1
storage/maria/ma_loghandler.c:
  Added used key map to REDO_REPAIR_TABLE
storage/maria/ma_loghandler.h:
  Added operation for checksum of key pages
storage/maria/ma_open.c:
  Allocate storage for undo lsn pointers
storage/maria/ma_pagecache.c:
  Remove not needed include file
  Change logging to use fd: for file descritors as other code
  Added my_readwrite_flags to init_pagecache() to be able to get better error messages for maria_chk/maria_read_log
  Don't allow pagecaches with less than 8 blocks
  Remove wrong DBUG_ASSERT()
storage/maria/ma_pagecache.h:
  Added readwrite_flags
storage/maria/ma_recovery.c:
  Better error messages for maria_read_log:
  - Added eprint() for printing error messages
  - Print extra \n before error message if we are printing %0 %10 ...
  
  Added used key_map to REDO_REPAIR log entry
  More DBUG
  Call same repair method that was used by mysqld
storage/maria/ma_rt_index.c:
  Moved flag if page is node from pagelength to keypage-flag byte
storage/maria/ma_rt_key.c:
  Fixed call to _ma_store_page_used()
storage/maria/ma_rt_split.c:
  Moved flag if page is node from pagelength to keypage-flag byte
storage/maria/ma_static.c:
  Added maria_tmpdir
storage/maria/ma_test1.c:
  Updated call to init_pagecache()
storage/maria/ma_test2.c:
  Updated call to init_pagecache()
storage/maria/ma_test3.c:
  Updated call to init_pagecache()
storage/maria/ma_write.c:
  Removed #ifdef NOT_YET
  Moved flag if page is node from pagelength to keypage-flag byte
  Fixed bug in  _ma_log_del_prefix()
storage/maria/maria_chk.c:
  Fixed wrong min limit for page_buffer_size
  Updated call to init_pagecache()
storage/maria/maria_def.h:
  Added EXTRA_DEBUG_KEY_CHANGES. When this is defined some REDO_INDEX entries contains page checksums
  Moved flag if page is node from pagelength to keypage-flag byte
storage/maria/maria_ftdump.c:
  Updated call to init_pagecache()
storage/maria/maria_pack.c:
  Updated call to init_pagecache()
  Reset share->state.create_rename_lsn & share->state.is_of_horizon
storage/maria/maria_read_log.c:
  Better error messages
  Added --tmpdir option (needed to set temporary directory for REDO_REPAIR)
  Added --start-from-lsn
  Changed option for --display-only to 'd' (wanted to use -o for 'offset')
storage/maria/unittest/lockman2-t.c:
  Added missing call to MY_INIT()
storage/maria/unittest/ma_pagecache_consist.c:
  Updated call to init_pagecache()
storage/maria/unittest/ma_pagecache_single.c:
  Fixed bug that caused program to sometimes fail
  Added some DBUG_ASSERTS()
  Changed some calls to malloc()/free() to my_malloc()/my_free()
  Create extra file to expose original hard-to-find bug
storage/maria/unittest/ma_test_loghandler-t.c:
  Updated call to init_pagecache()
storage/maria/unittest/ma_test_loghandler_first_lsn-t.c:
  Updated call to init_pagecache()
storage/maria/unittest/ma_test_loghandler_max_lsn-t.c:
  Updated call to init_pagecache()
storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
  Updated call to init_pagecache()
storage/maria/unittest/ma_test_loghandler_multithread-t.c:
  Updated call to init_pagecache()
storage/maria/unittest/ma_test_loghandler_noflush-t.c:
  Updated call to init_pagecache()
storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
  Updated call to init_pagecache()
storage/maria/unittest/ma_test_loghandler_purge-t.c:
  Updated call to init_pagecache()
storage/maria/unittest/test_file.c:
  Changed malloc()/free() to my_malloc()/my_free()
  Fixed memory leak
  Changd logic a bit while trying to find bug in reset_file()
storage/maria/unittest/trnman-t.c:
  Added missing call to MY_INIT()
storage/myisam/mi_cache.c:
  Test for HA_ERR_FILE_TOO_SHORT instead for -1
storage/myisam/mi_create.c:
  Removed O_EXCL to get TRUNCATE to work for temporary files
storage/myisam/mi_dynrec.c:
  Test for HA_ERR_FILE_TOO_SHORT instead for -1
storage/myisam/mi_locking.c:
  Test for HA_ERR_FILE_TOO_SHORT instead for -1
mysql-test/r/old-mode.result:
  New BitKeeper file ``mysql-test/r/old-mode.result''
mysql-test/t/old-mode-master.opt:
  New BitKeeper file ``mysql-test/t/old-mode-master.opt''
mysql-test/t/old-mode.test:
  New BitKeeper file ``mysql-test/t/old-mode.test''
2007-12-04 23:23:42 +02:00