into mysql.com:/home/jimw/my/mysql-5.1-clean
include/my_pthread.h:
Auto merged
mysql-test/r/func_str.result:
Auto merged
mysql-test/r/join_outer.result:
Auto merged
mysql-test/r/subselect.result:
Auto merged
mysql-test/r/variables.result:
Auto merged
mysql-test/r/view.result:
Auto merged
mysql-test/t/rpl_temporary.test:
Auto merged
mysql-test/t/variables.test:
Auto merged
mysql-test/t/view.test:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_strfunc.h:
Auto merged
sql/item_subselect.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.h:
Auto merged
sql/sql_acl.cc:
Auto merged
storage/ndb/test/ndbapi/Makefile.am:
Auto merged
storage/ndb/test/ndbapi/testInterpreter.cpp:
Auto merged
sql/set_var.cc:
Resolve conflict
storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp:
Resolve conflict
into mysql.com:/usr/local/mysql/merge-5.1
mysql-test/lib/mtr_process.pl:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/r/sp-error.result:
Auto merged
mysql-test/r/sp.result:
Auto merged
mysql-test/r/trigger-grant.result:
Auto merged
mysql-test/r/trigger.result:
Auto merged
mysql-test/t/sp.test:
Auto merged
mysql-test/t/trigger-grant.test:
Auto merged
mysql-test/t/trigger.test:
Auto merged
server-tools/instance-manager/options.h:
Auto merged
sql/field_conv.cc:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/item_func.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/share/errmsg.txt:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
server-tools/instance-manager/options.cc:
Manual merge
sql/item_func.cc:
Manual merge
sql/mysql_priv.h:
Manual merge
sql/sp_head.cc:
Manual merge
sql/sql_table.cc:
Manual merge
The convert_constant_item() function converts constant items to ints on
prepare phase to optimize execution speed. In this case it tries to evaluate
subselect which contains a derived table and is contained in a derived table.
All derived tables are filled only after all derived tables are prepared.
So evaluation of subselect with derived table at the prepare phase will
return a wrong result.
A new flag with_subselect is added to the Item class. It indicates that
expression which this item represents is a subselect or contains a subselect.
It is set to 0 by default. It is set to 1 in the Item_subselect constructor
for subselects.
For Item_func and Item_cond derived classes it is set after fixing any argument
in Item_func::fix_fields() and Item_cond::fix_fields accordingly.
The convert_constant_item() function now doesn't convert a constant item
if the with_subselect flag set in it.
mysql-test/t/view.test:
Added test case for bug#19077: A nested materialized derived table is used before being populated.
mysql-test/t/subselect.test:
Added test case for bug#19077: A nested materialized derived table is used before being populated.
mysql-test/r/view.result:
Added test case for bug#19077: A nested materialized derived table is used before being populated.
mysql-test/r/subselect.result:
Added test case for bug#19077: A nested materialized derived table is used before being populated.
sql/item_subselect.cc:
Fixed bug#19077: A nested materialized derived table is used before being populated.
The Item_subselect class constructor sets new with_subselect flag to 1.
sql/item_func.cc:
Fixed bug#19077: A nested materialized derived table is used before being populated.
The Item_func::fix_fields() sets new with_subselect flag from with_subselect flags of its arguments.
sql/item_cmpfunc.cc:
Fixed bug#19077: A nested materialized derived table is used before being populated.
The convert_constant_item() function now doesn't convert a constant item
with the with_subselect flag set.
The Item_cond::fix_fields() sets new with_subselect flag from with_subselect flags of its arguments.
sql/item.cc:
Fixed bug#19077: A nested materialized derived table is used before being populated.
Set new with_subselect flag to default value - 0 in the Item constructor.
sql/item.h:
Fixed bug#19077: A nested materialized derived table is used before being populated.
A new flag with_subselect is added to the Item class. It indicates that
expression which this item represents is a subselect or contains a subselect.
It is set to 0 by default.
into mysql.com:/opt/local/work/mysql-5.0-runtime-merge
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/r/im_options_set.result:
Auto merged
mysql-test/r/im_options_unset.result:
Auto merged
mysql-test/r/trigger-grant.result:
Auto merged
sql/item.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_func.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/share/errmsg.txt:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
from within triggers
Add support for passing NEW.x as INOUT and OUT parameters to stored
procedures. Passing NEW.x as INOUT parameter requires SELECT and
UPDATE privileges on that column, and passing it as OUT parameter
requires only UPDATE privilege.
mysql-test/r/sp-error.result:
Update the result for new message.
mysql-test/r/trigger-grant.result:
Add result for bug#14635.
mysql-test/r/trigger.result:
Add result for bug#14635.
mysql-test/t/trigger-grant.test:
Add test case for bug#14635.
mysql-test/t/trigger.test:
Add test case for bug#14635.
sql/item.cc:
Add implementations of set_value() and set_required_privilege() methods
of Settable_routine_parameter interface.
Use Item_trigger_field::want_privilege instead of
Item_trigger_field::access_type.
Reset privileges on Item_trigger_field::cleanup().
sql/item.h:
Add interface class Settable_routine_parameter and interface query
method to Item class. Item_splocal and Item_trigger_field implement
this interface.
For Item_trigger_field:
- add read_only attribute and is_read_only() method.
- remove access_type and add original_privilege and want_privilege
instead.
- add set_value() method.
- add reset_privilege() method.
sql/item_func.cc:
Add implementations of set_value() method of Settable_routine_parameter
interface.
sql/item_func.h:
Item_func_get_user_var implements Settable_routine_parameter interface.
sql/share/errmsg.txt:
Update english ER_SP_NOT_VAR_ARG message.
sql/sp_head.cc:
Use Settable_routine_parameter interface for parameter update.
sql/sql_yacc.yy:
Set read_only and want_privilege members in Item_trigger_field
appropriately. For NEW.x trigger variable used in left-hand-side
of SET statement the latter is set to UPDATE_ACL, otherwise it is
set to SELECT_ACL (but see Item_trigger_field::set_required_privilege(),
where it may be updated to different value).
garbles data if longer than 766 chars.
The problem is that a stored routine returns BLOBs to the previous
caller, BLOBs are shallow-copied (i.e. only pointers to the data are
copied). The fix is to also copy data of BLOBs.
mysql-test/r/sp.result:
Updated result file.
mysql-test/t/sp.test:
Added a test case for BUG#18587.
sql/field_conv.cc:
Do not jump to optimization if the field type is BLOB and
the destination table requires copying of BLOBs.
sql/item_func.cc:
Request copying BLOBs for the result table.
into ua141d10.elisa.omakaista.fi:/home/my/bk/mysql-5.1-new
BitKeeper/deleted/.del-changelog-4.0.xml~8f56ee8a913e848b:
Auto merged
BitKeeper/deleted/.del-changelog-4.1.xml~8aa496ebed09d868:
Auto merged
BitKeeper/deleted/.del-changelog-5.0.xml~f4c50926ccdd7434:
Auto merged
BitKeeper/deleted/.del-client-req.pem~efd482e1d290d4d8:
Auto merged
BitKeeper/deleted/.del-server-req.pem~16301893cacf1be4:
Auto merged
client/mysql.cc:
Auto merged
configure.in:
Auto merged
BitKeeper/deleted/.del-Makefile.am~de166d6fcac3b9b6:
Auto merged
BitKeeper/deleted/.del-NOTES~e926d3e6929ac052:
Auto merged
client/mysqldump.c:
Auto merged
client/mysqlimport.c:
Auto merged
client/mysqltest.c:
Auto merged
include/mysql.h:
Auto merged
libmysql/libmysql.c:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/r/auto_increment.result:
Auto merged
mysql-test/r/date_formats.result:
Auto merged
mysql-test/r/func_misc.result:
Auto merged
mysql-test/r/gis-rtree.result:
Auto merged
mysql-test/r/information_schema.result:
Auto merged
mysql-test/r/ndb_condition_pushdown.result:
Auto merged
mysql-test/r/symlink.result:
Auto merged
mysql-test/std_data/cacert.pem:
Auto merged
mysql-test/std_data/client-cert.pem:
Auto merged
mysql-test/std_data/client-key.pem:
Auto merged
mysql-test/std_data/server-cert.pem:
Auto merged
mysql-test/std_data/server-key.pem:
Auto merged
mysql-test/t/date_formats.test:
Auto merged
mysql-test/t/having.test:
Auto merged
mysql-test/t/information_schema.test:
Auto merged
mysql-test/t/ndb_condition_pushdown.test:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_timefunc.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_acl.h:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql-common/client.c:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_show.cc:
Auto merged
storage/ndb/include/ndbapi/NdbOperation.hpp:
Auto merged
storage/ndb/include/util/NdbSqlUtil.hpp:
Auto merged
storage/ndb/src/common/util/NdbSqlUtil.cpp:
Auto merged
storage/ndb/src/kernel/blocks/dbtc/DbtcInit.cpp:
Auto merged
vio/vio.c:
Auto merged
client/client_priv.h:
manual merge
include/violite.h:
Automatic
mysql-test/Makefile.am:
manual merge
mysql-test/r/mysqldump.result:
Automatic
mysql-test/r/rpl_user_variables.result:
Manual merge (diff is because lars removed displaying of binlog)
mysql-test/t/disabled.def:
manual merge
mysql-test/t/mysqldump.test:
manual merge
mysql-test/t/rpl_user_variables.test:
manual merge (Changes becasue of lars removed binlog logging)
sql/mysqld.cc:
manual merge
vio/viossl.c:
manual merge
vio/viosslfactories.c:
manual merge
client/client_priv.h.rej:
merge 5.0 -> 5.1
into mysql.com:/usr_rh9/home/elkin.rh9/MySQL/Merge/5.0-bug19136
sql/item_func.cc:
Auto merged
sql/sql_select.cc:
Auto merged
mysql-test/r/rpl_user_variables.result:
manual merge use local
mysql-test/t/rpl_user_variables.test:
manual merge use version 5.0's "show binlog events from 98"
into mysql.com:/home/tomash/src/mysql_ab/mysql-5.0-merge
mysql-test/r/func_misc.result:
Manual merge of the fix for bug#16501.
mysql-test/t/func_misc.test:
Manual merge of the fix for bug#16501.
sql/item_func.cc:
Manual merge of the fix for bug#16501.
sql/sql_acl.cc:
For the fix of bug#16372, use local version, since the fix for 5.0 is
different, and will go in separate ChangeSet.
The reason of the bug is in that `get_var_with_binlog' performs missed
assingment of
the variables as side-effect. Doing that it eventually calls
`free_underlaid_joins' to pass as an argument `thd->lex->select_lex' of the lex
which belongs to the user query, not
to one which is emulated i.e SET @var1:=NULL.
`get_var_with_binlog' is refined to supply a temporary lex to sql_set_variables's stack.
mysql-test/r/rpl_user_variables.result:
results changed
mysql-test/t/rpl_user_variables.test:
a problematic query to be binlogged is added
sql/item_func.cc:
BUG#19136: Crashing log-bin and uninitialized user variables
The reason of the bug is in that how `get_var_with_binlog' performs missed
assingment of the variables: `free_underlaid_joins' gets as an argument `thd->lex->select_lex'
which belongs to the user query, not to one which is emulated i.e SET @var1:=NULL.
`get_var_with_binlog' is refined to supply a temporary lex to sql_set_variables's stack.
into mysql.com:/home/jimw/my/mysql-5.1-clean
mysql-test/r/user_var.result:
Auto merged
mysql-test/r/variables.result:
Auto merged
mysql-test/t/variables.test:
Auto merged
sql/item.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/sql_select.cc:
Auto merged
mysql-test/mysql-test-run.pl:
Resolve conflict
mysql-test/ndb/ndbcluster.sh:
Resolve conflict
sql/set_var.cc:
Resolve conflict
sql/share/errmsg.txt:
Resolve conflict
Add more DBUG_PRINT's in udf_handler::val_str
Enable udf.test
mysql-test/t/disabled.def:
Enable udf.test
sql/item_func.cc:
Add DBUG_ printouts for easier debugging of installed udf's
sql/udf_example.cc:
Bug fix, break for loop when "n < n_end"
into mysql.com:/home/jimw/my/mysql-5.0-clean
sql/item_func.cc:
Auto merged
sql/set_var.cc:
Auto merged
mysql-test/r/variables.result:
Resolve conflict
mysql-test/t/variables.test:
Resolve conflict
into mysql.com:/extern/mysql/5.1/generic/mysql-5.1-new
mysql-test/r/innodb.result:
Auto merged
mysql-test/r/sp.result:
Auto merged
mysql-test/r/timezone_grant.result:
Auto merged
mysql-test/r/trigger.result:
Auto merged
mysql-test/r/view.result:
Auto merged
mysql-test/t/innodb.test:
Auto merged
mysql-test/t/sp.test:
Auto merged
mysql-test/t/trigger.test:
Auto merged
mysql-test/t/view.test:
Auto merged
sql/lex.h:
Auto merged
sql/sp.cc:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sp_head.h:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_view.cc:
Auto merged
mysql-test/r/rpl_insert_id.result:
Manual merge.
mysql-test/t/disabled.def:
Manual merge.
mysql-test/t/rpl_insert_id.test:
Manual merge.
sql/item_func.cc:
Manual merge.
sql/sql_yacc.yy:
Manual merge - not complete yet.
Update User_level_lock::thread_id on acquiring an existing lock,
and reset it on lock release.
mysql-test/r/func_misc.result:
Add result for bug#16501.
mysql-test/t/func_misc.test:
Add test case for bug#16501.
sql/item_func.cc:
Update User_level_lock::thread_id on acquiring an existing lock,
and reset it on lock release (for safety).
into sanja.is.com.ua:/home/bell/mysql/bk/work-merge-5.1
configure.in:
Auto merged
mysql-test/r/view.result:
Auto merged
mysql-test/t/view.test:
Auto merged
sql/item_func.cc:
Auto merged
sql/sql_view.cc:
Auto merged
sql/share/errmsg.txt:
merge
into mysql.com:/opt/local/work/mysql-5.1-merge
mysql-test/r/trigger.result:
Auto merged
mysql-test/t/trigger.test:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/item_create.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sp_head.h:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/mysqld.cc:
Manual merge.
sql/sp_head.cc:
Manual merge.
sql/sql_parse.cc:
Manual merge.
Bug #15684: @@version_* are not all SELECTable
Added the appropriate information as read-only system variables, and
also removed some special-case handling of @@version along the way.
@@version_bdb was added, but isn't included in the test because it
depends on the presence of BDB.
mysql-test/r/variables.result:
Update results
mysql-test/t/variables.test:
Fix error from setting @@version, reset sql_select_limit to avoid confusion
in later tests, and add new regression tests.
sql/item_func.cc:
Remove special-case handling of VERSION, it's just a read-only server
variable like the others now.
sql/set_var.cc:
Add system_time_zone and various version-related system variables
into mysql.com:/extern/mysql/5.0/bug18787/mysql-5.0-runtime
mysql-test/r/sp.result:
Auto merged
mysql-test/t/sp.test:
Auto merged
sql/item_func.cc:
Auto merged
Item_func_sp::tmp_table_field() to something more descriptive.
sql/item_func.cc:
Renamed local variable 'res' to 'field' in Item_func_sp::tmp_table_field(),
because it is.
into sanja.is.com.ua:/home/bell/mysql/bk/work-5.0
BitKeeper/deleted/.del-acinclude.m4~f4ab416bac5003:
Auto merged
configure.in:
Auto merged
mysql-test/r/func_op.result:
Auto merged
sql/item_func.cc:
Auto merged
used
In a simple queries a result of the GROUP_CONCAT() function was always of
varchar type.
But if length of GROUP_CONCAT() result is greater than 512 chars and temporary
table is used during select then the result is converted to blob, due to
policy to not to store fields longer than 512 chars in tmp table as varchar
fields.
In order to provide consistent behaviour, result of GROUP_CONCAT() now
will always be converted to blob if it is longer than 512 chars.
Item_func_group_concat::field_type() is modified accordingly.
mysql-test/t/func_gconcat.test:
Added test case for bug#14169: type of group_concat() result changed to blob if tmp_table was used
mysql-test/r/func_gconcat.result:
Added test case for bug#14169: type of group_concat() result changed to blob if tmp_table was used
sql/unireg.h:
Added the CONVERT_IF_BIGGER_TO_BLOB constant
sql/sql_select.cc:
Fixed bug#14169: type of group_concat() result changed to blob if tmp_table was used
The unnamed constant 255 in the create_tmp_field() and create_tmp_field_from_item() functions now defined as the CONVERT_IF_BIGGER_TO_BLOB constant.
The create_tmp_field() function now converts the Item_sum string result to a blob field based on its char length.
sql/item_sum.h:
Fixed bug#14169: type of group_concat() result changed to blob if tmp_table was used
To the Item_func_group_concat calls added the member function field_type() which returns the BLOB or VAR_STRING type based on the items length.
sql/item_func.cc:
Fixed bug#14169: type of group_concat() result changed to blob if tmp_table was used
In the Item_func::tmp_table_field() function the unnamed constant 255 is changed to the CONVERT_IF_BIGGER_TO_BLOB constant.
The Item_func::tmp_table_field() function now measures the result length in chars rather than bytes when converting string result to a blob.
CONNECTION_ID() was implemented as a constant Item, i.e. an instance of
Item_static_int_func class holding value computed at creation time.
Since Items are created on parsing, and trigger statements are parsed
on table open, the first connection to open a particular table would
effectively set its own CONNECTION_ID() inside trigger statements for
that table.
Re-implement CONNECTION_ID() as a class derived from Item_int_func, and
compute connection_id on every call to fix_fields().
mysql-test/r/trigger.result:
Add result for bug#16461.
mysql-test/t/trigger.test:
Add test case for bug#16461.
sql/item.cc:
Remove now unused class Item_static_int_func.
sql/item.h:
Remove now unused class Item_static_int_func.
sql/item_create.cc:
Use new implementation of CONNECTION_ID().
sql/item_func.cc:
Re-implement CONNECTION_ID() as Item_func_connection_id
(was Item_static_int_func). Set max_length to 10, as it was before.
Compute connection_id dynamically on every call to fix_fields().
sql/item_func.h:
Re-implement CONNECTION_ID() as Item_func_connection_id
(was Item_static_int_func).
a misnamed function
... in the presence of a continue handler. The problem was that with a
handler, it continued to execute as if function existed and had set a
useful return value (which it hadn't).
The fix is to set a null return value and do an error return when a function
wasn't found.
mysql-test/r/sp.result:
Updated results for a new test case (BUG#18787).
mysql-test/t/sp.test:
New testcase for BUG#18787.
sql/item_func.cc:
Don't set "out of resources" error in Item_func_sp::execute() if no
result field is returned, it's simply wrong, it can be sometthing else,
like a function not found. Instead set null_value and return error.
Also, set "out of resources" when field creation fails in
Item_func_sp::sp_result_field() and Item_func_sp::tmp_table_field().
into mysql.com:/usr/home/ram/work/mysql-4.1
mysql-test/r/func_op.result:
Auto merged
sql/item_func.cc:
Auto merged
mysql-test/t/func_op.test:
SCCS merged
- Update for 5.1
- Add "have_dlopen"
- Remove requirement to load udf's only in "opt_plugin_dir"
include/my_global.h:
Remove duplicate defines
mysql-test/include/have_udf.inc:
Use "have_dlopen" to check if we "have udf"
mysql-test/r/have_udf.require:
Use "have_dlopen" to check if we "have udf"
mysql-test/r/udf.result:
Update for new error message "function"->"symbol"
sql/item_func.cc:
Remove "evil" dbug printour that checks args[0] even if arg_count is 0
sql/mysql_priv.h:
Add "have_dlopen"
sql/mysqld.cc:
Add "have_dlopen"
Move HAVE_DLOPEN defined to only surround "udf_free" and "udf_init"
sql/set_var.cc:
Add "have_dlopen"
sql/sql_plugin.cc:
Surround 'dlclose' with HAVE_DLOPEN
sql/sql_udf.cc:
Remove the requirement to load udf's only from "opt_plugin_dir".
Fix spelling error
into neptunus.(none):/home/msvensson/mysql/bug11835/my51-bug11835
client/mysqltest.c:
Auto merged
configure.in:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
sql/item_func.cc:
Auto merged
sql/sql_udf.cc:
Auto merged
sql/share/errmsg.txt:
Auto merged
into neptunus.(none):/home/msvensson/mysql/bug11835/my50-bug11835
client/mysqltest.c:
Auto merged
configure.in:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
sql/item_func.cc:
Auto merged
sql/sql_udf.cc:
Auto merged
into neptunus.(none):/home/msvensson/mysql/bug11835/my51-bug11835
client/mysqltest.c:
Auto merged
configure.in:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
sql/item_func.cc:
Auto merged
sql/Makefile.am:
Merge
sql/share/errmsg.txt:
Merge
sql/sql_udf.cc:
Merge
- detect the need for row-based binlogging not at execution stage but earlier at parsing stage; needed for example for CREATE TABLE SELECT UUID().
- more tests of this mixed mode.
mysql-test/r/rpl_switch_stm_row_mixed.result:
result update
mysql-test/t/rpl_switch_stm_row_mixed.test:
testing more scenarios for the mixed replication mode.
Added support for manual testing of UDFs vs the mixed mode (behind a variable in the test).
Changing old file names to better ones.
sql/item_create.cc:
at parse time, when we see a UUID(), put up a flag in LEX to say this binlogs properly only with row-based binlogging.
sql/item_func.cc:
it's not perfect to put up the flag at this execution stage, better do it at parse stage.
sql/item_strfunc.cc:
it's not perfect to put up the flag at this execution stage, better do it at parse stage
sql/set_var.cc:
this assertion is wrong, this piece of code can happen in RBR mode too.
sql/sql_lex.cc:
when we reinitialize the LEX members before every query, we have to reinitialize the new flag
sql/sql_lex.h:
A new flag, set at parsing stage, which tells if some items seen during parsing stage require row-based replication to binlog/replicate correctly
when this statement is later executed.
It has to be in LEX and not directly in THD, for this to work in prepared statements.
sql/sql_parse.cc:
Parsing stage happened at some time in the past and set up the flag in LEX, now that we execute the statement we actually turn on row-based binlogging
if the thread's binlog format is "mixed". We then turn it off when leaving mysql_execute_command().
Some cleanup code was not executed if leaving mysql_execute_command() at the "error" label, fixing this. A better fix than the "goto end" would be
to modify each "goto error" to "res=1; goto end" but it required changing many lines which I don't want to do now ("make smallest possible patch").
sql/sql_yacc.yy:
When at parsing stage we see a UDF we put up a flag to say that row-based binlogging is preferred.
and new binlog format called "mixed" (which is statement-based except if only row-based is correct,
in this cset it means if UDF or UUID is used; more cases could be added in later 5.1 release):
SET GLOBAL|SESSION BINLOG_FORMAT=row|statement|mixed|default;
the global default is statement unless cluster is enabled (then it's row) as in 5.1-alpha.
It's not possible to use SET on this variable if a session is currently in row-based mode and has open temporary tables (because CREATE
TEMPORARY TABLE was not binlogged so temp table is not known on slave), or if NDB is enabled (because
NDB does not support such change on-the-fly, though it will later), of if in a stored function (see below).
The added tests test the possibility or impossibility to SET, their effects, and the mixed mode,
including in prepared statements and in stored procedures and functions.
Caveats:
a) The mixed mode will not work for stored functions: in mixed mode, a stored function will
always be binlogged as one call and in a statement-based way (e.g. INSERT VALUES(myfunc()) or SELECT myfunc()).
b) for the same reason, changing the thread's binlog format inside a stored function is
refused with an error message.
c) the same problems apply to triggers; implementing b) for triggers will be done later (will ask
Dmitri).
Additionally, as the binlog format is now changeable by each user for his session, I remove the implication
which was done at startup, where row-based automatically set log-bin-trust-routine-creators to 1
(not possible anymore as a user can now switch to stmt-based and do nasty things again), and automatically
set --innodb-locks-unsafe-for-binlog to 1 (was anyway theoretically incorrect as it disabled
phantom protection).
Plus fixes for compiler warnings.
mysql-test/r/rpl_row_4_bytes.result:
update
mysql-test/t/rpl_row_4_bytes.test:
don't influence next tests
sql/ha_archive.cc:
please pay attention to this structure when you change it...
sql/ha_berkeley.cc:
please pay attention to this structure when you change it...
sql/ha_blackhole.cc:
please pay attention to this structure when you change it...
sql/ha_federated.cc:
please pay attention to this structure when you change it...
sql/ha_heap.cc:
please pay attention to this structure when you change it...
sql/ha_innodb.cc:
please pay attention to this structure when you change it...
sql/ha_myisam.cc:
please pay attention to this structure when you change it...
sql/ha_myisammrg.cc:
please pay attention to this structure when you change it...
sql/ha_ndbcluster_binlog.cc:
no more global 'binlog_row_based'
sql/ha_partition.cc:
please pay attention to this structure when you change it...
sql/handler.cc:
please pay attention to this structure when you change it...
sql/handler.h:
it's good to initialize statically (to get no compiler warning) even if to a null value.
sql/item_func.cc:
UDFs require row-based if this is the "mixed" binlog format.
sql/item_strfunc.cc:
UUID() requires row-based binlogging if this is the "mixed" binlog format
sql/log.cc:
binlog_row_based -> thd->current_stmt_binlog_row_based
sql/log.h:
the enum enum_binlog_format moves to log.h from mysqld.cc as we need it in several places.
sql/log_event.cc:
binlog_row_based -> thd->current_stmt_binlog_row_based
sql/log_event.h:
this global variable not used anymore
sql/mysql_priv.h:
these global variables not used anymore
sql/mysqld.cc:
simplification in the handling of --binlog-format (but with no user-visible change), thanks to
the new global system variable.
RBR does not anymore turn on --log-bin-trust-function-creators and --innodb-locks-unsafe-for-binlog
as these are global options and RBR is now settable per session.
sql/partition_info.cc:
compiler warnings
sql/set_var.cc:
new class of thread's variable, to handle the binlog_format (like sys_var_thd_enum except
that is_readonly() is overriden for more checks before update).
compiler warnings (ok'd by Serg)
sql/set_var.h:
new class for the thread's binlog_format (see set_var.cc)
sql/share/errmsg.txt:
some messages for when one can't toggle from one binlog format to another
sql/sp_head.cc:
binlog_row_based -> thd->current_stmt_binlog_row_based
sql/sql_base.cc:
binlog_row_based -> thd->current_stmt_binlog_row_based
sql/sql_class.cc:
When a THD is initialized, we set its current_stmt_binlog_row_based
sql/sql_class.h:
new THD::variables.binlog_format (the value of the session variable set by SET
or inherited from the global value), and THD::current_stmt_binlog_row_based which tells if the
current statement does row-based or statement-based binlogging. Both members are needed
as the 2nd one cannot be derived only from the first one (the statement's type plays a role too),
and the 1st one is needed to reset the 2nd one.
sql/sql_delete.cc:
binlog_row_based -> thd->current_stmt_binlog_row_based
sql/sql_insert.cc:
binlog_row_based -> thd->current_stmt_binlog_row_based
sql/sql_load.cc:
binlog_row_based -> thd->current_stmt_binlog_row_based.
sql/sql_parse.cc:
when we are done with a statement, we reset the current_stmt_binlog_row_based to the value
derived from THD::variables.binlog_format.
sql/sql_partition.cc:
compiler warning
sql/sql_show.cc:
compiler warning
sql/sql_table.cc:
binlog_row_based -> thd->current_stmt_binlog_row_based
tests/mysql_client_test.c:
compiler warning
mysql-test/r/ndb_binlog_basic2.result:
new result
mysql-test/r/rpl_switch_stm_row_mixed.result:
new result
mysql-test/t/ndb_binlog_basic2.test:
new test to verify that if cluster is enabled, can't change binlog format on the fly.
mysql-test/t/rpl_switch_stm_row_mixed.test:
test to see if one can switch between SBR, RBR, and "mixed" mode, and when one cannot,
and test to see if the switching, and the mixed mode, work properly (using UUID() to test,
as using UDFs is not possible in the testsuite for portability reasons).
- 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''
into mysql.com:/home/kostja/mysql/mysql-5.1-merge
BitKeeper/deleted/.del-ndb_load.result:
Delete: mysql-test/r/ndb_load.result
BitKeeper/deleted/.del-ndb_load.test:
Delete: mysql-test/t/ndb_load.test
extra/perror.c:
Auto merged
mysql-test/r/fulltext.result:
Auto merged
mysql-test/r/ndb_blob.result:
Auto merged
mysql-test/r/sp-code.result:
Auto merged
mysql-test/r/sp.result:
Auto merged
mysql-test/r/view.result:
Auto merged
mysql-test/t/fulltext.test:
Auto merged
mysql-test/t/sp-destruct.test:
Auto merged
mysql-test/t/sp.test:
Auto merged
mysql-test/t/view.test:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/ha_ndbcluster.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/opt_range.cc:
Auto merged
sql/sp.cc:
Auto merged
sql/sp.h:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sp_head.h:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_load.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
storage/ndb/src/kernel/blocks/dbacc/Dbacc.hpp:
Auto merged
storage/ndb/src/kernel/main.cpp:
Auto merged
storage/ndb/src/kernel/vm/Configuration.cpp:
Auto merged
storage/ndb/src/kernel/vm/Configuration.hpp:
Auto merged
storage/ndb/src/ndbapi/NdbBlob.cpp:
Auto merged
storage/ndb/test/ndbapi/testBlobs.cpp:
Auto merged
storage/ndb/tools/delete_all.cpp:
Auto merged
mysql-test/t/disabled.def:
Manual merge.
fix for bug#8461
BUG 8461 - TRUNCATE returns incorrect result if 2nd argument is negative
Reason: Both TRUNCATE/ROUND converts INTEGERS to DOUBLE and back to INTEGERS
Changed the integer routine to work on integers only.
This bug affects 4.1, 5.0 and 5.1
Fixing in 4.1 will need to change the routine to handle different types individually.
5.0 did had different routines for different types already just the INTEGER routine was bad.
sql/item_func.cc:
fix for bug#8461
BUG 8461 - TRUNCATE returns incorrect result if 2nd argument is negative
Reason: TRUNCATE converts INTEGERS to DOUBLE and back to INTEGERS
Both ROUND and TRUNCATE are affected by this.
Changed the integer routine to work on integers only.
This bug affects 4.1 5,0 and 5
Fixing in 4.1 will need to change the routine to handle different types individually.
into mysql.com:/home/kostja/mysql/mysql-5.1-merge
BitKeeper/etc/ignore:
auto-union
configure.in:
Auto merged
libmysql/libmysql.c:
Auto merged
mysql-test/ndb/ndbcluster.sh:
Auto merged
mysql-test/r/rpl_sp.result:
Auto merged
mysql-test/r/sp-error.result:
Auto merged
mysql-test/r/sp.result:
Auto merged
mysql-test/r/type_float.result:
Auto merged
mysql-test/t/rpl_sp.test:
Auto merged
mysql-test/t/sp-error.test:
Auto merged
mysql-test/t/sp.test:
Auto merged
sql/field.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/mysqld.cc:
Auto merged
sql/protocol.cc:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sp_head.h:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.cc:
Auto merged
sql/table.h:
Auto merged
storage/myisam/ft_update.c:
Auto merged
storage/ndb/include/logger/LogHandler.hpp:
Auto merged
storage/ndb/include/logger/Logger.hpp:
Auto merged
storage/ndb/include/mgmapi/mgmapi.h:
Auto merged
storage/ndb/include/mgmcommon/ConfigRetriever.hpp:
Auto merged
storage/ndb/src/common/logger/FileLogHandler.cpp:
Auto merged
storage/ndb/src/common/logger/LogHandler.cpp:
Auto merged
storage/ndb/src/common/logger/Logger.cpp:
Auto merged
storage/ndb/src/common/logger/SysLogHandler.cpp:
Auto merged
storage/ndb/src/common/mgmcommon/ConfigRetriever.cpp:
Auto merged
storage/ndb/src/common/util/SocketServer.cpp:
Auto merged
storage/ndb/src/kernel/main.cpp:
Auto merged
storage/ndb/src/kernel/vm/Configuration.cpp:
Auto merged
storage/ndb/src/kernel/vm/Configuration.hpp:
Auto merged
storage/ndb/src/mgmapi/mgmapi.cpp:
Auto merged
storage/ndb/src/mgmclient/CommandInterpreter.cpp:
Auto merged
storage/ndb/src/mgmsrv/MgmtSrvr.cpp:
Auto merged
storage/ndb/src/mgmsrv/MgmtSrvr.hpp:
Auto merged
storage/ndb/src/mgmsrv/Services.cpp:
Auto merged
storage/ndb/src/mgmsrv/Services.hpp:
Auto merged
storage/ndb/src/mgmsrv/main.cpp:
Auto merged
storage/ndb/tools/ndb_size.pl:
Auto merged
zlib/Makefile.am:
Auto merged
mysql-test/r/information_schema.result:
SCCS merged
mysql-test/t/information_schema.test:
Manual merge.
sql/ha_archive.cc:
Manual merge.
sql/share/errmsg.txt:
SCCS merged
tests/mysql_client_test.c:
Manual merge.
mysql-test/ndb/ndbcluster.sh:
Auto merged
mysql-test/r/func_gconcat.result:
Auto merged
mysql-test/r/subselect.result:
Auto merged
mysql-test/t/func_math.test:
Auto merged
mysql-test/t/type_float.test:
Auto merged
sql/spatial.h:
Auto merged
mysql-test/r/type_float.result:
merging
sql/item_func.cc:
merging
myisam/mi_delete.c:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/opt_range.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_db.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_show.cc:
Auto merged
into mysql.com:/home/jimw/my/mysql-5.1-clean
mysql-test/r/sp.result:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/item_subselect.cc:
Auto merged
sql/item_sum.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_db.cc:
Auto merged
sql/sql_delete.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/sql_base.cc:
Resolve conflict
into rurik.mysql.com:/home/igor/dev/mysql-5.0-2
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged