Commit graph

46121 commits

Author SHA1 Message Date
anozdrin/alik@ibm.
0c4834b1fa Disable random-failing IM tests. 2007-05-14 13:04:59 +04:00
kostja@vajra.(none)
523410723a Merge vajra.(none):/opt/local/work/mysql-5.0-runtime
into  vajra.(none):/opt/local/work/mysql-5.1-runtime
2007-05-14 10:58:22 +04:00
kostja@vajra.(none)
162e9b9866 Fix a warning. 2007-05-14 10:56:23 +04:00
dlenev@mockturtle.local
343eef67ba Merge mockturtle.local:/home/dlenev/src/mysql-5.0-cts-3
into  mockturtle.local:/home/dlenev/src/mysql-5.1-cts-3
2007-05-12 00:07:22 +04:00
dlenev@mockturtle.local
25114c7d09 Added missing DBUG_VOID_RETURN to the sp_head::init_sp_name() method. 2007-05-12 00:03:50 +04:00
dlenev@mockturtle.local
86e91a0a90 Merge mockturtle.local:/home/dlenev/src/mysql-5.0-cts-3
into  mockturtle.local:/home/dlenev/src/mysql-5.1-cts-3
2007-05-11 22:16:09 +04:00
dlenev@mockturtle.local
d5dbdd9866 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  mockturtle.local:/home/dlenev/src/mysql-5.0-cts-3
2007-05-11 21:55:55 +04:00
dlenev@mockturtle.local
3b195fd629 Merge bk-internal.mysql.com:/home/bk/mysql-5.1-runtime
into  mockturtle.local:/home/dlenev/src/mysql-5.1-cts-3
2007-05-11 21:52:11 +04:00
dlenev@mockturtle.local
4cafc8eeec Fix for:
Bug #20662 "Infinite loop in CREATE TABLE IF NOT EXISTS ... SELECT
              with locked tables"
  Bug #20903 "Crash when using CREATE TABLE .. SELECT and triggers"
  Bug #24738 "CREATE TABLE ... SELECT is not isolated properly"
  Bug #24508 "Inconsistent results of CREATE TABLE ... SELECT when
              temporary table exists"

