1
0
mirror of https://github.com/MariaDB/server.git synced 2025-09-02 09:41:40 +03:00
Commit Graph

25496 Commits

Author SHA1 Message Date
Georgi Kodinov
f79e182a9c revert of the fix for bug #45989: pushed by mistake. 2010-01-19 14:48:41 +02:00
Mattias Jonsson
c26551e15d merge 2010-01-19 12:18:48 +01:00
Mattias Jonsson
b1987bdcbf Bug#47343: InnoDB fails to clean-up after lock wait timeout on
REORGANIZE PARTITION

There were several problems which lead to this this,
all related to bad error handling.

1) There was several bugs preventing the ddl-log to be used for
   cleaning up created files on error.

2) The error handling after the copy partition rows did not close
   and unlock the tables, resulting in deletion of partitions
   which were in use, which lead InnoDB to put the partition to
   drop in a background queue.
2010-01-18 17:49:18 +01:00
Georgi Kodinov
a3b4065d90 Bug #45989 take 2 : memory leak after explain encounters an
error in the query.

Fixes a leak after materializing a GROUP BY subquery to a 
temp table when the subquery has a blob column in the SELECT
list.
Fixed by correctly destructing temporary buffers after doing
the conversion.
2010-01-18 17:50:46 +02:00
Georgi Kodinov
24ab16096b Bug #39022: Mysql randomly crashing in lock_sec_rec_cons_read_sees
flush_cached_records() was not correctly checking for errors after calling
Item::val_xxx() methods. The expressions may contain subqueries
or stored procedures that cause errors that should stop the statement.
Fixed by correctly checking for errors and propagating them up the call stack.
2009-12-23 12:45:18 +02:00
Sergey Glukhov
271f418ca7 Bug#47736 killing a select from a view when the view is processing a function, asserts
hide_view_error() does not take into account that thread query may be killed.
Added a check for thd->killed.
Addon: backported bug32140 fix from 6.0
2010-02-05 13:39:46 +04:00
31348b438d Bug #50061 Test "rpl_loaddata_symlink" uses a Unix-specific "run-slave" script
Bug #49984  	Test 'rpl_loaddata_symlink' fails with "Could not find target log"

Sometimes the symbolic link is available on Windows if
you have some Unix (emulation) layer installed like
Cygwin, MKS or other. But symbolic link is not always
available. It depends on versions, file volume and
system environment of Windows. And the symbolic link
is not typically used on Windows, at least not in the
degree and style they are used on Unix. We can not 
change the test case to do without symbolic link,
because the test case is used to test that if the
symbolic link works fine.

To fix the problem, skip the test on windows.
2010-02-05 14:49:01 +08:00
Georgi Kodinov
0569a827ea Bug #45989 take 2 : memory leak after explain encounters an
error in the query.

Fixes a leak after materializing a GROUP BY subquery to a 
temp table when the subquery has a blob column in the SELECT
list.
Fixed by correctly destructing temporary buffers for re-usable
queries
2010-02-02 18:30:23 +02:00
Mattias Jonsson
94709df7cc Bug#49742: Partition Pruning not working correctly for RANGE
Problem was when calculating the range of partitions for
pruning.

Solution was to get the calculation correct. I also simplified
it a bit for easier understanding.
2009-12-22 18:59:37 +01:00
Georgi Kodinov
ef22a7bfb9 Bug #49734: Crash on EXPLAIN EXTENDED UNION ... ORDER BY <any non-const-function>
Several problems fixed : 
1. Non constant expressions in UNION ... ORDER BY were not correctly cleaned up
in st_select_lex_unit::cleanup() causing crashes in EXPLAIN EXTENDED because of
fields quoted by these expressions pointing to the already freed temporary table
used to calculate the UNION.
Fixed by correctly cleaning up expressions of any depth.

2. Subqueries in the order by part of UNION ... ORDER BY ... caused a crash in 
EXPLAIN EXTENDED because of a transformation attempt made during EXPLAIN EXTENDED
execution. Fixed by not doing the transformation when in EXPLAIN.

