Commit graph

54858 commits

Author SHA1 Message Date
Georgi Kodinov
63a3ce6ef0 merged 5.1-5.1.29-rc -> 5.1-bugteam 2008-10-01 12:47:25 +03:00
Patrick Crews
6db425ab4c automerge 2008-09-30 22:01:50 -04:00
Patrick Crews
006b940a27 Bug#38311 Some tests use 'rm' which is not portable
Repush of change to fix tests on Pushbuild.
2008-09-30 20:54:06 -04:00
Davi Arnaut
37a6be753f Merge from main branch. 2008-09-30 18:23:04 -03:00
Davi Arnaut
36d8535a4f Bug#38727: BUILD/compile-solaris-* scripts should compile MySQL with libmtmalloc
Link with mtmalloc on Solaris as it is done in our release builds.
Replace deprecated flag with the newer option as already done in
other scripts.

BUILD/compile-solaris-amd64-forte:
  Link to mtmalloc and replace deprecated flag.
BUILD/compile-solaris-amd64-forte-debug:
  Replace deprecated flag.
BUILD/compile-solaris-sparc:
  Link to mtmalloc.
BUILD/compile-solaris-sparc-forte:
  Link to mtmalloc
2008-09-30 17:57:48 -03:00
Patrick Crews
e97a45fdd3 automerge 2008-09-30 16:23:04 -04:00
Patrick Crews
446fd5044c Merge 5.0 -> 5.1 2008-09-30 15:32:35 -04:00
Patrick Crews
8c33da076e Automerge 2008-09-30 12:56:12 -04:00
Davi Arnaut
6816cf6a65 Bug#34306: Can't make copy of log tables when server binary log is enabled
Post-merge bug fix: lock_type is a enumeration type and not a bit mask.

sql/sql_cache.cc:
  Check for lock type explicitly. Also err on the safe side and
  invalidate the query cache for any write lock.
2008-09-30 10:47:01 -03:00
Gleb Shchepa
0d24398697 manual merge 5.0-bugteam --> 5.1-bugteam 2008-09-30 18:16:11 +05:00
Gleb Shchepa
3c9d4ea821 Fixed bug #17823: 'arc' directories inside database directories.
Server created "arc" directories inside database directories and
maintained there useless copies of .frm files.

Creation and renaming procedures of those copies as well as
creation of "arc" directories has been discontinued.
Removal procedure has been kept untouched to be able to
cleanup existent database directories by the DROP DATABASE
query. Also view renaming procedure has been updated to remove
these directories.


sql/parse_file.cc:
  Fixed bug #17823: 'arc' directories inside database directories.
  View/table creation and renaming procedures maintained
  backup copies of .frm files. Those copies are unused yet,
  so this feature was incomplete and unnecessary.
  
  1. Unwanted code has been hidden by FRM_ARCHIVE ifdefs
  (the FRM_ARCHIVE macro is not defined).
  
  2. Renaming procedure has been modified to remove obsolete
  "arc" directories.
sql/parse_file.h:
  Fixed bug #17823: 'arc' directories inside database directories.
  The "thd" parameter has been added to the rename_in_schema_file()
  function.
sql/sql_db.cc:
  Fixed bug #17823: 'arc' directories inside database directories.
  Scope of the mysql_rm_arc_files() function has been changed to
  global for use from the parse_file.cc file.
sql/sql_view.cc:
  Fixed bug #17823: 'arc' directories inside database directories.
  Added the "thd" argument to rename_in_schema_file() calls.
2008-09-30 17:50:28 +05:00
Alexey Botchkov
b8734a1ce2 merging 2008-09-30 10:41:30 +05:00
Davi Arnaut
2714b57bd3 Merge from parent branch. 2008-09-29 14:42:36 -03:00
Alexey Botchkov
ce64a16b75 Bug#37949 Crash if argument to SP is a subquery that returns more than one row
JOIN for the subselect wasn't cleaned if we came upon an error
     during sub_select() execution. That leads to the assertion failure
     in close_thread_tables()

     part of the 6.0 code backported

per-file comments:
  mysql-test/r/sp-error.result
Bug#37949 Crash if argument to SP is a subquery that returns more than one row 
    test result

  mysql-test/t/sp-error.test
Bug#37949 Crash if argument to SP is a subquery that returns more than one row 
    test case

  sql/sp_head.cc
Bug#37949 Crash if argument to SP is a subquery that returns more than one row 
    lex->unit.cleanup() call added if not substatement
