Commit graph

28,454 commits

Author SHA1 Message Date
Jon Olav Hauglid
a5986fa220 Bug#12352846 - TRANS_XA_START(THD*):
ASSERTION THD->TRANSACTION.XID_STATE.XID.IS_NULL()
               FAILED

The triggered assert checks that the previous XA transaction has
done proper cleanup before a new XA transaction is started.
The bug that caused it to be triggered was that XA COMMIT did not
clean up error state if XA COMMIT discovered that the current XA
transaction had to be rolled back.

This patch fixes the problem by resetting the XA error state
before XA COMMIT calls ha_rollback_trans(). This allows following
XA transactions to be started without triggering the assert.

Test case added to xa.test.
2011-04-14 10:13:28 +02:00
Serge Kozlov
ecd6899338 autocommit 5.1->5.5 2011-04-14 00:48:09 +04:00
Serge Kozlov
729e9a6594 WL#5867, reorganize test cases of bugs suite 2011-04-14 00:18:08 +04:00
Anitha Gopi
d3b7a0f7ae Bug#11762246 : Test is not failing in PB2. Remove from experimental group 2011-04-13 16:42:13 +05:30
Dmitry Lenev
c7337ef4d9 Bug#11938039 "RE-EXECUTION OF FRM-ONLY ALTER TABLE WITH RENAME
CLAUSE FAILS OR ABORTS SERVER".
 
Attempt to re-execute prepared ALTER TABLE statement which 
involves .FRM-only changes and also have RENAME clause led
to unwarranted 'Table doesn't exist' error in production
builds and assertion failure for debug builds.
 
This problem stemmed from the fact that for such ALTER TABLE
mysql_alter_table() code changed table list element for table 
to be altered when it tried to re-open table under new name. 
Since this change was not reverted back before next 
re-execution, it made this statement re-execution unsafe.
 
This fix addresses this problem by avoiding changing table list
element from the main table list in such a situation. Instead 
temporary TABLE_LIST object is used.

mysql-test/r/alter_table.result:
  Added test case for bug#11938039 "RE-EXECUTION OF FRM-ONLY
  ALTER TABLE WITH RENAME CLAUSE FAILS OR ABORTS SERVER".
mysql-test/t/alter_table.test:
  Added test case for bug#11938039 "RE-EXECUTION OF FRM-ONLY
  ALTER TABLE WITH RENAME CLAUSE FAILS OR ABORTS SERVER".
sql/sql_table.cc:
  Changed mysql_alter_table() not to modify table list element
  for the table being altered while re-opening table after
  .FRM-only changes. Doing this made .FRM-only ALTER TABLE 
  which also had RENAME clause unsafe for re-execution.
2011-04-13 10:16:40 +04:00
Sven Sandberg
da26771919 marked rpl_stop_slave experimental due to BUG#12345981 2011-04-12 13:14:49 +02:00
Jon Olav Hauglid
94cffe7218 Bug#12348348 - ASSERTION IN ROW0SEL.C LINE 3698:
TRX->CONC_STATE == 0 || TRX->CONC_STATE == 1

This bug was a different manifestation of Bug#11766752,
which was previously only fixed on mysql-trunk.

This patch backports the fix for Bug#11766752 to mysql-5.5,
which fixes the problem. The patch also adds some extra test
coverage.
2011-04-12 12:57:02 +02:00
Sergey Glukhov
d14729c4a6 automerge 2011-04-12 14:34:12 +04:00
Sergey Glukhov
bdefd2ad3b 5.1 -> 5.5 merge 2011-04-12 14:13:15 +04:00
Sergey Glukhov
7fa7a0cad9 Bug#11766270 59343: YEAR(4): INCORRECT RESULT AND VALGRIND WARNINGS WITH MIN/MAX, UNION
When we create temporary result table for UNION
incorrect max_length for YEAR field is used and
it leads to incorrect field value and incorrect
result string length as YEAR field value calculation
depends on field length.
The fix is to use underlying item max_length for
Item_sum_hybrid::max_length intialization.


mysql-test/r/func_group.result:
  test case
mysql-test/t/func_group.test:
  test case
sql/field.cc:
  added assert
sql/item_sum.cc:
  init Item_sum_hybrid::max_length with 
  use underlying item max_length for
  INT result type.
2011-04-12 14:01:33 +04:00
Sergey Glukhov
33c2a5e7e3 Bug#11766212 59270: NOT IN (YEAR( ... ), ... ) PRODUCES MANY VALGRIND WARNINGS
Valgrind warning happens due to early null values check
in Item_func_in::fix_length_and_dec(before item evaluation).
As result null value items with uninitialized values are
placed into array and it leads to valgrind warnings during
value array sorting.
The fix is to check null value after item evaluation, item
is evaluated in in_array::set() method.


