Commit graph

20625 commits

Author SHA1 Message Date
serg@janus.mylan
6f689c91d8 Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  janus.mylan:/usr/home/serg/Abk/mysql-5.1
2007-11-19 17:12:49 +01:00
istruewing@stella.local
81fc036f0c Merge stella.local:/home2/mydev/mysql-5.1-ateam
into  stella.local:/home2/mydev/mysql-5.1-axmrg
2007-11-19 11:08:02 +01:00
istruewing@stella.local
3dc725882f Merge bk-internal.mysql.com:/home/bk/mysql-5.1-engines
into  stella.local:/home2/mydev/mysql-5.1-bug26379-8
2007-11-18 23:17:54 +01:00
istruewing@stella.local
b6831e182b Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
corrupts a MERGE table

Post-pushbuild fix for a Valgrind warning.
2007-11-18 20:28:37 +01:00
tnurnberg@white.intern.koehntopp.de
7c0c9db590 Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.1-maint
into  mysql.com:/misc/mysql/24907/51-24907
2007-11-17 19:44:19 +01:00
tnurnberg@mysql.com/white.intern.koehntopp.de
909fcea6e1 Bug#24907: unpredictable (display) precission, if input precission increases
post-merge fixes: some things work differently in 5.1
2007-11-17 19:42:16 +01:00
tnurnberg@white.intern.koehntopp.de
3c0f1ef341 Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  mysql.com:/misc/mysql/24907/50-24907
2007-11-17 19:13:27 +01:00
tnurnberg@white.intern.koehntopp.de
18fc735701 Merge mysql.com:/misc/mysql/24907/50-24907
into  mysql.com:/misc/mysql/24907/51-24907
2007-11-17 19:12:36 +01:00
tnurnberg@mysql.com/white.intern.koehntopp.de
6889c82997 Bug#24907: unpredictable (display) precission, if input precission increases
Server failed in assert() when we tried to create a DECIMAL() temp field
with a scale of more than the allowed 30. Now we limit the scale to the
allowed maximum. A truncation warning is thrown as necessary.
2007-11-17 19:05:31 +01:00
istruewing@stella.local
89bb56cdbe Merge stella.local:/home2/mydev/mysql-5.1-ateam
into  stella.local:/home2/mydev/mysql-5.1-axmrg
2007-11-17 09:21:09 +01:00
ramil/ram@mysql.com/ramil.myoffice.izhnet.ru
11115f1bfd Fix for bug #32260: User variables in query cause server crash
Problem: there's no guarantee that the user variable item's result_field
is assigned when we're adjusting its table read map.
  
Fix: check the result_field before using it.
2007-11-17 11:20:50 +04:00
istruewing@stella.local
fffe7f41db Bug#32443 - trigger.test produces warnings files
Wrong syntax for mysqltest commands was used in test file.

Fixed test.
2007-11-16 18:05:30 +01:00
mkindahl@dl145h.mysql.com
6baad48043 Merge dl145h.mysql.com:/data0/mkindahl/mysql-5.1-new-rpl
into  dl145h.mysql.com:/data0/mkindahl/mysql-5.1-rpl-merge
2007-11-16 15:56:24 +01:00
mkindahl@dl145h.mysql.com
e0ae105055 Bug#32435:
DROP DATABASE statement writes changes to mysql.proc table under RBR

When replicating a DROP DATABASE statement with a database holding
stored procedures, the changes to the mysql.proc table was recorded
in the binary log under row-based replication.

With this patch, the thread uses statement-logging format for the
duration of the DROP DATABASE statement. The logging format is
(already) reset at the end of the statement, so no additional code
for resetting the logging format is necessary.
2007-11-16 15:55:22 +01:00
istruewing@stella.local
6d06272e8a Merge stella.local:/home2/mydev/mysql-5.1-amain
into  stella.local:/home2/mydev/mysql-5.1-axmrg
2007-11-16 14:07:59 +01:00
istruewing@stella.local
a0aad59f03 Merge stella.local:/home2/mydev/mysql-5.0-amain
into  stella.local:/home2/mydev/mysql-5.0-axmrg
2007-11-16 13:27:23 +01:00
tomas@whalegate.ndb.mysql.com
9eb3a99e67 Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.1
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb-merge
2007-11-16 11:15:53 +01:00
joerg@trift2.
07b6bec842 Merge trift2.:/MySQL/M51/mysql-5.1
into  trift2.:/MySQL/M51/push-5.1
2007-11-16 11:12:13 +01:00
joerg@trift2.
61a9d77784 Merge trift2.:/MySQL/M50/mysql-5.0
into  trift2.:/MySQL/M50/push-5.0
2007-11-16 10:42:32 +01:00
malff@lambda.hsd1.co.comcast.net.
4ca38aff84 Merge lambda.hsd1.co.comcast.net.:/home/malff/TREE/mysql-5.1-base
into  lambda.hsd1.co.comcast.net.:/home/malff/TREE/mysql-5.1-rt-merge
2007-11-15 14:17:04 -07:00
istruewing@stella.local
0605274155 Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
corrupts a MERGE table
Bug 26867 - LOCK TABLES + REPAIR + merge table result in
            memory/cpu hogging
