Commit graph

18609 commits

Author SHA1 Message Date
Sergey Vojtovich
8d514f2145 Merge fix for BUG47444 to mysql-5.1-bugteam. 2010-03-16 21:33:56 +04:00
Martin Hansson
5fa73f08d0 Merge of fix for Bug#47762. 2010-03-16 17:21:38 +01:00
Martin Hansson
7cb796717e Bug#47762: Incorrect result from MIN() when WHERE tests NOT
NULL column for NULL

The optimization to read MIN() and MAX() values from an
index did not properly handle comparisons with NULL
values. Fixed by giving up the particular optimization step
if there are non-NULL safe comparisons with NULL values, as 
the result is NULL anyway.

Also, Oracle copyright notice was added to all files.
2010-03-16 15:51:00 +01:00
Mattias Jonsson
9ecdd588c5 merge 2010-03-16 15:09:58 +01:00
Sergey Vojtovich
88cc391550 Merge fix for BUG47444 to mysql-5.1-bugteam. 2010-03-16 18:06:03 +04:00
Martin Hansson
f8a1823af3 Bug#50918: Date columns treated differently in Views than in
Base Tables

The type inferrence of a view column caused the result to be
interpreted as the wrong type: DATE colums were interpreted
as TIME and TIME as DATETIME. This happened because view
columns are represented by Item_ref objects as opposed to
Item_field's. Item_ref had no method for retrieving a TIME
value and thus was forced to depend on the default
implementation for any expression, which caused the
expression to be evaluated as a string and then parsed into
a TIME/DATETIME value.

Fixed by letting Item_ref classes forward the request for a
TIME value to the referred Item - which is a field in this
case - this reads the TIME value directly without
conversion.
2010-03-16 10:20:07 +01:00
Davi Arnaut
0e9451186d Post-merge fix: replace plugin extension output. 2010-03-14 08:16:59 -03:00
Davi Arnaut
d9f1abe995 Post-merge fix: remove unnecessary flush privileges. 2010-03-13 18:32:42 -03:00
Mattias Jonsson
6654e2a571 merge 2010-03-12 11:52:38 +01:00
Sergey Vojtovich
4762eb64ec BUG#47444 - --myisam_repair_threads>1can result in all
index cardinalities=1

Parallel repair didn't poroperly update index cardinality
in certain cases.

When myisam_sort_buffer_size is not enough to store all
keys, index cardinality was updated before index was
actually written, when no index statistic is available.
2010-03-12 14:43:30 +04:00
Mattias Jonsson
da26454dcb merged 2010-03-12 11:14:40 +01:00
Mattias Jonsson
8e2ea6efa9 merge 2010-03-11 14:25:33 +01:00
Mattias Jonsson
cb6d0e3cac merge 2010-03-11 14:18:44 +01:00
Sergey Vojtovich
a955cc035a Merge fix for BUG48265 to mysql-5.1-bugteam. 2010-03-11 18:28:39 +04:00
Martin Hansson
2cc8c47b93 Bug#50545: Single table UPDATE IGNORE crashes on
join view in sql_safe_updates mode. 

This bug was unexpectedly fixed along with bug 
number 49534. This patch contains only the test
case.
2010-03-10 17:10:05 +01:00
Sergey Vojtovich
8795907e11 Merge an addition to BUG51342 5.0-bugteam -> 5.1-bugteam. 2010-03-10 19:31:22 +04:00
Sergey Vojtovich
774cba9505 An addition to fix for
BUG#51342 - more xid crashing

Restore autocommit variable by supplying explicit value.
2010-03-10 19:28:49 +04:00
Sergey Vojtovich
1e92b0fbe8 Merge fix for BUG51307 to 5.1-bugteam. 2010-03-10 16:32:12 +04:00
Sergey Vojtovich
64c6882ea9 Merge fix for BUG51342 to 5.1-bugteam. 2010-03-10 16:26:39 +04:00
Mattias Jonsson
f83e302a13 Bug#51830: Incorrect partition pruning on range partition
(regression)

Problem was that partition pruning did not exclude the
last partition if the range was beyond it
(i.e. not using MAXVALUE)

Fix was to not include the last partition if the
partitioning function value was not within the partition
range.
2010-03-10 12:56:05 +01:00
Sergey Vojtovich
f4fe07f21f Merge fix for BUG51342 to 5.0-bugteam. 2010-03-10 15:07:35 +04:00
Sergey Vojtovich
8478e707d9 BUG#51342 - more xid crashing
SET autocommit=1 while XA transaction is active may
cause various side effects, including memory corruption
and server crash.

The problem is that SET autocommit=1 and further queries
attempt to commit local transaction, whereas XA transaction
is still active.

