Commit graph

61141 commits

Author SHA1 Message Date
Dmitry Lenev
cb7fe1347c Merged recent changes from mysql-next-mr-bugfixing into
mysql-next-4284 tree.
2010-02-26 16:06:33 +03:00
Jon Olav Hauglid
7fd30bf610 Bug #51240 ALTER TABLE of a locked MERGE table fails
The problem was that ALTER TABLE on a merge table which was locked 
using LOCK TABLE ... WRITE, by mistake gave 
ER_TABLE_NOT_LOCKED_FOR_WRITE.

During opening of the table to be ALTERed, open_table() tried to
get an upgradable metadata lock. In LOCK TABLEs mode, this lock
must already exist (i.e. taken by LOCK TABLE) as new locks of this
type cannot be acquired for fear of deadlock. So in LOCK TABLEs
mode, open_table() tried to find an existing upgradable lock for
the table to be altered.

The problem was that open_table() also tried to find upgradable
metadata locks for children of merge tables even if no such
locks are needed to execute ALTER TABLE on merge tables.

This patch fixes the problem by making sure that open tables code
only searches for upgradable metadata locks for the merge table
and not for the merge children tables. 

The patch also fixes a related bug where an upgradable metadata
lock was aquired outside of LOCK TABLEs mode even if the table in
question was temporary. This bug meant that LOCK TABLES or DDL on
temporary tables by mistake could be blocked/aborted by locks held
on base tables with the same table name by other connections.

Test cases added to merge.test and lock_multi.test.
2010-02-26 13:40:25 +01:00
Jon Olav Hauglid
a42cbe060c Bug #51336 Assert in reload_acl_and_cache during RESET QUERY CACHE
Attempts to execute RESET statements within a transaction that
had acquired metadata locks, led to an assertion failure on 
debug servers. This bug didn't cause any problems on release
builds.

The triggered assert is designed to check that caches are not
flushed or reset while having active transactions. It is triggered
if acquired metadata locks exist that are not from LOCK TABLE or
HANDLER statements.

In this case it was triggered by RESET QUERY CACHE while having
an active transaction that had acquired locks. The reason the
assertion was triggered, was that RESET statements, unlike the
similar FLUSH statements, was not causing an implicit commit.

This patch fixes the problem by making sure RESET statements
commit the current transaction before executing. The commit
causes acquired metadata locks to be released, preventing the
assertion from being triggered.

Incompatible change: This patch changes RESET statements so
that they cause an implicit commit.

Test case added to query_cache.test.
2010-02-26 10:58:33 +01:00
Alexander Nozdrin
2f4e94d7c2 Auto-merge from mysql-next-mr. 2010-02-26 09:13:50 +03:00
Alexander Nozdrin
242a5a945f Disable rpl_semi_sync on Windows due to Bug 49557. 2010-02-26 09:06:43 +03:00
Vladislav Vaintroub
0b627c7163 merge 2010-02-26 01:08:29 +01:00
Vladislav Vaintroub
3fcd854852 Bug#51502: building with cmake creates an invalid mysqld_safe.
The problem was incorrect escaping used inside a strnig : in \"$MYSQLD\" was written as "\MYSQL\" 
(backslash and quote characters transposed), when defining FIND_PROC  variable for BSD or SysV
style "ps" command-

Additionally fixed obvious code duplication and random naming in CHECK_PID test.
2010-02-25 21:40:15 +01:00
Alexander Nozdrin
c358da1b5c Null-merge from mysql-trunk-bugfixing. 2010-02-25 22:53:07 +03:00
Alexander Nozdrin
a77f929716 Null-merge from mysql-next-mr. 2010-02-25 22:49:59 +03:00
Alexander Nozdrin
5143331ca4 Null-merge from mysql-trunk. 2010-02-25 22:49:44 +03:00
Alexander Nozdrin
49e7114fdb Fix default.conf. 2010-02-25 22:43:05 +03:00
Alexander Nozdrin
b1fbd77e38 Fix default.conf. 2010-02-25 22:42:01 +03:00
Jon Olav Hauglid
3f1a9baf0b Bug #51355 handler stmt cause assertion in
bool MDL_context::try_acquire_lock(MDL_request*)

This assert was triggered in the following way:
1) HANDLER OPEN t1 from connection 1
2) DROP TABLE t1 from connection 2. This will block due to the metadata lock
held by the open handler in connection 1.
3) DML statement (e.g. INSERT) from connection 1. This will close the table
opened by the HANDLER in 1) and release its metadata lock. This is done due
to the pending exclusive metadata lock from 2). 
4) DROP TABLE t1 from connection 2 now completes and removes table t1.
5) HANDLER READ from connection 1. Since the handler table was closed in 3),
the handler code will try to reopen the table. First a new metadata lock on
t1 will be granted before the command fails since the table was removed in 4).
6) HANDLER READ from connection 1. This caused the assert.

The reason for the assert was that the MDL_request's pointer to the lock
ticket was not reset when the statement failed. HANDLER READ then tried to
acquire a lock using the same MDL_request object, triggering the assert.
This bug was only noticeable on debug builds and did not cause any problems
on release builds.

