Commit graph

24310 commits

Author SHA1 Message Date
Georgi Kodinov
730847898d Bug#37627: Killing query with sum(exists()) or avg(exists()) reproducibly crashes server
When there is an error executing EXISTS predicates they return NULL as their string
or decimal value but don't set the NULL value flag.
Fixed by returning 0 (as a decimal or a string) on error exectuting the subquery.
Note that we can't return NULL as EXISTS is not supposed to return NULL.
2008-07-04 17:02:17 +03:00
Gleb Shchepa
9d84892b23 auto merge from local tree 2008-06-27 23:54:16 +05:00
Gleb Shchepa
fc827ae387 Fixed bug #36632: SELECT DISTINCT from a simple view on an
InnoDB table, where all selected columns
                  belong to the same unique index key, returns
                  incorrect results

Server executes some queries via QUICK_GROUP_MIN_MAX_SELECT
(MIN/MAX optimization for queries with GROUP BY or DISTINCT
clause) and that optimization implies loose index scan, so all
grouping is done by the QUICK_GROUP_MIN_MAX_SELECT::get_next
method.

The server does not set the precomputed_group_by flag for some
QUICK_GROUP_MIN_MAX_SELECT queries and duplicates grouping by
call to the end_send_group function.

Fix: when the test_if_skip_sort_order function selects loose 
index scan as a best way to satisfy an ORDER BY/GROUP BY type
of query, the precomputed_group_by flag has been set to use 
end_send/end_write functions instead of end_send_group/
end_write_group functions.
2008-06-27 23:50:53 +05:00
Gleb Shchepa
c896190892 backport to 5.1 from 6.0
Bug#35658 (An empty binary value leads to mysqld crash)
  
Before this fix, the following token
  b''
caused the parser to crash when reading the binary value from the empty string.
The crash was caused by:
  ptr+= max_length - 1;
because max_length is unsigned and was 0, causing an overflow.
  
With this fix, an empty binary literal b'' is parsed as a binary value 0,
in Item_bin_string.
2008-06-27 15:23:40 +05:00
Gleb Shchepa
6cf0fcbf9e auto merge 5.1-main --> 5.1-bugteam 2008-06-25 14:44:55 +05:00
Andrei Elkin
e06de90ecc merging prior to push Bug #36443 2008-06-20 13:57:25 +03:00
Andrei Elkin
b8d449505d Bug#36443 Server crashes when executing insert when insert trigger on table
The crash appeared to be a result of allocating an instance of Discrete_interval 
      automatically that that was referred in out-of-declaration scope.
                        
      Fixed with correcting backing up and restoring scheme of
      auto_inc_intervals_forced, introduced by bug#33029, by means of shallow copying;
      added simulation code that forces executing those fixes of the former bug that
      targeted at master-and-slave having incompatible bug#33029-prone versions.
