Commit graph

58327 commits

Author SHA1 Message Date
MySQL Build Team
9c62fbffbd Test cases added 2009-11-25 18:21:48 +01:00
MySQL Build Team
dee8224be7 Backport into build-200911241145-5.1.40sp1
> ------------------------------------------------------------
> revno: 3190 [merge]
> revision-id: kostja@sun.com-20091103174552-bfpak6r7ngf5cbjb
> parent: magnus.blaudd@sun.com-20091103170719-6b64sjnivsiyz6xy
> parent: kostja@sun.com-20091103165854-7di545xruez8w207
> committer: Konstantin Osipov <kostja@sun.com>
> branch nick: 5.1-41756
> timestamp: Tue 2009-11-03 20:45:52 +0300
> message:
>   A fix and a test case for 
>   Bug#41756 "Strange error messages about locks from InnoDB".
>         
>   In JT_EQ_REF (join_read_key()) access method, 
>   don't try to unlock rows in the handler, unless certain that 
>   a) they were locked
>   b) they are not used.
>   
>   Unlocking of rows is done by the logic of the nested join loop,
>   and is unaware of the possible caching that the access method may
>   have. This could lead to double unlocking, when a row
>   was unlocked first after reading into the cache, and then 
>   when taken from cache, as well as to unlocking of rows which
>   were actually used (but taken from cache).
>         
>   Delegate part of the unlocking logic to the access method,
>   and in JT_EQ_REF count how many times a record was actually 
>   used in the join. Unlock it only if it's usage count is 0.
>   
>   Implemented review comments.
> ------------------------------------------------------------
> Use --include-merges or -n0 to see merged revisions.
2009-11-25 18:18:52 +01:00
MySQL Build Team
dda43d98d3 Backport into build-200911241145-5.1.40sp1
> ------------------------------------------------------------
> revno: 3184.7.1
> revision-id: luis.soares@sun.com-20091027151553-ri74b2zdchw8wyg7
> parent: joro@sun.com-20091019135504-e6fmhf4xyy0wdymb
> committer: Luis Soares <luis.soares@sun.com>
> branch nick: mysql-5.1-bugteam
> timestamp: Tue 2009-10-27 15:15:53 +0000
> message:
>   BUG#48297: Schema name is ignored when LOAD DATA is written into 
>   binlog, replication aborts
>   
>   In SBR or MBR, the schema name is not being written to the binlog
>   when executing a LOAD DATA statement. This becomes a problem when
>   the current database (lets call it db1) is different from the
>   table's schema (lets call it db2). For instance, take the
>   following statements:
>     
>     use db1;
>     load data local infile 'infile.txt' into table db2.t
>   
>   Should this statement be logged without t's schema (db2), when
>   replaying it, one can get db1.t populated instead of db2.t (if
>   db1.t exists). On the other hand, if there is no db1.t at all,
>   replication will stop.
>   
>   We fix this by always logging the table (in load file) with fully
>   qualified name when its schema is different from the current
>   database or when no default database was selected.
2009-11-25 18:17:57 +01:00
MySQL Build Team
57ca07a5e9 Backport into build-200911241145-5.1.40sp1
> ------------------------------------------------------------
> revno: 3184.3.13
> revision-id: joro@sun.com-20091019135504-e6fmhf4xyy0wdymb
> parent: joro@sun.com-20091026095557-euhe1z9oxtgkw35h
> committer: Georgi Kodinov <joro@sun.com>
> branch nick: B47788-5.1-bugteam
> timestamp: Mon 2009-10-19 16:55:04 +0300
> message:
>   Bug #47788: Crash in TABLE_LIST::hide_view_error on 
>     UPDATE + VIEW + SP + MERGE + ALTER
>   
>   When cleaning up the stored procedure's internal 
>   structures the flag to ignore the errors for 
>   INSERT/UPDATE IGNORE was not cleaned up.
>   As a result error ignoring was on during name 
>   resolution. And this is an abnormal situation : the
>   SELECT_LEX flag can be on only during query execution.
>   
>   Fixed by correctly cleaning up the SELECT_LEX flag 
>   when reusing the SELECT_LEX in a second execution.
2009-11-25 18:16:26 +01:00
MySQL Build Team
cf3dc5b07c Backport into build-200911241145-5.1.40sp1
> ------------------------------------------------------------
> revno: 3182 [merge]
> revision-id: ramil@mysql.com-20091018162655-z4dlolfx5s0zem8l
> parent: alexey.kopytov@sun.com-20091016201951-fsht0wm8xn8vkzsx
> parent: ramil@mysql.com-20091013044327-24km05wc060ied87
> committer: Ramil Kalimullin <ramil@mysql.com>
> branch nick: mysql-5.1-bugteam
> timestamp: Sun 2009-10-18 21:26:55 +0500
> message:
>   Fix for bug#47963: Wrong results when index is used
>   
>   Problem: using null microsecond part in a WHERE condition 
>   (e.g. WHERE date_time_field <= "YYYY-MM-DD HH:MM:SS.0000") 
>   may lead to wrong results due to improper DATETIMEs 
>   comparison in some cases.
>   
>   Fix: comparing DATETIMEs as strings we must trim trailing 0's
>   in such cases.
> ------------------------------------------------------------
> Use --include-merges or -n0 to see merged revisions.
2009-11-25 18:14:34 +01:00
MySQL Build Team
233dc05f39 Backport into build-200911241145-5.1.40sp1
> ------------------------------------------------------------
> revno: 3181
> revision-id: alexey.kopytov@sun.com-20091016201951-fsht0wm8xn8vkzsx
> parent: joerg@mysql.com-20091016164025-kb4sbrggq5o7zufc
> committer: Alexey Kopytov <Alexey.Kopytov@Sun.com>
> branch nick: mysql-5.1-bugteam
> timestamp: Sat 2009-10-17 00:19:51 +0400
> message:
>   Bug #47123: Endless 100% CPU loop with STRAIGHT_JOIN 
>    
>   The problem was in incorrect handling of predicates involving 
>   NULL as a constant value by the range optimizer. 
>    
>   For example, when creating a SEL_ARG node from a condition of 
>   the form "field < const" (which would normally result in the 
>   "NULL < field < const" SEL_ARG),  the special case when "const" 
>   is NULL was not taken into account, so "NULL < field < NULL" 
>   was produced for the "field < NULL" condition. 
>    
>   As a result, SEL_ARG structures of this form could not be 
>   further optimized which in turn could lead to incorrectly 
>   constructed SEL_ARG trees. In particular, code assuming SEL_ARG 
>   structures to always form a sequence of ordered disjoint 
>   intervals could enter an infinite loop under some 
>   circumstances. 
>    
>   Fixed by changing get_mm_leaf() so that for any sargable 
>   predicate except "<=>" involving NULL as a constant, "empty" 
>   SEL_ARG is returned, since such a predicate is always false.
2009-11-25 18:11:54 +01:00
MySQL Build Team
b84555efae Backport into build-200911241145-5.1.40sp1
> ------------------------------------------------------------
> revno: 3148.9.6
> revision-id: martin.hansson@sun.com-20091102122407-krzh4h0i052lbwr5
> parent: davi.arnaut@sun.com-20091102112236-k3myix2xy8miyv4s
> committer: Martin Hansson <martin.hansson@sun.com>
> branch nick: 5.1bt
> timestamp: Mon 2009-11-02 13:24:07 +0100
> message:
>   Bug#47925: regression of range optimizer and date comparison in 5.1.39!
>   
>   When a query was using a DATE or DATETIME value formatted
>   using any other separator characters beside hyphen '-', a
>   query with a greater-or-equal '>=' condition matching only
>   the greatest value in an indexed column, the result was
>   empty if index range scan was employed.
>   
>   The range optimizer got a new feature between 5.1.38 and
>   5.1.39 that changes a greater-or-equal condition to a
>   greater-than if the value matching that in the query was not
>   present in the table. But the value comparison function
>   compared the dates as strings instead of dates.
>   
>   The bug was fixed by splitting the function
>   get_date_from_str in two: One part that parses and does
>   error checking. This function is now visible outside the
>   module. The old get_date_from_str now calls the new
>   function.
2009-11-25 18:09:30 +01:00
MySQL Build Team
3b04565704 Backport into build-200911241145-5.1.40sp1
> ------------------------------------------------------------
> revno: 3148.9.3
> revision-id: azundris@mysql.com-20091029230154-jp2xqvzw2nhj9q41
> parent: azundris@mysql.com-20091027095316-54lwjr9vqkscq1ik
> committer: Tatiana A. Nurnberg <azundris@mysql.com>
> branch nick: 51-48295
> timestamp: Thu 2009-10-29 16:01:54 -0700
> message:
>   Bug#48295: explain extended crash with subquery and ONLY_FULL_GROUP_BY sql_mode
>   
>   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).
2009-11-25 18:04:39 +01:00
MySQL Build Team
c084d7010b Backport into build-200911241145-5.1.40sp1
> ------------------------------------------------------------
> revno: 3148.8.5
> revision-id: davi.arnaut@sun.com-20091102112139-pztthzy6qj8jzomn
> parent: svoj@sun.com-20091103091902-vwszwwpfi1f4zrpn
> committer: Davi Arnaut <Davi.Arnaut@Sun.COM>
> branch nick: 48370-5.1
> timestamp: Mon 2009-11-02 09:21:39 -0200
> message:
>   Bug#48370: Absolutely wrong calculations with GROUP BY and decimal fields when using IF
>   Bug#45261: Crash, stored procedure + decimal
>   
>   Revert fix for Bug#45261 due to unforeseen bugs.
2009-11-25 18:00:46 +01:00
MySQL Build Team
6d027f4ba6 Backport into build-200911241145-5.1.40sp1
> ------------------------------------------------------------
> revno: 3148.13.4
> revision-id: svoj@sun.com-20091102144320-0hz2ti21em510ee5
> parent: svoj@sun.com-20091102144140-8de1z6mdy5dopw3j
> committer: Sergey Vojtovich <svoj@sun.com>
> branch nick: mysql-5.1-bugteam
> timestamp: Mon 2009-11-02 18:43:20 +0400
> message:
>   Applying InnoDB snashot 5.1-ss6129
>   
>   Detailed revision comments:
>   
>   r6051 | sunny | 2009-10-12 07:05:00 +0300 (Mon, 12 Oct 2009) | 6 lines
>   branches/5.1: Ignore negative values supplied by the user when calculating the
>   next value to store in dict_table_t. Setting autoincrement columns top negative
>   values is undefined behavior and this change should bring the behavior of
>   InnoDB closer to what users expect. Added several tests to check.
>   rb://162
2009-11-25 17:58:51 +01:00
MySQL Build Team
cb115003f4 Backport into build-200911241145-5.1.40sp1
> ------------------------------------------------------------
> revno: 3148.13.3
> revision-id: svoj@sun.com-20091102144140-8de1z6mdy5dopw3j
> parent: svoj@sun.com-20091102143655-lo69f57p82nky58q
> committer: Sergey Vojtovich <svoj@sun.com>
> branch nick: mysql-5.1-bugteam
> timestamp: Mon 2009-11-02 18:41:40 +0400
> message:
>   Applying InnoDB snashot 5.1-ss6129
>   
>   Detailed revision comments:
>   
>   r6045 | jyang | 2009-10-08 02:27:08 +0300 (Thu, 08 Oct 2009) | 7 lines
>   branches/5.1: Fix bug #47777. Treat the Geometry data same as
>   Binary BLOB in ha_innobase::store_key_val_for_row(), since the
>   Geometry data is stored as Binary BLOB in Innodb.
>   
>   Review: rb://180 approved by Marko Makela.
2009-11-25 17:56:33 +01:00
MySQL Build Team
d8f41c8593 Backport into build-200911241145-5.1.40sp1
> ------------------------------------------------------------
> revno: 1810.3961.7
> committer: Georgi Kodinov <joro@sun.com>
> branch nick: B48291-5.0-bugteam
> timestamp: Fri 2009-10-30 15:15:43 +0200
> message:
>   Bug #48291 : crash with row() operator,select into @var, and
>     subquery returning multiple rows
>
>   Error handling was missing when handling subqueires in WHERE
>   and when assigning a SELECT result to a @variable.
>   This caused crash(es).
>
>   Fixed by adding error handling code to both the WHERE
>   condition evaluation and to assignment to an @variable.
> ------------------------------------------------------------
2009-11-25 17:52:26 +01:00
MySQL Build Team
eb96968183 Backport into build-200911241145-5.1.40sp1
> ------------------------------------------------------------
> revno: 1810.3964.1
> revision-id: alexey.kopytov@sun.com-20091030155453-0vlfwki805h9os62
> parent: joerg@mysql.com-20091016122941-rf6z0keqvmlgjfto
> committer: Alexey Kopytov <Alexey.Kopytov@Sun.com>
> branch nick: my50-bug48131
> timestamp: Fri 2009-10-30 18:54:53 +0300
> message:
>   Bug #48131: crash group by with rollup, distinct, filesort,
>               with temporary tables
>   
>   There were two problems the test case from this bug was
>   triggering:
>   
>   1. JOIN::rollup_init() was supposed to wrap all constant Items
>   into another object for queries with the WITH ROLLUP modifier
>   to ensure they are never considered as constants and therefore
>   are written into temporary tables if the optimizer chooses to
>   employ them for DISTINCT/GROUP BY handling.
>   
>   However, JOIN::rollup_init() was called before
>   make_join_statistics(), so Items corresponding to fields in
>   const tables could not be handled as intended, which was
>   causing all kinds of problems later in the query execution. In
>   particular, create_tmp_table() assumed all constant items
>   except "hidden" ones to be removed earlier by remove_const()
>   which led to improperly initialized Field objects for the
>   temporary table being created. This is what was causing crashes
>   and valgrind errors in storage engines.
>   
>   2. Even when the above problem had been fixed, the query from
>   the test case produced incorrect results due to some
>   DISTINCT/GROUP BY optimizations being performed by the
>   optimizer that are inapplicable in the WITH ROLLUP case.
>   
>   Fixed by disabling inapplicable DISTINCT/GROUP BY optimizations
>   when the WITH ROLLUP modifier is present, and splitting the
>   const-wrapping part of JOIN::rollup_init() into a separate
>   method which is now invoked after make_join_statistics() when
>   the const tables are already known.
2009-11-25 17:45:33 +01:00
MySQL Build Team
3ebac06ddb Backport into build-200911241145-5.1.40sp1
> ------------------------------------------------------------
> revno: 1810.3961.6
> revision-id: joro@sun.com-20091030094044-quadg0bwjy7cwqzw
> parent: joro@sun.com-20091029152429-ks55fhrp4lhknyij
> committer: Georgi Kodinov <joro@sun.com>
> branch nick: B48293-5.0-bugteam
> timestamp: Fri 2009-10-30 11:40:44 +0200
> message:
>   Bug #48293: crash with procedure analyse, view with > 10 columns,
>   having clause...
>   
>   The fix for bug 46184 was not very complete. It was not covering
>   views using temporary tables and multiple tables in a FROM clause.
>   Fixed by reverting the fix for 46184 and making a more general
>   check that is checking at the right execution stage and for all
>   of the non-supported cases.
>   Now PROCEDURE ANALYZE on non-top level SELECT is also forbidden.
>   Updated the analyse.test and subselect.test accordingly.
2009-11-25 17:43:47 +01:00
MySQL Build Team
d8798e2960 Backport into build-200911241145-5.1.40sp1
> ------------------------------------------------------------
> revno: 1810.3961.12
> revision-id: li-bing.song@sun.com-20091103090041-zj7nedx6ok5jgges
> parent: davi.arnaut@sun.com-20091102201021-1brn7cjb1kvqg9gr
> committer: <Li-Bing.Song@sun.com>
> branch nick: mysql-5.0-bugteam
> timestamp: Tue 2009-11-03 17:00:41 +0800
> message:
>   BUG#48216 Replication fails on all slaves after upgrade to 5.0.86 on master
>   
>   When a sessione is closed, all temporary tables of the session are automatically 
>   dropped and are binlogged. But it will be binlogged with wrong database names when
>   the length of the temporary tables' database names are greater than the 
>   length of the current database name or the current database is not set.
>   
>   Query_log_event's db_len is forgot to set when Query_log_event's db is set.
>   This patch wrote code to set db_len immediately after db has set.
2009-11-25 17:42:10 +01:00
MySQL Build Team
e0f253147a Backport into build-200911241145-5.1.40sp1
> ------------------------------------------------------------
> revno: 1810.3959.6
> revision-id: joro@sun.com-20091021084345-iki6z0uceieoupey
> parent: ramil@mysql.com-20091023112648-gie6o3odj57cxh1e
> committer: Georgi Kodinov <joro@sun.com>
> branch nick: B47780-5.0-bugteam
> timestamp: Wed 2009-10-21 11:43:45 +0300
> message:
>   Bug #47780: crash when comparing GIS items from subquery
>         
>   If the first argument to GeomFromWKB function is a geometry
>   field then the function just returns its value.
>   However in doing so it's not preserving first argument's 
>   null_value flag and this causes unexpected null value to
>   be returned to the calling function.
>         
>   Fixed by updating the null_value of the GeomFromWKB function
>   in such cases (and all other cases that return a NULL e.g.
>   because of not enough memory for the return buffer).
2009-11-25 17:36:58 +01:00
MySQL Build Team
c466f08328 Backport into build-200911241145-5.1.40sp1
> ------------------------------------------------------------
> revno: 1810.3959.5
> revision-id: ramil@mysql.com-20091023112648-gie6o3odj57cxh1e
> parent: ramil@mysql.com-20091021090408-208mvwwrcroi2j8c
> committer: Ramil Kalimullin <ramil@mysql.com>
> branch nick: b48258-5.0-bugteam
> timestamp: Fri 2009-10-23 16:26:48 +0500
> message:
>   Fix for bug#48258: Assertion failed when using a spatial index
>   
>   Problem: involving a spatial index for "non-spatial" queries
>   (that don't containt MBRXXX() functions) may lead to failed assert.
>   
>   Fix: don't use spatial indexes in such cases.
2009-11-25 17:35:05 +01:00
MySQL Build Team
c7f31d41d4 Backport into build-200911241145-5.1.40sp1
> ------------------------------------------------------------
> revno: 1810.3959.4
> revision-id: ramil@mysql.com-20091021090408-208mvwwrcroi2j8c
> parent: azundris@mysql.com-20091021033856-ydodp4q42o58e7ka
> committer: Ramil Kalimullin <ramil@mysql.com>
> branch nick: b47019-5.0-bugteam
> timestamp: Wed 2009-10-21 14:04:08 +0500
> message:
>   Fix for bug#47019: Assertion failed: 0, file .\rt_mbr.c, 
>   line 138 when forcing a spatial index
>   
>   Problem: "Spatial indexes can be involved in the search 
>   for queries that use a function such as MBRContains() 
>   or MBRWithin() in the WHERE clause".
>   Using spatial indexes for JOINs with =, <=> etc.
>   predicates is incorrect.
>   
>   Fix: disable spatial indexes for such queries.
2009-11-25 17:32:04 +01:00
Kent Boortz
2718aa5a29 Set version number for mysql-5.1.40sp1 release 2009-11-25 13:23:25 +01:00
Bjorn Munch
a611e2eba1 merge of 47383 from 5.1-mtr 2009-10-06 14:37:37 +02:00
Georgi Kodinov
709436c257 automerge 2009-10-06 12:59:46 +03:00
Kristofer Pettersson
618d79808a automerge 2009-10-06 10:00:57 +02:00
Kristofer Pettersson
66e77c86b8 Merge mysql-5.0-bugteam => mysql-5.1-bugteam 2009-10-06 09:52:19 +02:00
Kristofer Pettersson
499121a080 Automerg 2009-10-06 09:40:30 +02:00
Kristofer Pettersson
dfed28e750 Bug#47768 pthread_cond_timedwait() is broken on windows
The pthread_cond_wait implementations for windows might
dead lock in some rare circumstances.

1) One thread (I) enter a timed wait and at a point in
   time ends up after mutex unlock and before
   WaitForMultipleObjects(...)
