Commit graph

20466 commits

Author SHA1 Message Date
istruewing@stella.local
2cc3e56ea4 Merge stella.local:/home2/mydev/mysql-5.0-ateam
into  stella.local:/home2/mydev/mysql-5.0-axmrg
2007-11-25 14:14:52 +01:00
istruewing@stella.local
6c6ee17297 Bug#32668 rpl_row_charset_innodb.test fails
Re-enabled test case after fix
2007-11-23 18:27:05 +01:00
istruewing@stella.local
13c4f25fcf Bug#32668 - rpl_row_charset_innodb.test fails
The test case fails on "vanilla" and "no_innodb" builds.
These builds do not include InnoDB.
The test case requires InnoDB.

Added requirement for InnoDB into the test case, so that
it does not start on those builds.
2007-11-23 18:05:45 +01:00
istruewing@stella.local
32b99c5570 Bug#32668 - rpl_row_charset_innodb.test fails
Disabled test case
2007-11-23 17:54:19 +01:00
istruewing@stella.local
9f19e3f647 Bug#32667 lowercase_table3.test reports to error log
Disabled test case
2007-11-23 17:47:22 +01:00
istruewing@stella.local
bc7205bb3f Bug#29830 Test case 'events_scheduling' fails on Mac OS X and Windows
Disabled the test case
2007-11-23 17:05:16 +01:00
istruewing@stella.local
6f426699e5 Bug#32664 - events.test fails randomly
Disabled test case
2007-11-23 16:53:31 +01:00
istruewing@stella.local
55a8f4c784 Bug#32663 binlog_multi_engine.test fails randomly
Disabled test case
2007-11-23 16:32:51 +01:00
istruewing@stella.local
9e450e76cd Bug#32659 - ndb_dd_backuprestore.test fails randomly
Disabled test case
2007-11-23 15:30:04 +01:00
svoj@mysql.com/june.mysql.com
876f49710e BUG#31833 - ORDER BY leads to wrong result when ARCHIVE, BLOB and
table cache is full

After reading last record from freshly opened archive table
(e.g. after flush table, or if there is no room in table cache),
the table is reported as crashed.

The problem was that azio wrongly invalidated azio_stream when it
meets EOF.
2007-11-23 17:51:12 +04:00
ramil/ram@mysql.com/ramil.myoffice.izhnet.ru
7a41acfd40 Merge mysql.com:/home/ram/work/mysql-5.0-engines
into  mysql.com:/home/ram/work/b32560/b32560.5.0
2007-11-23 17:24:54 +04:00
ramil/ram@ramil.myoffice.izhnet.ru
2bc1e74c55 Merge mysql.com:/home/ram/work/b32560/b32560.5.0
into  mysql.com:/home/ram/work/b32560/b32560.5.1
2007-11-23 16:43:49 +04:00
ramil/ram@mysql.com/ramil.myoffice.izhnet.ru
51ca3235b8 Fix for bug #32560: crash with interval function and count(*)
Problem: INTERVAL function implementation doesn't handle NULL range values.

Fix: skip NULL ranges looking for a proper one.
2007-11-23 16:30:06 +04:00
istruewing@stella.local
a1c5fef49a Merge stella.local:/home2/mydev/mysql-5.0-ateam
into  stella.local:/home2/mydev/mysql-5.0-axmrg
2007-11-23 13:09:01 +01:00
istruewing@stella.local
3b09d3708a Bug#32654: rpl_view.test fails randomly
Disabled test case
2007-11-23 13:03:38 +01:00
istruewing@stella.local
695afd5d07 Bug#32653 - rpl_log.test fails randomly
Disabled test case
2007-11-23 12:54:05 +01:00
mkindahl@dl145h.mysql.com
93d9d62353 Post-merge fixes. 2007-11-23 12:51:14 +01:00
istruewing@stella.local
17399e7be3 Bug#32651 - grant_cache.test fails
Disabled test case
2007-11-23 12:06:55 +01:00
ramil/ram@mysql.com/ramil.myoffice.izhnet.ru
a13b5e9d80 Merge mysql.com:/home/ram/work/mysql-5.0-engines
into  mysql.com:/home/ram/work/b32558/b32558.5.0
2007-11-23 13:04:13 +04:00
ramil/ram@ramil.myoffice.izhnet.ru
ce75b829ee Merge mysql.com:/home/ram/work/b32558/b32558.5.0
into  mysql.com:/home/ram/work/b32558/b32558.5.1
2007-11-23 12:35:02 +04:00
ramil/ram@mysql.com/ramil.myoffice.izhnet.ru
6339719b2e Merge mysql.com:/home/ram/work/mysql-5.1-engines
into  mysql.com:/home/ram/work/b32557/b32557.5.1
2007-11-23 12:16:22 +04:00
mkindahl@dl145h.mysql.com
0c7f3bdeba Merge dl145h.mysql.com:/data0/mkindahl/mysql-5.1
into  dl145h.mysql.com:/data0/mkindahl/mysql-5.1-rpl-merge
2007-11-21 21:15:33 +01:00
mkindahl@dl145h.mysql.com
3cf2733086 Merge dl145h.mysql.com:/data0/mkindahl/mysql-5.0
into  dl145h.mysql.com:/data0/mkindahl/mysql-5.0-rpl-merge
2007-11-21 21:11:57 +01:00
istruewing@stella.local
3be5815015 Merge stella.local:/home2/mydev/mysql-5.1-amain
into  stella.local:/home2/mydev/mysql-5.1-axmrg
2007-11-21 20:32:58 +01:00
istruewing@stella.local
0d76c73fd5 Merge stella.local:/home2/mydev/mysql-5.0-amain
into  stella.local:/home2/mydev/mysql-5.0-axmrg
2007-11-21 20:30:07 +01:00
ramil/ram@mysql.com/ramil.myoffice.izhnet.ru
924bdf2c78 Fix for bug #32558: group by null-returning expression with rollup causes crash
Problem: setting Item_func_rollup_const::null_value property to argument's null_value
before (without) the argument evaluation may result in a crash due to wrong null_value.

