Commit graph

59124 commits

Author SHA1 Message Date
Joerg Bruehe
74f4e39490 Merge bug fix into push tree. 2009-10-15 20:14:07 +02:00
Alexander Nozdrin
7175733938 A backporting patch for the following revision from 6.0:
revno: 2630.22.41
committer: Alexander Nozdrin <alik@mysql.com>
branch nick: 6.0-rt-bug39255
timestamp: Thu 2008-10-16 16:39:30 +0400
message:
  A patch for Bug#39255: Stored procedures: crash if function
  references nonexistent table.
  
  The problem is not reproduced in 6.0. Adding a test case.
2009-10-15 21:08:41 +04:00
Alexander Nozdrin
3b3955be5a Adding funcs_1 into "make test" 2009-10-15 19:04:57 +04:00
Alexander Nozdrin
12c7d0cf33 Merge from mysql-5.1. 2009-10-15 17:11:13 +04:00
Magne Mahre
a363c06ed0 Bug #43054 Assertion `!table->auto_increment_field_not_null' failed when
redefining trigger
      
The 'table->auto_increment_field_not_null' flag is only valid within
processing of a single row, and should be set to FALSE before
navigating to the next row, or exiting the operation.
      
This bug was caused by an SQL error occuring while executing a trigger
after the flag had been set, so the normal resetting was bypassed.
The table object was then returned to the table share's cache in
a dirty condition.   When the table object was reused, an assert
caught that the flag was set.
      
This patch explicitly clears the flag on error/abort.


Backported from mysql-6.0-codebase  revid: 2617.52.1
2009-10-15 14:53:06 +02:00
Sergey Glukhov
d8c3f2263f WL#751 Error message construction, backport 2009-10-15 17:23:43 +05:00
Georgi Kodinov
0da66a091b version change 2009-10-15 14:48:12 +03:00
Georgi Kodinov
3f220a7574 merge 2009-10-15 14:45:54 +03:00
Magne Mahre
7e895de84f Bug #38124 (clean-up patch)
The fix for Bug #38124 introuced a bug. If the value given 
for a set_var exceeded the length of the temporary buffer,
we would read behind the end of the buffer.  Using 
c_ptr_safe(), instead of c_ptr(), ensures that we won't
read beyond the buffer limit

mysql-6.0-codebase revid: 2617.44.1
2009-10-15 13:38:21 +02:00
Georgi Kodinov
d6573fea19 All NDB tests made experimental after a discussion with Bernhard Ocklin. 2009-10-15 14:22:25 +03:00
Magne Mahre
53d549483b Bug #37433 Deadlock between open_table, close_open_tables,
get_table_share, drop_open_table
            