2) Another thread (II) enters pthread_cond_broadcast.
   Grabs the mutex and discovers one waiter. It set
   the broadcast event and closes the broadcast gate
   then unlocks the mutex.
3) A third thread (III) issues a pthread_cond_signal.
   It grabs the mutex, discovers one waiter, sets the
   signal event then unlock the mutex.
4) The first threads (I) enters WaitForMultipleObjects
   and finds out that the signal object is in a
   signalled state and exits the wait.
5) Thread (I) grabs the mutex and checks result status.
   The number of waiters is decreased and becomes equal
   to 0. The event returned was a signal event so the
   broadcast gate isn't opened. The mutex is released.
6) Thread (II) issues a new broadcast. The mutex is
   acquired but the number of waiters are 0 hence
   the broadcast gate remains closed.
7) Thread (I) enters the wait again but is blocked by
   the broadcast gate.

      This fix resolves the above issue by always resetting
      broadcast gate when there are no more waiters in th queue.
2009-10-06 09:38:44 +02:00
Georgi Kodinov
094d991d0d version change 2009-10-06 10:33:16 +03:00
Georgi Kodinov
bf1b7b7ded version update 2009-10-06 10:32:02 +03:00
Georgi Kodinov
cfd737a472 merge mysql-5.1-pe 2009-10-06 10:10:47 +03:00
John H. Embretsen
23bdf0d805 Bug#47746 - main.innodb_mysql fails sporadically:
Mask part of EXPLAIN output with '#' to account for varying row count estimation.
2009-10-05 15:16:27 +02:00
Frazer Clement
bbda071ed5 Merge 5.0-bugteam->5.1 bugteam 2009-10-05 13:57:59 +01:00
Frazer Clement
166d08c7eb Bug#39663 mysqltest: --enable_info, affected_rows and ps-protocol broken 2009-10-05 13:57:00 +01:00
Satya B
00297f65d7 Applying InnoDB snapshot 5.1-ss5921, part 3. Fixes BUG#46256
1. BUG#46256 - drop table with unknown collation crashes innodb