This patch fixes the problem by assuring that the pointer to the metadata 
lock ticket is reset when reopening of handler tables fails.

Test case added to handler.inc
2010-02-25 18:08:12 +01:00
Vladislav Vaintroub
46800354ab Workaround crash with dtraced shared libraries under GCC 3.4.6 on 32 bit Solaris.
Crash happens in dlopen() code when trying to load the library. Crash does not happen when library is 
not DTrace instrumented . Additionally, crash does not happen with default Solaris 10 GCC 3.4.3 and
it does not happen if main executable is instrumented.

So , just check for this specific situation (32 bit, GCC3.4.6 , Solaris) and disable Dtrace in shared libraries.
We have only single plugin so far that is instrumented (ha_example)
2010-02-25 17:31:31 +01:00
Jon Olav Hauglid
8a5956c928 merge from mysql-next-mr-bugfixing 2010-02-25 13:29:14 +01:00
Vladislav Vaintroub
527ff458aa On Solaris, overwrite CMake's proposed thread library -lthread with -lpthread.
-lthread works fine in most cases, but at least with gcc 3.4.6 on x86, dlopen() crashes when libpthread is not used. 
Note : the workaround existed prior and did not work  since CMAKE_THREADS_LIBS_INIT was already
 in cache.  Now, use SET(.. CACHE FORCE)  to overwrite the cached value.
2010-02-25 10:57:23 +01:00
Vladislav Vaintroub
aa52602008 merge 2010-02-24 20:11:34 +01:00
Jonathan Perkin
46b22d5e5d Some CMake packaging fixes:
- Remove INSTALL-BINARY from installed docs directory, we provide a copy
   in the root directory (but perhaps this should be revisited later).

 - Disable audit_null and daemon_example plugins.

 - Fix the docs directory.

 - Remove mysql-test/Makefile.in

 - Build and install mysql_tzinfo_to_sql

 - Remove share/charsets/languages.html
2010-02-24 19:19:24 +00:00
Vladislav Vaintroub
bcebd97306 #51466 : Source packages are broken with cmake in a cmake-agnostic environment
In the worst case possible scenario (no bzr, in-source build),
make dist produced a package that compiled ok with autotools
but failed to package because extra make_binary_distribution was
found in source package and was not built. make_binary_distribution
contained paths of the build machine.

Fix:  exclude some scripts that are produced in cmake build. 
Note that there is no good general fix for it in this specific scenario.
it is advisable to build source packages out of source or in bzr repo.
2010-02-24 20:07:05 +01:00
Vladislav Vaintroub
60c7cc878f Fix --with-ssl mappping (--with-ssl=dir should be "yes" or
actually "system"), --with-ssl should be "bundled".

Fixes error on sol-gcc-x86, where build machine had  openssl but not
the test box.
2010-02-24 19:51:45 +01:00
Jon Olav Hauglid
e60ef89317 Followup to Bug#45225 Locking: hang if drop table with no timeout
This patch prevents system threads and system table accesses from
using user-specified values for "lock_wait_timeout". Instead all
such accesses are done using the default value (1 year).

This prevents background tasks (such as replication, events, 
accessing stored function definitions, logging, reading time-zone
information, etc.) from failing in cases where the global value
of "lock_wait_timeout" is set very low.

The patch also simplifies the open tables API. Rather than adding
another convenience function for opening and locking system tables,
this patch removes most of the existing convenience functions for
open_and_lock_tables_derived(). Before, open_and_lock_tables() was
a convenience function that enforced derived tables handling, while
open_and_lock_tables_derived() was the main function where derived
tables handling was optional. Now, this convencience function is
gone and the main function is renamed to open_and_lock_tables(). 