Bug 26377 - Deadlock with MERGE and FLUSH TABLE
Bug 25038 - Waiting TRUNCATE
Bug 25700 - merge base tables get corrupted by
            optimize/analyze/repair table
Bug 30275 - Merge tables: flush tables or unlock tables
            causes server to crash
Bug 19627 - temporary merge table locking
Bug 27660 - Falcon: merge table possible
Bug 30273 - merge tables: Can't lock file (errno: 155)

The problems were:

Bug 26379 - Combination of FLUSH TABLE and REPAIR TABLE
                corrupts a MERGE table

  1. A thread trying to lock a MERGE table performs busy waiting while
     REPAIR TABLE or a similar table administration task is ongoing on
     one or more of its MyISAM tables.
  
  2. A thread trying to lock a MERGE table performs busy waiting until all
     threads that did REPAIR TABLE or similar table administration tasks
     on one or more of its MyISAM tables in LOCK TABLES segments do UNLOCK
     TABLES. The difference against problem #1 is that the busy waiting
     takes place *after* the administration task. It is terminated by
     UNLOCK TABLES only.
  
  3. Two FLUSH TABLES within a LOCK TABLES segment can invalidate the
     lock. This does *not* require a MERGE table. The first FLUSH TABLES
     can be replaced by any statement that requires other threads to
     reopen the table. In 5.0 and 5.1 a single FLUSH TABLES can provoke
     the problem.

Bug 26867 - LOCK TABLES + REPAIR + merge table result in
            memory/cpu hogging

  Trying DML on a MERGE table, which has a child locked and
  repaired by another thread, made an infinite loop in the server.

Bug 26377 - Deadlock with MERGE and FLUSH TABLE

  Locking a MERGE table and its children in parent-child order
  and flushing the child deadlocked the server.

Bug 25038 - Waiting TRUNCATE

  Truncating a MERGE child, while the MERGE table was in use,
  let the truncate fail instead of waiting for the table to
  become free.

Bug 25700 - merge base tables get corrupted by
            optimize/analyze/repair table

  Repairing a child of an open MERGE table corrupted the child.
  It was necessary to FLUSH the child first.

Bug 30275 - Merge tables: flush tables or unlock tables
            causes server to crash

  Flushing and optimizing locked MERGE children crashed the server.

Bug 19627 - temporary merge table locking

  Use of a temporary MERGE table with non-temporary children
  could corrupt the children.

  Temporary tables are never locked. So we do now prohibit
  non-temporary chidlren of a temporary MERGE table.

Bug 27660 - Falcon: merge table possible

  It was possible to create a MERGE table with non-MyISAM children.

Bug 30273 - merge tables: Can't lock file (errno: 155)

  This was a Windows-only bug. Table administration statements
  sometimes failed with "Can't lock file (errno: 155)".

These bugs are fixed by a new implementation of MERGE table open.

When opening a MERGE table in open_tables() we do now add the
child tables to the list of tables to be opened by open_tables()
(the "query_list"). The children are not opened in the handler at
this stage.

After opening the parent, open_tables() opens each child from the
now extended query_list. When the last child is opened, we remove
the children from the query_list again and attach the children to
the parent. This behaves similar to the old open. However it does
not open the MyISAM tables directly, but grabs them from the already
open children.

When closing a MERGE table in close_thread_table() we detach the
children only. Closing of the children is done implicitly because
they are in thd->open_tables.

For more detail see the comment at the top of ha_myisammrg.cc.

Changed from open_ltable() to open_and_lock_tables() in all places
that can be relevant for MERGE tables. The latter can handle tables
added to the list on the fly. When open_ltable() was used in a loop
over a list of tables, the list must be temporarily terminated
after every table for open_and_lock_tables().
table_list->required_type is set to FRMTYPE_TABLE to avoid open of
special tables. Handling of derived tables is suppressed.
These details are handled by the new function
open_n_lock_single_table(), which has nearly the same signature as
open_ltable() and can replace it in most cases.