2008-09-29 19:11:34 +05:00
Davi Arnaut
0406d409ea Bug#34306: Can't make copy of log tables when server binary log is enabled
The problem is that when statement-based replication was enabled,
statements such as INSERT INTO .. SELECT FROM .. and CREATE TABLE
.. SELECT FROM need to grab a read lock on the source table that
does not permit concurrent inserts, which would in turn be denied
if the source table is a log table because log tables can't be
locked exclusively.

The solution is to not take such a lock when the source table is
a log table as it is unsafe to replicate log tables under statement
based replication. Furthermore, the read lock that does not permits
concurrent inserts is now only taken if statement-based replication
is enabled and if the source table is not a log table.

include/thr_lock.h:
  Introduce yet another lock type that my get upgraded depending
  on the binary log format. This is not a optimal solution but
  can be easily improved later.
mysql-test/r/log_tables.result:
  Add test case result for Bug#34306
mysql-test/suite/binlog/r/binlog_stm_row.result:
  Add test case result for Bug#34306
mysql-test/suite/binlog/t/binlog_stm_row.test:
  Add test case for Bug#34306
mysql-test/t/log_tables.test:
  Add test case for Bug#34306
sql/lock.cc:
  Assert that TL_READ_DEFAULT is not a real lock type.
sql/mysql_priv.h:
  Export new function.
sql/mysqld.cc:
  Remove using_update_log.
sql/sql_base.cc:
  Introduce function that returns the appropriate read lock type
  depending on how the statement is going to be replicated. It will
  only take a TL_READ_NO_INSERT log if the binary is enabled and the
  binary log format is statement-based and the table is not a log table.
sql/sql_parse.cc:
  Remove using_update_log.
sql/sql_update.cc:
  Use new function to choose read lock type.
sql/sql_yacc.yy:
  The lock type is now decided at open_tables time. This old behavior was
  actually misleading as the binary log format can be dynamically switched
  and this would not change for statements that have already been parsed
  when the binary log format is changed (ie: prepared statements).
2008-09-29 10:53:40 -03:00
He Zhenxing
a2841cf1c1 BUG#35843 Slow replication slave when using partitioned myisam table
In order to improve the performance when replicating to partitioned
myisam tables with row-based format, the number of rows of current 
rows log event is estimated and used to setup storage engine for bulk
inserts.
2008-09-26 17:39:47 +08:00
Kristofer Pettersson
1e26e74c2a Automerge 2008-09-25 19:08:46 +02:00
Patrick Crews
f5c1c9af8e Bug#38311 - Fix of some cruft from remove_files in ndb_autodiscover.test, clean up of distinct.test,
and replacing error numbers with error names.
2008-09-23 05:24:32 -04:00
Mattias Jonsson
1d583e50d8 merge 2008-09-23 12:24:30 +03:00
Patrick Crews
39fe58a07e merge of changes 2008-09-22 15:33:38 -04:00
Patrick Crews
e411b5f595 Bug#37312 Make tests binlog_row_innodb_stat and binlog_stm_innodb_stat more robust
Trimmed some error-prone and variable portions of the test and added 'flush status' to ensure deterministic test
2008-09-22 15:15:52 -04:00
Magnus Svensson
a50eed3a27 Bug #37312 Make tests binlog_row_innodb_stat and binlog_stm_innodb_stat more robust
mysql-test/lib/mtr_cases.pl:
  forward port the algorithm to check if a binlog format is supported
mysql-test/mysql-test-run.pl:
  Don't use dynamic setting of binlog format - does not work
2008-09-22 12:03:00 +03:00
Kristofer Pettersson
153e8e7c07 Merge 5.0-bugteam -> 5.1-bugteam 2008-09-20 16:52:34 +02:00
Kristofer Pettersson
119c5aaeba Automerge 2008-09-20 16:45:39 +02:00
Kristofer Pettersson
f0352e346a Bug#38469 invalid memory read and/or crash with utf8 text field, stored procedure, uservar
A stored procedure involving substrings could crash the server on certain
platforms because of invalid memory reads.
          
During storing the new blob-field value, the cached value's address range
overlapped that of the new field value. This caused problems when the 
cached value storage was reallocated to provide access for a new 
characater set representation. The patch checks the address ranges, and if
they overlap, the new field value is copied to a new storage before it is
converted to the new character set.


mysql-test/r/sp.result:
  Added result set
mysql-test/t/sp.test:
  Added test case
sql/field.cc:
  The source and destination address ranges of a character conversion must not overlap or the 'from' address will be invalidated as the temporary value-
  object is re-allocated to fit the new character set.
sql/field.h:
  Added comments
