Commit graph

67261 commits

Author SHA1 Message Date
Konstantin Osipov
08c5798839 Merge 5.5-bugteam -> 5.5-runtime. 2010-10-19 19:20:25 +04:00
Davi Arnaut
a7c933384c Merge of mysql-5.1-bugteam into mysql-5.5-bugteam. 2010-10-19 12:30:06 -02:00
Davi Arnaut
be170c213f Bug#45288: pb2 returns a lot of compilation warnings on linux
Tag unused arguments.
      
Approved by: Marko (via IRC)
2010-10-19 12:12:43 -02:00
Davi Arnaut
8875c2c2e0 Bug#45288: pb2 returns a lot of compilation warnings on linux
Tag unused arguments.

Approved by: Marko (via IRC)
2010-10-19 12:09:28 -02:00
Davi Arnaut
183710558f Bug#45288: pb2 returns a lot of compilation warnings on linux
Fix assorted compiler warnings on Mac OS X.

BUILD/SETUP.sh:
  Remove -Wctor-dtor-privacy flag to workaround a GCC bug that
  causes it to not properly detect that implicitly generated
  constructors are always public.
cmd-line-utils/readline/terminal.c:
  tgetnum and tgetflag might not take a const string argument.
mysys/my_gethostbyname.c:
  Tag unused arguments.
mysys/my_sync.c:
  Tag unused arguments.
2010-10-19 11:49:31 -02:00
Magne Mahre
95d91c0f57 Bug #46941 crash with lower_case_table_names=2 and foreign key
data dictionary confusion

On file systems with case insensitive file names, and
lower_case_table_names set to '2', the server could crash
due to a table definition cache inconsistency.  This is 
the default setting on MacOSX, but may also be set and
used on MS Windows.

The bug is caused by using two different strategies for
creating the hash key for the table definition cache, resulting
in failure to look up an entry which is present in the cache,
or failure to delete an existing entry.  One strategy was to
use the real table name (with case preserved), and the other
to use a normalized table name (i.e a lower case version).

This is manifested in two cases.  One is  during 'DROP DATABASE', 
where all known files are removed.  The removal from
the table definition cache is done via a generated list of
TABLE_LIST with keys (wrongly) created using the case preserved 
name.  The other is during CREATE TABLE, where the cache lookup
is also (wrongly) based on the case preserved name.
   
The fix was to use only the normalized table name when
creating hash keys.


sql/sql_db.cc:
  Normalize table name (i.e lower case it)
sql/sql_table.cc:
  table_name contains the normalized name
  alias contains the real table name
2010-10-19 12:27:09 +02:00
Jon Olav Hauglid
8f73bddc9a Merge from mysql-5.5-bugteam to mysql-5.5-runtime
No conflicts
2010-10-19 11:26:45 +02:00
Jon Olav Hauglid
87b91752f9 Merge from mysql-5.1-bugteam to mysql-5.5-bugteam
No conflicts
2010-10-19 10:30:26 +02:00
Jon Olav Hauglid
4776282bed Bug #57274 SET GLOBAL debug crashes on Solaris in embedded server mode
(variables_debug fails)

The problem was that "SET GLOBAL debug" could cause a crash on Solaris.
The crash happened if the server failed to open the trace file given in 
the "SET GLOBAL debug" statement. This caused an error message to be
printed to stderr containing the process name. However, printing to
stderr crashed the server since the pointer to the process name had
not been initialized.

This patch fixes the problem by initializing the process name 
properly when doing "SET GLOBAL debug".

No test case added as this bug was repeatable with existing test
coverage in variables_debug.test.
2010-10-19 10:19:57 +02:00
Tor Didriksen
ebe356cb32 automerge from 5.1-bugteam: Bug#52172 post-push fix: init auto-variable to NULL 2010-10-19 09:17:26 +02:00
Tor Didriksen
af665ea977 Bug#52172 post-push fix: init auto-variable to NULL 2010-10-19 09:06:48 +02:00
Tor Didriksen
a6df37dbbf Bug #57203 Assertion `field_length <= 255' failed.
After the fix for
Bug #55077 Assertion failed: width > 0 && to != ((void *)0), file .\dtoa.c
we no longer try to allocate a string of length 'field_length'
so the asserts are relevant only for ZEROFILL columns.



mysql-test/r/select.result:
  Add test case for Bug#57203
mysql-test/t/select.test:
  Add test case for Bug#57203
sql/field.cc:
  Rewrite the DBUG_ASSERTS on field_length.
2010-10-19 08:45:18 +02:00
Magne Mahre
b61b785285 Merge from mysql-5.1-bugteam to mysql-5.5-bugteam
Only test case is merged, as the fix was already
present in 5.5 code
2010-10-19 12:29:21 +02:00
Davi Arnaut
c903377d1e Merge of mysql-5.1-bugteam into mysql-5.5-bugteam.
CMakeLists.txt:
  Enable the maintainer mode if debug support is enabled.
  Does not cause it to be enabled if the user explicitly
  disabled the maintainer mode.