Note: No testcase attached and has to be verified manually

Detailed revision comments:

r5799 | calvin | 2009-09-09 20:47:31 +0300 (Wed, 09 Sep 2009) | 10 lines
branches/5.1: fix bug#46256

Allow tables to be dropped even if the collation is not found,
but issue a warning.

Could not find an easy way to add mysql-test since it requires
changes to charsets and restarting the server. Tests were
executed manually.

Approved by: Heikki (on IM)
r5805 | vasil | 2009-09-10 08:41:48 +0300 (Thu, 10 Sep 2009) | 7 lines
branches/5.1:

Fix a compilation warning caused by c5799:

handler/ha_innodb.cc: In function 'void innobase_get_cset_width(ulint, ulint*, ulint*)':
handler/ha_innodb.cc:830: warning: format '%d' expects type 'int', but argument 2 has type 'ulint'
2009-10-05 16:56:10 +05:30
Satya B
37e4f861ed Applying InnoDB snapshot 5.1-ss5921, part 2. Fixes BUG#44369
BUG#44369 - InnoDB: Does not uniformly disallow disallowed column names

Detailed revision comments:

r5741 | jyang | 2009-09-03 07:16:01 +0300 (Thu, 03 Sep 2009) | 5 lines
branches/5.1: Block creating table with column name conflicting
with Innodb reserved key words. (Bug #44369) rb://151 approved
by Sunny Bains.


r5760 | jyang | 2009-09-04 07:07:34 +0300 (Fri, 04 Sep 2009) | 3 lines
branches/5.1: This is to revert change 5741. A return status for
create_table_def() needs to be fixed.

r5834 | jyang | 2009-09-11 00:43:05 +0300 (Fri, 11 Sep 2009) | 5 lines
branches/5.1: Block creating table with column name conflicting
with Innodb reserved key words. (Bug #44369) rb://151 approved
by Sunny Bains.
2009-10-05 16:47:48 +05:30
Satya B
cfae755d7d Applying InnoDB snapshot 5.1-ss5921, Part 1. Fixes BUG#46000
1. BUG#46000 - using index called GEN_CLUST_INDEX crashes server

Detailed revision comments:

r5895 | jyang | 2009-09-15 03:39:21 +0300 (Tue, 15 Sep 2009) | 5 lines
branches/5.1: Disallow creating index with the name of
"GEN_CLUST_INDEX" which is reserved for the default system
primary index. (Bug #46000) rb://149 approved by Marko Makela.
2009-10-05 16:39:07 +05:30
Georgi Kodinov
67ac3fac7f fixed typos in exeprimental list 2009-10-05 11:18:59 +03:00
Gleb Shchepa
2b78dbff54 Bug #44139: Table scan when NULL appears in IN clause
SELECT ... WHERE ... IN (NULL, ...) does full table scan,
even if the same query without the NULL uses efficient range scan.

The bugfix for the bug 18360 introduced an optimization:
if
  1) all right-hand arguments of the IN function are constants
  2) result types of all right argument items are compatible
     enough to use the same single comparison function to
     compare all of them to the left argument,

then

  we can convert the right-hand list of constant items to an array
  of equally-typed constant values for the further
  QUICK index access etc. (see Item_func_in::fix_length_and_dec()).

The Item_null constant item objects have STRING_RESULT
result types, so, as far as Item_func_in::fix_length_and_dec()
is aware of NULLs in the right list, this improvement efficiently
optimizes IN function calls with a mixed right list of NULLs and
string constants. However, the optimization doesn't affect mixed
lists of NULLs and integers, floats etc., because there is no
unique common comparator.


New optimization has been added to ignore the result type
of NULL constants in the static analysis of mixed right-hand lists.
This is safe, because at the execution phase we care about
presence of NULLs anyway.

1. The collect_cmp_types() function has been modified to optionally
   ignore NULL constants in the item list.
2. NULL-skipping code of the Item_func_in::fix_length_and_dec()
   function has been modified to work not only with in_string
   vectors but with in_vectors of other types.
2009-10-05 10:27:36 +05:00
Georgi Kodinov
5992e70623 rpl.rpl_trigger made experimental because of bug #47810 :
rpl.rpl_trigger.test fails with valgrind errors with the innodb plugin
2009-10-04 13:31:55 +03:00
Georgi Kodinov
b2511985ae Make innodb-autoinc.test experimental until bug#47809 is fixed. 2009-10-04 13:16:56 +03:00
Georgi Kodinov
2c14b845ae Disable innodb_information_schema.test until bug #47808 is fixed. 2009-10-04 13:15:53 +03:00
Georgi Kodinov
e86e52e50f Fixed a valgrind error in debug_sync 2009-10-04 12:53:02 +03:00
Georgi Kodinov
68dde113fb automerge 2009-10-04 12:17:24 +03:00
Georgi Kodinov
db35fb7961 automerge 2009-10-04 12:15:05 +03:00
Georgi Kodinov
a70380ef92 automerge 2009-10-04 12:00:27 +03:00
Jonathan Perkin
ee9cb446fe Merge to mysql-5.0-bugteam 2009-10-02 13:54:38 +01:00
Ingo Struewing
c2e1614814 auto-merge 2009-10-02 13:27:48 +02:00
Ingo Struewing
0c522f7453 auto-merge 2009-10-01 15:54:11 +02:00
5903c1e94c Bug #45677 Slave stops with Duplicate entry for key PRIMARY when using trigger
The problem is that there is only one autoinc value associated with 
the query when binlogging. If more than one autoinc values are used 
in the query, the autoinc values after the first one can be inserted 
wrongly on slave. So these autoinc values can become inconsistent on 
master and slave.

The problem is resolved by marking all the statements that invoke 
a trigger or call a function that updated autoinc fields as unsafe, 
and will switch to row-format in Mixed mode. Actually, the statement 
is safe if just one autoinc value is used in sub-statement, but it's 
impossible to check how many autoinc values are used in sub-statement.)
2009-10-01 07:19:36 +08:00
Davi Arnaut
33be6a3a9a Manual merge. 2009-09-30 20:06:08 -03:00
Davi Arnaut
1442ef0f25 Post-merge cleanup: Reorganize code for better comprehensibility.
Removes the need of a hack (the jump to label).
2009-09-30 19:59:30 -03:00
Davi Arnaut
5a420e6d37 Manual merge. 2009-09-30 19:25:06 -03:00