3. Fulltext functions caused crash when in the ORDER BY part of an un-parenthesized
UNION that gets "promoted" to be valid for the whole union, e.g. 
SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY MATCHES (a) AGAINST ('abc' IN BOOLEAN MODE).
This is a case that demonstrates a more general problem of parts of the query being
moved to another level. When doing such transformation late in the optimization run
when most of the flags about the contents of the query are already aggregated it's possible 
to "split" the flags so that they correctly reflect the new queries after the transformation.
In specific the ST_SELECT_LEX::ftfunc_list is holding all the free text function for all the 
parts of the second SELECT in the UNION and we don't know what part of that is in the ORDER BY
that we're to move to the UNION level and what part is about the other parts of the second SELECT.
Fixed by throwing and error when such statements are about to be processed by adding a check 
for the presence of MATCH() inside the ORDER BY clause that's going to get promoted to UNION.
To workaround this new limitation one must parenthesize the UNION SELECTs and provide a real 
global ORDER BY for the UNION outside of the parenthesis.
2009-12-22 17:52:15 +02:00
Satya B
51d54db7b7 merge to mysql-5.1-bugteam 2009-12-22 18:34:13 +05:30
Satya B
3cab11960a Removing rpl.rpl_trigger from experimental list as it is Fixed by BUG#46656 2009-12-22 18:33:39 +05:30
Sergey Glukhov
6fed2148c2 5.0-bugteam->5.1-bugteam merge 2009-12-22 14:38:33 +04:00
marko
08cf3b39a1 branches/zip: Merge revisions 6206:6350 from branches/5.1,
except r6347, r6349, r6350 which were committed separately
to both branches, and r6310, which was backported from zip to 5.1.

  ------------------------------------------------------------------------
  r6206 | jyang | 2009-11-20 09:38:43 +0200 (Fri, 20 Nov 2009) | 3 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc

  branches/5.1: Non-functional change, fix formatting.
  ------------------------------------------------------------------------
  r6230 | sunny | 2009-11-24 23:52:43 +0200 (Tue, 24 Nov 2009) | 3 lines
  Changed paths:
     M /branches/5.1/mysql-test/innodb-autoinc.result

  branches/5.1: Fix autoinc failing test results.
  (this should be skipped when merging 5.1 into zip)
  ------------------------------------------------------------------------
  r6231 | sunny | 2009-11-25 10:26:27 +0200 (Wed, 25 Nov 2009) | 7 lines
  Changed paths:
     M /branches/5.1/mysql-test/innodb-autoinc.result
     M /branches/5.1/mysql-test/innodb-autoinc.test
     M /branches/5.1/row/row0sel.c

  branches/5.1: Fix BUG#49032 - auto_increment field does not initialize to last value in InnoDB Storage Engine.

  We use the appropriate function to read the column value for non-integer
  autoinc column types, namely float and double.

  rb://208. Approved by Marko.
  ------------------------------------------------------------------------
  r6232 | sunny | 2009-11-25 10:27:39 +0200 (Wed, 25 Nov 2009) | 2 lines
  Changed paths:
     M /branches/5.1/row/row0sel.c

  branches/5.1: This is an interim fix, fix white space errors.
  ------------------------------------------------------------------------
  r6233 | sunny | 2009-11-25 10:28:35 +0200 (Wed, 25 Nov 2009) | 2 lines
  Changed paths:
     M /branches/5.1/include/mach0data.h
     M /branches/5.1/include/mach0data.ic
     M /branches/5.1/mysql-test/innodb-autoinc.result
     M /branches/5.1/mysql-test/innodb-autoinc.test
     M /branches/5.1/row/row0sel.c

  branches/5.1: This is an interim fix, fix tests and make read float/double arg const.
  ------------------------------------------------------------------------
  r6234 | sunny | 2009-11-25 10:29:03 +0200 (Wed, 25 Nov 2009) | 2 lines
  Changed paths:
     M /branches/5.1/row/row0sel.c

  branches/5.1: This is an interim fix, fix whitepsace issues.
  ------------------------------------------------------------------------
  r6235 | sunny | 2009-11-26 01:14:42 +0200 (Thu, 26 Nov 2009) | 9 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
     M /branches/5.1/mysql-test/innodb-autoinc.result
     M /branches/5.1/mysql-test/innodb-autoinc.test

  branches/5.1: Fix Bug#47720 - REPLACE INTO Autoincrement column with negative values.

  This bug is similiar to the negative autoinc filter patch from earlier,
  with the additional handling of filtering out the negative column values
  set explicitly by the user.

  rb://184
  Approved by Heikki.
  ------------------------------------------------------------------------
  r6242 | vasil | 2009-11-27 22:07:12 +0200 (Fri, 27 Nov 2009) | 4 lines
  Changed paths:
     M /branches/5.1/export.sh

  branches/5.1:

  Minor changes to support plugin snapshots.
  ------------------------------------------------------------------------
  r6306 | calvin | 2009-12-14 15:12:46 +0200 (Mon, 14 Dec 2009) | 5 lines
  Changed paths:
     M /branches/5.1/mysql-test/innodb-autoinc.result
     M /branches/5.1/mysql-test/innodb-autoinc.test

  branches/5.1: fix bug#49267: innodb-autoinc.test fails on windows
  because of different case mode

  There is no change to the InnoDB code, only to fix test case by
  changing "T1" to "t1".
  ------------------------------------------------------------------------
  r6324 | jyang | 2009-12-17 06:54:24 +0200 (Thu, 17 Dec 2009) | 8 lines
  Changed paths:
     M /branches/5.1/handler/ha_innodb.cc
     M /branches/5.1/include/lock0lock.h
     M /branches/5.1/include/srv0srv.h
     M /branches/5.1/lock/lock0lock.c
     M /branches/5.1/log/log0log.c
     M /branches/5.1/srv/srv0srv.c
     M /branches/5.1/srv/srv0start.c

  branches/5.1: Fix bug #47814 - Diagnostics are frequently not
  printed after a long lock wait in InnoDB. Separate out the
  lock wait timeout check thread from monitor information
  printing thread.

  rb://200 Approved by Marko.
  ------------------------------------------------------------------------