mysql-test/r/func_in.result:
  test case
mysql-test/t/func_in.test:
  test case
sql/item_cmpfunc.cc:
  The fix is to check null value after item evaluation.
2011-04-12 13:51:36 +04:00
Sven Sandberg
cfa772b675 some replication tests were marked experimental with reference
to a bug that has been fixed. made these tests non-experimental.
2011-04-12 11:47:00 +02:00
Sven Sandberg
e108b3f69e corrected bug reference for experimental test 2011-04-11 16:01:46 +02:00
Alexander Barkov
a1c762b9df Bug#11926811 / Bug#60625 Illegal mix of collations
Problem: comparison of a DATETIME sp variable and NOW()
led to Illegal mix of collations error when 
character_set_connection=utf8.
Introduced by "WL#2649 Number-to-string conversions".

Error happened in Arg_comparator::set_compare_func(),
because the first argument was errouneously converted to utf8,
while the second argument was not.

Fix: separate agg_arg_charsets_for_comparison() into two functions:

- agg_arg_charsets_for_comparison() - for pure comparison,
  when we don't need to return any string result and therefore
  don't need to convert arguments to @@character_set_connection:
    SELECT a = b;

- agg_arg_charsets_for_string_results_with_comparison() - when
  we need to return a string result, but we also need to do
  comparison internally: SELECT REPLACE(a,b,c)
  If all arguments are numbers:
    SELECT REPLACE(123,2,3) -> 133
  we convert arguments to @@character_set_connection.


  @ mysql-test/include/ctype_numconv.inc
  @ mysql-test/r/ctype_binary.result
  @ mysql-test/r/ctype_cp1251.result
  @ mysql-test/r/ctype_latin1.result
  @ mysql-test/r/ctype_ucs.result
  @ mysql-test/r/ctype_utf8.result
  Adding tests

  @ sql/item.cc
  @ sql/item.h
  @ sql/item_func.cc
  @ sql/item_func.h
  @ sql/item_strfunc.cc

  Introducing and using new function
   agg_item_charsets_for_string_result_with_comparison() and
  its Item_func wrapper agg_arg_charsets_for_string_result_with_comparison().
2011-04-08 17:15:23 +04:00
Gleb Shchepa
b2fee393b0 manual merge 5.1-->5.5 (bug 11829681) 2011-04-08 12:09:24 +04:00
Gleb Shchepa
a77bc59896 Bug #11829681 - 60295: ERROR 1356 ON VIEW THAT EXECUTES FINE AS A QUERY
Select from a view with the underlying HAVING clause failed with a
message: "1356: View '...' references invalid table(s) or column(s)
or function(s) or definer/invoker of view lack rights to use them"

The bug is a regression of the fix for bug 11750328 - 40825 (similar
case, but the HAVING cause references an aliased field).
In the old fix for bug 40825 the Item_field::name_length value has
been used in place of the real length of Item_field::name. However,
in some cases Item_field::name_length is not in sync with the
actual name length (TODO: combine name and name_length into a
solid String field).

The Item_ref::print() method has been modified to calculate actual
name length every time.


mysql-test/r/view.result:
  Test case for bug #11829681
mysql-test/t/view.test:
  Test case for bug #11829681
sql/item.cc:
  Bug #11829681 - 60295: ERROR 1356 ON VIEW THAT EXECUTES FINE AS A QUERY
  
  The Item_ref::print() method has been modified to calculate actual
  name length every time.
sql/item.h:
  Minor commentary.
2011-04-08 12:05:20 +04:00
Nirbhay Choubey
bbd0d604aa Adjusting test result for bug#11765157. 2011-04-08 12:34:54 +05:30
Nirbhay Choubey
01f0090c6a Merging patch for bug#11765157 from mysql-5.1. 2011-04-08 12:25:59 +05:30
Nirbhay Choubey
cb0e49c000 Bug#11765157 - 58090: mysqlslap drops schema specified in
create_schema if auto-generate-sql also set.

mysqlslap uses a schema to run its tests on and later
drops it if auto-generate-sql is used. This can be a
problem, if the schema is an already existing one.

If create-schema is used with auto-generate-sql option,
mysqlslap while performing the cleanup, drops the specified
database.

Fixed by introducing an option --no-drop, which, if used,
will prevent the dropping of schema at the end of the test.


client/client_priv.h:
  Bug#11765157 - 58090: mysqlslap drops schema specified in
                 create_schema if auto-generate-sql also set.
  
  Added an option.
client/mysqlslap.c:
  Bug#11765157 - 58090: mysqlslap drops schema specified in
                 create_schema if auto-generate-sql also set.
  
  Introduced an option 'no-drop' to forbid the removal of schema
  even if 'create' or 'auto-generate-sql' options are used.
