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''
mysql-test/mysql-test-run.pl:
Rewrite the setup of LD_LIBRARY_PATH and DYLD_LIBRARY_PATH to make it easier to modify
Valgrind need to be run with debug libraries otherwise it's almost impossible to add
correct supressions, that means if "/usr/lib/debug" is available, it should be added to
LD_LIBRARY_PATH
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
- 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.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
- As the slaves are restarted for each testcase, take the opportunity to restore their databases to a known state with the help of the snapshot(s)
- Count max number of slaves used in testcases
- Use copy_install_db to speed up "Installing db" phase
mysql-test/mysql-test-run.pl:
Count max number of slaves used for a test run and use that when installing slave databases etc.
Use "copy_install_db" for all but the first db to install
After having stopped the slave database, restore it's database files from the snapshot.
mysql-test/r/func_misc.result:
Added test for Bug #21466: INET_ATON() returns signed int, not unsigned
mysql-test/t/func_misc.test:
Added test for Bug #21466: INET_ATON() returns signed int, not unsigned
sql/item_func.h:
Added unsigned_flag=1 value to Item_func_inet_aton.
This fixes bug #21466: INET_ATON() returns signed int, not unsigned
- 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.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/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
mysql-test/mysql-test-run.pl:
fixed path for udf_example.so when running testsuite on Windows
sql/CMakeLists.txt:
Added missing udf_example
sql/Makefile.am:
Added udf_example files for make dist
sql/udf_example.c:
fix for Windows: Windows doesn't have socket.h and friends
Added replacements for strmov,bzero and memcpy_fixed when compiling standalone.
sql/udf_example.def:
BitKeeper file /home/georg/work/mysql/prod/mysql-5.0-win/sql/udf_example.def
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.
this key does not stop" (version for 5.0 only).
UPDATE statement which WHERE clause used key and which invoked trigger
that modified field in this key worked indefinetely.
This problem occured because in cases when UPDATE statement was
executed in update-on-the-fly mode (in which row is updated right
during evaluation of select for WHERE clause) the new version of
the row became visible to select representing WHERE clause and was
updated again and again.
We already solve this problem for UPDATE statements which does not
invoke triggers by detecting the fact that we are going to update
field in key used for scanning and performing update in two steps,
during the first step we gather information about the rows to be
updated and then doing actual updates. We also do this for
MULTI-UPDATE and in its case we even detect situation when such
fields are updated in triggers (actually we simply assume that
we always update fields used in key if we have before update
trigger).
The fix simply extends this check which is done in check_if_key_used()/
QUICK_SELECT_I::check_if_keys_used() routine/method in such way that
it also detects cases when field used in key is updated in trigger.
As nice side-effect we have more precise and thus more optimal
perfomance-wise check for the MULTI-UPDATE.
Also check_if_key_used()/QUICK_SELECT_I::check_if_keys_used() were
renamed to is_key_used()/QUICK_SELECT_I::is_keys_used() in order to
better reflect that boolean predicate.
Note that this check is implemented in much more elegant way in 5.1
mysql-test/r/trigger.result:
Added test case for bug#20670 "UPDATE using key and invoking trigger that
modifies this key does not stop".
mysql-test/t/trigger.test:
Added test case for bug#20670 "UPDATE using key and invoking trigger that
modifies this key does not stop".
sql/key.cc:
Renamed check_if_key_used() to is_key_used(). Also this routine checks if
key uses field which can be updated by before update trigger defined on the
table. As result we avoid using update-on-the-fly method in cases when trigger
updates part of key which is used by select which filters rows to be updated
and thus avoid infinite updates. By doing such check here we cover both UPDATE
and MULTI-UPDATE cases.
sql/mysql_priv.h:
Renamed check_if_key_used() to is_key_used().
sql/opt_range.cc:
Renamed check_if_key_used()/QUICK_SELECT_I::check_if_keys_used() to
is_key_used()/QUICK_SELECT_I::is_keys_used().
sql/opt_range.h:
Renamed QUICK_SELECT_I::check_if_keys_used() method to is_keys_used(),
also updated comment describing it to reflect its extended semantics
(this change was caused by change in check_if_key_used()/is_key_used()
routine semantics).
sql/sql_trigger.cc:
Introduced Table_triggers_list::is_updated_in_before_update_triggers()
method which is needed for checking if field of subject table can be
changed in before update trigger.
sql/sql_trigger.h:
Table_triggers_list:
Removed has_before_update_triggers() method which is not used any longer.
Added declaration of is_updated_in_before_update_triggers() which is
needed for checking if field of subject table can be changed by before
update trigger.
sql/sql_update.cc:
safe_update_on_fly():
check_if_key_used() routine and check_if_keys_used() method were
renamed to is_key_used()/is_keys_used().
Now cases when trigger updates fields which are part of key used for
filtering rows for update are caught directly in is_key_used().
This also allows to cover both UPDATE and MULTI-UPDATE cases.
into mysql.com:/usr/home/ram/work/mysql-4.1-maint
mysql-test/r/func_time.result:
Auto merged
mysql-test/t/func_time.test:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
mysql-test/r/mysqldump.result:
Fix of result file (adding the echo's)
mysql-test/r/rpl_view.result:
Added end of 5.0 echo
mysql-test/t/rpl_view.test:
Added end of 5.0 echo
into mysql.com:/users/lthalmann/bk/MERGE/mysql-5.0-merge
ndb/src/kernel/blocks/dbdih/DbdihMain.cpp:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
client/mysqldump.c:
Merge main->rpl
mysql-test/r/mysqldump.result:
Restore of main mysqldump test files in rpl tree (only added echo and one test case for bug 13926)
Printouts not yet added to result file
mysql-test/t/mysqldump.test:
Restore of main mysqldump test files in rpl tree (only added echo and one test case for bug 13926)
into rurik.mysql.com:/home/igor/mysql-5.0-opt
mysql-test/r/ctype_ucs.result:
Auto merged
mysql-test/t/ctype_ucs.test:
Auto merged
sql/field.h:
Auto merged
sql/unireg.cc:
Auto merged
Any default value for a enum fields over UCS2 charsets was corrupted
when we put it into the frm file, as it had been overwritten by its
HEX representation.
To fix it now we save a copy of structure that represents the enum
type and when putting the default values we use this copy.
mysql-test/r/ctype_ucs.result:
Added a test case for bug #20108.
mysql-test/t/ctype_ucs.test:
Added a test case for bug #20108.