2009-12-22 10:33:01 +00:00
Sergey Glukhov
c3114506bb Bug#47371 reference by same column name
At the end of execution top level join execution
we cleanup this join with true argument.
It leads to underlying join cleanup(subquery) with true argument too
and to tmp_table_param->field array cleanup which is required later.
The problem is that Item_func_set_user_var does not set
result_filed which leads to unnecessary repeated excution of subquery
on final stage.
The fix is to set result_field for Item_func_set_user_var.
2009-12-22 13:52:23 +04:00
Ramil Kalimullin
ee403cc1a2 Fix for bug#49570: Assertion failed: !(order->used & map)
on re-execution of prepared statement

Problem: some (see eq_ref_table()) ORDER BY/GROUP BY optimization
is called before each PS execution. However, we don't properly 
initialize its stucture every time before the call.

Fix: properly initialize the sturture used.
2009-12-22 10:39:29 +04:00
Bjorn Munch
551f57645f merge from 5.1 again 2009-12-21 12:54:45 +01:00
Serge Kozlov
27c0939846 Bug#8693, Bug#45521. 2009-12-21 14:40:08 +03:00
He Zhenxing
d332a18952 Bug#47638 The rpl_killed_ddl test fails on Windows
When the $diff_statement variable for diff_master_slave.inc was
put in multiple lines, the rear part of the statement would be 
missing when being executed on Windows systems.

Fixed the problem by always putting the value for $diff_statement
in one line.
2009-12-21 14:14:45 +08:00
Davi Arnaut
885523381f Bug#30331: Table_locks_waited shows inaccurate values
Post-merge fix: wait for statement result before disconnecting.
Otherwise, the statement might affect unrelated tests.
2009-12-18 18:32:55 -02:00
Georgi Kodinov
dbb7073c21 Bug #31145: ALTER TABLE DROP COLUMN, ADD COLUMN crashes (linux) or
freezes (win) the server

The check for equality was assuming the field object is always 
created. If it's not it was de-referencing a NULL pointer.
Fixed to use the data in the create object instead.
2009-12-18 14:00:30 +02:00
Sergey Glukhov
65b5024ccd Bug#47649 crash during CALL procedure
If first call of the procedure is failed on
the open_table stage stmt_arena->state is set to
EXECUTED state. On second call(if no errors on
open_table stage) it leads to use of worng memory arena
in find_field_in_view() function as
thd->stmt_arena->is_stmt_prepare_or_first_sp_execute()
returns FALSE for EXECUTED state. The item is created 
not in its own arena and it leads to crash on further
calls of the procedure.
The fix: 
change state of arena only if
no errors on open_table stage happens.
2009-12-23 17:44:03 +04:00
Satya B
06b841a160 merge to mysql-5.1-bugteam 2009-12-23 12:39:03 +05:30
Satya B
2cb58f9aab Applying InnoDB snapshot 5.1-ss6344, part 1. Fixes BUG#49267
Detailed revision comments:

r6306 | calvin | 2009-12-14 15:12:46 +0200 (Mon, 14 Dec 2009) | 5 lines
branches/5.1: fix bug#49267: innodb-autoinc.test fails on windows
because of different case mode

There is no change to the InnoDB code, only to fix test case by
changing "T1" to "t1".
2009-12-21 15:41:38 +05:30
Jim Winstead
a8e039a2c8 Merge approved bug fix 2009-12-17 12:06:36 -08:00
Alfranio Correia
4b0674f9d8 merge mysql-5.1-bugteam (local) --> mysql-5.1-bugteam 2009-12-17 15:47:22 +00:00
Andrei Elkin
25743de765 merge from 5.0 with bug@49740 fixes 2009-12-17 16:50:45 +02:00
Andrei Elkin
0f73979084 Bug #49740 rpl.rpl_temporary fails in PB2 in mysql-trunk-merge
The test allowed random coincidence of connection ids for two concurrent
sessions performing CREATE/DROP temp tables.

Fixed with correcting the test. The sessions connection ids are not changed
from their defaults anymore.
2009-12-17 16:34:11 +02:00
Satya B
51ffb05c7c merge to mysql-5.1-bugteam 2009-12-17 17:47:34 +05:30
Satya B
647a955893 merge mysql-5.0-bugteam to mysql-5.1-bugteam 2009-12-17 17:15:13 +05:30
Satya B
801deedcf2 Fix for Bug#37408 - Compressed MyISAM files should not require/use mmap()
When compressed myisam files are opened, they are always memory mapped
sometimes causing memory swapping problems.

When we mmap the myisam compressed tables of size greater than the memory 
available, the kswapd0 process utilization is very high consuming 30-40% of 
the cpu. This happens only with linux kernels older than 2.6.9

With newer linux kernels, we don't have this problem of high cpu consumption
and this option may not be required.
 
The option 'myisam_mmap_size' is added to limit the amount of memory used for
memory mapping of myisam files. This option is not dynamic.

The default value on 32 bit system is 4294967295 bytes and on 64 bit system it
is 18446744073709547520 bytes.

Note: Testcase only tests the option variable. The actual bug has be to 
tested manually.
2009-12-17 16:55:50 +05:30
Martin Hansson
b0c9164cc9 Bug#47650: using group by with rollup without indexes
returns incorrect results with where

An outer join of a const table (outer) and a normal table
(inner) with GROUP BY on a field from the outer table would
optimize away GROUP BY, and thus trigger the optimization to
do away with a temporary table if grouping was performed on
columns from the const table, hence executing the query with
filesort without temporary table. But this should not be
done if there is a non-indexed access to the inner table,
since filesort does not handle joins. It expects either ref
access, range ditto or table scan. The join condition will
thus not be applied.

Fixed by always forcing execution with temporary table in
the case of ROLLUP with a query involving an outer join. This
is a slightly broader class of queries than need fixing, but
it is hard to ascertain the position of a ROLLUP field wrt
outer join with current query representation.
2009-12-17 10:55:18 +01:00
Ramil Kalimullin
7f7a1d5455 Auto-merge. 2009-12-17 10:52:43 +04:00
Ramil Kalimullin
092f25caeb Fix for bug#49465: valgrind warnings and incorrect live checksum...
Problem: inserting a record we don't set unused null bits in the
record buffer if no default field values used.
That may lead to wrong live checksum calculation.

Fix: set unused null bits in the record buffer in such cases.
2009-12-17 09:55:03 +04:00
Magne Mahre
2fed660774 Bug#47017 rpl_timezone fails on PB-2 with mismatch error
The bug is caused by a race condition between the 
INSERT DELAYED thread and the client thread's FLUSH TABLE.  The 
FLUSH TABLE does not guarantee (as is (wrongly) suggested in the 
test case) that the INSERT DELAYED is ever executed.  The 
execution of the test case will thus not be deterministic.