mysql-test/r/mysqlslap.result:
  Added a testcase for Bug#11765157.
mysql-test/t/mysqlslap.test:
  Added a testcase for Bug#11765157.
2011-04-08 12:22:44 +05:30
Bjorn Munch
9e255716f0 merge from 5.1-mtr 2011-04-07 13:15:24 +02:00
Bjorn Munch
78b5a6324a merge from 5.5 main 2011-04-07 12:36:01 +02:00
Jon Olav Hauglid
cc6c1e382c BUG#11815600 - [ERROR] INNODB COULD NOT FIND INDEX
PRIMARY KEY NO 0 FOR TABLE IN ERROR LOG 

Post merge fix, update the .result file.
2011-04-07 11:41:20 +02:00
Bjorn Munch
c0bdb20979 Bug #12316050 MTR: --REPORT-TIMES GIVES TOO HIGH NUMBER FOR INITIALIZATION
Forgot that the main thread would be idle while waiting for tests
Added sub mark_time_idle() so ignore time spent waiting
Also added a new time category 'admin' to take some of 'init'
2011-04-07 10:12:52 +02:00
Bjorn Munch
cda1dc52c2 Bug #11760361 52764: EXTEND MYSQL-TEST-RUN SUPPORT FOR SUN STUDIO DBX BY ADDING --DBX DEBUGGER
Added necessary options and variables
Added dbx_arguments() similar to gdb_arguments()
Unlike gdb, cannot use init file but must provide commands and args as
  command line argument to dbx
Also simplified debugger behavior to always start with a breakpoint in main()
2011-04-07 10:10:57 +02:00
Sunanda Menon
50a1629f64 Merge from mysql-5.5.11-release 2011-04-07 08:59:07 +02:00
Georgi Kodinov
c04a6bcbde merge mysql-5.1->mysql-5.5 2011-04-06 18:11:43 +03:00
Bjorn Munch
89eb32c5c3 merge from 5.5 main 2011-04-05 15:04:05 +02:00
Bjorn Munch
f6b6ab987d merge from 5.1 main 2011-04-05 15:02:01 +02:00
Georgi Kodinov
5321b3a57a Bug #11758687: 50924: object names not resolved correctly
on lctn2 systems

There was a local variable in get_all_tables() to store the 
"original" value of the database name as it can get lowercased
depending on the lower_case_table_name value.
get_all_tables() iterates over database names and for each 
database iterates over the tables in it.
The "original" db name was assigned in the table names loop.
Thus the first table is ok, but the second and subsequent tables
get the lowercased name from processing the first table.
Fixed by moving the assignment of the original database name
from the inner (table name) to the outer (database name) loop.
Test suite added.
2011-04-04 16:04:15 +03:00
Vasil Dimov
7dcb8a0106 Merge mysql-5.5-innodb -> mysql-5.5 2011-04-04 09:12:11 +03:00
Gleb Shchepa
7ba944c465 auto-merge 5.1-->5.5 (bug 11766094) 2011-04-02 23:41:10 +04:00
Gleb Shchepa
7aa81e2a02 Bug #11766094 - 59132: MIN() AND MAX() REMOVE UNSIGNEDNESS
In the string context the MIN() and MAX() functions don't take
into account the unsignedness of the UNSIGNED BIGINT argument
column.

I.e.:
        CREATE TABLE t1 (a BIGINT UNSIGNED);
        INSERT INTO t1 VALUES (18446668621106209655);
        SELECT CONCAT(MAX(a)) FROM t1;

returns -75452603341961.


mysql-test/r/func_group.result:
  Test case for bug #11766094.
mysql-test/t/func_group.test:
  Test case for bug #11766094.
sql/item.cc:
  Bug #11766094 - 59132: MIN() AND MAX() REMOVE UNSIGNEDNESS
  
  The Item_cache_int::val_str() method has been modified to
  take into account the unsigned_flag value when converting
  data to string.
2011-03-31 22:59:11 +04:00
Bjorn Munch
fc7a12c05d One more test suppression for rpl_extra_col_master tests 2011-03-31 15:48:05 +02:00
Georgi Kodinov
6d849b93f2 Merged the fix for bug #11936829 to 5.5.11 release
Bug #11936829: DIFF. BETWEEN MYSQL.USER (AUTHENTICATION_STRING) IN 
  FRESH AND UPGRADED 5.5.11
             
There was no modification for pre 5.5.11 builds that had 
authentication_string.  Thus the column was not upgraded 
by mysql_upgrade.
                         
Fixed by adding an ALTER TABLE MODIFY to update an existing 
column to the latest type version.
                                     
