1
0
mirror of https://github.com/MariaDB/server.git synced 2025-09-02 09:41:40 +03:00
Commit Graph

22867 Commits

Author SHA1 Message Date
Mattias Jonsson
b72d1507db Bug#39084: Getting intermittent errors with statement-based binary logging
Problem was that partitioning cached the table flags.
These flags could change due to TRANSACTION LEVEL changes.
Solution was to remove the cache and always return the table flags
from the first partition (if the handler was initialized).

mysql-test/r/partition_innodb_stmt.result:
  Bug#39084: Getting intermittent errors with statement-based binary logging
  
  New test result file.
mysql-test/t/partition_innodb_stmt.test:
  Bug#39084: Getting intermittent errors with statement-based binary logging
  
  New test file.
sql/ha_partition.cc:
  Bug#39084: Getting intermittent errors with statement-based binary logging
  
  Removed m_table_flags, and added m_handler_status.
  Added checks that all partitions have the same
  table flags.
  Moved some variable initializations.
  Updated some comments.
  Fixed typo initialise -> initialize
  Changed HA_EXTTA_NO_READCHECK to do nothing, since it
  is only used in ha_open, which is called for every
  partition in ::open anyway.
sql/ha_partition.h:
  Bug#39084: Getting intermittent errors with statement-based binary logging
  
  Removed m_table_flags, and added m_handler_status.
  Always return the first partitions table flags, instead of using
  cached table flags.
  Added define of enabled/disabled partitioning table flags
  Fixed type initialise -> initialize
  Updated some comments.
sql/handler.cc:
  Bug#39084: Getting intermittent errors with statement-based binary logging
  
  Fixed type initialise -> initialize.
sql/handler.h:
  Bug#39084: Getting intermittent errors with statement-based binary logging
  
  Added comment to understand where the cached value is set.
2008-10-29 21:20:04 +01:00
Alexey Botchkov
8b1f501c70 merging 2008-10-27 19:56:43 +04:00
Alexey Botchkov
6ca7e5c549 Bug#39102 valgrind build does not compile in realpath, which make DATA/INDEX DIR fail
#ifdef HAVE_purify removed

per-file comments:
  mysql-test/t/partition_not_windows.test
Bug#39102 valgrind build does not compile in realpath, which make DATA/INDEX DIR fail 
    test reenabled

  mysys/my_symlink.c
Bug#39102 valgrind build does not compile in realpath, which make DATA/INDEX DIR fail 
  superfluous ifdef removed, comments fixed