The fix has been to do a deterministic verification that both
threads are complete by checking the content of the table.
2009-12-16 20:53:56 +01:00
Alfranio Correia
4ff970b08a BUG#49638 binlog_index fails in mysql-trunk-merge
Calling push_warning/push_warning_printf with a level of
WARN_LEVEL_ERROR *is* a bug. We should either use my_error(),
or WARN_LEVEL_WARN.
2009-12-16 19:52:56 +00:00
Luis Soares
60d93c69f6 BUG#48738: merge local branch into mysql-5.0-bugteam latest. 2009-12-24 02:26:29 +00:00
Bjorn Munch
af9d564303 Merge from 5.1 main 2009-12-16 10:37:41 +01:00
8b3d63a6a5 Bug #46827 rpl_circular_for_4_hosts failed on PB2
This test case tests a circular replication of four hosts. 
A--->B--->C--->D--->A
The replicate is slow and needs more time to replicate all data in the circle.
The time it spends to replicate, sometimes, is longer than the time that 
wait_condition.inc spends to wait that all data has been replicated. This
cause sporadical failure of this test case.
  
This patch uses sync_slave_with_master to ensure that all data can be replicated
successfully in the circle.
2009-12-16 12:41:15 +08:00
152e8717fe Postfix
Only relative log events are showed.
2009-12-16 12:25:46 +08:00
Georgi Kodinov
8d329aa720 Bug #48709: Assertion failed in sql_select.cc:11782:
int join_read_key(JOIN_TAB*)

The eq_ref access method TABLE_REF (accessed through 
JOIN_TAB) to save state and to track if this is the 
first row it finds or not.
This state was not reset on subquery re-execution
causing an assert.

Fixed by resetting the state before the subquery 
re-execution.
2009-12-15 19:10:06 +02:00
Ramil Kalimullin
4422b0f665 Fix for bug#49517: Inconsistent behavior while using
NULLable BIGINT and INT columns in comparison

Problem: a consequence of the fix for 43668.
Some Arg_comparator inner initialization missed,
that may lead to unpredictable (wrong) comparison
results.

Fix: always properly initialize Arg_comparator
before its usage.
2009-12-15 21:08:21 +04:00
Georgi Kodinov
82e6ae0ff1 Bug #48709: Assertion failed in sql_select.cc:11782:
int join_read_key(JOIN_TAB*)

The eq_ref access method TABLE_REF (accessed through 
JOIN_TAB) to save state and to track if this is the 
first row it finds or not.
This state was not reset on subquery re-execution
causing an assert.

Fixed by resetting the state before the subquery 
re-execution.
2009-12-15 14:20:29 +02:00
Mattias Jonsson
e9db7b8ef8 merge 2009-12-15 13:48:01 +01:00
Alexander Barkov
9c47ea8380 Bug#49134 5.1 server segfaults with 2byte collation file
Problem: add_collation did not check that cs->number is smaller
than the number of elements in the array all_charsets[],
so server could crash when loading an Index.xml file with
a collation ID greater the number of elements 
(for example when downgrading from 5.5).

Fix: adding a condition to check that cs->number is not out of valid range.
2009-12-15 13:48:29 +04:00
Bjorn Munch
b82642966b Bug #49672 mtr should extract end of result log if mysqltest fails without output
Extracts last 20 lines if no output after failure
2009-12-15 10:12:24 +01:00
Georgi Kodinov
b4def7bea1 Bug #48985: show create table crashes if previous access to the table
was killed

Merge the fix from 5.1-bugteam to 5.1-main
2009-12-15 11:03:24 +02:00
Georgi Kodinov
7b7a5c6e7a Bug#49489: Uninitialized cache led to a wrong result.
Merge the fix from 5.1-bugteam to 5.1-main
2009-12-15 10:54:53 +02:00
Georgi Kodinov
4b603e4881 Bug #49480: WHERE using YEAR columns returns unexpected results
Merge the fix from 5.1-bugteam to 5.1-main
2009-12-15 10:37:10 +02:00
aa38825287 Bug #34628 LOAD DATA CONCURRENT INFILE drops CONCURRENT in binary log
'LOAD DATA CONCURRENT [LOCAL] INFILE ...' statment only is binlogged as
'LOAD DATA [LOCAL] INFILE ...' in SBR and MBR.  As a result, if replication is on, 
queries on slaves will be blocked by the replication SQL thread.

This patch write code to write 'CONCURRENT' into the log event if 'CONCURRENT' option
is in the original statement in SBR and MBR.
2009-12-15 13:14:14 +08:00