In reopen_tables() some of the tables open by a thread can be
closed and reopened. When a MERGE child is affected, the parent
must be closed and reopened too. Closing of the parent is forced
before the first child is closed. Reopen happens in the order of
thd->open_tables. MERGE parents do not attach their children
automatically at open. This is done after all tables are reopened.
So all children are open when attaching them.

Special lock handling like mysql_lock_abort() or mysql_lock_remove()
needs to be suppressed for MERGE children or forwarded to the parent.
This depends on the situation. In loops over all open tables one
suppresses child lock handling. When a single table is touched,
forwarding is done.

Behavioral changes:
===================

This patch changes the behavior of temporary MERGE tables.
Temporary MERGE must have temporary children.
The old behavior was wrong. A temporary table is not locked. Hence
even non-temporary children were not locked. See
Bug 19627 - temporary merge table locking.

You cannot change the union list of a non-temporary MERGE table
when LOCK TABLES is in effect. The following does *not* work:
CREATE TABLE m1 ... ENGINE=MRG_MYISAM ...;
LOCK TABLES t1 WRITE, t2 WRITE, m1 WRITE;
ALTER TABLE m1 ... UNION=(t1,t2) ...;
However, you can do this with a temporary MERGE table.

You cannot create a MERGE table with CREATE ... SELECT, neither
as a temporary MERGE table, nor as a non-temporary MERGE table.
CREATE TABLE m1 ... ENGINE=MRG_MYISAM ... SELECT ...;
Gives error message: table is not BASE TABLE.
2007-11-15 20:25:43 +01:00
anozdrin/alik@station.
e8343ca83d A patch for BUG#19723: kill of active connection yields
different error code depending on platform.

On Mac OS X, KILL statement issued to kill the current
connection would return a different error code and message than on
other platforms ('MySQL server has gone away' instead of 'Shutdown
in progress').

The reason for this difference was that on Mac OS X we have macro
SIGNAL_WITH_VIO_CLOSE defined. This macro forces KILL
implementation to close the communication socket of the thread
that is being killed. SIGNAL_WITH_VIO_CLOSE macro is defined on
platforms where just sending a signal is not a reliable mechanism
to interrupt the thread from sleeping on a blocking system call.
In a nutshell, closing the socket is a hack to work around an
operating system bug and awake the blocked thread no matter what.

However, if the thread that is being killed is the same
thread that issued KILL statement, closing the socket leads to a
prematurely lost connection. At the same time it is not necessary
to close the socket in this case, since the thread in question
is not inside a blocking system call.

The fix, therefore, is to not close the socket if the thread that
is being killed is the same that issued KILL statement, even with
defined SIGNAL_WITH_VIO_CLOSE.
2007-11-15 15:35:35 +03:00
mkindahl@dl145h.mysql.com
60fa29c847 Merge dl145h.mysql.com:/data0/mkindahl/mysql-5.0-rpl-merge
into  dl145h.mysql.com:/data0/mkindahl/mysql-5.1-rpl-merge
2007-11-15 13:31:39 +01:00
tnurnberg@white.intern.koehntopp.de
074a1dbd02 Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.1-opt
into  mysql.com:/misc/mysql/31700/51-31700
2007-11-15 12:31:40 +01:00
tnurnberg@mysql.com/white.intern.koehntopp.de
f1adcf9d75 Bug#31700: thd->examined_row_count not incremented for 'const' type queries
tests adjusted for Windows
2007-11-15 12:30:35 +01:00
istruewing@stella.local
2ecdc68e55 Bug#22351 - handler::index_next_same() call to key_cmp_if_same() uses
the wrong buffer
Post-pushbuild fix
Added test case for better coverage.
2007-11-15 11:36:50 +01:00
gluh@mysql.com/eagle.(none)
3b38836e6d updated result file 2007-11-15 11:58:42 +04:00
dkatz@damien-katzs-computer.local
e5b96a3615 Merge damien-katzs-computer.local:/Users/dkatz/mysql-5.1-runtime
into  damien-katzs-computer.local:/Users/dkatz/cmdline_events_bug
2007-11-14 16:34:01 -05:00
dkatz@damien-katzs-computer.local
2ed0d9ea21 Bug#28785 thread-handling not displayed properly in SHOW VARIABLES 2007-11-14 16:12:46 -05:00
gluh@mysql.com/eagle.(none)
f3600c9437 updated result file 2007-11-14 20:40:07 +04:00
joerg@trift2.
eaf9ae8889 Merge trift2.:/MySQL/M51/mysql-5.1
into  trift2.:/MySQL/M51/push-5.1
2007-11-14 16:11:52 +01:00
gluh@eagle.(none)
6fefa58d90 Merge mysql.com:/home/gluh/MySQL/Merge/5.0-opt
into  mysql.com:/home/gluh/MySQL/Merge/5.1-opt
2007-11-14 18:56:49 +04:00
gluh@mysql.com/eagle.(none)
b56f668ca3 after merge fix 2007-11-14 18:56:14 +04:00
joerg@trift2.
86674bc412 Merge trift2.:/MySQL/M50/mysql-5.0
into  trift2.:/MySQL/M50/push-5.0
2007-11-14 15:26:38 +01:00
istruewing@stella.local
a545de21d1 Merge bk-internal.mysql.com:/home/bk/mysql-5.1-engines
into  stella.local:/home2/mydev/mysql-5.1-bug4692
2007-11-14 15:22:54 +01:00
istruewing@stella.local
398caa9ad8 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-engines
into  stella.local:/home2/mydev/mysql-5.0-bug4692
2007-11-14 14:42:11 +01:00
gluh@eagle.(none)
58336411c9 Merge mysql.com:/home/gluh/MySQL/Merge/5.1
into  mysql.com:/home/gluh/MySQL/Merge/5.1-opt
2007-11-14 17:30:16 +04:00
gluh@eagle.(none)
246c6c35a9 Merge mysql.com:/home/gluh/MySQL/Merge/5.0
into  mysql.com:/home/gluh/MySQL/Merge/5.0-opt
2007-11-14 17:26:22 +04:00
istruewing@stella.local
500d5c788e Merge stella.local:/home2/mydev/mysql-5.0-bug4692
into  stella.local:/home2/mydev/mysql-5.1-bug4692
2007-11-14 12:51:36 +01:00
gshchepa/uchum@gleb.loc
95e7cccfee Merge gleb.loc:/home/uchum/work/bk/5.1-opt-32034
into  gleb.loc:/home/uchum/work/bk/5.1-opt
2007-11-14 15:49:57 +04:00
istruewing@stella.local
43a5312157 Bug#4692 - DISABLE/ENABLE KEYS waste a space
Post-pushbuild fix

Added a purecov comment and a test for coverage of parallel
enable keys.
2007-11-14 12:02:20 +01:00
svoj@june.mysql.com
b5c9a981d4 Merge mysql.com:/home/svoj/devel/mysql/BUG31277/mysql-5.0-engines
into  mysql.com:/home/svoj/devel/mysql/BUG31277/mysql-5.1-engines
2007-11-14 14:55:12 +04:00
svoj@june.mysql.com
b4ad73d079 Merge mysql.com:/home/svoj/devel/mysql/BUG31277/mysql-4.1-engines
into  mysql.com:/home/svoj/devel/mysql/BUG31277/mysql-5.0-engines
2007-11-14 14:38:26 +04:00
svoj@mysql.com/june.mysql.com
107822cf87 Merge mysql.com:/home/svoj/devel/bk/mysql-4.1-engines
into  mysql.com:/home/svoj/devel/mysql/BUG31277/mysql-4.1-engines
2007-11-14 14:30:21 +04:00
svoj@mysql.com/june.mysql.com
7f9298b919 Merge mysql.com:/home/svoj/devel/mysql/BUG29083/mysql-4.1-engines
into  mysql.com:/home/svoj/devel/mysql/BUG31277/mysql-4.1-engines
2007-11-14 14:29:49 +04:00
mkindahl@dl145h.mysql.com
a8bbce6569 Merge dl145h.mysql.com:/data0/mkindahl/mysql-5.0
into  dl145h.mysql.com:/data0/mkindahl/mysql-5.0-rpl
2007-11-14 11:19:34 +01:00
mkindahl@dl145h.mysql.com
6b5cb11dba Merge dl145h.mysql.com:/data0/mkindahl/mysql-5.1
into  dl145h.mysql.com:/data0/mkindahl/mysql-5.1-new-rpl
2007-11-14 11:07:30 +01:00
gkodinov/kgeorge@magare.gmz
82ce901ded Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.1-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B31562-5.1-opt
2007-11-14 12:03:28 +02:00
gshchepa/uchum@gleb.loc
70f36562bc Fixed bug #32034: On 64bit platforms assigning values of
storage engine system variables was not validated and
unexpected value was assigned.

The check_func_enum function used subtraction from the uint
value with the probably negative result. That result of
type uint was compared with 0 after casting to signed long
type. On architectures where long type is longer than int
type the result of comparison was unexpected.
2007-11-14 13:48:21 +04:00
ramil/ram@ramil.myoffice.izhnet.ru
1a67f6d702 Merge mysql.com:/home/ram/work/mysql-5.1-maint
into  mysql.com:/home/ram/work/b26447/b26447.5.1
2007-11-14 11:58:41 +04:00