2008-09-20 10:51:03 +02:00
Davi Arnaut
fa490eb933 Restore team tree name. 2008-09-20 03:56:33 -03:00
Mattias Jonsson
9fcdc6baea merge (update of local branch before push) 2008-09-20 09:53:23 +03:00
Patrick Crews
404e4b802c Bug#38311 Some tests use 'rm' which is not portable
Substituted use of MTR's remove_file function in the tests
Started with 5.0 tree and will clean up any offenders discovered during upmerge.
2008-09-20 02:21:28 -04:00
Georgi Kodinov
598a754295 fixed a problem with the push of bug #31434 2008-09-19 16:24:32 +03:00
Georgi Kodinov
7be42c8619 merge of bug 39353 5.0-5.1.29-rc -> 5.1-5.1.29-rc 2008-09-19 15:34:37 +03:00
Georgi Kodinov
bf09a809a6 merged 5.0-5.1.29-rc into B39353 tree 2008-09-19 14:31:51 +03:00
Mattias Jonsson
3e1d88d188 Bug#30573: Ordered range scan over partitioned tables returns some rows twice
and
Bug#33555: Group By Query does not correctly aggregate partitions

Backport of bug-33257 which is the same bug.

read_range_*() calls was not passed to the partition handlers,
but was translated to index_read/next family calls.
Resulting in duplicates rows and wrong aggregations.

mysql-test/r/partition_range.result:
  Bug#30573: Ordered range scan over partitioned tables returns some rows twice
  
  Updated result file
mysql-test/t/partition_range.test:
  Bug#30573: Ordered range scan over partitioned tables returns some rows twice
  
  Re-enabled the test
sql/ha_partition.cc:
  Bug#30573: Ordered range scan over partitioned tables returns some rows twice
  
  backport of bug-33257, correct handling of read_range_* calls,
  without converting them to index_read/next calls
sql/ha_partition.h:
  Bug#30573: Ordered range scan over partitioned tables returns some rows twice
  
  backport of bug-33257, correct handling of read_range_* calls,
  without converting them to index_read/next calls
2008-09-18 22:49:34 +03:00
Matthias Leich
88ec0a0ce8 Merge 5.0 -> 5.1
no conflicts, no real code changes
2008-09-18 15:46:27 +02:00
Matthias Leich
24fe747024 Merge actual tree -> local tree
no conflicts
2008-09-18 15:32:06 +02:00
Matthias Leich
8aa1b6b02e Merge actual bugteam tree -> local tree 2008-09-18 15:05:19 +02:00
Georgi Kodinov
71fe190172 Bug #39353: Multiple conditions on timestamp column crashes server
The fix for bug 31887 was incomplete : it assumes that all the 
field types returned by the IS_NUM macro are descendants of 
Item_num and tries to zero-fill the values before doing constant
substitution with such fields when they are compared to constant string
values.
The only exception to this is Field_timestamp : it's in the IS_NUM
macro, but is not a descendant of Field_num.
Fixed by excluding timestamp fields (Field_timestamp) when zero-filling
when converting the constant to compare with to a string.
Note that this will not exclude the timestamp columns from const 
propagation.

mysql-test/r/compare.result:
  Bug #39353: test case
mysql-test/t/compare.test:
  Bug #39353: test case
sql/item.cc:
  Bug #39353: don't zero-fill timestamp fields when const propagating
  to a string : they'll be converted to a string in a date/time format
  and not as an integer.
2008-09-18 15:55:36 +03:00
Gleb Shchepa
14ce62ffbb Post-push fix for bug #26020: User-Defined Variables are not consistence with columns data types.
--ps-protocol problem has been fixed.


sql/item_func.cc:
  Added update of Item_func_set_user_var::entry->update_query_id
  for every PS execution.
2008-09-18 17:24:09 +05:00
Tatiana A. Nurnberg
1f4277b42b auto-merge 2008-09-18 13:15:19 +02:00
Tatiana A. Nurnberg
7a40f2610e manual merge 2008-09-18 11:32:54 +02:00
Tatiana A. Nurnberg
654db75dfb Bug#37114: sql_mode NO_BACKSLASH_ESCAPES does not work properly with LOAD DATA Bug#37114: sql_mode NO_BACKSLASH_ESCAPES does not work properly with LOAD DATA INFILE
tweaked test to make embedded server happy
2008-09-18 11:24:50 +02:00
Mattias Jonsson
84760783e9 Bug#37803: Test "partition_alter2_innodb" exhausts resources (time and/or memory)
It is a very big test and as such it takes a lot of time.

Solution is to divide the test in two parts, one for testing increasing
column size and one for decreasing size.

The innodb branch does extended tests (that myisam is not) due to the
$do_pk_tests variabel, that is the reason why the innodb branch takes
longer.

No increase of memory usage in innodb was found when analyzing, (tested
with looping some millions time of create/drop and alter commands)

The memory exhaust discovered in the test is due to mysqltest which
stores the result in memory (result-file) and this was the biggest
result file in the test framework, so by dividing the test into two
parts also cuts the memory usage of mysqltest.

mysql-test/suite/parts/inc/partition_alter2_1.inc:
  Bug#37803: Test "partition_alter2_innodb" exhausts resources (time and/or memory)
  
  Splitted the test into two parts (one for increasing column size
  and one for decreasing)
  
  This leads to lower test case time (to avoid test case timeout)
  and less memory consumption of mysqltest (due to smaller result file)
mysql-test/suite/parts/inc/partition_alter2_2.inc:
  Bug#37803: Test "partition_alter2_innodb" exhausts resources (time and/or memory)
  
  Splitted the test into two parts (one for increasing column size
  and one for decreasing)
  
  This leads to lower test case time (to avoid test case timeout)
  and less memory consumption of mysqltest (due to smaller result file)
mysql-test/suite/parts/r/partition_alter2_1_innodb.result:
  Bug#37803: Test "partition_alter2_innodb" exhausts resources (time and/or memory)
  
  Splitted the test into two parts (one for increasing column size
  and one for decreasing)
  
  This leads to lower test case time (to avoid test case timeout)
  and less memory consumption of mysqltest (due to smaller result file)
mysql-test/suite/parts/r/partition_alter2_1_myisam.result:
  Bug#37803: Test "partition_alter2_innodb" exhausts resources (time and/or memory)
  
  Splitted the test into two parts (one for increasing column size
  and one for decreasing)
  
  This leads to lower test case time (to avoid test case timeout)
  and less memory consumption of mysqltest (due to smaller result file)
mysql-test/suite/parts/r/partition_alter2_2_innodb.result:
  Bug#37803: Test "partition_alter2_innodb" exhausts resources (time and/or memory)
  
  Splitted the test into two parts (one for increasing column size
  and one for decreasing)
  
  This leads to lower test case time (to avoid test case timeout)
  and less memory consumption of mysqltest (due to smaller result file)
mysql-test/suite/parts/r/partition_alter2_2_myisam.result:
  Bug#37803: Test "partition_alter2_innodb" exhausts resources (time and/or memory)
  
  Splitted the test into two parts (one for increasing column size
  and one for decreasing)
  
  This leads to lower test case time (to avoid test case timeout)
  and less memory consumption of mysqltest (due to smaller result file)
mysql-test/suite/parts/t/disabled.def:
  Bug#37803: Test "partition_alter2_innodb" exhausts resources (time and/or memory)
  
  Removed the test completely (since it has never been supported)
mysql-test/suite/parts/t/partition_alter2_1_innodb.test:
  Bug#37803: Test "partition_alter2_innodb" exhausts resources (time and/or memory)
  
  Splitted the test into two parts (one for increasing column size
  and one for decreasing)
  
  This leads to lower test case time (to avoid test case timeout)
  and less memory consumption of mysqltest (due to smaller result file)
mysql-test/suite/parts/t/partition_alter2_1_myisam.test:
  Bug#37803: Test "partition_alter2_innodb" exhausts resources (time and/or memory)
  
  Splitted the test into two parts (one for increasing column size
  and one for decreasing)
  
  This leads to lower test case time (to avoid test case timeout)
  and less memory consumption of mysqltest (due to smaller result file)
mysql-test/suite/parts/t/partition_alter2_2_innodb.test:
  Bug#37803: Test "partition_alter2_innodb" exhausts resources (time and/or memory)
  
  Splitted the test into two parts (one for increasing column size
  and one for decreasing)
  
  This leads to lower test case time (to avoid test case timeout)
  and less memory consumption of mysqltest (due to smaller result file)
mysql-test/suite/parts/t/partition_alter2_2_myisam.test:
  Bug#37803: Test "partition_alter2_innodb" exhausts resources (time and/or memory)
  
  Splitted the test into two parts (one for increasing column size
  and one for decreasing)
  
  This leads to lower test case time (to avoid test case timeout)
  and less memory consumption of mysqltest (due to smaller result file)
mysql-test/suite/parts/t/partition_alter2_ndb.test:
  Bug#37803: Test "partition_alter2_innodb" exhausts resources (time and/or memory)
  
  Removing test since ndb has never supported these tests