No test case added as it would have required the use of --sleep to
check that system threads and system tables have a different timeout
value from the user-specified "lock_wait_timeout" system variable.
2010-02-24 18:04:00 +01:00
Alexander Nozdrin
a54c49b074 Update result file for funcs_1.storedproc. 2010-02-24 15:53:09 +03:00
Marc Alff
f5070c2616 Fixed tests for windows 2010-02-24 00:22:19 -07:00
Vladislav Vaintroub
5994f28470 merge 2010-02-24 02:20:55 +01:00
Vladislav Vaintroub
0faa8ef87a Fix typo
HAVE_IBGCC_ATOMIC_BUILTINS=>HAVE_IB_GCC_ATOMIC_BUILTINS.
Due to the typo, detection of atomics was broken. 
It also lead to valgrind error during shutdown 
(access to freed memory),which is likely present 
in all builds where atomics are not used.
2010-02-24 02:06:08 +01:00
Marc Alff
c7fa0c1b34 Bug#10143 Perror not showing error description
Backport to 5.5.99
2010-02-23 17:45:49 -07:00
Vladislav Vaintroub
10ca1ec054 merge 2010-02-23 23:30:36 +01:00
Vladislav Vaintroub
0f3f6da624 Bug#43201: Post-fix. Set thread stack address at the start of each query.
Reason: implementation of send/reap in mysqltest uses the same "embedded" connection in a thread different from current, so thread stack has to change when connection is used in different  OS thread..
2010-02-23 20:25:38 +01:00
Marc Alff
e96932f49e Bug#31767 DROP FUNCTION name resolution
Backport to 5.5.99
2010-02-23 11:43:26 -07:00
Alexander Nozdrin
1dd2f90faf Auto-merge from mysql-next-mr-bugfixing. 2010-02-23 18:49:21 +03:00
Vladislav Vaintroub
0a8a9a3fc0 merge 2010-02-23 15:54:52 +01:00
Vladislav Vaintroub
e56246390b remove whitespace at the end of line in Makefile.am, to keep BUILD/autorun.sh silent 2010-02-23 14:28:06 +01:00
Alexander Nozdrin
00a907d050 Add ignore pattern for valgrind messages. 2010-02-23 16:18:24 +03:00
Vladislav Vaintroub
b87ed568b4 merge, CMake bugfixes, remove sp-error from experimental 2010-02-23 13:50:45 +01:00
Vladislav Vaintroub
e451c5023d Bug#43201 : Stack overrun when running sp-error test.
It appears that stack overflow checks for recusrive stored procedure
calls, that run in the normal server, did not work in embedded and were
 dummified with preprocessor magic( #ifndef EMBEDDED_SERVER ).
      
 The fix is to remove ifdefs, there is no reason not to run overflow checks
 and crash in deeply recursive calls. 
      
 Note: Start of the stack (thd->thread_stack variable) in embedded is not
necessarily exact but stil provides the best guess. Unless the caller of 
mysql_read_connect()   is already deep in the stack, thd->thread_stack 
variable should approximate stack  start address well.
2010-02-23 12:48:26 +01:00
Vladislav Vaintroub
a4af6e8708 Bug #51414: Arguments with embedded spaces are not correctly handled by configure wrapper.
The bug was that ./configure was  passing paramers to subscripts as $@, and to handle embedded spaces it needs
to be quoted as "$@".
This resulting into a bug when ./configure was called e.g with CFLAGS='-m64 -Xstrconst'..

Additionally, fixed cmake/configure.pl did not handle environment variables passed on the command line.
this is fixed in this push
2010-02-23 12:32:57 +01:00
Jonathan Perkin
1224b64deb Merge to mysql-next-mr-bugfixing 2010-02-23 11:02:27 +00:00
Jonathan Perkin
704d09691c Support non-GPL builds. 2010-02-23 09:53:48 +00:00
Vladislav Vaintroub
71f8615fd6 Fix BUILD/compile-pentium64-xxx scripts, when ccache is present.
Fix contains of :
-  splitting CC/CXX if there are more that 2 space-delimited tokens, add the rest to CFLAGS
(in this case CC was set to "ccache gcc --pipe", and this broke recognition of gcc compiler
as CMake understands CC consisting of 2 space delimited tokens but not more)

-  add my_new.cc to mysys fle list if C++ operator new is not found. Always, not only
for gcc  (the original problem was that missing operator new when compiling with CXX=gcc)
2010-02-22 20:55:27 +01:00
Vladislav Vaintroub
c584f3d609 Bug#51393 : remove mtr_fix_privilege_tables from MTR v1 2010-02-22 19:39:36 +01:00
Alexander Nozdrin
0ceeeafe85 Manual merge from mysql-next-mr.
Conflicts:
  - mysql-test/r/mysqld--help-notwin.result
  - mysql-test/r/mysqld--help-win.result
2010-02-22 16:22:31 +03:00
Alexander Nozdrin
4836199d70 Fix default.conf. 2010-02-22 14:48:38 +03:00
Alexander Nozdrin
9d626aa5ff Make sp-error.test experimental on Windows due to Bug 43201.
The patch is ready and will be pushed via -bugfixing.
2010-02-22 14:40:41 +03:00
Luis Soares
7a9f2e57e3 BUG#50364: Automerge from mysql-trunk-bugfixing. 2010-02-22 00:27:46 +00:00
Luis Soares
e210d409d9 Post-push fix for BUG#50364.
There was an erroneous parameter when calling flush_master_info
from write_ignored_events_info_to_relay_log which could lead to a
server crash. This happens because the I/O thread releases the
log_lock before calling the flush_master_info.

Set the function to call flush_master_info with third parameter
to true, so that the mutex is properly taken.
2010-02-22 00:26:29 +00:00
Alexander Nozdrin
eb79ef1535 Auto-merge from mysql-next-mr. 2010-02-21 22:36:05 +03:00
Alexander Nozdrin
310c949e3d Auto-merge from mysql-next-mr. 2010-02-21 21:34:09 +03:00
Vladislav Vaintroub
3dffd5398c Do not run shared memory sys_vars tests in embedded 2010-02-21 15:10:52 +01:00
Vladislav Vaintroub
740c7cf4fa Install static client and embedded debug libraries 2010-02-20 20:40:03 +01:00
Vladislav Vaintroub
5f833a39ed extend configure-like perl wrapper for INSTALL_FOODIR variables 2010-02-20 14:17:55 +01:00