Remove STANDARD define when compile udf_example.so
mysql-test/r/udf.result:
Update results
mysql-test/t/udf.test:
Update test try to create, use and drop a non existing function
Disable the result from "reverse_lookup" as it is config dependent
sql/Makefile.am:
Remove the "STANDARD" define when compiling udf_example.so
Add comment's for enable/disable_query_log and enable/disable_result_log
Update comment for "check_result"
Add check in "handle_error" that detects if the server crashed when running a "require" query to check if a certain feature is available
client/mysqltest.c:
Add comment's for enable/disable_query_log and enable/disable_result_log
Update comment for "check_result"
Add check in "handle_error" that detects if the server crashed when running a "require" query to check if a certain feature is available
- Update of test toolsand Makefiles to make it possible to test always test udf's as part
of the mysql test suite
mysql-test/mysql-test-run.pl:
Add the path where mysqld will udf_example.so used by the udf test
mysql-test/r/udf.result:
Update test results
mysql-test/t/udf.test:
Update tests
The "--error 0" directives should actually be changed to the correct error number returned but that error number is lost. W e do however get the right error message and that is checked in
the .result file.
sql/Makefile.am:
Build shared library udf_example.so
sql/share/errmsg.txt:
Update the max length of %s string from 64 to 128
sql/sql_udf.cc:
Add DBUG_PRINT just before dl_open
sql/udf_example.cc:
Use isalpha instade of my_isalpha
- Don't look for 'dl_open' if mysqld is compiled with "-all-static"
configure.in:
No need to check for dlopen when mysqld is linked with -all-static
as it won't be able to load any functions (and in some cases segfaults)
The problem was that error flag was not reset.
mysql-test/r/sp-security.result:
Results for test case for BUG#7787.
mysql-test/t/sp-security.test:
A test case for BUG#7787.
sql/sp.cc:
Reset errors after sp_find_routine().
duration of the whole 'flush instances'. As a consequence,
it was possible to query instance map, while it is in the
inconsistent state. The patch was reworked after review.
server-tools/instance-manager/guardian.cc:
do not lock instance map in Guardian_thread::init()
server-tools/instance-manager/instance_map.cc:
Eliminate race condition: lock instance map and guardian
for the duration of the whole "FLUSH INSTANCES" execution.
server-tools/instance-manager/instance_map.h:
add new method. cleanup interface. add comments.
server-tools/instance-manager/manager.cc:
use instance_map.flush_instances instead of instance_map.load() and guardian_thread.init()
connections correctly".
Recommit with the max timeout value in sync with the comment.
server-tools/instance-manager/options.cc:
add new option to set wait timeout
server-tools/instance-manager/priv.h:
add a const for max wait timeout
symptom). sys_var::check_set() was wrong. mysqlbinlog makes use of such SET SQL_MODE=N
(where N is interpreted like if SQL_MODE was a field of type SET), so
this bug affected recovery from binlogs if the server was running with certain SQL_MODE values,
for example the default values on Windows (STRICT_TRANS_TABLES); to work around this bug people
had to edit mysqlbinlog's output.
mysql-test/r/sql_mode.result:
result update
mysql-test/t/sql_mode.test:
test for various numeric SQL_MODE values
sql/set_var.cc:
For a set, it does not make sense to test if the supplied argument exceeds the number of elements in the set
(such test would make sense for an enum), but rather to check if it exceeds 2^this (to verify
that only reasonable bits are set).
if the function, invoked in a non-binlogged caller (e.g. SELECT, DO), failed half-way on the master,
slave would stop and complain that error code between him and master mismatch.
To solve this, when a stored function is invoked in a non-binlogged caller (e.g. SELECT, DO), we binlog the function
call as SELECT instead of as DO (see revision comment of sp_head.cc for more).
And: minor wording change in the help text.
This cset will cause conflicts in 5.1, I'll merge.
mysql-test/r/rpl_sp.result:
result update
mysql-test/t/rpl_sp-slave.opt:
bug just fixed so option not needed
mysql-test/t/rpl_sp.test:
test for more half-failed functions with DO and SELECT, to test the bug of this changeset.
cleanup at the end.
sql/mysqld.cc:
function -> stored function (change suggested by Paul)
sql/sp_head.cc:
When a function updates data and is called from a non-binlogged statement (SELECT, DO), we binlog it
as SELECT myfunc(), and not DO myfunc() like before.
problem was: when a connection disconnects having an open transaction affecting MyISAM and InnoDB, the ROLLBACK event stored in the binary log
contained a non-zero error code (1053 because of the disconnection), so when slave applied the transaction, slave complained that its ROLLBACK succeeded
(error_code=0) while master's had 1053, so slave stopped. But internally generated binlog events such as this ROLLBACK
should always have 0 as error code, as is true in 4.1 and was accidentally broken in 5.0,
so that there is no false alarm.
mysql-test/r/mix_innodb_myisam_binlog.result:
result update
mysql-test/t/mix_innodb_myisam_binlog.test:
test for BUG#16559
sql/log.cc:
Internally generated binlog events should always have an error code of zero (like in 4.1; in 5.0 this was accidentally broken).
necessary implementation in the server
mysql_upgrade script added
client/mysqlcheck.c:
--check-upgrade option added
include/my_base.h:
errcode added
include/myisam.h:
option added
scripts/Makefile.am:
mysql_upgrade script added
sql/handler.cc:
checks for old types/bugs added
sql/handler.h:
declarations regarding checks for upgrade
sql/lex.h:
sym added
sql/share/errmsg.txt:
error message added
sql/slave.cc:
now ha_repair is for public use
sql/sql_table.cc:
upgrade in ha_repair implemented
sql/sql_yacc.yy:
CHECK ... FOR UPGRADE added to syntax
trigger starts trigger".
In short, the deadlock/crash happened when execution of statement, which used
stored functions or activated triggers, coincided with alteration of the
tables used by these functions or triggers (in highly concurrent environment).
Bug was caused by the incorrect handling of tables from prelocked set in
open_tables() functions in situations when refresh happened. This fix replaces
old smart but not very robust way of handling tables after refresh (which was
closing only old tables), with new one which simply closes all tables opened so
far and restarts open_tables().
Also fixed handling of temporary tables in close_tables_for_reopen().
No test case present since bug manifests itself only in concurrent environment.
sql/mysql_priv.h:
In order to handle correctly case when table list completely consists from tables
from prelocked set close_tables_for_reopen() have to accept table list as in/out
parameter.
sql/sql_base.cc:
open_tables():
Removed part of comment which was out of date.
Changed handling of case when refresh happens during opening of tables, now
instead of having code which decides for each table if it should be closed
we simply close all tables. Old code also incorrectly handled tables from
prelocked set in this situation which resulted in bug #16593 "Deadlock or
crash in stress test for case where triggers starting trigger".
close_tables_for_reopen():
Now we correctly handle the case when table list completely consists from
tables from prelocked set. Also now we simply close all tables instead
leaving temporary tables non-closed (such approach allows easily handle
correctly tables from prelocked set).
sql/sql_prepare.cc:
In order to handle correctly case when table list completely consists from tables
from prelocked set close_tables_for_reopen() have to accept table list as in/out
parameter.
sql/sql_update.cc:
In order to handle correctly case when table list completely consists from tables
from prelocked set close_tables_for_reopen() have to accept table list as in/out
parameter.
into mysql.com:/home/stewart/Documents/MySQL/5.0/bug17411-thisisaverylongnamethatshouldbewaylongerthanthe128limitthatweprivouslyhadbutireallywantotestitandseethatitdoesreallywork.nowitshouldbeabout160charslongnonow.iwonderifanythingwillchokeornotwiththisoutrageouslylongpathname
If item->cached_table is set, find_field_in_tables() returns found field
even if it doesn't belong to current select. Because Item_field::fix_fields
doesn't expect such behaviour, reported bug occurs.
Item_field::fix_fields() was modifed to detect when find_field_in_tables()
can return field from outer select and process such fields accordingly.
In order to ease this code which was searching and processing outed fields was
moved into separate function called Item_field::fix_outer_field().
sql/item_subselect.h:
Fixed bug #15706: find_field_in_tables() returns field from outer select
Item_field::fix_outer_field() was marked as friend to Item_subselect class.
sql/item.h:
Fixed bug #15706: find_field_in_tables() returns field from outer select
fix_outer_field() function is added to the Item_field class.
sql/item.cc:
Fixed bug #15706: find_field_in_tables() returns field from outer select
Item_ref::fix_fields() and Item_field::fix_fields() were modifed to detect when
find_field_in_tables() can return field from outer select and process such
fields accordingly.
In order to ease this, code Item_field::fix_fields() which was searching and
processing outer fields was moved into separate function called
Item_field::fix_outer_field().
To the Item_field::fix_field() added a loop for finding context for found field.
mysql-test/t/disabled.def:
Fixed bug #15706: find_field_in_tables() returns field from outer select
Enable subselect test
A follow-up to BUG#15011 (already fixed).
mysql-test/r/sp.result:
Updated results for new handler tests.
mysql-test/t/sp.test:
Additional tests for nested handlers.
- Pass "buffers[i]" to val_str() in udf_handler::fix_fields insteead of NULL.
- Add testcase for UDF that will load and run the udf_example functions
if available
sql/item_func.cc:
Instead of passing a NULL pointer into val_str, use the "buffers" array to provide a temp string buffer.
sql/udf_example.cc:
Spelling error"on"->"one"
mysql-test/include/have_udf.inc:
New BitKeeper file ``mysql-test/include/have_udf.inc''
mysql-test/r/have_udf.require:
New BitKeeper file ``mysql-test/r/have_udf.require''
mysql-test/r/udf.result:
New BitKeeper file ``mysql-test/r/udf.result''
mysql-test/t/udf.test:
New BitKeeper file ``mysql-test/t/udf.test''