2008-09-18 12:02:48 +03:00
Gleb Shchepa
e9cb71fc3a Bug#26020: User-Defined Variables are not consistent with
columns data types

The "SELECT @lastId, @lastId := Id FROM t" query returns
different result sets depending on the type of the Id column
(INT or BIGINT).

Note: this fix doesn't cover the case when a select query
references an user variable and stored function that
updates a value of that variable, in this case a result
is indeterminate.


The server uses incorrect assumption about a constantness of
an user variable value as a select list item: 

The server caches a last query number where that variable
was changed and compares this number with a current query
number. If these numbers are different, the server guesses,
that the variable is not updating in the current query, so
a respective select list item is a constant. However, in some
common cases the server updates cached query number too late.


The server has been modified to memorize user variable
assignments during the parse phase to take them into account
on the next (query preparation) phase independently of the
order of user variable references/assignments in a select
item list.


mysql-test/r/user_var.result:
  Added test case for bug #26020.
mysql-test/t/user_var.test:
  Added test case for bug #26020.
sql/item_func.cc:
  An update of entry and update_query_id variables has been
  moved from Item_func_set_user_var::fix_fields() to a separate
  method, Item_func_set_user_var::set_entry().
sql/item_func.h:
  1. The Item_func_set_user_var::set_entry() method has been
  added to update Item_func_set_user_var::entry.
  
  2. The Item_func_set_user_var::entry_thd field has beend
  added to update Item_func_set_user_var::entry only when
  needed.
sql/sql_base.cc:
  Fix: setup_fiedls() calls Item_func_set_user_var::set_entry()
  for all items from the thd->lex->set_var_list before the first
  call of ::fix_fields().
sql/sql_lex.cc:
  The lex_start function has been modified to reset
  the st_lex::set_var_list list.
sql/sql_lex.h:
  New st_lex::set_var_list field has been added to
  memorize all user variable assignments in the current
  select query.
sql/sql_yacc.yy:
  The variable_aux rule has been modified to memorize
  in-query user variable assignments in the
  st_lex::set_var_list list.
2008-09-18 13:38:44 +05:00
Chad MILLER
cf2b5e8b5b Merge Bug#37312. 2008-09-18 03:57:59 -04:00
Tatiana A. Nurnberg
c8324002e2 auto-merge 2008-09-17 18:12:23 +02:00
Tatiana A. Nurnberg
8d10051b9a auto-merge 2008-09-17 17:44:15 +02:00
Tatiana A. Nurnberg
845d7c71b1 auto-merge 2008-09-17 14:54:50 +02:00
Tatiana A. Nurnberg
2f082d9d42 Bug#37114: sql_mode NO_BACKSLASH_ESCAPES does not work properly with LOAD DATA INFILE
NO_BACKSLASH_ESCAPES was not heeded in LOAD DATA INFILE
and SELECT INTO OUTFILE.  It is now.

mysql-test/r/loaddata.result:
  Show that SQL-mode NO_BACKSLASH_ESCAPES is heeded in
  INFILE/OUTFILE, and that dump/restore cycles work!
mysql-test/t/loaddata.test:
  Show that SQL-mode NO_BACKSLASH_ESCAPES is heeded in
  INFILE/OUTFILE, and that dump/restore cycles work!
sql/sql_class.cc:
  Add function to enquire whether ESCAPED BY was given.
  When doing SELECT...OUTFILE, use ESCAPED BY if specifically
  given; otherwise use sensible default value depending on
  SQL-mode features NO_BACKSLASH_ESCAPES.
sql/sql_class.h:
  Add function to enquire whether ESCAPED BY was given.
sql/sql_load.cc:
  When doing LOAD DATA INFILE, use ESCAPED BY if specifically
  given; otherwise use sensible default value depending on
  SQL-mode features NO_BACKSLASH_ESCAPES.
2008-09-17 08:34:00 +02:00
Matthias Leich
03703b65df Upmerge 5.0 -> 5.1 of fix for Bug#38184 2008-09-16 19:26:54 +02:00
Matthias Leich
635887dcee Fix for Bug#38184 : main.federated fails sporadically
Details:
- backport of some improvements which prevent sporadic
  failures from 5.1 to 5.0
- @@GLOBAL.CONCURRENT_INSERT= 0 also for slave server
- --sorted_result before all selects which have result
  sets with more than one row
- Replace error numbers by error names
2008-09-16 19:05:30 +02:00
Narayanan V
53e0108387 updated tree with mysql-5.1-bugteam 2008-09-16 19:50:44 +05:30