Fix: use is_null() to set Item_func_rollup_const::null_value instead as it evaluates
the argument if necessary and returns a proper value.
2007-11-21 20:53:44 +04:00
mleich@five.local.lan
6ffbe3d076 Merge five.local.lan:/work/merge/mysql-5.0-build-30418
into  five.local.lan:/work/merge/mysql-5.1-build-31610
2007-11-21 15:06:38 +01:00
mleich@five.local.lan
4922727fb7 This changeset fixes
Bug#31567 "datadict" tests (all engines) fail:
             Reference protocol is non-standard build
   Bug#30418 "datadict" tests (all engines) fail:
             Dependency on the host name for ordering   
Modifications:
   1. The standard builds (build team) do not contain
      the collation 'utf8_general_cs'.
      The common developer builds (compuile-....-max)
      contain this collation.
      Solution fitting to both build variants:
         Exclude the collation 'utf8_general_cs' from
         result sets.
   2. Use mysqltest builtin sorting of result set for
      the statement where the hostname affects the
      row order.
2007-11-21 13:50:17 +01:00
ramil/ram@mysql.com/ramil.myoffice.izhnet.ru
b8f65ccf6f Fix for bug #32557: order by updatexml causes assertion in filesort
Problem: even if an Item_xml_str_func successor returns NULL, it doesn't have 
a corresponding property (maybe_null) set, that leads to a failed assertion.

Fix: set nullability property of Item_xml_str_func.
2007-11-21 16:00:09 +04:00
ramil/ram@mysql.com/ramil.myoffice.izhnet.ru
725b2d35f4 Fix for bug #30495: optimize table t1,t2,t3 extended errors
Problem: we have CHECK TABLE options allowed (by accident?) for
ANALYZE/OPTIMIZE TABLE.

Fix: disable them.

Note: it might require additional fixes in 5.1/6.0
2007-11-21 11:11:22 +04:00
ramil/ram@mysql.com/ramil.myoffice.izhnet.ru
92512e608a Fix for bug #32021: Using Date 000-00-01 in WHERE causes wrong result
Problem: caching 00000000-00000099 dates as integer values we're 
improperly shifting them up twice in the get_datetime_value().
  
Fix: don't shift cached DATETIME values up for the second time.
2007-11-21 08:01:00 +04:00
tsmith@ramayana.hindu.god
56b9199ba3 Merge ramayana.hindu.god:/home/tsmith/m/bk/build/b25146/51
into  ramayana.hindu.god:/home/tsmith/m/bk/build/51
2007-11-20 20:35:14 -07:00
tsmith@ramayana.hindu.god
6a193c5528 Bug #25146: Some warnings/errors not shown when using --show-warnings
In several cases, an error when processing the query would cause mysql to
return to the top level without printing warnings.  Fix is to always
print any available warnings before returning to the top level.
2007-11-20 17:03:56 -07:00
tsmith@ramayana.hindu.god
3cfd655143 Minor update to allowed errors list in mysql-test's mtr_report.pl 2007-11-20 12:51:36 -07:00
mleich@five.local.lan
12e5d5b6be Fixes for the bugs
Bug#31610 Remove outdated and redundant tests:
                 partition_02myisam partition_03ndb
       Bug#32405 testsuite parts: partition_char_myisam wrong content
and cleanup of testsuite
   - remove/correct wrong comments
   - remove workarounds for fixed bugs
   - replace error numbers with error names
   - exclude subtests from execution which fail now because of
     new limitations for partitioning functions
   - remove code for the no more intended dual use
     fast test in regression tests/slow test in testsuite
   - analyze and fix problems with partition_char_innodb
   - fix problems caused by last change of error numbers
   - Introduce error name to error number mapping which makes
     maintenance after next error renumbering easier
2007-11-20 16:04:07 +01:00
mattiasj@mattias-jonssons-macbook.local
eac847f39b Bug#30822: ALTER TABLE COALESCE PARTITION causes segmentation fault
Problem was for LINEAR HASH/KEY. Crashes because of wrong partition id
returned when creating the new altered partitions. (because of wrong
linear hash mask)

Solution: Update the linear hash mask before using it for the new
altered table.
2007-11-20 11:21:00 +01:00
joerg@trift2.
504e0980f2 The error number for ER_ILLEGAL_HA_CREATE_OPTION changed from 1477 to 1478,
this must be reflected in the test result files.
2007-11-19 21:24:36 +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
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
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
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