As local and XA transactions are mutually exclusive, this
patch forbids enabling autocommit mode while XA transaction
is active.
2010-03-10 15:04:32 +04:00
Georgi Kodinov
c8d9077505 merge 2010-03-10 12:22:08 +02:00
Georgi Kodinov
515cba2019 merged the test disablement because of bug 51357 to 5.0-bugteam 2010-03-10 12:11:39 +02:00
Davi Arnaut
91223c4d25 Bug#51770: UNINSTALL PLUGIN requires no privileges
The problem was that UNINSTALL PLUGIN wasn't performing privilege
checks before removing a plugin. Any user (including users without 
any kind of privileges) could uninstall any plugin.

The solution is to verify if the user has the DELETE privilege for
the mysql.plugin table before uninstalling a plugin.
2010-03-09 09:16:17 -03:00
Sergey Glukhov
64de23433d Bug#41788 mysql_fetch_field returns org_table == table by a view
The problem is that Item_direct_view_ref which is inherited
from Item_ident updates orig_table_name and table_name with
the same values. The fix is introduction of new constructor
into Item_ident and up which updates orig_table_name and
table_name separately.
2010-03-12 10:33:16 +04:00
Davi Arnaut
301b0786dd Bug#40277: SHOW CREATE VIEW returns invalid SQL
The problem is that not all column names retrieved from a SELECT
statement can be used as view column names due to length and format
restrictions. The server failed to properly check the conformity
of those automatically generated column names before storing the
final view definition on disk.

Since columns retrieved from a SELECT statement can be anything
ranging from functions to constants values of any format and length,
the solution is to rewrite to a pre-defined format any names that
are not acceptable as a view column name.

The name is rewritten to "Name_exp_%u" where %u translates to the
position of the column. To avoid this conversion scheme, define
explict names for the view columns via the column_list clause.
Also, aliases are now only generated for top level statements.
2010-03-09 07:36:26 -03:00
Davi Arnaut
154fcda822 Bug#51650: crash with user variables and triggers
The problem was that bits of the destructive equality propagation
optimization weren't being undone after the execution of a stored
program. Modifications to the parse tree that are based on transient
properties must be undone to enable the re-execution of stored
programs.

The solution is to cleanup any references to predicates generated
by the equality propagation during the execution of a stored program.
2010-03-09 18:55:08 -03:00
Georgi Kodinov
bfd837cc82 Disable the second part of the test for bug #51357 until bug #51877 is fixed. 2010-03-09 19:00:15 +02:00
Georgi Kodinov
d5991c13bd Addendum to the test for bug 51357 : disable the (possibly binary)
output from HANDLER ... READ .. NEXT ...
2010-03-09 15:46:27 +02:00
Luis Soares
0e2cc47c0c Automerge: BUG 48993 bundle from bug report --> mysql-5.1-bugteam. 2010-03-08 23:55:19 +00:00
Georgi Kodinov
636058174a Backport of the fix for bug #51357 to 5.0-bugteam.:
Spatial indexes were not checking for out-of-record condition in
the handler next command when the previous command didn't found
rows.

Fixed by making the rtree index to check for end of rows condition
before re-using the key from the previous search.

Fixed another crash if the tree has changed since the last search.
Added a test case for the other error.
2010-03-08 12:39:57 +02:00
Mattias Jonsson
25596746db Bug#50392: insert_id is not reset for partitioned tables
auto_increment on duplicate entry

The bug was that when INSERT_ID was used and the storage
engine was told to release any reserved but not used
auto_increment values, it set the highest auto_increment
value to INSERT_ID.

The fix was to check if the auto_increment value was forced
by user (INSERT_ID) or by slave-thread, i.e. not auto-
generated. So that it is only allowed to release generated
values.
2010-03-04 18:16:10 +01:00
Georgi Kodinov
557ba4896b Bug #51357: crash when using handler commands on spatial indexes
Spatial indexes were not checking for out-of-record condition in
the handler next command when the previous command didn't found
rows.

Fixed by making the rtree index to check for end of rows condition
before re-using the key from the previous search.

Fixed another crash if the tree has changed since the last search.
Added a test case for the other error.
2010-03-04 18:13:08 +02:00
Gleb Shchepa
897863813e Bug #39653: find_shortest_key in sql_select.cc does not
consider clustered primary keys

Choosing a shortest index for the covering index scan,
the optimizer ignored the fact, that the clustered primary
key read involves whole table data.