2008-06-19 21:47:59 +03:00
Gleb Shchepa
56ef6a235d auto merge 2008-06-19 19:26:00 +05:00
Davi Arnaut
e7f3c5fc44 Bug#37003 Tests sporadically crashes with embedded server
Another problem is that the backtrace facility wasn't being
enabled for non-Linux targets even if the target OS has the
backtrace functions. Also, the stacktrace functions inside
mysqltest were being used without proper checks for their
presence in the build.
2008-06-19 11:02:32 -03:00
Gleb Shchepa
e2d1351bd4 auto merge with local tree (bug #37076) 2008-06-19 18:32:14 +05:00
Gleb Shchepa
954fba4739 Fixed bug #37076: TIMESTAMP/DATETIME/DATE values are not
replicated correctly between machines with
                  mixed endiannes
2008-06-19 18:02:04 +05:00
Tatiana A. Nurnberg
d6c476b8c8 Fixed bug #37004.
The value of JOIN::tables must be set to 0 when there
is no matching min/max row.
2008-06-19 05:08:41 +02:00
Davi Arnaut
30bd1d7cb3 Bug#37003 Tests sporadically crashes with embedded server
The problem was that when a embedded linked version of mysqltest
crashed there was no way to obtain a stack trace if no core file
is available. Another problem is that the embedded version of
libmysql was not behaving (crash) the same as the non-embedded with
respect to sending commands to a explicitly closed connection.

The solution is to generate a mysqltest's stack trace on crash
and to enable "reconnect" if the connection handle was explicitly
closed so the behavior matches the non-embedded one.
2008-06-18 13:17:15 -03:00
Timothy Smith
69662273cc Merge changes from mysql 5.1.25 release clone (BK), applied manually into bzr. 2008-06-17 19:20:09 -06:00
Timothy Smith
3847e5c820 fix typo
This change was committed to the 5.1.25 release clone, but never
made it to the mysql-5.1 BK tree.  I'm committing it to mysql-5.1
bzr now.
2008-06-17 19:05:56 -06:00
Davi Arnaut
c20188e011 Bug#33873: Fast ALTER TABLE doesn't work with multibyte character sets
The problem was that when comparing tables for a possible
fast alter table, the comparison was being performed using
the parsed information and not the final definition.
      
The solution is to use the possible final table layout to
compare if a fast alter is possible or not.
2008-06-17 11:12:21 -03:00
Mattias Jonsson
4165929973 auto merge 2008-06-17 14:09:33 +02:00
Mattias Jonsson
3345a71545 Bug#35931 Index search of partitioned MyISAM table
returns erroneous results

Used the wrong function when fixing 30480 which lead to
no stop on end_key resulting in duplicate results from index scan

Includes test cases for the duplicates 37327 and 37329,
Duplicate rows and bad performance/High Handler_read_next values

Recommit after merge issues
2008-06-17 12:41:06 +02:00
Georgi Kodinov
00b402876c merge 5.1 -> 5.1-bugteam 2008-06-17 11:33:16 +03:00
Mattias Jonsson
77e54c03ac Bug#31210: INSERT DELAYED crashes server when used on partitioned tables
post push patch

push build found tree failing test when using:
--ps-protocol --mysqld=--binlog-format=row
Changed to the new error message.
2008-06-09 14:39:20 +02:00
Mattias Jonsson
78cca2d58e merge before pushing 2008-06-04 11:08:44 +02:00
Davi Arnaut
92d5c4d774 Bug#33362: Query cache invalidation (truncate) may hang
if cached query uses many tables

The problem was that query cache would not properly cache
queries which used 256 or more tables but yet would leave
behind query cache blocks pointing to freed (destroyed)
data. Later when invalidating (due to a truncate) query cache
would attempt to grab a lock which resided in the freed data,
leading to hangs or undefined behavior.

This was happening due to a improper return value from the
function responsible for registering the tables used in the
query (so the cache can be invalidated later if one of the
tables is modified). The function expected a return value of
type boolean (char, 8 bits) indicating success (1) or failure
(0) but the number of tables registered (unsigned int, 32 bits)
was being returned instead. This caused the function to return
failure for cases where it had actually succeed because when
a type (unsigned int) is converted to a narrower type (char),
the excess bits on the left are discarded. Thus if the 8
rightmost bits are zero, the return value will be 0 (failure).

The solution is to simply return true (1) only if the number of
registered table is greater than zero and false (0) otherwise.
2008-06-03 10:59:46 -03:00
Mattias Jonsson
109a041a95 Bug#31210: INSERT DELAYED crashes server when used on partitioned tables
Problem was an unclear error message since it could suggest that
MyISAM did not support INSERT DELAYED.
Changed the error message to say that DELAYED is not supported by the
table, instead of the table's storage engine.
The confusion is that a partitioned table is in somewhat sense using
the partitioning storage engine, which in turn uses the ordinary
storage engine. By saying that the table does not support DELAYED we
do not give any extra informantion about the storage engine or if it
is partitioned.
2008-06-03 13:25:41 +02:00
Georgi Kodinov
bd4c6d9b8c Bug#37069: Make federated disabled by default
The federated storage engine is now disabled by default.
mysql-test-run.pl is updated to enable it whenever it's required and available.
2008-05-30 13:21:45 +03:00
Georgi Kodinov
fb78c56f51 merged 5.0-bugteam to 5.1-bugteam 2008-05-28 17:18:24 +03:00
Alexander Barkov
ca1860c36c Updating charset doc files.
Thanks to Paul for preparing the up-to-date files
reflecting 4.1 changes.
2008-05-28 15:03:47 +05:00
Chad MILLER
13a4f0b38a Merge from bk tree. Resolved addition of same files in both trees. 2008-05-23 18:42:54 +02:00
Kristofer Pettersson
efa65f6795 Bug#34417 Assertion failure in Diagnostics_area::set_error_status()
The Diagnostic_area caused an assertion failure in debug mode when
the disk was full.
  
By setting the internal error handler to ignore errors caused by
underlying logging methods, the error is avoided.
2008-05-21 14:44:30 +02:00
kostja@bodhi.(none)
6ae3bca94e Bug#27430 "Crash in subquery code when in PS and table DDL changed after
PREPARE", review fixes:
- make the patch follow the specification of WL#4166 and remove  
the new error that was originally introduced.
Now the client never gets an error from reprepare, unless it failed.
I.e. even if the statement at hand returns a completely different
result set, this is not considered a server error.
The C API library, that can not handle this situation, was modified to
return a client error.
Added additional test coverage.
2008-05-20 20:36:26 +04:00
kostja@bodhi.(none)
2c0ce2a832 Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  bodhi.(none):/opt/local/work/mysql-5.1-27430
2008-05-20 11:38:17 +04:00
kostja@bodhi.(none)
86396459ae Merge bk-internal.mysql.com:/home/bk/mysql-5.1-27430
into  bodhi.(none):/opt/local/work/mysql-5.1-27430
2008-05-20 11:33:27 +04:00
kostja@bodhi.(none)
6e4af99f5d Bug#27430 "Crash in subquery code when in PS and table DDL changed after
PREPARE": rename members, methods, classes to follow the spec 
(a code review request)
2008-05-20 11:29:16 +04:00
davi@skynet.(none)
2f770c91d2 Bug#27430 Crash in subquery code when in PS and table DDL changed after PREPARE
Add test target to the makefile that will cause all
statements to be re-prepared before execution.
2008-05-19 13:39:31 -03:00
gshchepa/uchum@host.loc
d044d9f00b Merge host.loc:/work/bk/5.0-bugteam
into  host.loc:/work/bk/5.1-bugteam
2008-05-18 14:27:44 +05:00
gshchepa/uchum@host.loc
80b16212c3 Merge host.loc:/work/bugs/5.0-bugteam-36676
into  host.loc:/work/bk/5.0-bugteam
2008-05-18 14:27:17 +05:00
gshchepa/uchum@host.loc
2459d3a9ad Fixed bug#36676: multiupdate using LEFT JOIN updates only
first row or fails with an error:
  ERROR 1022 (23000): Can't write; duplicate key in table ''

The server uses intermediate temporary table to store updated
row data.  The first column of this table contains rowid.
Current server implementation doesn't reset NULL flag of that
column even if the server fills a column with rowid.
To keep each rowid unique, there is an unique index.
An insertion into an unique index takes into account NULL
flag of key value and ignores real data if NULL flag is set.
So, insertion of actually different rowids may lead to two
kind of problems.  Visible effect of each of these problems
depends on an initial engine type of temporary table:

1. If multiupdate initially creates temporary table as
a MyISAM table (a table contains blob columns, and the
create_tmp_table function assumes, that this table is
large), it inserts only one single row and updates
only rows with one corresponding rowid. Other rows are
silently ignored. 

2. If multiupdate initially creates MEMORY temporary
table, fills it with data and reaches size limit for
MEMORY tables (max_heap_table_size), multiupdate
converts MEMORY table into MyISAM table and fails
with an error:
  ERROR 1022 (23000): Can't write; duplicate key in table ''


Multiupdate has been fixed to update the NULL flag of
temporary table rowid columns.
2008-05-18 14:21:25 +05:00
kostja@bodhi.(none)
aef39682d6 Fix mysql_client_test failure in pushbuild 5.1-27430
(Bug#27430)
2008-05-18 10:28:36 +04:00
kostja@bodhi.(none)
7aeeb8f667 Implement some code review fixes for the fix for Bug#27430
"Crash in subquery code when in PS and table DDL changed after PREPARE"
2008-05-18 01:51:18 +04:00
holyfoot/hf@mysql.com/hfmain.(none)
f9d183b5dc Bug #36705 key_buffer_size of >= 2G allocates all availabel virtual memory on 64-bit wondo.
temporary variables of 'long' types were used to store ulong values,
that causes init_key_cache to receive distorted parameters
2008-05-17 12:53:47 +05:00
cmiller@zippy.cornsilk.net
c1f35308cb Merge bk-internal.mysql.com:/home/bk/mysql-5.0-bugteam
into  zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-bugteam
2008-05-16 17:48:07 -04:00
cmiller@zippy.cornsilk.net
34deab48db Merge zippy.cornsilk.net:/home/cmiller/work/mysql/bug36570/my50-bug36570
into  zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-bugteam
2008-05-16 17:40:01 -04:00
cmiller@zippy.cornsilk.net
fd6cce83fb Merge zippy.cornsilk.net:/home/cmiller/work/mysql/bug36570/my51-bug36570
into  zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.1-bugteam
2008-05-16 17:37:37 -04:00
gkodinov/kgeorge@magare.gmz
b98922b7cc Merge magare.gmz:/home/kgeorge/mysql/work/B36011-take2-5.0-bugteam
into  magare.gmz:/home/kgeorge/mysql/work/B36011-5.1-bugteam
2008-05-16 19:03:50 +03:00
gkodinov/kgeorge@magare.gmz
0b7abbecbe Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-bugteam
into  magare.gmz:/home/kgeorge/mysql/autopush/B36011-take2-5.0-bugteam
2008-05-16 18:56:43 +03:00
gkodinov/kgeorge@magare.gmz
df3341a764 Bug #36011: server crash with explain extended on query
with dependent subqueries
An IN subquery is executed on EXPLAIN when it's not correlated.
If the subquery required a temporary table for its execution
not all the internal structures were restored from pointing to
the items of the temporary table to point back to the items of
the subquery.
Fixed by restoring the ref array when a temp tables were used in
executing the IN subquery during EXPLAIN EXTENDED.
2008-05-16 17:05:55 +03:00
mats@mats-laptop.(none)
87d7c13a36 Merge mkindahl@bk-internal.mysql.com:/home/bk/mysql-5.1-bugteam
into  mats-laptop.(none):/home/bkroot/mysql-5.1-bugteam
2008-05-16 11:15:22 +02:00
gshchepa/uchum@host.loc
4dfd740683 Merge host.loc:/work/bugs/5.0-bugteam-36488
into  host.loc:/work/bk/5.0-bugteam
2008-05-16 13:00:12 +05:00
gshchepa/uchum@host.loc
a91e995c0c Merge host.loc:/work/bugs/5.0-bugteam-36488
into  host.loc:/work/bk/5.1-bugteam
2008-05-16 12:59:32 +05:00
cmiller@zippy.cornsilk.net
15dcc14c8f Merge zippy.cornsilk.net:/home/cmiller/work/mysql/bug36570/my50-bug36570
into  zippy.cornsilk.net:/home/cmiller/work/mysql/bug36570/my51-bug36570
2008-05-15 19:45:42 -04:00
cmiller@zippy.cornsilk.net
573828aa6a Bug#36570: Parse error of CREATE PROCEDURE stmt with comments on \
slave

The stored-routine code took the contents of the (lowest) parser
and copied it directly to the binlog, which causes problems if there
is a special case of interpretation at the parser level -- which 
there is, in the "/*!VER */" comments.  The trailing "*/" caused
errors on the slave, naturally.

Now, since by that point we have /properly/ created parse-tree (as 
the rest of the server should do!) for the stored-routine CREATE, we
can construct a perfect statement from that information, instead of
writing uncertain information from an unknown parser state.  
Fortunately, there's already a function nearby that does exactly 
that.
---
Update for Bug#36570.  Qualify routine names with db name when
writing to the binlog ONLY if the source text is qualified.
2008-05-15 19:13:24 -04:00