Deadlock occured when one tried to execute CREATE TABLE IF NOT
EXISTS ... SELECT statement under LOCK TABLES which held
read lock on target table.
Attempt to execute the same statement for already existing
target table with triggers caused server crashes.
Also concurrent execution of CREATE TABLE ... SELECT statement
and other statements involving target table suffered from
various races (some of which might've led to deadlocks).
Finally, attempt to execute CREATE TABLE ... SELECT in case
when a temporary table with same name was already present
led to the insertion of data into this temporary table and
creation of empty non-temporary table.
 
All above problems stemmed from the old implementation of CREATE
TABLE ... SELECT in which we created, opened and locked target
table without any special protection in a separate step and not
with the rest of tables used by this statement.
This underminded deadlock-avoidance approach used in server
and created window for races. It also excluded target table
from prelocking causing problems with trigger execution.

The patch solves these problems by implementing new approach to
handling of CREATE TABLE ... SELECT for base tables.
We try to open and lock table to be created at the same time as
the rest of tables used by this statement. If such table does not
exist at this moment we create and place in the table cache special
placeholder for it which prevents its creation or any other usage
by other threads.
We still use old approach for creation of temporary tables.

Note that we have separate fix for 5.0 since there we use slightly
different less intrusive approach.
2007-05-11 21:51:03 +04:00
dlenev@mockturtle.local
8b93e52e92 Fix for:
Bug #20662 "Infinite loop in CREATE TABLE IF NOT EXISTS ... SELECT
              with locked tables"
  Bug #20903 "Crash when using CREATE TABLE .. SELECT and triggers"
  Bug #24738 "CREATE TABLE ... SELECT is not isolated properly"
  Bug #24508 "Inconsistent results of CREATE TABLE ... SELECT when
              temporary table exists"
 
Deadlock occured when one tried to execute CREATE TABLE IF NOT
EXISTS ... SELECT statement under LOCK TABLES which held
read lock on target table.
Attempt to execute the same statement for already existing
target table with triggers caused server crashes.
Also concurrent execution of CREATE TABLE ... SELECT statement
and other statements involving target table suffered from
various races (some of which might've led to deadlocks).
Finally, attempt to execute CREATE TABLE ... SELECT in case
when a temporary table with same name was already present
led to the insertion of data into this temporary table and
creation of empty non-temporary table.
 
All above problems stemmed from the old implementation of CREATE
TABLE ... SELECT in which we created, opened and locked target
table without any special protection in a separate step and not
with the rest of tables used by this statement.
This underminded deadlock-avoidance approach used in server
and created window for races. It also excluded target table
from prelocking causing problems with trigger execution.
  
The patch solves these problems by implementing new approach to
handling of CREATE TABLE ... SELECT for base tables.
We try to open and lock table to be created at the same time as
the rest of tables used by this statement. If such table does not
exist at this moment we create and place in the table cache special
placeholder for it which prevents its creation or any other usage
by other threads.

We still use old approach for creation of temporary tables.

Also note that we decided to postpone introduction of some tests
for concurrent behaviour of CREATE TABLE ... SELECT till 5.1.
The main reason for this is absence in 5.0 ability to set @@debug
variable at runtime, which can be circumvented only by using several
test files with individual .opt files. Since the latter is likely
to slowdown test-suite unnecessary we chose not to push this tests
into 5.0, but run them manually for this version and later push
their optimized version into 5.1
2007-05-11 20:33:13 +04:00
kostja@vajra.(none)
6287c9d418 Merge vajra.(none):/opt/local/work/mysql-5.0-runtime
into  vajra.(none):/opt/local/work/mysql-5.1-runtime
2007-05-11 17:41:07 +04:00
kostja@vajra.(none)
ad609d6e80 Cleanup: now that we have Lex_input_stream, finish the transition
by moving yet another relevant flag to it from struct LEX.
2007-05-11 17:26:12 +04:00
kostja@vajra.(none)
83449d9f9f Merge vajra.(none):/opt/local/work/mysql-5.0-21483
into  vajra.(none):/opt/local/work/mysql-5.1-runtime
2007-05-10 18:29:07 +04:00
kostja@vajra.(none)
0d6e93e0c1 Follow the coding style with class names. 2007-05-10 18:27:36 +04:00
kostja@vajra.(none)
5a4a26efad Merge bk-internal.mysql.com:/home/bk/mysql-5.1-runtime
into  vajra.(none):/opt/local/work/mysql-5.1-runtime
2007-05-10 17:55:18 +04:00
kostja@vajra.(none)
4b47e1df83 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  vajra.(none):/opt/local/work/mysql-5.0-21483
2007-05-10 17:54:55 +04:00
thek@adventure.(none)
518f71bdfa Fixed error from merge misstake; missing line in debug statement. 2007-05-10 15:03:38 +02:00
thek@adventure.(none)
563a626f33 Corrected merge error; missing line in debug statement. 2007-05-10 14:54:55 +02:00
kostja@vajra.(none)
827fae79f8 Merge vajra.(none):/opt/local/work/mysql-5.0-21483
into  vajra.(none):/opt/local/work/mysql-5.1-runtime
2007-05-10 16:32:39 +04:00
kostja@vajra.(none)
41239f1ff0 No semantical change. Move checks of compatibility
of requested lock type and requested table operation from 
mysql_insert into a separate function.
2007-05-10 16:18:01 +04:00
thek@adventure.(none)
4144dc7262 Merge adventure.(none):/home/thek/Development/cpp/bug27792/my50-bug27792
into  adventure.(none):/home/thek/Development/cpp/mysql-5.0-runtime
2007-05-08 12:18:36 +02:00
thek@adventure.(none)
770219c15a Merge adventure.(none):/home/thek/Development/cpp/bug27792/my51-bug27792
into  adventure.(none):/home/thek/Development/cpp/mysql-5.1-runtime
2007-05-08 12:02:38 +02:00
thek@adventure.(none)
902b02ec0b Corrected test case for 5.1 requirements 2007-05-08 11:56:47 +02:00
thek@adventure.(none)
6927ddd85a Merge adventure.(none):/home/thek/Development/cpp/bug27792/my50-bug27792
into  adventure.(none):/home/thek/Development/cpp/bug27792/my51-bug27792
2007-05-08 11:29:07 +02:00
thek@adventure.(none)
5e774747bc 4.1 -> 5.0 Manual merge for Bug #27792 2007-05-08 11:24:07 +02:00
thek@adventure.(none)
4744b0b91e Merge adventure.(none):/home/thek/Development/cpp/bug27792/my41-bug27792
into  adventure.(none):/home/thek/Development/cpp/bug27792/my50-bug27792
2007-05-08 09:36:21 +02:00
thek@adventure.(none)
4ea05eae31 Bug #27792 query cache returns wrong result, with certain system variables
- Queries in the query cache are identified by the individual 
   characters in the query statement, the current database and 
   the current environment expressed as a set of system variable
   flags.
 - Since the set of environment flags didn't properly describe the
   current environment unexpected results were returned from the 
   query cache.
 - Query cache is now cleared when the variable ft_boolean_syntax is 
   updated.
 - An identification flag for the variable default_week_format is 
   added to the query cache record.
 
Thanks to Martin Friebe who has supplied significant parts of this patch.
2007-05-08 09:09:25 +02:00
thek@adventure.(none)
889a56e07c Merge adventure.(none):/home/thek/Development/cpp/bug26977/my50-bug26977
into  adventure.(none):/home/thek/Development/cpp/mysql-5.0-runtime
2007-05-07 10:32:00 +02:00
thek@adventure.(none)
b09ded4190 Merge adventure.(none):/home/thek/Development/cpp/bug26977/my51-bug26977
into  adventure.(none):/home/thek/Development/cpp/mysql-5.1-runtime
2007-05-07 10:29:08 +02:00
thek@adventure.(none)
62a34703c4 Merge adventure.(none):/home/thek/Development/cpp/bug26977/my50-bug26977
into  adventure.(none):/home/thek/Development/cpp/bug26977/my51-bug26977
2007-05-07 10:26:20 +02:00
thek@adventure.(none)
ae10d3d9e2 Bug#26977 exception handlers never hreturn
- In some cases, flow control optimization implemented in sp::optimize
    removes hreturn instructions, causing SQL exception handlers to:
      * never return
      * execute wrong logic
  - This patch overrides default short cut optimization on hreturn instructions
    to avoid this problem.
2007-05-07 10:23:10 +02:00
malff/marcsql@weblab.(none)
e22cbec571 Merge weblab.(none):/home/marcsql/TREE/mysql-5.1-base
into  weblab.(none):/home/marcsql/TREE/mysql-5.1-rt-merge
2007-05-02 12:11:25 -06:00
malff/marcsql@weblab.(none)
4b0d37362b Merge weblab.(none):/home/marcsql/TREE/mysql-5.0-base
into  weblab.(none):/home/marcsql/TREE/mysql-5.0-rt-merge
2007-05-02 09:59:39 -06:00
joerg@trift2.
11484e3319 "ndb_size.tmpl" is gone (NDB change 2007-04-24), so remove it from the spec file. 2007-05-02 17:10:41 +02:00
joerg@trift2.
8a08eec81a Merge trift2.:/MySQL/M50/spec-5.0
into  trift2.:/MySQL/M51/spec-5.1
2007-05-02 16:57:58 +02:00
joerg@trift2.
fc8b2783f0 Merge trift2.:/MySQL/M41/spec-4.1
into  trift2.:/MySQL/M50/spec-5.0
2007-05-02 16:53:54 +02:00
joerg@trift2.
f32c261973 RPM spec file error: Trailing '*' to cover '.gz' for a man page was missing. 2007-05-02 16:51:15 +02:00
joerg@trift2.
6ee2fa0ff5 Manual merge: Makefile lines must start with tab, not blank. 2007-05-02 14:16:21 +02:00
joerg@trift2.
f486530d2d Merge trift2.:/MySQL/M50/mysql-5.0
into  trift2.:/MySQL/M51/mysql-5.1
2007-05-02 14:08:43 +02:00
joerg@trift2.
bb2996f487 Format corrections for various "Makefile.am": Leading tab, no trailing blank. 2007-05-02 14:01:49 +02:00
tsmith@quadxeon.mysql.com
b4b44b0b6b Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/50
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/51
2007-05-01 20:07:37 +02:00
tsmith@quadxeon.mysql.com
fc7fea0cc3 mysql-test-run.pl:
Run master init scripts also for --embedded-server
2007-05-01 20:05:09 +02:00
tsmith@quadxeon.mysql.com
b0007916c2 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/51
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/51
2007-05-01 18:13:29 +02:00
tsmith@quadxeon.mysql.com
90468a7274 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/50
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/50
2007-05-01 18:12:04 +02:00
tomas@whalegate.ndb.mysql.com
2a4a7ffde2 Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.1
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-single-user
2007-05-01 13:24:30 +02:00
tsmith@quadxeon.mysql.com
1462967aba Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/51
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/51
2007-05-01 12:42:22 +02:00
tsmith@quadxeon.mysql.com
91a5830729 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/50
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/50
2007-05-01 12:40:43 +02:00
holyfoot/hf@hfmain.(none)
53cdf37af1 Merge mysql.com:/d2/hf/mrg/mysql-5.0-opt
into  mysql.com:/d2/hf/mrg/mysql-5.1-opt
2007-05-01 13:38:59 +05:00
tsmith@quadxeon.mysql.com
13cfd9471d Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/50
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/51
2007-05-01 10:38:19 +02:00
tsmith@quadxeon.mysql.com
9aad848a86 Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-5.1-maint
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/51
2007-05-01 06:30:48 +02:00