The find_shortest_key function has been modified to
take into account that fact that a clustered PK has a
longest key of possible covering indices.
2010-03-05 23:45:55 +04:00
Tatiana A. Nurnberg
f2a7a574a4 manual merge 2010-03-05 16:44:37 +00:00
Tatiana A. Nurnberg
3bf394b415 auto-merge 2010-03-04 12:39:29 +00:00
Mattias Jonsson
6e7539de29 Bug#50104: Partitioned table with just 1 partion works with fk
There was no check for foreign keys when altering partitioned
tables.

Added check for FK when altering partitioned tables.
2010-03-04 12:29:22 +01:00
Mattias Jonsson
2d5c6b5bfe Bug#48229: group by performance issue of partitioned table
Problem was block_size on partitioned tables was not set,
resulting in keys_per_block was not correct which affects
the cost calculation for read time of indexes (including
cost for group min/max).Which resulted in a bad optimizer
decision.

Fixed by setting stats.block_size correctly.
2010-03-04 12:09:09 +01:00
Sergey Vojtovich
1a9c3717f1 BUG#48265 - MRG_MYISAM problem (works in 5.0.85, does't
work in 5.1.40)

MERGE engine fails to open child table from a different
database if child table/database name contains characters
that are subject for table name to filename encoding
(WL1324).

Another problem is that MERGE engine didn't properly open
child table from the same database if child table name
contains characters like '/', '#'.

The problem was that table name to file name encoding was
applied inconsistently:
* On CREATE: encode table name + database name if child
  table is in different database; do not encode table
  name if child table is in the same database;
* No decoding on open.

With this fix child table/database names are always
encoded on CREATE and decoded on open. Compatibility
with older tables preserved.

Along with this patch comes fix for SHOW CREATE TABLE,
which used to show child table/database path instead
of child table/database names.
2010-03-03 14:49:03 +04:00
Tatiana A. Nurnberg
b4faea2aa0 manual merge 2010-03-02 18:13:43 +00:00
Tatiana A. Nurnberg
87b4d36e5c Bug#48295: explain extended crash with subquery and ONLY_FULL_GROUP_BY sql
If an outer query is broken, a subquery might not even get set up.
EXPLAIN EXTENDED did not expect this and merrily tried to de-ref all
of the half-setup info.

We now catch this case and print as much as we have, as it doesn't cost us
anything (doesn't make regular execution slower).

backport from 5.1
2010-03-02 18:00:53 +00:00
Tatiana A. Nurnberg
ff7f4bb9fa auto-merge 2010-03-02 16:18:16 +00:00
Sergey Vojtovich
1613b3e1dd BUG#51307 - widespread corruption with partitions and
insert...select

Queries following bulk insert into an empty MyISAM table
may break it. This was pure MyISAM problem.

When bulk insert into an empty table is complete, MyISAM
may want to enable indexes via repair by sort. If repair
by sort fails (e.g. insufficient buffer), MyISAM failover
to repair with key cache, requesting repair of data file.

Repair of data file performs data file substitution. This
means that current table instance will point to new data
file. Other cached table instances are still pointing to
an old, deleted data file.

This is fixed by not requesting repair of data file
during enable indexes.

Explicit REPAIR is not affected, since it flushes all
table instances.
2010-03-02 13:45:50 +04:00
Ramil Kalimullin
c1de4070ca Fix for bug#51304: checksum table gives different results
for same data when using bit fields

Problem: checksum for BIT fields may be computed incorrectly 
in some cases due to its storage peculiarity.

Fix: convert a BIT field to a string then calculate its checksum.
2010-02-28 21:29:19 +04:00
Davi Arnaut
b2637610db Force execution now that another test case might run mysql_upgrade first. 2010-02-26 23:19:59 -03:00
Sergey Vojtovich
3fcb25d806 Merge innodb-5.1-ss6765 to 5.1-bugteam. 2010-02-26 16:34:13 +04:00
Davi Arnaut
5dd3b617d4 Bug#49823: mysql_upgrade fatal error due to general_log / slow_low CSV NULL
The problem was that the CSV storage engine does not support NULL
fields, yet in some early 5.1 version the log tables (general_log
and slow_log) were created with null fields. On top of this, when
altering a CSV table column, all fields of the table must be NOT
NULL otherwise the alteration fails.

The solution is to ensure that during upgrade all columns of the
log tables are NOT NULL.
2010-02-26 09:22:48 -03:00
Sergey Glukhov
5d9a74f22d Bug#47669 Query showed by EXPLAIN EXTENDED gives different result from original query
Item_field::print method does not take into
account fields whose values may be null.
The fix is to print 'NULL' if field value is null.
2010-02-26 17:40:01 +04:00
Sergey Glukhov
1bb6ea1727 automerge 2010-02-26 16:19:05 +04:00