Commit graph

52808 commits

Author SHA1 Message Date
unknown
7e54b96791 cleanup
dbug/dbug.c:
  dbug naming conventions
include/my_dbug.h:
  unused function
2008-02-05 14:19:53 +01:00
unknown
cd6a090a78 Merge bk-internal.mysql.com:/home/bk/mysql-maria
into  janus.mylan:/usr/home/serg/Abk/mysql-maria
2008-02-05 10:41:50 +01:00
unknown
99b3d018be Merge gbichot@bk-internal.mysql.com:/home/bk/mysql-maria
into  mysqlwin32.:C:/mysql-maria


storage/maria/unittest/ma_test_recovery.pl:
  Auto merged
2008-02-04 22:15:29 +01:00
unknown
0543c5f028 Minor test fixes
mysql-test/include/wait_until_connected_again.inc:
  On Windows, mysqladmin does not wait on pid file when it has shut down
  mysqld. Thus, in maria_empty_logs.inc, wait_until_connected_again.inc
  can run while mysqld is shutting down (has not finished) and so
  get "shutdown in progress" instead of "can't connect".
mysql-test/t/maria-recovery-big.test:
  it is a big test
storage/maria/unittest/ma_test_recovery.pl:
  We want to see the result of 'cmp', like in the shell version
2008-02-04 22:12:57 +01:00
unknown
7a0a322320 ignore:
added dbug/tests


BitKeeper/etc/ignore:
  added dbug/tests
2008-02-03 23:14:23 +01:00
unknown
fe7287f8f7 dbug: function/ (a.k.a. SUBDIR) syntax
dbug/dbug.c:
  function/ (a.k.a. SUBDIR) syntax
dbug/tests-t.pl:
  1. add support for test comments
  2. add test comments
  3. move tests around
  4. add SUBDIR tests
dbug/tests.c:
  support code for SUBDIR testing
include/my_dbug.h:
  comments. change in _db_set_ prototype
dbug/user.r:
  negative lists and function/ syntax.
2008-02-03 20:58:47 +01:00
unknown
a1834802c9 compiler warning 2008-02-02 01:00:27 +01:00
unknown
6483b8457f fix for recovery unit test under Unix
storage/maria/unittest/ma_test_recovery.pl:
  Perl magic does something unexpected with $suffix is ""
2008-02-02 00:42:05 +01:00
unknown
4a1763e428 Fix for Windows-specific bugs:
- one which led REDO_INSERT_ROW_BLOBS to fail to apply
- one excess close ("-1 file left open")
Don't need maria-path option / environment variable.
Fixes for ma_test_all-t to run under Windows.
Port of ma_test_recovery to Perl, written by Jani.


storage/maria/unittest/ma_test_recovery.expected:
  Rename: storage/maria/ma_test_recovery.expected -> storage/maria/unittest/ma_test_recovery.expected
mysys/my_pread.c:
  Fix for Windows-specific bug (maria_read_log -a failed during
  ma_test_all-t): Windows does not have pread() so the branch setting
  HA_ERR_FILE_TOO_SHORT was not compiled in, broke applying of
  REDO_INSERT_ROW_BLOBS. After fixing that, it appeared that in my
  Windows machine, errno is not changed in case of EOF; as we read it
  we have to reset it at start.
  The changed to readbytes!=-1 is to detect EOF
mysys/my_read.c:
  The change to readbytes!=-1 is to detect EOF
storage/maria/ma_loghandler.c:
  Fix for Windows-specific bug: as we don't open the directory
  we should not close it.
storage/maria/ma_page.c:
  This is C, cannot declare variable after instruction.
storage/maria/ma_test_recovery:
  ma_test_recovery.expected moved
storage/maria/unittest/ma_test_all-t:
  Can now safely guess maria_path so don't need the command-line option
  or environment variable. Port to Windows (.exe, different locations
  of executables); can guess suffix, don't need --suffix.
storage/maria/unittest/ma_test_recovery.pl:
  Perl version of ma_test_recovery, written by Jani. Will deprecate the
  shell version.
2008-02-02 00:01:31 +01:00
unknown
06477018e7 Merge bk-internal.mysql.com:/home/bk/mysql-maria
into  janus.mylan:/usr/home/serg/Abk/mysql-maria
2008-02-01 19:32:47 +01:00
unknown
16f92309e4 Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-maria
into  a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-maria
2008-02-01 17:43:47 +01:00
unknown
d9b108051d Very minor changes in ma_test_recovery test suite.
storage/maria/ma_test_recovery.expected:
  Removed a white space from a list of tests.
  
  This was originally unintentional and change makes it easier to
  port ma_test_recovery to Perl.
storage/maria/ma_test_recovery:
  Removed a white space from a list of tests.