2010-10-18 15:38:32 -02:00
Davi Arnaut
5aa81e380c Bug#45288: pb2 returns a lot of compilation warnings on linux
Enable the MySQL maintainer-specific development environment
(which add various warning related options to the compiler
flags) if debugging support is enabled.

config/ac-macros/maintainer.m4:
  Enable the maintainer mode if debug support is enabled.
configure.in:
  Move debug argument to before the maintainer mode check.
2010-10-18 14:27:10 -02:00
Dmitry Shulga
4053a5a448 Follow-up for bug#36742: changed results for test ipv4_as_ipv6 because hostname is case-insensitive. 2010-10-18 23:20:26 +07:00
Dmitry Shulga
1e2f4f68bd Auto-merge from mysql-5.1-bugteam for bug#36742. 2010-10-18 22:38:12 +07:00
Dmitry Shulga
cdddc7bfd5 Follow up for bug#36742. Changed test case for bug#19828
because currently hostname stored in db in lowercase.
2010-10-18 21:03:53 +07:00
Tor Didriksen
f0e2d8ecd8 Bug#52172 test binlog.binlog_index needs --skip-core-file to avoid leaving core files
For crash testing: kill the server without generating core file.

include/my_dbug.h
  Use kill(getpid(), SIGKILL) which cannot be caught by signal handlers.
  All DBUG_XXX macros should be no-ops in optimized mode, do that for DBUG_ABORT as well.
sql/handler.cc
  Kill server without generating core.
sql/log.cc
  Kill server without generating core.
2010-10-18 13:27:52 +02:00
Tor Didriksen
9074307102 Bug#52172 test binlog.binlog_index needs --skip-core-file to avoid leaving core files
For crash testing: kill the server without generating core file.

include/my_dbug.h
  Use kill(getpid(), SIGKILL) which cannot be caught by signal handlers.
  All DBUG_XXX macros should be no-ops in optimized mode, do that for DBUG_ABORT as well.
sql/handler.cc
  Kill server without generating core.
sql/log.cc
  Kill server without generating core.
2010-10-18 13:24:34 +02:00
unknown
c20cbe5b4a Manual merge 2010-10-16 22:20:35 +08:00
unknown
211552ccee Bug#56118 STOP SLAVE does not wait till trx with CREATE TMP TABLE ends,
replication aborts

When recieving a 'SLAVE STOP' command, slave SQL thread will roll back the
transaction and stop immidiately if there is only transactional table updated,
even through 'CREATE|DROP TEMPOARY TABLE' statement are in it. But These
statements can never be rolled back. Because the temporary tables to the user
session mapping remain until 'RESET SLAVE', Therefore it will abort SQL thread
with an error that the table already exists or doesn't exist, when it restarts
and executes the whole transaction again.

After this patch, SQL thread always waits till the transaction ends and then stops,
if 'CREATE|DROP TEMPOARY TABLE' statement are in it.

mysql-test/extra/rpl_tests/rpl_stop_slave.test:
  Auxiliary file which is used to test this bug.
mysql-test/suite/rpl/t/rpl_stop_slave.test:
  Test case for this bug.
sql/slave.cc:
  Checking if OPTION_KEEP_LOG is set. If it is set, SQL thread should wait
  until the transaction ends.
sql/sql_parse.cc:
  Add a debug point for testing this bug.
2010-10-16 20:03:44 +08:00
Konstantin Osipov
248625d910 A fix and a test case for Bug#56540 "Exception (crash) in
sql_show.cc during rqg_info_schema test on Windows".

Ensure we do not access freed memory when filling
information_schema.views when one of the views
could not be properly opened.



mysql-test/r/information_schema.result:
  Update results - a fix for Bug#56540.
mysql-test/t/information_schema.test:
  Add a test case for Bug#56540
sql/sql_base.cc:
  Push an error into the Diagnostics area
  when we return an error.
  This directs get_all_tables() to the execution
  branch which doesn't involve 'process_table()'
  when no table/view was opened.
sql/sql_show.cc:
  Do not try to access underlying table fields
  when opening of a view failed. The underlying
  table is closed in that case, and accessing
  its fields may lead to dereferencing a damaged 
  pointer.
2010-10-14 20:56:56 +04:00
Alexander Nozdrin
650e4c25db A patch for Bug#48874 (Test "is_triggers" fails because of wrong charset info).
The thing is that the following attributes are fixed (remembered) when a trigger
is created:
  - character_set_client
  - character_set_results
  - collation_connection

There are two triggers created in mysql-test/include/mtr_warnings.sql.
They were created using "current default" character set / collation.
is_triggers.test shows definition of these triggers including recorded
character set information.

