There was possible stack overrun in an edge case which handles invalid body of
a SP in mysql.proc . That should be case when mysql.proc has been changed
manually. Though, due to bug 21513, it can be exploited without having access
to mysql.proc only being able to create a stored routine.
mysql-test/r/sp.result:
update result
mysql-test/t/sp.test:
add a test case for the bug
sql/sp.cc:
Fix stack overrun. This happen mostly when mysql.proc is damaged, though
it's possible due to another bug which creates invalid SP body in mysql.proc
(leading quote from a label being cut) to create stack overrun even without
having direct access to mysql.proc
Re-execution of a parametrized prepared statement or a stored routine
with a SELECT that use LEFT JOIN with second table having only one row
could yield incorrect result.
The problem appeared only for left joins with second table having only
one row (aka const table) and equation conditions in ON or WHERE clauses
that depend on the argument passed. Once the condition was false for
second const table, a NULL row was created for it, and any field involved
got NULL-value flag, which then was never reset.
The cause of the problem was that Item_field::null_value could be set
without being reset for re-execution. The solution is to reset
Item_field::null_value in Item_field::cleanup().
mysql-test/r/ps.result:
Add result for bug#21081: SELECT inside stored procedure returns wrong
results.
mysql-test/t/ps.test:
Add test case for bug#21081: SELECT inside stored procedure returns wrong
results.
sql/item.cc:
Reset Item_field::null_value flag for re-execution.
The STACK_MIN_SIZE is currently set to 8192, when we actually need
(emperically discovered) 9236 bytes to raise an fatal error, on Ubuntu
Dapper Drake, libc6 2.3.6-0ubuntu2, Linux kernel 2.6.15-27-686, on x86.
I'm taking that as a new lower bound, plus 100B of wiggle-room for sundry
word sizes and stack behaviors.
The added test verifies in a cross-platform way that there are no gaps
between the space that we think we need and what we actually need to report
an error.
DOCUMENTERS: This also adds "let" to the mysqltest commands that evaluate
an argument to expand variables therein. (Only right of the "=", of course.)
client/mysqltest.c:
Add "let" to the list of mysqltest commands that evaluates its arguments (only
the right-hand-side of the equals-sign expression).
mysql-test/r/mysqltest.result:
Added test to show that mysqltest "let" will evaluate the RHS correctly (and
expand the backslash test).
mysql-test/t/mysqltest.test:
Added test to show that mysqltest "let" will evaluate the RHS correctly (and
expand the backslash test).
sql/mysql_priv.h:
Increase the amount we require to be available for the stack, since
experience told us that the previous amount was too little by at least
1044 bytes.
mysql-test/r/execution_constants.result:
New BitKeeper file ``mysql-test/r/execution_constants.result''
mysql-test/t/execution_constants.test:
New BitKeeper file ``mysql-test/t/execution_constants.test''
into mysql.com:/home/svoj/devel/mysql/merge/mysql-5.1-engines
mysql-test/r/repair.result:
Auto merged
mysql-test/t/merge.test:
Auto merged
sql/table.cc:
Auto merged
storage/myisammrg/myrg_open.c:
Auto merged
mysql-test/r/merge.result:
Manual merge.
sql/share/errmsg.txt:
Manual merge.
into mysql.com:/home/svoj/devel/mysql/merge/mysql-5.0-engines
myisammrg/myrg_open.c:
Auto merged
mysql-test/t/merge.test:
Auto merged
BitKeeper/deleted/.del-errmsg.txt~f96b7055cac394e:
Auto merged
mysql-test/r/repair.result:
Use local.
sql/table.cc:
Use local.
mysql-test/r/merge.result:
Manual merge
into macbook.gmz:/Users/kgeorge/mysql/work/B21174-5.1-opt
mysql-test/r/ctype_ucs.result:
Auto merged
mysql-test/r/func_gconcat.result:
Auto merged
mysql-test/r/func_group.result:
Auto merged
mysql-test/r/group_by.result:
Auto merged
mysql-test/r/subselect.result:
Auto merged
mysql-test/r/view.result:
Auto merged
mysql-test/t/ctype_ucs.test:
Auto merged
mysql-test/t/func_gconcat.test:
Auto merged
mysql-test/t/ps.test:
Auto merged
mysql-test/t/view.test:
Auto merged
sql/field.h:
Auto merged
sql/filesort.cc:
Auto merged
sql/item.cc:
Auto merged
sql/item_sum.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
storage/myisam/mi_check.c:
Auto merged
mysql-test/r/ps.result:
merge 5.0-opt -> 5.1-opt
sql/unireg.cc:
merge 5.0-opt -> 5.1-opt
- reversed the patch for 5.0 and moved to 5.1
mysql-test/r/group_by.result:
Bug #21174: Index degrades sort performance and optimizer does not honor IGNORE INDEX
- reversed the patch for 5.0
mysql-test/t/group_by.test:
Bug #21174: Index degrades sort performance and optimizer does not honor IGNORE INDEX
- reversed the patch for 5.0
sql/sql_select.cc:
Bug #21174: Index degrades sort performance and optimizer does not honor IGNORE INDEX
- reversed the patch for 5.0
into moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.1-bug21414
sql/mysql_priv.h:
Auto merged
sql/sp.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
mysql-test/r/sp.result:
Manual merge.
mysql-test/t/sp.test:
Manual merge.
into moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0-bug21414
mysql-test/r/sp.result:
Auto merged
mysql-test/t/sp.test:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sp.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
result
The IN function aggregates result types of all expressions. It uses that
type in comparison of left expression and expressions in right part.
This approach works in most cases. But let's consider the case when the
right part contains both strings and integers. In that case this approach may
cause wrong results because all strings which do not start with a digit are
evaluated as 0.
CASE uses the same approach when a CASE expression is given thus it's also
affected.
The idea behind this fix is to make IN function to compare expressions with
different result types differently. For example a string in the left
part will be compared as string with strings specified in right part and
will be converted to real for comparison to int or real items in the right
part.
A new function called collect_cmp_types() is added. It collects different
result types for comparison of first item in the provided list with each
other item in the list.
The Item_func_in class now can refer up to 5 cmp_item objects: 1 for each
result type for comparison purposes. cmp_item objects are allocated according
to found result types. The comparison of the left expression with any
right part expression is now based only on result types of these expressions.
The Item_func_case class is modified in the similar way when a CASE
expression is specified. Now it can allocate up to 5 cmp_item objects
to compare CASE expression with WHEN expressions of different types.
The comparison of the CASE expression with any WHEN expression now based only
on result types of these expressions.
sql/item.cc:
Cleaned up an outdated comment.
sql/item_cmpfunc.cc:
Fixed bug #18360: Type aggregation for IN and CASE may lead to a wrong result
A new function called collect_cmp_types() is added. It collects different
result types for comparison of first item in the provided list with each
other item in the list.
The Item_func_in class now can refer up to 5 cmp_item objects: 1 for each
result type for comparison purposes. cmp_item objects are allocated according
to found result types. The comparison of the left expression with any
right part expression is now based only on result types of these expressions.
The Item_func_case class is modified in the similar way when a CASE
expression is specified. Now it can allocate up to 5 cmp_item objects
to compare CASE expression with WHEN expressions of different types.
The comparison of the CASE expression with any WHEN expression now based only
on result types of these expressions.
sql/item_cmpfunc.h:
Fixed bug#18360: Type aggregation for IN and CASE may lead to a wrong result
The Item_func_in class now can refer up to 5 cmp_item objects.
The Item_func_case class is modified in the similar way.
sql/opt_range.cc:
Fixed bug #18360: Type aggregation for IN and CASE may lead to a wrong
resultSmall code changes due to changes in Item_func_in class.
mysql-test/t/view.test:
Added a test comment
mysql-test/t/func_in.test:
Added a test case for bug#18360: Type aggregation for IN and CASE may lead to a wrong
result
mysql-test/r/func_in.result:
Added a test case for bug#18360: Type aggregation for IN and CASE may lead to a wrong
result
A better fix for bug#10025.
Fixed test case plus added new tests.
After fixing Bug#20208 "Blobs greater than 8K are being truncated to 8K"
the fix to bug#10025 "Misleading error with COLLATE mediumtext and UNION"
became more accurate. Earlier mediumtext got converted to longtext,
although mediumtext was enough to contain the results. Now it converts
correctly to mediumtext, if the length does not exceed that and if none
of the original fields were type longtext.
Type longtext still converts correctly to type longtext, as the extra
tests prove.
mysql-test/r/union.result:
Fixed an earlier test case plus added two new tests.
mysql-test/t/union.test:
Fixed an earlier test case plus added two new tests.
into dator5.(none):/home/pappa/bug18198
mysql-test/r/partition.result:
Auto merged
mysql-test/r/partition_range.result:
Auto merged
mysql-test/t/partition_range.test:
Auto merged
sql/item_func.h:
Auto merged
sql/item_strfunc.h:
Auto merged
sql/partition_info.cc:
Auto merged
sql/sql_partition.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
mysql-test/t/partition.test:
manual merge
sql/item.h:
manual merge
sql/item_cmpfunc.h:
manual merge
"CHECK fails to identify some corruption"
change to allow it to detect more errors in data format
mysql-test/r/csv.result:
Test for bug
mysql-test/t/csv.test:
Test for bug
when set to DISABLED
It was a silly ordering number error.
sql/events.h:
fix ordinal number, the cause for bug #22662
Inconsistent values displayed for event_scheduler when set to DISABLED
mysql-test/r/events_restart_phase0.result:
New BitKeeper file ``mysql-test/r/events_restart_phase0.result''
mysql-test/t/events_restart_phase0.log:
New BitKeeper file ``mysql-test/t/events_restart_phase0.log''
mysql-test/t/events_restart_phase0.result:
New BitKeeper file ``mysql-test/t/events_restart_phase0.result''
ALTER EVENT in stored procedure body led to a crash during the
procedure call. Affected was only ALTER EVENT which changed the
interval of the event. No problems with AT, STARTS, ENDS and so on.
mysql-test/r/events_bugs.result:
fix result
mysql-test/t/events_bugs.test:
add test case for bug 22397 : Events, crash with procedure which alters body
sql/event_data_objects.cc:
fix copy&paste error in code, which resulted in bug#22397
Events: crash with procedure which alters body
- Add test case which runs the same tests as ssl.test but with a different DES encrypted key
mysql-test/std_data/server-key-des.pem:
BitKeeper file /home/msvensson/mysql/bug21868/my50-bug21868/mysql-test/std_data/server-key-des.pem
mysql-test/std_data/server-cert-des.pem:
BitKeeper file /home/msvensson/mysql/bug21868/my50-bug21868/mysql-test/std_data/server-cert-des.pem
mysql-test/r/ssl_des.result:
New BitKeeper file ``mysql-test/r/ssl_des.result''
mysql-test/t/ssl_des-master.opt:
New BitKeeper file ``mysql-test/t/ssl_des-master.opt''
mysql-test/t/ssl_des.test:
New BitKeeper file ``mysql-test/t/ssl_des.test''
Presence of a subquery in the ON expression of a join
should not block merging the view that contains this join.
Before this patch the such views were converted into
into temporary table views.
mysql-test/r/view.result:
Added a test case for bug #21646.
mysql-test/t/view.test:
Added a test case for bug #21646.
sql/mysql_priv.h:
Fixed bug #21646.
Added a new parsing state 'IN_ON', true when
the parser is in an ON expression of a join.
sql/sql_lex.cc:
Fixed bug #21646.
Presence of a subquery in the ON expression of a join
should not block merging the view that contains this join.
sql/sql_yacc.yy:
Fixed bug #21646.
Added a new parsing state 'IN_ON', true when
the parser is in an ON expression of a join.
an ALL/ANY quantified subquery in HAVING.
The Item::split_sum_func2 method should not create Item_ref
for objects of any class derived from Item_subselect.
mysql-test/r/subselect.result:
Added a test case for bug #21853.
mysql-test/t/subselect.test:
Added a test case for bug #21853.
into zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.1-maint
BitKeeper/etc/ignore:
auto-union
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/t/disabled.def:
Auto merged
sql/Makefile.am:
Auto merged
sql/sql_yacc.yy:
Auto merged
storage/innobase/handler/ha_innodb.cc:
Auto merged
into zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-maint
mysql-test/mysql-test-run.pl:
Auto merged
sql/Makefile.am:
Auto merged
sql/ha_innodb.cc:
Auto merged
into mysql.com:/users/lthalmann/bkroot/mysql-5.1
client/mysqldump.c:
Auto merged
mysql-test/t/disabled.def:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/sql_show.cc:
Auto merged
storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp:
Auto merged
mysql-test/t/ndb_multi.test:
Manual merge
into mysql.com:/users/lthalmann/bk/MERGE/mysql-5.1-merge
BitKeeper/etc/ignore:
auto-union
mysql-test/t/disabled.def:
Auto merged
sql/CMakeLists.txt:
Auto merged
sql/Makefile.am:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
storage/innobase/handler/ha_innodb.cc:
Auto merged
into mysql.com:/users/lthalmann/bk/MERGE/mysql-4.1-merge
BitKeeper/etc/ignore:
auto-union
mysql-test/r/myisam.result:
Auto merged
mysql-test/t/myisam.test:
Auto merged
sql/sql_select.cc:
Auto merged
into mysql.com:/windows/Linux_space/MySQL/mysql-5.1
mysql-test/t/disabled.def:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/ha_ndbcluster_binlog.cc:
Auto merged
sql/ha_ndbcluster_binlog.h:
Auto merged
sql/sql_show.cc:
Auto merged
into shellback.(none):/home/msvensson/mysql/mysql-5.1-maint
BitKeeper/etc/ignore:
auto-union
mysql-test/t/disabled.def:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/share/errmsg.txt:
Auto merged
storage/innobase/Makefile.am:
Auto merged
storage/innobase/handler/ha_innodb.cc:
Auto merged
Item_substr's results are improperly stored in a temporary table due to
wrongly calculated max_length value for multi-byte charsets if two
arguments specified.
mysql-test/r/ctype_utf8.result:
Fix for bug #20204: "order by" changes the results returned
- test case.
mysql-test/t/ctype_utf8.test:
Fix for bug #20204: "order by" changes the results returned
- test result.
sql/item_strfunc.cc:
Fix for bug #20204: "order by" changes the results returned
- always take into account current mbmaxlen value calculating max_length.