2008-10-27 19:25:11 +04:00
Sergey Glukhov
caa73f2218 automerge 2008-10-27 17:11:44 +04:00
Evgeny Potemkin
fbb6efeb51 Merged fix for the bug#37870. 2008-10-27 15:04:51 +03:00
Sergey Glukhov
903c4dcf3b 5.0-bugteam->5.1-bugteam merge(bug#39040) 2008-10-27 15:58:51 +04:00
Sergey Glukhov
380f1a8440 Bug#39040 valgrind errors/crash when creating views with binlog logging enabled
A string buffers which were included in the 'view' data structure
were allocated on the stack, causing an invalid pointer when used
after the function returned.
The fix: use copy of values for view->md5 & view->queries


mysql-test/r/view.result:
  test result
mysql-test/t/view.test:
  test case
sql/sql_view.cc:
  A string buffers which were included in the 'view' data structure
  were allocated on the stack, causing an invalid pointer when used
  after the function returned.
  The fix: use copy of values for view->md5 & view->queries
2008-10-27 14:22:38 +04:00
Evgeny Potemkin
e27e560783 Bug#37870: Usage of uninitialized value caused failed assertion.
The convert_constant_item function converts a constant to integer using
field for condition like 'field = a_constant'. When the convert_constant_item
is called for a subquery the outer select is already being executed, so
convert_constant_item saves field's value to prevent its corruption.
For EXPLAIN field's value isn't initialized thus when convert_constant_item
tries to restore saved value it fails assertion.
      
Now the convert_constant_item doesn't save/restore field's value
for EXPLAIN.


mysql-test/r/explain.result:
  Added a test case for the bug#37870.
mysql-test/t/explain.test:
  Added a test case for the bug#37870.
sql/item_cmpfunc.cc:
  Bug#37870: Usage of uninitialized value caused failed assertion.
  Now the convert_constant_item doesn't save/restore field's value
  for EXPLAIN.
2008-10-27 12:26:32 +03:00
Serge Kozlov
eafe728fc5 Bug#22442, removed number of port 2008-10-26 22:34:24 +03:00
Serge Kozlov
1108ba23e0 Bug#22442.
1. Replace --sleep by wait_* primitive
2. Vertical output for SHOW SLAVE STATUS
3. Updated result file
2008-10-26 21:53:21 +03:00
Davi Arnaut
460a90b0bf Post-merge fix: Update warning number due to repositioning in the error list.
mysql-test/r/partition_windows.result:
  Update warning number due to new errors appearing earlier
  in the list.
mysql-test/r/windows.result:
  Update warning number due to new errors appearing earlier
  in the list.
2008-10-26 15:05:24 -02:00
Davi Arnaut
d4438c99ff Merge from mysql-5.1-5.1.29-rc into mysql-5.1-bugteam 2008-10-24 11:58:48 -02:00
Davi Arnaut
463c837c3a Merge from mysql-5.0-bugteam into mysql-5.1-bugteam
mysql-test/r/partition_not_windows.result:
  Update warning number due to new errors appearing earlier
  in the list.
mysql-test/r/partition_symlink.result:
  Update warning number due to new errors appearing earlier
  in the list.
mysql-test/r/symlink.result:
  Update warning number due to new errors appearing earlier
  in the list.
2008-10-24 10:50:59 -02:00
Ramil Kalimullin
256f41edfe Fix for bug#23113: Different behavior on altering ENUM fields between 5.0 and 5.1
Problem: mysqld doesn't detect that enum data must be reinserted performing
'ALTER TABLE' in some cases.

Fix: reinsert data altering an enum field if enum values are changed.


mysql-test/r/alter_table.result:
  Fix for bug#23113: Different behavior on altering ENUM fields between 5.0 and 5.1
    - test result.
mysql-test/t/alter_table.test:
  Fix for bug#23113: Different behavior on altering ENUM fields between 5.0 and 5.1
    - test case.
sql/field.cc:
  Fix for bug#23113: Different behavior on altering ENUM fields between 5.0 and 5.1
    - Field_enum::is_equal() introduced, which is called to detect that a field
  is changing by 'ALTER TABLE'.
sql/field.h:
  Fix for bug#23113: Different behavior on altering ENUM fields between 5.0 and 5.1
    - Field_enum::is_equal() introduced, which is called to detect that a field
  is changing by 'ALTER TABLE'.
2008-10-24 13:00:03 +05:00
Sergey Petrunia
d5202ddd31 Merge 2008-10-24 06:37:29 +04:00
Sergey Petrunia
844797c492 BUG#38072: Wrong result: HAVING not observed in a query with aggregate
- Make send_row_on_empty_set() return FALSE when simplify_cond() has found out
  that HAVING is always FALSE
re-committing to put the fix into 5.0 and 5.1

mysql-test/r/group_by.result:
  BUG#38072: Wrong result: HAVING not observed in a query with aggregate
  - Testcase
mysql-test/t/group_by.test:
  BUG#38072: Wrong result: HAVING not observed in a query with aggregate
  - Testcase
sql/sql_select.h:
  BUG#38072: Wrong result: HAVING not observed in a query with aggregate
  - Make send_row_on_empty_set() return FALSE when simplify_cond() has found out
    that HAVING is always FALSE
2008-10-24 06:16:22 +04:00
Davi Arnaut
03300dc1a4 Merge from mysql-5.1-5.1.29-rc into mysql-5.1-bugteam 2008-10-23 19:03:26 -02:00
Davi Arnaut
5bc2ad279d Merge from mysql-5.0-5.1.29-rc into mysql-5.0-bugteam 2008-10-23 18:56:03 -02:00
Mattias Jonsson
620d955e3a Bug#40176: update as first partitioning statement
breaks auto increment

The auto_increment value was not initialized if
the first statement after opening a table was
an 'UPDATE'.

solution was to check initialize if it was not,
before trying to increase it in update.

mysql-test/suite/parts/inc/partition_auto_increment.inc:
  Bug#40176: update as first partitioning statement
  breaks auto increment
  
  Added tests for verifying the bug and show some more
  auto_increment flaws
mysql-test/suite/parts/r/partition_auto_increment_archive.result:
  Bug#40176: update as first partitioning statement
  breaks auto increment
  
  Updated test results, due to added tests
mysql-test/suite/parts/r/partition_auto_increment_blackhole.result:
  Bug#40176: update as first partitioning statement
  breaks auto increment
  
  Updated test results, due to added tests
mysql-test/suite/parts/r/partition_auto_increment_innodb.result:
  Bug#40176: update as first partitioning statement
  breaks auto increment
  
  Updated test results, due to added tests
mysql-test/suite/parts/r/partition_auto_increment_memory.result:
  Bug#40176: update as first partitioning statement
  breaks auto increment
  
  Updated test results, due to added tests
mysql-test/suite/parts/r/partition_auto_increment_myisam.result:
  Bug#40176: update as first partitioning statement
  breaks auto increment
  
  Updated test results, due to added tests
mysql-test/suite/parts/r/partition_auto_increment_ndb.result:
  Bug#40176: update as first partitioning statement
  breaks auto increment
  
  Updated test results, due to added tests
sql/ha_partition.cc:
  Bug#40176: update as first partitioning statement
  breaks auto increment
  
  make sure that the auto_increment value is initialized
  before updating it.
  
  (missed initializing in mysql_update_row).
sql/ha_partition.h:
  Bug#40176: update as first partitioning statement
  breaks auto increment
  
  Assert that it is initialized, before updating
  the auto_increment value
2008-10-23 22:14:07 +02:00
Sven Sandberg
a0b823cdfc Merged new test case for BUG#39812 to the head of 5.1 2008-10-22 16:45:29 +02:00
Sven Sandberg
bf5a6dcc69 BUG#39812: Make statement replication default for 5.1 (to match 5.0)
Added test case to check the default value of @@binlog_format.

mysql-test/t/binlog_format_basic.test:
  Added test case to verify the default binlog_format: it should be
  STATEMENT in 5.1 and MIXED in 6.0.
2008-10-22 16:00:45 +02:00
Davi Arnaut
aafe26f4e9 Merge post-merge fix from mysql-5.0-bugteam. 2008-10-21 19:07:31 -02:00
Davi Arnaut
07b7261a70 Post-merge fix: drop table at the end of test.
mysql-test/r/xa.result:
  Update test case result.
mysql-test/t/xa.test:
  Drop table used for test.
2008-10-21 19:02:26 -02:00
Davi Arnaut
d7263d2a70 Merge Bug#28323 to mysql-5.1.29-rc 2008-10-21 18:28:01 -02:00
Sergei Golubchik
be5b2072b4 removed few .moved files 2008-10-21 22:12:20 +02:00
Davi Arnaut
41dd7b6b92 Bug#28323: Server crashed in xid cache operations
The problem was that the server did not robustly handle a
unilateral roll back issued by the Resource Manager (RM)
due to a resource deadlock within the transaction branch.
By not acknowledging the roll back, the server (TM) would
eventually corrupt the XA transaction state and crash.

The solution is to mark the transaction as rollback-only
if the RM indicates that it rolled back its branch of the
transaction.

mysql-test/r/xa.result:
  Add test case result for Bug#28323
mysql-test/t/xa.test:
  Add test case for Bug#28323
sql/handler.cc:
  Reset XID only at the end of the global transaction.
sql/share/errmsg.txt:
  Add new error codes.
sql/sql_class.h:
  Remember the error reported by the Resource Manager.
sql/sql_parse.cc:
  Rollback the transaction if the Resource Manager reported
  a error and rolled back its branch of the transaction.
2008-10-21 16:07:31 -02:00
Davi Arnaut
9ad8d64439 Bug#28323: Server crashed in xid cache operations
The problem was that the server did not robustly handle a
unilateral roll back issued by the Resource Manager (RM)
due to a resource deadlock within the transaction branch.
By not acknowledging the roll back, the server (TM) would
eventually corrupt the XA transaction state and crash.

The solution is to mark the transaction as rollback-only
if the RM indicates that it rolled back its branch of the
transaction.

mysql-test/r/xa.result:
  Add test case result for Bug#28323
mysql-test/t/xa.test:
  Add test case for Bug#28323
sql/handler.cc:
  Reset XID only at the end of the global transaction.
sql/share/errmsg.txt:
  Add new error codes.
sql/sql_class.h:
  Remember the error reported by the Resource Manager.
sql/sql_parse.cc:
  Rollback the transaction if the Resource Manager reported
  a error and rolled back its branch of the transaction.
2008-10-21 15:45:43 -02:00
Patrick Crews
b3e948e54f Bug#37798 main.log_tables fails randomly on powermacg5 and windows
Fixed .test file, re-recorded .result file

Ensured reset of system variables at the end of subtests.
2008-10-20 18:41:19 -04:00
Mats Kindahl
2019f17276 Bug #40004 Replication failure with no PK + no indexes
In certain situations, a scan of the table will return the error
code HA_ERR_RECORD_DELETED, and this error code is not 
correctly caught in the Rows_log_event::find_row() function, which
causes an error to be returned for this case.

This patch fixes the problem by adding code to either ignore the
record and continuing with the next one, the the event of a table
scan, or change the error code to HA_ERR_KEY_NOT_FOUND, in the event
that a key lookup is attempted.
2008-10-20 20:50:08 +02:00
Georgi Kodinov
d501f48757 merge 5.0-bugteam -> bug 38693-5.0-bugteam 2008-10-20 16:26:07 +03:00
Kristofer Pettersson
195db07ff3 Auto commit 2008-10-20 13:39:33 +02:00
Georgi Kodinov
697b2839db Bug #33811: Call to stored procedure with SELECT * / RIGHT JOIN
fails after the first time
  
Two separate problems : 
  1. When flattening joins the linked list used for name resolution 
  (next_name_resolution_table) was not updated.
  Fixed by updating the pointers when extending the table list
  
  2. The items created by expanding a * (star) as a column reference
  were marked as fixed, but no cached table was assigned to them 
  (unlike what Item_field::fix_fields does).
  Fixed by assigning a cached table (so the re-preparation is done
  faster).
  
Note that the fix for #2 hides the fix for #1 in most cases
(except when a table reference cannot be cached).

mysql-test/r/sp.result:
  Bug #33811: test case
mysql-test/t/sp.test:
  Bug #33811: test case
sql/sql_base.cc:
  Bug #33811: cache the table for Item_fields created by expanding '*'
sql/sql_select.cc:
  Bug #33811: maintain a correct name resolution chain when
  flattening joins.
2008-10-17 17:55:06 +03:00
Georgi Kodinov
3602a4e7a4 merged 5.0-bugteam -> 5.1-bugteam 2008-10-17 11:49:23 +03:00
Georgi Kodinov
0f678ee60d merged 5.0-bugteam -> bug 39958 2008-10-17 11:47:35 +03:00
Serge Kozlov
172f64911b Bug#39593. Removed test case rpl_row_stop_middle with result file 2008-10-16 22:40:15 +04:00
Gleb Shchepa
39d165dd74 merge 5.0-bugteam --> 5.1-bugteam (bug 39844) 2008-10-16 23:04:31 +05:00
Gleb Shchepa
b591793496 Bug #39844: Query Crash Mysql Server 5.0.67
Server crashed during a sort order optimization
of a dependent subquery:

SELECT
    (SELECT t1.a FROM t1, t2
      WHERE t1.a = t2.b AND t2.a = t3.c
      ORDER BY t1.a)
  FROM t3;


Bitmap of tables, that the reference to outer table
column uses, in addition to the regular table bit
has the OUTER_REF_TABLE_BIT bit set.
The only_eq_ref_tables function traverses this map
bit by bit simultaneously with join->map2table list.
Obviously join->map2table never contains an entry
for the OUTER_REF_TABLE_BIT pseudo-table, so the
server crashed there.


The only_eq_ref_tables function has been modified
to traverse regular table bits only like the
update_depend_map function (resetting of the
OUTER_REF_TABLE_BIT there is enough, but
resetting of the whole set of PSEUDO_TABLE_BITS
is used there for sure).


mysql-test/r/order_by.result:
  Added test case for bug #39844.
mysql-test/t/order_by.test:
  Added test case for bug #39844.
sql/sql_select.cc:
  Bug #39844: Query Crash Mysql Server 5.0.67
  
  The only_eq_ref_tables function has been modified
  to traverse regular table bits only like the
  update_depend_map function (resetting of the
  OUTER_REF_TABLE_BIT there is enough, but
  resetting of the whole set of PSEUDO_TABLE_BITS
  is used there for sure).
2008-10-16 21:37:17 +05:00
Georgi Kodinov
ca6e05765c Bug #39958: Test "windows" lacks a cleanup
Added the missing DROP TABLE

mysql-test/r/windows.result:
  Bug #39958: added the missing DROP TABLE
mysql-test/t/windows.test:
  Bug #39958: added the missing DROP TABLE
2008-10-16 14:16:27 +03:00
Davi Arnaut
6525348368 Merge mysql-5.0-bugteam into mysql-5.1-bugteam. 2008-10-15 22:50:56 -03:00
Davi Arnaut
3ad228d7fb Bug#37075: offset of limit clause might be truncated on 32-bits server w/o big tables
The problem is that the offset argument of the limit clause
might be truncated on a 32-bits server built without big
tables support. The truncation was happening because the
original 64-bits long argument was being cast to a 32-bits
(ha_rows) offset counter.

The solution is to check if the conversing resulted in value
truncation and if so, the offset is set to the maximum possible
value that can fit on the type.

mysql-test/r/limit.result:
  Add test case result for Bug#37075
mysql-test/t/limit.test:
  Add test case for Bug#37075
sql/sql_lex.cc:
  Check for truncation of the offset value. If value was
  truncated, set to the maximum possible value.
2008-10-15 18:34:51 -03:00
Guilhem Bichot
a184d6b0a9 Merge of my revision 2008-10-15 22:00:35 +02:00
Horst Hunger
8c0ffd24d3 Final patch for bug#36733 containing all changes. 2008-10-15 20:58:53 +02:00
Georgi Kodinov
747351836c Bug #38693: leaked memory with blobs!
If delayed insert fails to upgrade the lock it was not
freeing the temporary memory storage used to keep
newly constructed blob values in memory.
Fixed by iterating over the remaining rows in the delayed
insert rowset and freeing the blob storage for each row.

No test suite because it involves concurrent delayed inserts 
on a table and cannot easily be made deterministic. 

Added a correct valgrind suppression for Fedora 9.

mysql-test/valgrind.supp:
  Added a vagrind suppression for Fedora 9
sql/sql_insert.cc:
  Bug #38693: free the blobs temp storage on error.
2008-10-15 16:55:52 +03:00
Guilhem Bichot
5aa1e3b364 Small fixes for pushbuild: compiler warnings, checking that partitioning is enabled when testing it.
Don't fsync() index file when closing Maria table if not transactional.

mysql-test/suite/maria/r/maria.result:
  piece moved
mysql-test/suite/maria/r/maria_partition.result:
  result
mysql-test/suite/maria/t/maria.test:
  - reset default storage engine at end of test, not in the middle
  - move piece which requires partitioning, to maria_partition.test, otherwise test fails
  on builds without partitioning compiled in
mysql-test/suite/maria/t/maria_partition.test:
  new test for those Maria bugs which are specific of partitioning
mysys/my_uuid.c:
  compiler warning fix (fix imported from latest 5.1-main)
storage/maria/ma_close.c:
  don't fsync() index file when closing table if not transactional
  (same test as in _ma_once_end_block_record() when fsync-ing data file)
storage/maria/ma_create.c:
  compiler warning fix (char* assigned to uchar*)
storage/maria/ma_loghandler.c:
  compiler warning fix (char* assigned to uchar*)
2008-10-15 14:44:31 +02:00
Michael Widenius
2faf503e55 Automatic merge with main tree
Fixed that mysql-test-run --skip-from starts from the given test

mysql-test/lib/mtr_cases.pl:
  Moved testing of $opt_start_from to mysql-test-run.pl because tests are now run per suite and the old way would rerun not wanted tests
mysql-test/mysql-test-run.pl:
  Fixed that mysql-test-run --skip-from starts from the given test
2008-10-15 13:46:40 +03:00
Kristofer Pettersson
7fa3897e8a automerge 2008-10-15 12:06:44 +02:00
Davi Arnaut
017307f216 Bug#38823: Invalid memory access when a SP statement does wildcard expansion
The problem is that field names constructed due to wild-card
expansion done inside a stored procedure could point to freed
memory if the expansion was performed after the first call to
the stored procedure.

The problem was solved by patch for Bug#38691. The solution
was to allocate the database, table and field names in the
in the statement memory instead of table memory.

mysql-test/r/sp.result:
  Add test case result for Bug#38823
mysql-test/t/sp.test:
  Add test case for Bug#38823
sql/item.cc:
  Remark that this also impacts wildcard expansion inside SPs.
2008-10-14 11:04:36 -03:00
Georgi Kodinov
8bb2eb38f5 merged 5.1-main -> 5.1-bugteam 2008-10-13 13:22:36 +03:00
Michael Widenius
058916ae02 Fix for bug#39226 Maria: crash with FLUSH TABLES WITH READ LOCK after LOCK TABLES
- The problem was that we didn't inform the handler that we are going to close tables that are locked and may have (at least in Maria) be part of an active transaction.
Fix for Bug#39227 Maria: crash with ALTER TABLE PARTITION
Fix for Bug #39987 main.partition_not_windows fails under debug build
Fixed some compiler errors & warnings found by pushbuild

include/my_base.h:
  Added HA_EXTRA_PREPARE_FOR_FORCED_CLOSE for signaling the handler that the file will be forced closed
include/my_global.h:
  Removed 'register' from 'swap_variables' as this gives a warnings when the variables are structs. Compilers should also now be smart enough to figure out this themselves
mysql-test/r/subselect_debug.result:
  Reset value of the debug variable;  Without setting this the subselect_innodb test will fail when run after this one
mysql-test/suite/maria/r/maria.result:
  Merged test with myisam.test
  Added tests for new fixed bugs
mysql-test/suite/maria/t/maria.test:
  Merged test with myisam.test
  Added tests for new fixed bugs
mysql-test/t/subselect_debug.test:
  Reset value of the debug variable;  Without setting this the subselect_innodb test will fail when run after this one
mysys/my_uuid.c:
  Fixed compiler error on windows
sql/ha_partition.cc:
  Added support for the new extra flag: HA_EXTRA_PREPARE_FOR_FORCED_CLOSE (Bug #39226)
  Ensure that we call extra() for HA_EXTRA_PREPARE_FOR_DROP (Bug#39227)
sql/mysqld.cc:
  Fix for Bug #39987 main.partition_not_windows fails under debug build
  The problem was that when compiling for purify/valgrind realpath() is not used, which causes test_if_data_home_dir to fail when it shouldn't
sql/sql_base.cc:
  Call HA_EXTRA_PREPARE_FOR_FORCED_CLOSE for tables that are locked but we are going to force close without doing a commit
sql/sql_parse.cc:
  More DBUG_PRINT. Fixed comments
storage/maria/ma_extra.c:
  If HA_EXTRA_PREPARE_FOR_FORCED_CLOSE is called and the table is part of a transaction, remove the table from beeing part of a transaction.
  This is safe as this is only used as part of flush tables or when the table is not part of a transaction
storage/myisam/mi_open.c:
  Indentation fix
unittest/mysys/waiting_threads-t.c:
  Remove not needed 'volatile' to get rid of compiler warnings on windows
2008-10-12 13:09:52 +03:00
Michael Widenius
56100f3a49 Merged 5.1 maria with 5.1 maria team tree. Automerge. 2008-10-11 11:27:03 +03:00