The problem was that if "current default" changed, the recorded character
set information was not accurate.

There might be two ways to fix that:
  a) update is_triggers.test so that it does not put character-set information
     into result-file;
  b) update mtr_warnings.sql so that the triggers are created using
     hard-coded character sets.

This patch implements option b).
2010-10-14 14:05:59 +04:00
Jon Olav Hauglid
5a57a45c66 Follow-up for Bug #55930 Assertion `thd->transaction.stmt.is_empty()
|| thd->in_sub_stmt || (thd->state..

Don't rollback statement transactions if we are in a sub-statement.
This could for example happen for open_ltable() when opening the
general log during execution of a stored procedure.
2010-10-14 11:02:37 +02:00
Davi Arnaut
1d43e72a0b Bug#56096: STOP SLAVE hangs if executed in parallel with user sleep
The root of the problem is that to interrupt a slave SQL thread
wait, the STOP SLAVE implementation uses thd->awake(THD::NOT_KILLED).
This appears as a spurious wakeup (e.g. from a sleep on a
condition variable) to the code that the slave SQL thread is
executing at the time of the STOP. If the code is not written
to be spurious-wakeup safe, unexpected behavior can occur. For
the reported case, this problem led to an infinite loop around
the interruptible_wait() function in item_func.cc (SLEEP()
function implementation).  The loop was not being properly
restarted and, consequently, would not come to an end. Since the
SLEEP function sleeps on a timed event in order to be killable
and to perform periodic checks until the requested time has
elapsed, the spurious wake up was causing the requested sleep
time to be reset every two seconds.

The solution is to calculate the requested absolute time only
once and to ensure that the thread only sleeps until this
time is elapsed. In case of a spurious wake up, the sleep is
restarted using the previously calculated absolute time. This
restores the behavior present in previous releases. If a slave
thread is executing a SLEEP function, a STOP SLAVE statement
will wait until the time requested in the sleep function
has elapsed.

mysql-test/extra/rpl_tests/rpl_start_stop_slave.test:
  Add test case for Bug#56096.
mysql-test/suite/rpl/r/rpl_stm_start_stop_slave.result:
  Add test case result for Bug#56096.
sql/item_func.cc:
  Reorganize interruptible_wait into a class so that the absolute
  time can be preserved across calls to the wait function. This
  allows the sleep to be properly restarted in the presence of
  spurious wake ups, including those generated by a STOP SLAVE.
2010-10-13 22:54:07 -03:00
Alexander Nozdrin
aeb24b635a Bump version after 5.5.7 clone-off. 2010-10-13 21:25:41 +04:00
Davi Arnaut
215e967ace Use a guard macro to prevent the inclusion of system headers
when checking the ABI with the C Preprocessor. Also, add the
new hearders to the cmake based ABI check.

cmake/abi_check.cmake:
  Add headers which were added to the autotools ABI check.
  Remove trailing spaces.
include/mysql/client_plugin.h:
  Guard the inclusion of system headers.
2010-10-13 12:11:29 -03:00
Jon Olav Hauglid
b5be2fbc8d Bug #55930 Assertion `thd->transaction.stmt.is_empty() ||
thd->in_sub_stmt || (thd->state..

OPTIMIZE TABLE is not directly supported by InnoDB. Instead,
recreate and analyze of the table is done. After recreate,
the table is closed and locks are released before the table
is reopened and locks re-acquired for the analyze phase.

This assertion was triggered if OPTIMIZE TABLE failed to
acquire thr_lock locks before starting the analyze phase.
The assertion tests (among other things) that there no
active statement transaction. However, as part of acquiring
the thr_lock lock, external_lock() is called for InnoDB
tables and this causes a statement transaction to be started.
If thr_multi_lock() later fails (e.g. due to timeout),
the failure handling code causes this assert to be triggered.

This patch fixes the problem by doing rollback of the
current statement transaction in case open_ltable (used by
OPTIMIZE TABLE) fails to acquire thr_lock locks.

Test case added to lock_sync.test.
2010-10-13 16:15:28 +02:00
Dmitry Lenev
ec505e9570 Fix for bug #57422 "rpl_row_sp003 sporadically fails under
heavy load".

rpl_row_sp003.test has sporadically failed when run on machine
under heavy load or on slow hardware.

This patch fixes races in the test which were causing these
failures and also removes unnecessary 100 second wait from it.
2010-10-13 15:21:45 +04:00
Luis Soares
e760a4d8ab Automerge from mysql-5.1-bugteam into mysql-5.5-bugteam. 2010-10-13 11:08:39 +01:00
Alexander Nozdrin
609bc2c407 Reverting a patch for Bug#45445 (cannot execute procedures with thread_stack set to 128k).
Some platforms don't work with 4 * STACK_MIN_SIZE.
Thus, reverting back to 8 * STACK_MIN_SIZE and waiting for another fix.
2010-10-13 13:34:02 +04:00
Konstantin Osipov
eb882fe41b Fix Bug#56443 remove last 'mysqld_show_column_type' remains
sql/sql_show.h:
  Remove an unused declaration.
2010-10-13 12:48:08 +04:00
Luis Soares
54c308d37d BUG 55263: automerged bzr bundle from bug report into
latest mysql-5.1-bugteam.
2010-10-13 08:26:50 +01:00
Luis Soares
6739a84529 BUG 38718: automerged bzr bundle from bug report into
latest mysql-5.1-bugteam.
2010-10-13 08:25:43 +01:00
Dmitry Shulga
333434d23b Auto-merge from mysql-5.1-bugteam for bug#36742. 2010-10-13 13:27:03 +07:00
Dmitry Shulga
8169faec27 Fixed bug#36742 - GRANT hostname case handling inconsistent.
mysql-test/r/grant.result:
  It was added result for test case for bug#36742.
mysql-test/t/grant.test:
  It was added test case for bug#36742.
sql/sql_yacc.yy:
  It was added convertation of host name part of user name to lowercase.
2010-10-13 12:28:58 +07:00
Jon Olav Hauglid
231347c435 Merge from mysql-5.5-bugteam to mysql-5.5-runtime
No conflicts
2010-10-12 15:26:35 +02:00
Dmitry Shulga
cd81c833a8 A follow up for the patch for Bug#45445, increase stack size
to fix an sp-error.test failure on Sun Sparc system.
2010-10-12 19:19:33 +07:00
Alexander Nozdrin
0e1dd99c71 Remove NDB test suites from default-test-suites in MTR. 2010-10-12 14:07:49 +04:00
Alexander Nozdrin
de3d279372 Fix compilation warnings. 2010-10-12 14:07:13 +04:00
Vladislav Vaintroub
10bc97de5c Do not accept invalid INSTALL_LAYOUT parameter 2010-10-11 19:44:35 +02:00
Vasil Dimov
9f157e6ed0 Merge mysql-5.5-innodb -> mysql-5.5-bugteam 2010-10-11 18:22:22 +03:00
Luis Soares
03d36a1eff Automerged bzr bundle. 2010-10-11 16:02:32 +01:00
Luis Soares
86de24edee Fix for crash in mysqld --verbose --help while initializing option
for --init-rpl-role.

Problem: There are two variables involved in this issue,
rpl_status and rpl_role_type. The former is an array containing
the description of the possible values for the latter.

rpl_status is declared as an enumeration and is stored in a 4
bytes integer. On the other hand, my_getopt, reads enum values
into a ulong:

  *(ulong*)value= arg;

This is overwriting the memory used for rpl_role_type, 
corrupting the first entry in the array.

Fix: We fix this by re-declaring rpl_status as a ulong, so that it
has space to accommodate the value "parsed" in my_getopt .
2010-10-11 15:50:14 +01:00
Jimmy Yang
5c15a5a103 Merge from mysql-5.1-innodb to mysql-5.5-innodb 2010-10-11 05:56:44 -07:00
Jimmy Yang
820e1bc6f4 A more complete fix for bug #57345 btr_pcur_store_position abort for load
with concurrent lock/unlock tables

Approved by Marko
2010-10-11 05:36:13 -07:00
Vasil Dimov
2c986cf2ab Merge mysql-5.5-innodb -> mysql-5.5-bugteam 2010-10-11 12:55:23 +03:00
unknown
d659cc54f9 Null merge
The bug happened only on 5.1
2010-10-11 11:23:51 +08:00
unknown
42f8d2f249 Bug#56226 Table map set to 0 after altering MyISAM table
After ALTER TABLE which changed only table's metadata, row-based
binlog sometimes got corrupted since the tablemap was unexpectedly
set to 0 for subsequent updates to the same table.

ALTER TABLE which changed only table's metadata always reset
table_map_id for the table share to 0. Despite the fact that
0 is a valid value for table_map_id, this step caused problems
as it could have created situation in which we had more than
one table share with table_map_id equal 0. If more than one
table with table_map_id are 0 were updated in the same statement,
updates to these different tables were written into the same
rows event. This caused slave server to crash.

This bug happens only on 5.1. It doesn't affect 5.5+.

This patch solves this problem by ensuring that ALTER TABLE
statements which change metadata only never reset table_map_id
to 0. To do this it changes reopen_table() to correctly use
refreshed table_map_id value instead of using the old one/
resetting it.


mysql-test/suite/rpl/r/rpl_alter.result:
  Add test for BUG#56226
mysql-test/suite/rpl/t/rpl_alter.test:
  Add test for BUG#56226
2010-10-11 11:08:49 +08:00