Test suite added.
2011-03-31 16:08:31 +03:00
Mattias Jonsson
92c6bc5e14 Backport of bug#11891417 from mysql-trunk to mysql-5.5 2011-03-31 14:38:54 +02:00
Bjorn Munch
772b7e89a7 merge from 5.5 main 2011-03-31 12:09:03 +02:00
Bjorn Munch
237d4f8fc7 merge from 5.1 main 2011-03-31 11:22:54 +02:00
Bjorn Munch
a93d530645 Small followup fix after MTR warning cleanup 2011-03-31 10:37:15 +02:00
Bjorn Munch
997eb49e49 Small followup fix after MTR warning cleanup 2011-03-31 10:33:07 +02:00
Bjorn Munch
89d96e3de9 mtr: cleaned up some superfluos global warning suppressions 2011-03-30 14:55:53 +02:00
Bjorn Munch
4c1eb0c171 mtr: cleaned up some superfluos global warning suppressions 2011-03-30 14:33:53 +02:00
Sergey Glukhov
abbe33eb92 5.1 -> 5.5 merge 2011-03-30 11:25:49 +04:00
Sergey Glukhov
a7d383cbb8 Bug#11766124 59164: VALGRIND: UNINITIALIZED VALUE IN NUMBER_TO_DATETIME
Valgrind warning happens due to missing NULL value check in
Item::get_date. The fix is to add this check.


mysql-test/r/func_time.result:
  test case
mysql-test/t/func_time.test:
  test case
sql/item.cc:
  added check for NULL value
2011-03-30 11:08:35 +04:00
Sergey Glukhov
3b7f044534 Bug#11766126 59166: ANOTHER DATETIME VALGRIND UNINITIALIZED WARNING
Valgrind warning happens because null values check happens too late
in Item_func_month::val_str(after result string calculation).The fix
is to check null value before result string calculation.


mysql-test/r/func_time.result:
  test case
mysql-test/t/func_time.test:
  test case
sql/item_timefunc.h:
  check null value before result string calculation.
2011-03-30 11:00:41 +04:00
Jon Olav Hauglid
4e26a41f3e Bug# 11763784 (former 56541)
ASSERTION TABLE->DB_STAT FAILED IN
SQL_BASE.CC::OPEN_TABLE() DURING I_S Q

This assert could be triggered if a statement requiring a name
lock on a table (e.g. DROP TRIGGER) executed concurrently
with an I_S query which also used the table.

One connection first started an I_S query that opened a given table.
Then another connection started a statement requiring a name lock
on the same table. This statement was blocked since the table was
in use by the I_S query. When the I_S query resumed and tried to
open the table again as part of get_all_tables(), it would encounter
a table instance with an old version number representing the pending
name lock. Since I_S queries ignore version checks and thus pending
name locks, it would try to continue. This caused it to encounter
the assert. The assert checked that the TABLE instance found with a
different version, was a real, open table. However, since this TABLE
instance instead represented a pending name lock, the check would
fail and trigger the assert.

This patch fixes the problem by removing the assert. It is ok for
TABLE::db_stat to be 0 in this case since the TABLE instance can
represent a pending name lock.

Test case added to lock_sync.test.
2011-03-29 10:09:05 +02:00
Mayank Prasad
e65b3b86f0 merge from 5.1 for bug#11751148 2011-03-28 21:08:16 +05:30
Mayank Prasad
08e472ff34 Bug#11751148 : show events shows events in other schema
Issue:
======
Test case Correction for bug#11751148.

mysql-test/r/events_bugs.result:
  Result file Correction for bug#11751148.
mysql-test/t/events_bugs.test:
  Test case Correction for bug#11751148.
2011-03-28 21:01:37 +05:30
Sergey Glukhov
8cca70e036 5.1 -> 5.5 merge 2011-03-28 17:33:35 +04:00
Sergey Glukhov
47885f552b Bug#11766087 59125: VALGRIND UNINITIALISED VALUE WARNING IN ULL2DEC, LONGLONG2DECIMAL
Valgrind warning happens due to missing NULL value check in
Item_func::val_decimal. The fix is to add this check.


mysql-test/r/func_time.result:
  test case
mysql-test/t/func_time.test:
  test case
sql/item_func.cc:
  added check for NULL value
2011-03-28 17:27:44 +04:00
Sergey Glukhov
d6125b27b3 Bug#11765216 58154: UNINITIALIZED VARIABLE FORMAT IN STR_TO_DATE FUNCTION
Valgrind warning happens due to uninitialized cached_format_type field
which is used later in Item_func_str_to_date::val_str method.
The fix is to init cached_format_type field.


mysql-test/r/func_time.result:
  test case
mysql-test/t/func_time.test:
  test case
sql/item_timefunc.cc:
  init cached_format_type field
2011-03-28 17:24:25 +04:00