In the partition handler code, LOCK_open and share->LOCK_ha_data
are acquired in the wrong order in certain cases.  When doing a
multi-row INSERT (i.e a INSERT..SELECT) in a table with auto-
increment column(s). the increments must be in a monotonically
continuous increasing sequence (i.e it can't have "holes"). To
achieve this, a lock is held for the duration of the operation.
share->LOCK_ha_data was used for this purpose.
            
Whenever there was a need to open a view _during_ the operation
(views are not currently pre-opened the way tables are), and
LOCK_open was grabbed, a deadlock could occur.  share->LOCK_ha_data
is other places used _while_ holding LOCK_open.
            
A new mutex was introduced in the HA_DATA_PARTITION structure,
for exclusive use of the autoincrement data fields, so we don't
need to overload the use of LOCK_ha_data here.
            
A module test case has not been supplied, since the problem occurs
as a result of a race condition, and testing for this condition 
is thus not deterministic.   Testing for it could be done by
setting up a test case as described in the bug report.
2009-10-15 13:07:04 +02:00
Georgi Kodinov
8bf642a2cd Marked all the NDB related tests experimental as agreed with Bernard Ocklin. 2009-10-15 14:02:29 +03:00
Alexey Kopytov
79406bc49a Manual merge. 2009-10-15 14:42:51 +04:00
Alexander Barkov
3929dddcd7 Backporting WL#4164 Two-byte collation IDs 2009-10-15 15:17:32 +05:00
Magne Mahre
ffbe8512f8 Bug #38124 "general_log_file" variable silently unset when using expression
When assigning the new string value to the variable, the
Item::str_value member was used.  This is not according to
the protocol.  str_value is an internal member used for
temporary assignments, and is not consistently set for all
string operations.  It is set for constant strings, so it would
work in these cases, but not for string functions (concat,
substr, etc.)
                  
The correct approach is to use Item::val_str(..) to evaluate
and retrieve the string.

Backport from 6.0-codebase

6.0-codebase revno: 2617.31.17
2009-10-15 11:09:31 +02:00
Sergey Vojtovich
eade898061 Disabled part of test for BUG#47073 until additional fix is pushed. 2009-10-15 12:31:11 +05:00
Vladislav Vaintroub
3c55783320 Bug #48047 Can't do normal shutdown
Fix a regression that crept in when downporting Windows improvements.
Instead of a shutdown thread, another thread that  handledsocket connection was created.
2009-10-15 05:18:52 +02:00
Konstantin Osipov
9b41c7532d Backport of:
----------------------------------------------------------
revno: 2617.22.5
committer: Konstantin Osipov <kostja@sun.com>
branch nick: mysql-6.0-runtime
timestamp: Tue 2009-01-27 05:08:48 +0300
message:
  Remove non-prefixed use of HASH.
  Always use my_hash_init(), my_hash_inited(), my_hash_search(),
  my_hash_element(), my_hash_delete(), my_hash_free() rather
  than non-prefixed counterparts (hash_init(), etc).
  Remove the backward-compatible defines.
2009-10-14 20:37:38 +04:00
Jorgen Loland
565fef25ce merge 2009-10-14 18:24:29 +02:00
Jorgen Loland
bf14598c99 Followup patch for BUG#47280
Temporary tables may set join->group to 0 even though there is 
grouping. Also need to test if sum_func_count>0 when JOIN::exec() 
decides whether to present results in a grouped manner.

sql/sql_select.cc:
  Temporary tables may set join->group to 0 even though there is 
  grouping. Also need to test if sum_func_count>0 when JOIN::exec() 
  decides whether to present results in a grouped manner.
2009-10-14 18:20:01 +02:00
Georgi Kodinov
26b3613b0e merge 2009-10-14 18:46:45 +03:00
Georgi Kodinov
c8c0dad8f7 merge 2009-10-14 18:45:09 +03:00
Georgi Kodinov
903d21287c version change 2009-10-14 18:44:22 +03:00
Georgi Kodinov
67113c2e29 merge 2009-10-14 17:36:11 +03:00
Georgi Kodinov
3eb048ab87 merged main to mysql-5.0-bugteam 2009-10-14 17:33:20 +03:00
Georgi Kodinov
445454f728 merged 5.1-main 2009-10-14 17:30:39 +03:00
Konstantin Osipov
2b75d952e6 Backport of:
----------------------------------------------------------
revno: 2630.28.1
committer: Konstantin Osipov <kostja@sun.com>
branch nick: mysql-6.0-runtime
timestamp: Thu 2008-10-23 15:23:44 +0400
message:
  Bug#32738 "mysqld: Two slow log option/variable descriptions are
  inaccurate"
  Update option description per suggestion from the documentation team.

sql/mysqld.cc:
  Update options help texts (Bug#32738). Use - instead of _ in option
  names.
2009-10-14 18:07:50 +04:00
Konstantin Osipov
d5948e8dd7 Backport of:
----------------------------------------------------------
revno: 2630.22.39
committer: Konstantin Osipov <kostja@sun.com>
branch nick: mysql-6.0-runtime
timestamp: Wed 2008-10-08 23:44:34 +0400
message:
  Bug #34481 A typo in HugeTLB error Message.

mysys/my_largepage.c:
  Fix a typo.
2009-10-14 17:52:13 +04:00
He Zhenxing
7048cfde0a Attempt to fix Windows testcase output issue 2009-10-14 21:25:11 +08:00
Jon Olav Hauglid
3dce051cc5 Backport of revno: 2617.81.4
Bug #47274 assert in open_table on CREATE TABLE <already existing>

The problem was an assertion during execution of CREATE TABLES. 
This assertion would occur if INSERT DELAYED or REPLACE DELAYED
were used to update a table containing an AUTO_INCREMENT column
and if the inserted row had a user-supplied value for that column.
Any CREATE TABLE statement (including CREATE TABLE SELECT and
CREATE TABLE LIKE) trying to create the same table and 
which followed the INSERT/REPLACED would cause the assertion.

The problem was only noticeable on debug builds of the server
and not present in the mysql-5.1 tree.

The cause of the problem was that the code for delayed insert did
not properly reset the TABLE->auto_increment_if_null flag after 
The flag is used to indicate that a non-null value of an auto_increment field
has been provided by the user or retrieved from a current record.
Open_tables() contains an assertion that tests this flag, and this
was triggered by CREATE TABLE.

This patch fixes the problem by resetting the auto_increment_if_null
field to FALSE once INSERT/REPLACE DELAYED has updated the table, 
similar to what is done already for regular INSERT statements.

Test case added to delayed.test.
2009-10-14 14:50:26 +02:00
Alexander Barkov
4def52165d A postfix for backporting WL#1397 convert XML -> SQL
mysql-test/r/loadxml.result
mysql-test/t/loadxml.test
  Fixing non-deterministic test results

sql/sql_yacc.yy
  Initializing fname_first using get_tok_end() instead of get_ptr().
  The latter is grammar-dependant. The former is not.
2009-10-14 17:10:22 +05:00
Alexander Nozdrin
6b684c5806 Fix test results after the latest merge. 2009-10-14 15:36:55 +04:00
Konstantin Osipov
c0c7925cae Backport of:
----------------------------------------------------------
revno: 2630.22.31
committer: Konstantin Osipov <kostja@sun.com>
branch nick: mysql-6.0-runtime
timestamp: Thu 2008-10-02 19:08:09 +0400
message:
  Bug #34818 --default-table-type option should be removed
  Remove the deprecated option.


sql/mysqld.cc:
  Remove a deprecated option.
2009-10-14 15:34:20 +04:00
Jonathan Perkin
d8192190b0 Merge to mysql-next-mr-bugfixing 2009-10-14 12:19:49 +01:00
Jonathan Perkin
cd3a5ab74c Merge to mysql-trunk-bugfixing 2009-10-14 12:16:58 +01:00
Jonathan Perkin
1396786ed2 bug#45810: DTrace: build fails when 'dtrace' is not in PATH
Ensure full path to dtrace binary is used, fixes builds where
/usr/sbin is not in $PATH.
2009-10-14 12:15:46 +01:00
Konstantin Osipov
595b8f92ae Backport of:
----------------------------------------------------------
revno: 2630.22.8
committer: Konstantin Osipov <konstantin@mysql.com>
branch nick: mysql-6.0-runtime
timestamp: Sun 2008-08-10 18:49:52 +0400
message:
  Get rid of typedef struct for the most commonly used types:
  TABLE, TABLE_SHARE, LEX. This simplifies use of tags
  and forward declarations.
2009-10-14 15:14:58 +04:00
Jorgen Loland
6da93b223b Bug#47280 - strange results from count(*) with order by multiple
columns without where/group
                     
Simple SELECT with implicit grouping used to return many rows if
the query was ordered by the aggregated column in the SELECT
list. This was incorrect because queries with implicit grouping
should only return a single record.
                              
The problem was that when JOIN:exec() decided if execution needed
to handle grouping, it was assumed that sum_func_count==0 meant
that there were no aggregate functions in the query. This
assumption was not correct in JOIN::exec() because the aggregate
functions might have been optimized away during JOIN::optimize().
                  
The reason why queries without ordering behaved correctly was
that sum_func_count is only recalculated if the optimizer chooses
to use temporary tables (which it does in the ordered case).
Hence, non-ordered queries were correctly treated as grouped.
                  
The fix for this bug was to remove the assumption that
sum_func_count==0 means that there is no need for grouping. This
was done by introducing variable "bool implicit_grouping" in the
JOIN object.

mysql-test/r/func_group.result:
  Add test for BUG#47280
mysql-test/t/func_group.test:
  Add test for BUG#47280
sql/opt_sum.cc:
  Improve comment for opt_sum_query()
sql/sql_class.h:
  Add comment for variables in TMP_TABLE_PARAM
sql/sql_select.cc:
  Introduce and use variable implicit_grouping instead of (!group_list && sum_func_count) in places that need to test if grouping is required. Also added comments for: optimization of aggregate fields for implicitly grouped queries  (JOIN::optimize) and choice of end_select method (JOIN::execute)
sql/sql_select.h:
  Add variable implicit_grouping, which will be TRUE for queries that contain aggregate functions but no GROUP BY clause. Also added comment to sort_and_group variable.
2009-10-14 10:46:50 +02:00
Alexander Nozdrin
c30d924dd5 Manual merge from mysql-trunk-merge. 2009-10-14 12:25:39 +04:00
unknown
ecb9119beb Null-merge from mysql-5.0.84sp1-release 2009-10-14 10:16:04 +02:00
Bjorn Munch
972e938dac Bug #46007 Tests fail due to a crash while running 'check testcase before test'
Difficult to debug due to lacking report
This does not solve the real issue, but extracts server log when it happens
Forst commit was incomplete, didn't cover all cases
2009-10-14 09:31:34 +02:00
Alexander Nozdrin
310833ff2e Merge from mysql-5.1. 2009-10-14 11:17:49 +04:00
He Zhenxing
6ae50d8aed Postfix after merge semi-sync with heartbeat
Use ev_offset instead of 1 as the packet header offset when getting
log position from events for heartbeat

call reset_transmit_packet before calling send_heartbeat_event


sql/sql_repl.cc:
  Use ev_offset instead of 1 as the packet header offset when getting log position from events for heartbeat
  call reset_transmit_packet before calling send_heartbeat_event
2009-10-14 13:24:47 +08:00
unknown
f9c6730258 Bug#46640: output from mysqlbinlog command in 5.1 breaks replication
The BINLOG statement was sharing too much code with the slave SQL thread, introduced with
the patch for Bug#32407. This caused statements to be logged with the wrong server_id, the
id stored inside the events of the BINLOG statement rather than the id of the running 
server.
      
Fix by rearranging code a bit so that only relevant parts of the code are executed by
the BINLOG statement, and the server_id of the server executing the statements will 
not be overrided by the server_id stored in the 'format description BINLOG statement'.

mysql-test/extra/binlog_tests/binlog.test:
  Added test to verify if the server_id stored in the 'format 
  description BINLOG statement' will override the server_id
  of the server executing the statements.
mysql-test/suite/binlog/r/binlog_row_binlog.result:
  Test result for bug#46640
mysql-test/suite/binlog/r/binlog_stm_binlog.result:
  Test result for bug#46640
sql/log_event.cc:
  Moved rows_event_stmt_clean() call from update_pos() to apply_event(). This in any case
  makes more sense, and is needed as update_pos() is no longer called when executing
  BINLOG statements.
  
  Moved setting of rli->relay_log.description_event_for_exec from 
  Format_description_log_event::do_update_pos() to 
  Format_description_log_event::do_apply_event()
sql/log_event_old.cc:
  Moved rows_event_stmt_clean() call from update_pos() to apply_event(). This in any case
  makes more sense, and is needed as update_pos() is no longer called when executing
  BINLOG statements.
sql/slave.cc:
  The skip flag is no longer needed, as the code path for BINLOG statement has been 
  cleaned up.
sql/sql_binlog.cc:
  Don't invoke the update_pos() code path for the BINLOG statement, as it contains code 
  that is redundant and/or harmful (especially setting thd->server_id).
2009-10-14 09:39:05 +08:00
Konstantin Osipov
c84a238984 ----------------------------------------------------------
revno: 2630.2.16
committer: Konstantin Osipov <konstantin@mysql.com>
branch nick: mysql-6.0-runtime
timestamp: Fri 2008-06-27 13:26:03 +0400
message:
  Fix max_user_connections_func failure on Solaris.
  A connection that failed to log in due to a resource limit could
  be returned to the thread pool with a dangling link to user_connect
  structure of an old user. Later on it could be authenticated
  to a user that doesn't have a resource limit, so this dangling
  link won't be reset. --pool-of-threads mode made the situation
  easy to reproduce, and thus highlighted a bug that has been
  around forever.
  Make sure there are no dangling links.

sql/sql_connect.cc:
  Do not return a connection structure to the thread pool with a dangling link.
2009-10-14 00:16:41 +04:00
Konstantin Osipov
df39e6ab4b Backport of:
----------------------------------------------------------
revno: 2630.7.1
committer: Konstantin Osipov <konstantin@mysql.com>
branch nick: mysql-6.0-lock-tables-new
timestamp: Mon 2008-06-02 15:14:18 +0400
message:
  Fix a test suite timeout in partition.test and partition_csv.test

storage/csv/ha_tina.cc:
  Change the blobroot mem root life cycle and thus fix a memory hog
  in case of many csv handlers.
2009-10-13 23:53:35 +04:00
Konstantin Osipov
e2400f1889 Backport of:
----------------------------------------------------------
revno: 2630.2.6
committer: Konstantin Osipov <konstantin@mysql.com>
branch nick: mysql-6.0-27430
timestamp: Mon 2008-05-26 16:12:28 +0400
message:
  Cover four special cases of WL#4166 with tests:
  - when the query cache is disabled at the time of prepared statement
  reprepare
  - when long data parameters are used
  - when character_set_connection != character_set_client, and a parameter
  conversion takes place
  - when parameter data is out of acceptable range, e.g. year 10000 is
  supplied as part of MYSQL_TYPE_DATETIME value. The server is supposed
  to warn in such case.

mysql-test/include/query_cache_sql_prepare.inc:
  Addditional test for Bug#27430
mysql-test/r/query_cache_ps_no_prot.result:
  Update result file.
mysql-test/r/query_cache_ps_ps_prot.result:
  Update result file.
tests/mysql_client_test.c:
  Add more tests (Bug#27430 and WL#4166).
  Fix test_datetime_range() test to correctly assert for the number
  of warnings. Additionally, print these warnings out.
2009-10-13 23:31:03 +04:00
Konstantin Osipov
edebd2a223 Backport of:
-----------------------------------------------------------
revno: 2630.2.4
committer: Konstantin Osipov <konstantin@mysql.com>
branch nick: mysql-6.0-runtime
timestamp: Fri 2008-05-23 02:42:32 +0400
message:
  Bug#27430 "Crash in subquery code when in PS and table DDL changed after
  PREPARE"
  Add a test case for the situation with small TDC and many merge children.

from 6.0-codebase.

mysql-test/r/merge.result:
  Update results (Bug#27430)
mysql-test/t/merge.test:
  Add test case (Bug#27430)
2009-10-13 23:04:58 +04:00
unknown
7b32690cf9 Raise version number after cloning 5.0.87 2009-10-13 20:50:37 +02:00
Konstantin Osipov
9a4a845adc Backport of the following revision from 6.0-codebase:
----------------------------------------------------------
revno: 2617.1.12
committer: kostja@bodhi.(none)
timestamp: Sun 2008-04-20 11:18:52 +0400
message:
  A fix for Bug#32771 "events_bugs.test fails randomly".
  In Event_scheduler::stop(), which may be called from destructor,
  wait synchronously for the parallel Event_scheduler::stop() to
  complete before returning. This fixes a race between
  MySQL shutdown thread and the scheduler thread who could call
  stop() in parallel.

sql/event_scheduler.cc:
  There was a race condition between the shutdown thread and
  the scheduler thread: the shutdown thread could delete the scheduler
  mutex before the sheduler has stopped.
2009-10-13 22:29:28 +04:00