2008-02-01 17:42:51 +01:00
unknown
d79e70597a negative lists in dbug (-#-d,info => everything but "info").
unit tests for dbug


dbug/Makefile.am:
  unit tests for dbug
dbug/dbug.c:
  negative lists (-#-d,info => everything but "info")
include/my_dbug.h:
  negative lists (-#-d,info => everything but "info")
unittest/Makefile.am:
  unit tests for dbug
dbug/tests-t.pl:
  unit tests for dbug
dbug/tests.c:
  unit tests for dbug
2008-02-01 16:21:44 +01:00
unknown
7323df7885 Minor changes. New description in SHOW ENGINES for Maria.
Test for BUG#34106 "auto_increment is reset to 1 when table is recovered from crash"
(fixed by Monty yesterday)


mysql-test/r/maria-recovery.result:
  result, which is correct (before pulling Monty's fix for BUG#34106,
  we got a warning about auto_increment in CHECK TABLE (done in
  maria-verify-recovery.inc), no AUTO_INCREMENT clause in
  SHOW CREATE TABLE, and a failure of the last INSERT.
mysql-test/r/maria.result:
  result
mysql-test/t/maria-recovery.test:
  Test for BUG#34106
mysql-test/t/maria.test:
  look at what is reported in SHOW ENGINES
mysys/my_pread.c:
  changed my mind: if Count argument is >4GB, we'll surely see a segfault
  in the pread() call when it tries to read 4GB from memory, so no need
  to print it in ulonglong format (saves a function call).
mysys/my_read.c:
  changed my mind: if Count argument is >4GB, we'll surely see a segfault
  in the pread() call when it tries to read 4GB from memory, so no need
  to print it in ulonglong format (saves a function call).
mysys/my_write.c:
  changed my mind: if Count argument is >4GB, we'll surely see a segfault
  in the pread() call when it tries to read 4GB from memory, so no need
  to print it in ulonglong format (saves a function call).
storage/maria/ha_maria.cc:
  Description representing the current reality. This can be changed later
storage/maria/ma_page.c:
  When reading the new key_del from a page on disk, if there is a bug
  (like BUG#34062) this key_del could be wrong, we try to catch if it's
  out of the key file.
storage/maria/ma_pagecache.c:
  - no truncation of page's number in DBUG_PRINT (useful for BUG#34062)
  - page_korr instead of uint5korr
storage/maria/ma_recovery.c:
  page_korr instead of uint5korr
storage/maria/plug.in:
  Description representing the current reality. This can be changed later.
2008-01-31 23:17:50 +01:00
unknown
74efae60fc remove unused dbug files
dbug/CMakeLists.txt:
  Change mode to -rw-rw-r--
BitKeeper/deleted/.del-doinstall.sh:
  Delete: dbug/doinstall.sh
BitKeeper/deleted/.del-install.sh:
  Delete: dbug/install.sh
BitKeeper/deleted/.del-mklintlib.sh:
  Delete: dbug/mklintlib.sh
BitKeeper/deleted/.del-qmake.cmd:
  Delete: dbug/qmake.cmd
BitKeeper/deleted/.del-.cvsignore:
  Delete: dbug/.cvsignore
BitKeeper/deleted/.del-vargs.h:
  Delete: dbug/vargs.h
2008-01-31 20:45:31 +01:00
unknown
8c5cd4f89d Merge abelkin@bk-internal.mysql.com:/home/bk/mysql-maria
into  desktop.sanja.is.com.ua:/home/bell/tmp/work-maria-assert


storage/maria/ma_loghandler.c:
  Auto merged
2008-01-31 13:36:58 +02:00
unknown
d2f47638d7 Small changes for unit tests.
storage/maria/unittest/Makefile.am:
  fixed names of tests.
storage/maria/unittest/ma_pagecache_consist.c:
  Some of pagecache multi-thread tests are not big.
  Fixed reporting of tests end (now under mutex protection).
storage/maria/unittest/ma_test_loghandler-t.c:
  fixed layout to make blocks nof parameters more visible.
2008-01-31 12:21:55 +02:00
unknown
4d1cb99149 Fixed portability issue with comparing thread id
Fixed bug where return value 'error' was not set in case of error in pagecache
Documented the open LOAD INDEX bug


KNOWN_BUGS.txt:
  Added the problem with LOAD INDEX as a known bugs. Will fix this bug later this week
storage/maria/ma_pagecache.c:
  Fixed portability issue with comparing thread id
  Fixed bug where return value 'error' was not set in case of error
2008-01-31 08:48:49 +02:00
unknown
0857a6930d Merge bk-internal.mysql.com:/home/bk/mysql-maria
into  mysql.com:/home/my/mysql-maria


mysys/my_pread.c:
  Auto merged
mysys/my_read.c:
  Auto merged
storage/maria/ha_maria.cc:
  Auto merged
storage/maria/ma_blockrec.c:
  Auto merged
storage/maria/ma_check.c:
  Auto merged
storage/maria/ma_loghandler.c:
  Auto merged
storage/maria/ma_page.c:
  Auto merged
storage/maria/ma_write.c:
  Auto merged
storage/maria/maria_chk.c:
  Auto merged
storage/maria/maria_def.h:
  Auto merged
2008-01-31 03:11:10 +02:00
unknown
ab0fa111fe Fixed bug in restoring auto-increment value in case of duplicate key with insert or update
Fixed bug when calculating max_key_length that caused some ALTER TABLE to fail if MAX_ROWS was used.
Use maria_block_size instead of MARIA_MIN_KEY_BLOCK_LENGTH
Fixed bug when scanning table with BLOCK format for repair; If table was > bitmap coverage one page block was read twice which caused a lot of duplicate key errors
Could not repeat Bug#34106 "auto_increment is reset to 1 when table is recovered from crash" after this patch.

NOTE: This is an incompatible change, so one must do maria_chk -r on ones old Maria tables!
Sorry, but this was needed to fix the bug with max_key_length and to be able to handle bigger key files with smaller key references


cmd-line-utils/readline/readline.c:
  Fixed compiler warnings
mysql-test/r/maria.result:
  Added more test of auto-increment handling
mysql-test/t/maria.test:
  Added more test of auto-increment handling
mysys/my_pread.c:
  Fixed wrong test
  Removed not needed tests (error is always 1 if readbytes != Count)
mysys/my_read.c:
  Fixed wrong test
storage/maria/ha_maria.cc:
  Disable LOAD INDEX until I got Sanja's extension to pagecache interface
storage/maria/ma_blockrec.c:
  Ensure that info->last_auto_increment is reset properly
storage/maria/ma_check.c:
  Fixed wrong printing of row number in case of duplicate key for --safe-repair
  Safety fix in recreate table so that Column numbers are given to maria_create() in original order
  Added missing HA_OPEN_FOR_REPAIR to maria_open()
  Fixed bug when scanning table with BLOCK format for repair; If table was > bitmap coverage one page block was read twice which caused a lot of duplicate key errors
storage/maria/ma_create.c:
  Use correct value for how much free space there is on a key page
  Remember some missing table option when doing re-create.
  Removed optimization where last packed fields is unpacked; Caused problems for re-create.
storage/maria/ma_delete.c:
  Ensure that info->last_auto_increment is reset properly
  Fix for update to restore autoincrement value on duplicate key
storage/maria/ma_key_recover.c:
  Moved handling of restoring value of auto-increment in case of duplicate key from clr to undo
  This ensures the restoring works both for insert and update and also that this is symetrical to how the auto_increment value is stored
storage/maria/ma_key_recover.h:
  Added new prototype
storage/maria/ma_loghandler.c:
  Added hook to write_hook_for_undo_key_delete()
storage/maria/ma_open.c:
  Fixed wrong calculation of max_key_file_length
storage/maria/ma_page.c:
  Use maria_block_size instead of MARIA_MIN_KEY_BLOCK_LENGTH
  Increase internal buffer (safety fix)
storage/maria/ma_search.c:
  Use maria_block_size instead of MARIA_MIN_KEY_BLOCK_LENGTH
  Note that this is an incompatible change, so one must do maria_chk -r on ones old Maria tables (sorry)
storage/maria/ma_update.c:
  Ensure that info->last_auto_increment is reset properly
storage/maria/ma_write.c:
  Ensure that info->last_auto_increment is reset properly
  Fix for update to restore autoincrement value on duplicate key
storage/maria/maria_chk.c:
  Allow small page_buffer_size
  Fixed printing for --describe to better fit into 80 characters
storage/maria/maria_def.h:
  Added comments
2008-01-31 03:06:04 +02:00
unknown
caa0e9b181 Merge abelkin@bk-internal.mysql.com:/home/bk/mysql-maria
into  desktop.sanja.is.com.ua:/home/bell/mysql/bk/work-maria-assert
2008-01-30 22:42:19 +02:00
unknown
b51c819ce1 The compiler warning fixed. 2008-01-30 22:22:20 +02:00
unknown
5bfcd9b7f1 Merge desktop.sanja.is.com.ua:/home/bell/mysql/bk/mysql-maria
into  desktop.sanja.is.com.ua:/home/bell/mysql/bk/work-maria-write


storage/maria/ma_pagecache.c:
  Auto merged
2008-01-30 22:13:13 +02:00
unknown
25bccab91c Fixed false assert which conrol sequental writing to disk in
case of opening and closing loghandler without writing
 sometrhing in it.
Fixed comment (sent_to_file was renamed to sent_to disk)
Write log during shutdown in natural order.
2008-01-30 22:12:15 +02:00
unknown
069178d797 Fixed thread specific ID.
Added support for delete by link.
Aded level ("hits") management functions.


storage/maria/ma_pagecache.h:
  Added support for delete by link.
  Aded level ("hits") management functions.
storage/maria/unittest/ma_pagecache_single.c:
  Test of delete by link.
2008-01-30 14:33:36 +02:00
unknown
211a9e72a9 Merge abelkin@bk-internal.mysql.com:/home/bk/mysql-maria
into  desktop.sanja.is.com.ua:/home/bell/mysql/bk/mysql-maria


storage/maria/ma_loghandler.c:
  Auto merged
2008-01-30 08:04:29 +02:00
unknown
dc36524546 Compiler warnings fixed.
storage/maria/ma_loghandler.c:
  Compiler warning fixed.
storage/maria/ma_test1.c:
  Compiler warning fixed.
storage/maria/ma_test2.c:
  Compiler warning fixed.
storage/maria/maria_chk.c:
  Compiler warning fixed.
storage/maria/unittest/ma_control_file-t.c:
  Compiler warning fixed.
storage/maria/unittest/ma_test_loghandler-t.c:
  Compiler warning fixed.
storage/maria/unittest/ma_test_loghandler_first_lsn-t.c:
  Compiler warning fixed.
storage/maria/unittest/ma_test_loghandler_max_lsn-t.c:
  Compiler warning fixed.
storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
  Compiler warning fixed.
storage/maria/unittest/ma_test_loghandler_multithread-t.c:
  Compiler warning fixed.
storage/maria/unittest/ma_test_loghandler_noflush-t.c:
  Compiler warning fixed.
storage/maria/unittest/ma_test_loghandler_nologs-t.c:
  Compiler warning fixed.
storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
  Compiler warning fixed.
storage/maria/unittest/ma_test_loghandler_purge-t.c:
  Compiler warning fixed.
2008-01-30 08:01:45 +02:00
unknown
3563311bfd Merge gbichot@bk-internal.mysql.com:/home/bk/mysql-maria
into  gbichot4.local:/home/mysql_src/mysql-maria-monty


mysql-test/t/maria-recovery.test:
  Auto merged
storage/maria/ha_maria.cc:
  Auto merged
storage/maria/ma_loghandler.c:
  Auto merged
storage/maria/ma_pagecache.c:
  Auto merged
2008-01-29 22:21:59 +01:00
unknown
2fcff8988a Fix for BUG#34114 "maria_chk reports false error when several tables on
command-line" and BUG#34062 "Maria table corruption on master".
Use 5 bytes (instead of 4) to store page's number in the checkpoint
record, to allow bigger table (1PB with maria-block-size=1kB).
Help pushbuild not run out of memory by moving the portion of
maria-recovery.test which generates lots of data into a -big.test.


mysql-test/r/maria-recovery.result:
  result moved
mysql-test/t/maria-recovery.test:
  piece which generates much data moved to maria-recovery-big.test
mysys/my_pread.c:
  To fix BUG#34062, where a 1.1TB file was generated due to a wrong
  pwrite offset, it was useful to not lose precision on 'offset' in
  DBUG_PRINT, so that the crazy value is visible.
mysys/my_read.c:
  To fix BUG#34062, where a 1.1TB file was generated due to a wrong
  pwrite offset, it was useful to not lose precision on 'offset' in
  DBUG_PRINT, so that the crazy value is visible.
mysys/my_write.c:
  To fix BUG#34062, where a 1.1TB file was generated due to a wrong
  pwrite offset, it was useful to not lose precision on 'offset' in
  DBUG_PRINT, so that the crazy value is visible.
storage/maria/ha_maria.cc:
  When starting a bulk insert, we throw away dirty index pages from the
  cache. Unique (non disabled) key insertions thus read out-of-date
  pages from the disk leading to BUG#34062 "Maria table corruption on
  master": a DELETE in procedure viewer_sp() had deleted all rows of
  viewer_tbl2 one by one, putting index page 1 into key_del; that page
  was thrown away at start of INSERT SELECT, then the INSERT SELECT
  needed a page to insert keys, looked at key_del, found 1, read page 1
  from disk, and its out-of-date content was used to set the new value of
  key_del (crazy value of 1TB), then a later insertion needed another
  index page, tried to read page at this crazy offset and failed, leading
  to corruption mark.
  The fix is to destroy out-of-date pages and make the state consistent
  with that, i.e. call maria_delete_all_rows().
storage/maria/ma_blockrec.c:
  Special hook for UNDO_BULK_INSERT
storage/maria/ma_blockrec.h:
  special hook for UNDO_BULK_INSERT
storage/maria/ma_check.c:
  Fix for BUG#34114 "maria_chk reports false error when several tables on
  command-line": if the Nth (on the command line) table was BLOCK_RECORD
  it would start checks by using the param->record_checksum computed by
  checks of table N-1.
storage/maria/ma_delete_all.c:
  comment
storage/maria/ma_loghandler.c:
  special hook for UNDO_BULK_INSERT
storage/maria/ma_page.c:
  comment
storage/maria/ma_pagecache.c:
  page number is 5 bytes in checkpoint record now (allows bigger tables)
storage/maria/ma_recovery.c:
  page number is 5 bytes in checkpoint record now
storage/maria/ma_recovery_util.c:
  page number is 5 bytes now
storage/maria/ma_write.c:
  typo
mysql-test/r/maria-recovery-big.result:
  result is correct
mysql-test/t/maria-recovery-big-master.opt:
  usual options for recovery tests
mysql-test/t/maria-recovery-big.test:
  Moving out the big blob test to a -big test (it exhausts memory when
  using /dev/shm on certain machines)
2008-01-29 22:20:59 +01:00
unknown
e89cc6064e Merge bk-internal.mysql.com:/home/bk/mysql-maria
into  janus.mylan:/usr/home/serg/Abk/mysql-maria
2008-01-29 20:12:14 +01:00
unknown
b9bab09907 ma_test_recovery is not big
storage/maria/unittest/ma_test_all-t:
  Size doesn't matter or ma_test_recovery is not big
2008-01-29 19:58:52 +01:00
unknown
57b7bdabbf Merge bk-internal.mysql.com:/home/bk/mysql-maria
into  janus.mylan:/usr/home/serg/Abk/mysql-maria
2008-01-29 18:39:10 +01:00
unknown
db58a1378c changes for big unit tests
Makefile.am:
  make test-unit-big
storage/maria/unittest/Makefile.am:
  support big unit tests
storage/maria/unittest/ma_pagecache_consist.c:
  support big unit tests and other changes
storage/maria/unittest/ma_pagecache_single.c:
  support big unit tests
storage/maria/unittest/ma_test_all-t:
  support big unit tests and sub skip()
storage/maria/unittest/ma_test_loghandler-t.c:
  support big unit tests
unittest/unit.pl:
  don't ignore existing $MYTAP_CONFIG
2008-01-29 18:15:38 +01:00
unknown
71eb292f37 storage/maria/unittest/ma_test_all-t
1. reasonable defaults for maria_path
    2. reasonable TAP-compatible output in non-verbose mode
unittest/Makefile.am
    remove maria_path hack
BitKeeper/etc/ignore@1.269
    added maria_log.00000* ma_test_recovery.output test?.MA?


BitKeeper/etc/ignore:
  added maria_log.00000* ma_test_recovery.output test?.MA?
storage/maria/unittest/ma_test_all-t:
  1. reasonable defaults for maria_path
  2. reasonable TAP-compatible output in non-verbose mode
unittest/Makefile.am:
  remove maria_path hack
2008-01-29 15:26:04 +01:00
unknown
e13538dc97 Fixed unused branch of page write call. 2008-01-29 14:22:50 +02:00
unknown
1824f47aeb Merge desktop.sanja.is.com.ua:/home/bell/mysql/bk/mysql-maria
into  desktop.sanja.is.com.ua:/home/bell/mysql/bk/work-maria-logdir
2008-01-26 23:36:34 +02:00
unknown
a1255fc299 Support of moving logs in other directory then data root.
Fixed typo in maria_read_log "help" output.
Compilation warning on Mac OS fixed.


mysql-test/include/maria_empty_logs.inc:
  Added support of moving maria log relatively
    to master data directory.
mysql-test/include/maria_make_snapshot_for_feeding_recovery.inc:
  Added support of moving maria log relatively
    to master data directory.
mysql-test/include/maria_verify_recovery.inc:
  Added support of moving maria log relatively
    to master data directory.
mysql-test/t/maria-recovery-master.opt:
  Check of recovery with logs in other place.
mysql-test/t/maria-recovery.test:
  Check of recovery with logs in other place.
storage/maria/ha_maria.cc:
  Support of moving logs in other directory then data root.
storage/maria/ma_loghandler.c:
  Compilation warning on Mac OS fixed.
storage/maria/ma_static.c:
  Support of moving logs in other directory then data root.
storage/maria/ma_test1.c:
  Support of moving logs in other directory then data root.
storage/maria/maria_def.h:
  Support of moving logs in other directory then data root.
storage/maria/maria_read_log.c:
  Support of moving logs in other directory then data root.
  Fixed typo in maria_read_log "help" output.
2008-01-26 23:03:23 +02:00
unknown
e4e8418ced Two bugs already fixed 2008-01-25 21:14:48 +01:00
unknown
b40a6348c9 Fixed bug when using maria_chk --safe-recover with packed tables
Fixed bug when using maria_chk --safe-recover and getting duplicated keys
Fixed bug when using maria_pack --join


storage/maria/ma_check.c:
  Fixed bug when using --safe-recover with packed tables
  Fixed bug when using --safe-recover and getting duplicated keys
storage/maria/maria_pack.c:
  Fixed bug when using --join
storage/maria/unittest/ma_test_all-t:
  Added test to check maria_pack --join
2008-01-23 05:00:17 +02:00
unknown
7a4bd76acd Fixes for the remaining 'not-yet-fixed' bugs found by Guilhem when running all tests with maria engine and one bug in maria_pack reported by Martin:
- Fix that query cache works with Maria
- Fixed wrong calculation if min_key_length which casued some tables to assert in insert if key contained NULL
- Restore auto_increment value if insert statement fails
- Fixed rare bug that caused crash in maria_pack if buffer was flushed at wrong point in time


configure.in:
  Added maria extension to distribution
mysql-test/r/maria.result:
  More test cases to cover bugs found by Guilhem
mysql-test/t/maria.test:
  More test cases to cover bugs found by Guilhem
storage/maria/ha_maria.cc:
  Fix that query cache works with Maria
storage/maria/ma_blockrec.c:
  Removed duplicate functionallity (already done in ma_pagecrc.c)
storage/maria/ma_create.c:
  Fixed wrong calculation if min_key_length which casued some tables to assert in insert if key contained NULL
storage/maria/ma_key_recover.c:
  Restore auto_increment value if insert statement fails
storage/maria/maria_def.h:
  Added variables to track auto_increment changes to be able to restore it in case of duplicate key
storage/maria/maria_pack.c:
  Fixed rare bug that caused crash if buffer was flushed at wrong point in time
storage/maria/unittest/ma_test_all-t:
  Added option --abort-on-error
  Ordered help message
2008-01-22 19:49:05 +02:00
unknown
5ffc919b9b Merge bk-internal.mysql.com:/home/bk/mysql-maria
into  mysql.com:/home/my/mysql-maria


mysql-test/r/maria.result:
  Auto merged
mysql-test/t/maria.test:
  Auto merged
sql/sql_table.cc:
  Auto merged
storage/maria/ma_create.c:
  Auto merged
storage/maria/ma_pagecrc.c:
  Auto merged
2008-01-21 22:21:59 +02:00
unknown
5cca615caf Allow index on 'CHAR(0) NULL' columns
Fixed error in Maria when using table with only CHAR(0) fields
Fixed valgrind warning


BitKeeper/etc/ignore:
  added storage/maria/maria_dump_log
mysql-test/r/maria.result:
  Testing of table with char(0)
mysql-test/t/maria.test:
  Testing of table with char(0)
sql/sql_table.cc:
  Allow index on 'CHAR(0) NULL' columns
storage/maria/ma_create.c:
  Allow creation of table with 0 record data (for example CHAR(0))
storage/maria/ma_pagecrc.c:
  Fixed valgrind warning
2008-01-21 22:03:24 +02:00
unknown
fd74a0da30 fix for compiler warning
sql/sql_table.cc:
  initialize variables used in 'err:' before going to err.
2008-01-21 18:51:30 +01:00
unknown
d66157e30f An assertion added (transaction must be re-enabled before end of
top-level statement) and fixes for the bugs it finds.
Fix for non-serious Valgrind warning.


sql/sql_insert.cc:
  When CREATE TABLE IF NOT EXISTS finds the table already exists,
  'table' is the existing table. So if that table is temporary we don't
  re-enable transactions which is a bug.
sql/sql_parse.cc:
  verify that at the end of each top-statement transactions have
  been re-enabled. Does not apply to substatements (consider
  CREATE TABLE t1 SELECT stored_func() : the substatements inside
  stored_func() run with transaction disabled).
  I am not putting the assertion into ha_external_lock(F_UNLCK) because
  performance schema tables get closed in the middle of a statement
  sometimes while transaction is disabled.
sql/sql_table.cc:
  copy_data_between_tables() forgot to clean-up several things in error
  conditions (ha_enable_transaction(), free-ing 'copy', etc) as found
  by the assertion added to sql_parse.cc.
storage/maria/ha_maria.cc:
  Comment
storage/maria/ma_blockrec.c:
  fix for Valgrind warning: a temporary table was created, a blob
  page of its was flushed to disk and had random bytes in the checksum
  area ("write of uninitialized bytes in pwrite")
storage/maria/ma_pagecrc.c:
  typo
2008-01-21 11:56:37 +01:00
unknown
0825c48549 - fix for segfault in rpl_trigger/rpl_found_rows with default engine=maria
(fix is keeping the real TRN through a disable_logging/reenable cycle)
- fix for pagecache assertion failure in ps/type_ranges with default
engine=maria (fix is in sql_insert.cc)
- when reenabling logging we must either flush all dirty pages,
or at least verify (in debug build) that there are none. For example
a bulk insert with single UNDO_BULK_INSERT must flush them, no matter
if it uses repair or not (bugfix)
- UNDO_BULK_INSERT_WITH_REPAIR is also used with repair, changes name


mysql-test/r/maria.result:
  tests for bugs fixed
mysql-test/t/maria.test:
  tests for bugs fixed
sql/sql_insert.cc:
  Bugfix: even if select_create::prepare() failed to create the 'table' object
  we still have to re-enable logging.
storage/maria/ha_maria.cc:
  Bugfix: when a transactional table does a bulk insert without
  repair, it still sometimes skips logging of REDOs thus needs a full
  flush and sync at the end. Not if repair is done, as repair does
  it internally already (see end of maria_repair*()).
storage/maria/ha_maria.h:
  variable now can have 3 states not 2
storage/maria/ma_bitmap.c:
  name change
storage/maria/ma_blockrec.c:
  name change
storage/maria/ma_blockrec.h:
  name change
storage/maria/ma_check.c:
  * When maria_repair() re-enables logging it does not need to ask for
  a flush&sync as it did it by itself already a few lines before.
  * the log record of bulk insert can be used even without repair
  * disable logging in maria_zerofill(): without that, it puts LSN pages
  in the cache, so when it flushes them it flushes the log; the change
  makes auto-ha_maria::zerofill-if-moved faster (no log flush).
storage/maria/ma_key_recover.c:
  name change
storage/maria/ma_loghandler.c:
  name change
storage/maria/ma_loghandler.h:
  name change
storage/maria/ma_pagecache.c:
  A function, to check in debug builds that no dirty pages exist for a file.
storage/maria/ma_pagecache.h:
  new function (nothing in non-debug)
storage/maria/ma_recovery.c:
  _ma_tmp_disable_logging() sets info->trn to dummy_transaction_object
  when needed now. The changes done here about info->trn are to allow
  a table to retain its original, real TRN through a disable/reenable
  cycle (see replication scenario in _ma_reenable_logging_for_table()).
  When we reenable, we offer the caller to flush and sync the table;
  if the caller doesn't accept our offer, we verify that it's ok
  (no REDOs => no dirty pages are allowed to exist).
storage/maria/maria_chk.c:
  comment
storage/maria/maria_def.h:
  new names
mysql-test/suite/rpl/r/rpl_stm_maria.result:
  result (it used to crash)
mysql-test/suite/rpl/t/rpl_stm_maria.test:
  Test of replication-specific Maria bug fixed
2008-01-20 05:25:26 +01:00
unknown
cd15ea74f7 - fix for bug when creating bitmaps
- fix for bug seen when running test "type_datetime" with Maria
(wrong data_file_length in maria_repair())
- fix for bug seen when running test "repair" with Maria
(myisam_sort_buffer_size was influencing Maria)


sql/handler.cc:
  Sounds illogical to store myisam_sort_buffer_size into a structure
  used by all engines. There are only MyISAM and Maria which used 
  sort_buffer_size: they can get their value from their respective
  system variable (myisam|maria_sort_buffer_size). Using MyISAM's value
  for all engines was wrong (myisam_sort_buffer_size influenced Maria).
sql/handler.h:
  not needed
storage/maria/ha_maria.cc:
  check_opt->sort_buffer_size was myisam_sort_buffer_size; Maria
  must use maria_sort_buffer_size instead.
storage/maria/ma_bitmap.c:
  don't use my_chsize() now that Monty re-explained the problem to me :)
storage/maria/ma_check.c:
  making maria_repair() work like maria_repair_by_sort(): sort_param.filepos
  must be set at start then possibly corrected by create_new_data_handle();
  in the opposite order, filepos is finally set to 0, and if the table
  has no records, it stays 0 and this causes state.data_file_length
  to be 0 which is incorrect for a BLOCK_RECORD table having always
  at least one bitmap page.
storage/maria/ma_pagecache.c:
  Comments
storage/myisam/ha_myisam.cc:
  check_opt->sort_buffer_size is gone
2008-01-19 04:51:38 +01:00
unknown
306e09ba86 compiler warnings
storage/maria/ma_check.c:
  fix for important compiler warning
storage/maria/ma_recovery.c:
  fix for compiler warning
2008-01-18 05:11:46 +01:00
unknown
534417c285 WL#3072 - Maria Recovery
Bulk insert: don't log REDO/UNDO for rows, log one UNDO which will
truncate files; this is an optimization and a bugfix (table was left
half-repaired by crash).
Repair: mark table crashed-on-repair at start, bump skip_redo_lsn at start,
this is easier for recovery (tells it to skip old REDOs or even UNDO
phase) and user (tells it to repair) in case of crash, sync files
in the end.
Recovery skips missing or corrupted table and moves to next record
(in REDO or UNDO phase) to be more robust; warns if happens in UNDO phase.
Bugfix for UNDO_KEY_DELETE_WITH_ROOT (tested in ma_test_recovery)
and maria_enable_indexes().
Create missing bitmaps when needed (there can be more than one to create,
in rare cases), log a record for this.


include/myisamchk.h:
  new flag: bulk insert repair mustn't bump create_rename_lsn
mysql-test/lib/mtr_report.pl:
  skip normal warning in maria-recovery.test
mysql-test/r/maria-recovery.result:
  result: crash before bulk insert is committed, causes proper rollback,
  and crash right after OPTIMIZE replaces index file with new index file
  leads to table marked corrupted and recovery not failing.
mysql-test/t/maria-recovery.test:
  - can't check the table or it would commit the transaction,
  but check is made after recovery.
  - test of crash before bulk-insert-with-repair is committed
  (to see if it is rolled back), and of crash after OPTIMIZE has replaced
  index file but not finished all operations (to see if recovery fails -
  it used to assert when trying to execute an old REDO on the new
  index).
storage/maria/CMakeLists.txt:
  new file
storage/maria/Makefile.am:
  new file
storage/maria/ha_maria.cc:
  - If bulk insert on a transactional table using an index repair:
  table is initially empty, so don't log REDO/UNDO for data rows
  (optimization), just log an UNDO_BULK_INSERT_WITH_REPAIR
  which will, if executed, empty the data and index file. Re-enable
  logging in end_bulk_insert().
  - write log record for repair operation only after it's fully done,
  index sort including (maria_repair*() used to write the log record).
  - Adding back file->trn=NULL which was removed by mistake earlier.
storage/maria/ha_maria.h:
  new member (see ha_maria.cc)
storage/maria/ma_bitmap.c:
  Functions to create missing bitmaps:
  - one function which creates missing bitmaps in page cache, except
  the missing one with max offset which it does not put into page cache
  as it will be modified very soon.
  - one function which the one above calls, and creates bitmaps in page
  cache
  - one function to execute REDO_BITMAP_NEW_PAGE which uses the second
  one above.
storage/maria/ma_blockrec.c:
  - when logging REDO_DELETE_ALL, not only 'records' and 'checksum'
  has to be reset under log's mutex.
  - execution of REDO_INSERT_ROW_BLOBS now checks the dirty pages' list
  - execution of UNDO_BULK_INSERT_WITH_REPAIR
storage/maria/ma_blockrec.h:
  new functions
storage/maria/ma_check.c:
  - table-flush-before-repair is moved to a separate function reused
  by maria_sort_index(); syncing is added
  - maria_repair() is allowed to re-enable logging only if it is the one
  which disabled it.
  - "_ma_flush_table_files_after_repair" was a bad name, it's not after
  repair now, and it should not sync as we do more changes to the files
  shortly after (sync is postponed to when writing the log record)
  - REDO_REPAIR record should be written only after all repair
  operations (in particular after sorting index in ha_mara::repair())
  - close to the end of repair by sort, flushing of pages must happen
  also in the non-quick case, to prepare for the sync at end.
  - in parallel repair, some page flushes are not needed as done
  by initialize_variables_for_repair().
storage/maria/ma_create.c:
  Update skip_redo_lsn, create_rename_lsn optionally.
storage/maria/ma_delete_all.c:
  Need to sync files at end of maria_delete_all_rows(), if transactional.
storage/maria/ma_extra.c:
  During repair, we sometimes call _ma_flush_table_files() (via
  _ma_flush_table_files_before_swap()) while there is a WRITE_CACHE.
storage/maria/ma_key_recover.c:
  - when we see CLR_END for UNDO_BULK_INSERT_WITH_REPAIR, re-enable
  indices.
  - fixing bug: _ma_apply_undo_key_delete() parsed UNDO_KEY_DELETE_WITH_ROOT
  wrongly, leading to recovery failure
storage/maria/ma_key_recover.h:
  new prototype
storage/maria/ma_locking.c:
  DBUG_VOID_RETURN missing
storage/maria/ma_loghandler.c:
  UNDO for bulk insert with repair, and REDO for creating bitmaps.
  LOGREC_FIRST_FREE to not have to change the for() every time we
  add a new record type.
storage/maria/ma_loghandler.h:
  new UNDO and REDO
storage/maria/ma_open.c:
  Move share.kfile.file=kfile up a bit, so that _ma_update_state_lsns()
  can get its value, this fixes a bug where LSN_REPAIRED_BY_MARIA_CHK
  was not corrected on disk by maria_open().
  Store skip_redo_lsn in index' header.
  maria_enable_indexes() had a bug for BLOCK_RECORD, where an empty
  file has one page, not 0 bytes.
storage/maria/ma_recovery.c:
  - Skip a corrupted, missing, or repaired-with-maria_chk, table in
  recovery: don't fail, just go to next REDO or UNDO; but if an UNDO
  is skipped in UNDO phase we issue warnings.
  - Skip REDO|UNDO in REDO phase if <skip_redo_lsn.
  - If UNDO phase fails, delete transactions to not make trnman
  assert.
  - Update skip_redo_lsn when playing REDO_CREATE_TABLE
  - Don't record UNDOs for old transactions which we don't know (long_trid==0)
  - Bugfix for UNDO_KEY_DELETE_WITH_ROOT (see ma_key_recover.c)
  - Execution of UNDO_BULK_INSERT_WITH_REPAIR
  - Don't try to find a page number in REDO_DELETE_ALL
  - Pieces moved to ma_recovery_util.c
storage/maria/ma_rename.c:
  name change
storage/maria/ma_static.c:
  I modified layout of the index' header (inserted skip_redo_lsn in its middle)
storage/maria/ma_test2.c:
  allow breaking the test towards the end, tests execution of
  UNDO_KEY_DELETE_WITH_ROOT
storage/maria/ma_test_recovery.expected:
  6 as testflag instead of 4
storage/maria/ma_test_recovery:
  Increase the amount of rollback work to do when testing recovery
  with ma_test2; this reproduces the UNDO_KEY_DELETE_WITH_ROOT bug.
storage/maria/maria_chk.c:
  skip_redo_lsn should be updated too, for consistency.
  Write a REDO_REPAIR after all operations (including sort-records)
  have been done.
  No reason to flush blocks after maria_chk_data_link() and
  maria_sort_records(), there is maria_close() in the end.
  write_log_record() is a function, to not clutter maria_chk().
storage/maria/maria_def.h:
  New member skip_redo_lsn in the state, and comments
storage/maria/maria_pack.c:
  skip_redo_lsn should be updated too, for consistency
storage/maria/ma_recovery_util.c:
  _ma_redo_not_needed_for_page(), defined in ma_recovery.c, is needed
  by ma_blockrec.c; this causes link issues, resolved by putting
  _ma_redo_not_needed_for_page() into a new file (so that it is not
  in the same file as repair-related objects of ma_recovery.c).
storage/maria/ma_recovery_util.h:
  new file
2008-01-17 23:59:32 +01:00
unknown
8382126a69 ma_checkpoint.c, ma_recovery.c:
SCCS merged
ma_check.c:
  Auto merged


storage/maria/ma_check.c:
  Auto merged
storage/maria/ma_checkpoint.c:
  SCCS merged
storage/maria/ma_recovery.c:
  SCCS merged
2008-01-17 17:02:31 +01:00
unknown
5b18f8106c Moved variables to ma_static.c to avoid link error on MacOSX
Added suppress rule for dlclose() in valgrind.supp


mysql-test/valgrind.supp:
  Removed duplication
  Added error in dlclose() noticed on pushbuild for x86_64
storage/maria/ma_init.c:
  Moved variables to ma_static.c to avoid link error on MacOSX
storage/maria/ma_loghandler.c:
  Moved variables to ma_static.c to avoid link error on MacOSX
storage/maria/ma_static.c:
  Moved variables to ma_static.c to avoid link error on MacOSX
2008-01-15 00:02:49 +02:00