Commit graph

65460 commits

Author SHA1 Message Date
Michael Widenius
d52a41d26a Merge with 5.1 2011-01-14 16:49:27 +02:00
Michael Widenius
3c0a37fd18 Call always ha_index_init(), not index_init(), to ensure that active_index is set correctly.
Fixes failures in merge.test
2011-01-14 16:45:14 +02:00
unknown
108e9ee84e MBug#702303: Spurious use statements in output from mysqlbinlog --rewrite-db="a->b" 2011-01-13 13:28:36 +01:00
Michael Widenius
acb3095386 Fixed assert as Aria in 5.2 has more flags than 5.1 2011-01-12 17:58:13 +02:00
Michael Widenius
4c576fd492 Merge with 5.1 2011-01-12 17:38:13 +02:00
Michael Widenius
d0e8dbc4a3 Merge with 5.1 2011-01-12 16:32:52 +02:00
Michael Widenius
213321206e Fix for LP#697610 ha_index_prev(uchar*): Assertion `inited==INDEX' failed with HANDLER + InnoDB in maria-5.3
mysql-test/suite/handler/innodb.result:
  Added test case
mysql-test/suite/handler/innodb.test:
  Added test case
sql/handler.h:
  Move setting/resetting of active_index to ha_index_init()/ha_index_end() to simplify handler functions index_init()/index_end()
  Fixed that get_index() returns MAX_KEY if index is not inited (this fixed LP#697610)
storage/federated/ha_federated.cc:
  Settting of active_index is not needed anymore
storage/maria/ma_pagecache.c:
  Added error message if we have too little memory for Maria page cache
2011-01-12 15:41:39 +02:00
Sergey Petrunya
6bc209c235 Merge BUG#675118 into maria-5.1 2011-01-12 11:30:18 +03:00
Michael Widenius
3e77b1dade Fixed bug in Maria page cache that caused assert if block->request != 0 in free_block()
storage/maria/ma_pagecache.c:
  - Ensure that we write also the last buffer in flush if buffer overflows.
  - Don't set PCBLOCK_IN_FLUSH if we don't flush the page
  - Added some new safety asserts.
2011-01-12 01:50:56 +02:00
Michael Widenius
713999a4fe Allow one to decrease page-buffer-size down to 1M (from 128M) for maria_read_log
Don't allow too low value of pagecache_buffer_size for mysqld

storage/maria/ha_maria.cc:
  Don't allow too low value of pagecache_buffer_size (as it will stop mysqld from starting)
storage/maria/maria_read_log.c:
  Allow one to decrease page-buffer-size down to 1M (from 128M)
2011-01-12 01:48:34 +02:00
Michael Widenius
a008186f1d Allow smaller size for page-buffer-size
storage/maria/maria_read_log.c:
  Allow smaller size for page-buffer-size (down to 1M)
  Sorted options for --help
2011-01-11 14:42:33 +02:00
Michael Widenius
e6ba9d285a automatic merge with 5.1 2011-01-11 14:29:19 +02:00
Michael Widenius
9ae7fb96b0 Fixed wrong test in maria_rsame() that caused ma_test_all to fail.
storage/maria/ma_rsame.c:
  Fixed wrong test of index usage
storage/maria/ma_search.c:
  Fixed test to avoid compiler warnings.
  Safety fix to ensure that my_error is properly set in case of errors.
2011-01-11 13:27:16 +02:00
Sergey Petrunya
ef62320957 BUG#675118: Elimination of a table results in an invalid execution plan
- Fix for MySQL BUG#52357 added NESTED_JOIN::is_fully_covered() which would 
  not take into account that MariaDB's table elimination could eliminate tables
  from join plan (and so, from join nest).
  Fixed the check in the function to compare post-table-elimination numbers.
2011-01-11 12:42:16 +02:00
Michael Widenius
fcd3f2cd4b Safety fix for Aria:
- Set lastinx= ~0 when last_key.keyinfo is set.


storage/maria/ma_check.c:
  Set lastinx= ~0 when last_key.keyinfo is set
storage/maria/ma_ft_boolean_search.c:
  Set lastinx= ~0 when last_key.keyinfo is set
storage/maria/ma_rt_index.c:
  Remove setting of info->lastkey.keyinfo, as this should already be set by caller
storage/maria/ma_search.c:
  Added ASSERT to ensure that info->last_key.keyinfo is properly set
storage/maria/ma_unique.c:
   Set lastinx= ~0 when last_key.keyinfo is set
2011-01-11 12:18:03 +02:00
Michael Widenius
2eaa76b844 Automatic merge with 5.1 2011-01-10 23:42:47 +02:00
Michael Widenius
505c663a1e - Fixed that Aria works with HANDLER commands
- Added test case for Aria
- Tested HANDLER with HEAP (changes to HEAP code will be pushed in 5.3)
- Moved all HANDLER test to suite/handler.


mysql-test/Makefile.am:
  Added suite/handler
mysql-test/mysql-test-run.pl:
  Added suite/handler
mysql-test/r/lock_multi.result:
  Remove test that is already in handler test suite
mysql-test/suite/handler/aria.result:
  Test for HANDLER with Aria storage engine
mysql-test/suite/handler/aria.test:
  Test for HANDLER with Aria storage engine
mysql-test/suite/handler/handler.inc:
  Extended the general handler test
  Moved interface testing to 'interface.test'
mysql-test/suite/handler/init.inc:
  Common init for handler tests.
mysql-test/suite/handler/innodb.result:
  New results
mysql-test/suite/handler/innodb.test:
  Update to use new include files
mysql-test/suite/handler/interface.result:
  Test of HANDLER interface (not storage engine dependent parts)
mysql-test/suite/handler/interface.test:
  Test of HANDLER interface (not storage engine dependent parts)
mysql-test/suite/handler/myisam.result:
  New results
mysql-test/suite/handler/myisam.test:
  Update to use new include files
mysql-test/t/lock_multi.test:
  Remove test that is already in handler test suite
mysys/tree.c:
  Added missing handling of read previous (showed up in HEAP testing)
sql/handler.cc:
  Don't marka 'HA_ERR_RECORD_CHANGED' as fatal (can be used with HANDLER READ, especially with MEMORY ENGINE)
sql/handler.h:
  Added prototype for can_continue_handler_scan()
sql/sql_handler.cc:
  Re-initialize search if we switch from key to table search.
  Check if handler can continue searching between calls (via can_continue_handler_scan())
  Don't write common not fatal errors to log
storage/maria/ma_extra.c:
  Don't set index 0 as default. This forces call to ma_check_index() to set up index variables.
storage/maria/ma_ft_boolean_search.c:
  Ensure that info->last_key.keyinfo is set
storage/maria/ma_open.c:
  Don't set index 0 as default. This forces call to ma_check_index() to set up index variables.
storage/maria/ma_rkey.c:
  Trivial optimization
storage/maria/ma_rnext.c:
  Added missing code from mi_rnext.c to ensure that handler next/prev works.
storage/maria/ma_rsame.c:
  Simple optimizations
storage/maria/ma_search.c:
  Initialize info->last_key once and for all when we change keys.
storage/maria/ma_unique.c:
  Ensure that info->last_key.keyinfo is up to date.
2011-01-10 23:22:40 +02:00
Michael Widenius
934c57c77e merge with 5.1 2011-01-07 18:07:22 +02:00
Michael Widenius
c0fc6d42ac Don't do DBUG_ASSERT for checksum errors when using REPAIR
mysql_convert_table_format ignored --engine option.
Fix that zerofill() doesn't write out wrong data to client if run with auto repair.
Ensure that pagecache is properly flushed, even in case of errors.
Handle checksum errors in BLOCK_RECORD format.


scripts/mysql_convert_table_format.sh:
  Fixed that --engine option works
storage/maria/ha_maria.cc:
  Fix that zerofill() doesn't write out wrong data to client if run with auto repair.
storage/maria/ma_check.c:
  Set in_check_table when scanning table to not get DBUG_ASSERT for checksum error.
  Ensure that pagecache is properly flushed, even in case of errors.
  Handle checksum errors in BLOCK_RECORD format.
storage/maria/ma_sort.c:
  Set in_check_table when scanning table to not get DBUG_ASSERT for checksum error.
2011-01-07 17:58:12 +02:00
Michael Widenius
b2abd1cb0c Fixed typos
Patch provided by Dolf Schimmel
2011-01-07 13:45:59 +02:00
Michael Widenius
53407ecf17 Merge with base 5.2 2011-01-07 13:12:09 +02:00
Michael Widenius
26f988594c Aria fixes:
- Don't delete pages without flushing that has had a tail or head information in pagecache_delete()
  This fixes a case where REPAIR could find old deleted rows.


storage/maria/ha_maria.cc:
  Remove calls to depricated function ha_statistic_increment
storage/maria/ma_blockrec.c:
  Don't delete pages without flushing that has had a tail or head information in pagecache_delete()
storage/maria/ma_pagecache.c:
  Added possibility to mark pages to not be deleted by pagecache_delete() without beeing flushed.
storage/maria/ma_pagecache.h:
  Added new prototype
2011-01-07 12:17:34 +02:00
Michael Widenius
fdaaf48c93 Merge with 5.1 2011-01-07 12:05:46 +02:00
Michael Widenius
5b0afd8a0d Bug fixing in Aria:
- Fixed some bugs in recovery of blobs
- Don't ASSERT() on checksum errors when running check table
- Added to maria_read_log option --tables-to-redo=list-of-tables to only recover some tables (good for debugging)


storage/maria/ma_blockrec.c:
  Don't ASSERT() on checksum errors when running check table
  Fixed bug in recovery of blog page that was not in dirty pages list
storage/maria/ma_check.c:
  Don't ASSERT() on checksum errors when running check table
storage/maria/ma_recovery.c:
  Handling of --tables-to-redo
storage/maria/ma_recovery.h:
  Handling of --tables-to-redo
storage/maria/ma_recovery_util.c:
  Give better warning if table was not in dirty pages list
storage/maria/maria_def.h:
  Added in_check_table
storage/maria/maria_read_log.c:
  Added --tables-to-redo=list-of-tables to only recover some tables (good for debugging)
  Cleaned up message when wrong arguments
2011-01-06 22:49:17 +02:00
unknown
d653a80d2a MBug#698132: Fix wrong buffer calculation in send_change_user_packet() 2011-01-06 15:55:29 +01:00
Michael Widenius
215043b7c2 Merge with 5.1 2011-01-05 16:03:58 +02:00
Michael Widenius
6b03fbf9fc Fixed overwrite of directory information on the row page.
This could only happen with very small rows on very full pages with old deleted information in middle of page.
2011-01-05 15:46:44 +02:00
Michael Widenius
ab32ce9aa7 ALTER TABLE IGNORE didn't ignore duplicates for unique add index for InnoDB 2011-01-05 15:09:06 +02:00
Michael Widenius
711b36732b Make copy from heap to MyISAM / Aria killable.
Fixes LP#695006 converting HEAP to Aria" status do not respond to KILL QUERY

sql/sql_select.cc:
  Make copy from heap to MyISAM / Aria killable.
2011-01-05 14:50:08 +02:00
Michael Widenius
1e0b42d91f Fixed recovery problem in Aria where bitmap had wrong information after recovery.
LP#619731: Aria recovery corruption "Page 1: Row: 1 has an extent with wrong information in bitmap

storage/maria/ma_bitmap.c:
  Don't send broadcast if no one is waiting for it
storage/maria/ma_blockrec.c:
  Don't update bitmap if the page is not in the dirty_page list (or LSN is after checkpoint start)
  Fixes the case where we have in the log redo_free_block followed by another redo entry for the same page which is ignored.
  Also fixed that _ma_apply_redo_insert_row_blobs() doesn't update the bitmap in similar circumstances.
storage/maria/ma_blockrec.h:
  Updated prototype
storage/maria/ma_check.c:
  Added printing of bitmap information if used with maria_chk -vvv (for debugging)
storage/maria/ma_recovery.c:
  Updated call parameters to _ma_apply_redo_free_blocks().
2011-01-05 00:09:05 +02:00
Michael Widenius
427c6c78de Updated README for MTR test suite 2011-01-04 15:47:21 +02:00
unknown
92fc426386 Speed up mtr --parallel=<lots> by scheduling some slow tests earlier.
The patch also fixes a race in rpl_stop_slave.test.

On machines with lots of CPU and memory, something like `mtr --parallel=10`
can speed up the test suite enormously. However, we have a few test cases
that run for long (several minutes), and if we are unlucky and happen to
schedule those towards the end of the test suite, we end up with most
workers idle while waiting for the last slow test to end, significantly
delaying the finish of the entire suite.

Improve this by marking the offending tests as taking "long", and trying
to schedule those tests early. This reduces the time towards the end of
the test suite run where some workers are waiting with nothing to do for
the remaining workers each to finish their last test.

Also, the rpl_stop_slave test had a race which could cause it to take
a 300 seconds debug_sync timeout; this is fixed.

Testing on a 4-core 8GB machine, this patch speeds up the test suite with
around 30% for --parallel=10 (debug build), allowing to run the entire
suite in 5 minutes.
2011-01-03 15:33:39 +01:00
Sergei Golubchik
31a78529bc virtual columns:
* move a capability from a virtual handler method to table_flags()
 * rephrase error messages to avoid hard-coded English parts
 * admit in test cases that they need xtradb, not innodb

mysql-test/suite/vcol/t/rpl_vcol.test:
  this test needs xtradb, it will fail with innodb
mysql-test/suite/vcol/t/vcol_blocked_sql_funcs_innodb.test:
  this test needs xtradb, it will fail with innodb
mysql-test/suite/vcol/t/vcol_column_def_options_innodb.test:
  this test needs xtradb, it will fail with innodb
mysql-test/suite/vcol/t/vcol_handler_innodb.test:
  this test needs xtradb, it will fail with innodb
mysql-test/suite/vcol/t/vcol_ins_upd_innodb.test:
  this test needs xtradb, it will fail with innodb
mysql-test/suite/vcol/t/vcol_keys_innodb.test:
  this test needs xtradb, it will fail with innodb
mysql-test/suite/vcol/t/vcol_non_stored_columns_innodb.test:
  this test needs xtradb, it will fail with innodb
mysql-test/suite/vcol/t/vcol_partition_innodb.test:
  this test needs xtradb, it will fail with innodb
mysql-test/suite/vcol/t/vcol_select_innodb.test:
  this test needs xtradb, it will fail with innodb
mysql-test/suite/vcol/t/vcol_supported_sql_funcs_innodb.test:
  this test needs xtradb, it will fail with innodb
mysql-test/suite/vcol/t/vcol_trigger_sp_innodb.test:
  this test needs xtradb, it will fail with innodb
mysql-test/suite/vcol/t/vcol_view_innodb.test:
  this test needs xtradb, it will fail with innodb
sql/ha_partition.h:
  check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
sql/handler.h:
  check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
sql/share/errmsg.txt:
  no hard-coded english parts in the error messages (ER_UNSUPPORTED_ACTION_ON_VIRTUAL_COLUMN)
sql/sql_table.cc:
  no hard-coded english parts in the error messages
sql/table.cc:
  * check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
  * no "csv workaround" is needed
  * no hard-coded english parts in the error messages
storage/maria/ha_maria.cc:
  check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
storage/maria/ha_maria.h:
  check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
storage/myisam/ha_myisam.cc:
  check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
storage/myisam/ha_myisam.h:
  check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
storage/xtradb/handler/ha_innodb.cc:
  check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
storage/xtradb/handler/ha_innodb.h:
  check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
2010-12-31 10:39:14 +01:00
Sergei Golubchik
fda18d8fa2 lpbug#665028 SHOW STORAGE ENGINES shows incorrect Transaction support for Aria
don't fill in handlerton::commit member, as it's not used
and makes MySQL believe that Aria is transactional.
Fix the TRANSACTIONAL=1 warning.
2010-12-27 10:53:02 +01:00
Igor Babaev
efbb3c6c90 Fixed LP bug #639935 (bug #58727).
When the optimizer creates items out of other items it does
not have to call the fix_fields method. Usually in these
cases it calls quick_fix_field() that just marks the 
created item as fixed. If the created item is an Item_func
object then calling quick_fix_field() works fine if the
arguments of the created functional item are already fixed.
Otherwise some unfixed nodes remain in the item tree and
it triggers an assertion failure whenever the item is 
evaluated.

Fixed the problem by making the method quick_fix_field
virtual and providing an implementation for the class
Item_func objects that recursively calls the method
for unfixed arguments of any functional item.
2010-12-24 15:30:23 -08:00
Michael Widenius
46c7fb2722 Increased version number to 5.1.54 2010-12-21 19:23:50 +02:00
Michael Widenius
865685dc0c Fixed bug in Aria that caused REPAIR to find old deleted rows.
BUILD/compile-pentium64:
  Added --with-zlib-dir=bundled when doing static build.
mysql-test/suite/maria/r/maria.result:
  Added test case
mysql-test/suite/maria/t/maria.test:
  Added test case
storage/maria/ma_blockrec.c:
  We need to flush blob pages to disk to ensure they overwrite any reused head/tail pages.
  If not, REPAIR will find rows that was previously deleted.
2010-12-21 19:22:20 +02:00
Sergei Golubchik
6c958d6e80 bug#683112 Maria 5.2 incorrectly reports "(using password: NO)" even when password is specified
set thd->password appropriately also for cases when a user was not found.
2010-12-20 19:19:24 +01:00
unknown
970e67b5e3 MBug#691437: storage/sphinx/plug.in missing from source tarball.
It was missing from EXTRA_DIST in Makefile.am.
2010-12-17 08:33:36 +01:00
Michael Widenius
09d2e7f680 merge with 5.1
(Includes patch for overrun detected by valgrind thanks to previous my_alloca() -> my_malloc() patch)
2010-12-13 15:51:47 +02:00
Michael Widenius
0b20943e9d Fixed typo that caused compile failure in thr_lock.c
mysys/thr_lock.c:
  Fixed typo that caused compile failure
2010-12-13 15:27:13 +02:00
Michael Widenius
ffb0cd6146 When compiling with valgrind, change my_alloca() to use my_malloc()
- This allows us to detect missing my_afree() calls and also find overruns (when running with valgrind) to alloca() areas.
- Added missing my_afree() calls
- Fixed wrong call to my_afree()


include/my_sys.h:
  When compiling with valgrind, change my_alloca() to use my_malloc()
mysql-test/suite/innodb/t/innodb_bug57255.test:
  Speed up taste case (patch from Stewart Smith)
mysql-test/suite/innodb_plugin/t/innodb_bug57255.test:
  Speed up taste case (patch from Stewart Smith)
sql/ha_partition.cc:
  Removed casts from my_afree()
sql/opt_range.cc:
  Add missing my_afree() calls.
storage/maria/ma_rt_split.c:
  Fixed wrong parameter to my_afree()
2010-12-13 15:05:57 +02:00
Michael Widenius
bd2034dbee Fix for Lbug:#686010 maria.optimize corrupts stack around alloca() call
storage/maria/ma_check.c:
  Allocate also memory for nodflag and transid's
storage/maria/ma_write.c:
  Allow nodflag and transid as part of key.
  (This has nothing to do with the bug report, but it's a safer check).
storage/maria/maria_def.h:
  Define MARIA_MAX_POINTER_LENGTH (length of pointer to node)
  Added node pointer length to MARIA_INDEX_OVERHEAD_SIZE, as this is part of the key.
  (Safety fix)
2010-12-10 17:15:18 +02:00
Michael Widenius
84edaac4f1 Better warning message if lock test fails
Made archive.test a bit more safe



mysql-test/r/archive.result:
  Added removal of files to make rerun of failed test work
mysql-test/t/archive.test:
  Added removal of files to make rerun of failed test work
mysys/thr_lock.c:
  Better warning message if lock test fails
2010-12-10 17:04:09 +02:00
unknown
b78f624044 Fix wrong merge of patch for Bug#46639. 2010-12-10 09:51:34 +01:00
unknown
1bbb55a260 MBug#687320: Fix sporadic test failures in innodb_mysql.test and partition_innodb_semi_consistent.test
Problem is that these tests run with --innodb-lock-wait-timeout=2 in .opt
(and this is necessary as built-in innodb does not allow to change this
dynamically). This cases another part of the test to occasionally time
out an UPDATE, which subsequently caused the test case to timeout due to
waiting for a condition (successful UPDATE) that never occurs.

Fixed by re-trying the update in case of timeout.

Tested by inserting a sleep() in the connection that the UPDATE is waiting
for, and checking that the retry loops a couple of times until the other
connection is done and COMMITs.
2010-12-08 14:34:08 +01:00
Igor Babaev
adb9fd9578 Made sure that SELECT from the test case for bug BUG#56862/64041 uses
the same execution plan that is in the output of the corresponding
EXPLAIN.
2010-12-07 14:48:04 -08:00
Vladislav Vaintroub
077d96c2a7 merge LP Bug#686184 2010-12-07 00:14:16 +01:00
Vladislav Vaintroub
3fb8bc165e Fix myisam_crash_before_flush_keys on Windows
Problem : mtr reports test failure because it sees
[ERROR] mysqld got exception 0x80000003 ;
in the .err file

The exception comes from DBUG_EXECUTE_IF (.. abort())

Fix:  use DBUG_ABORT instead of abort() - it does not throw 
any exceptions.
2010-12-07 00:10:09 +01:00
Vladislav Vaintroub
60722bca7b Fix LP Bug#686184 - merge_debug test fails.
The reason for failure is that DBUG_EXECUTE_IF in mi_open()
only worked for Unix-formatted file names, due to strstr(name, "/crashed")

The fix change strstr() above to strstr(name, "crashed"), to it can work with 
Windows file names as well.
2010-12-06 22:34:50 +01:00