mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 18:20:07 +01:00
Merge dsl-hkibras-fe36f900-97.dhcp.inet.fi:/home/elkin/MySQL/TEAM/BARE/5.1
into dsl-hkibras-fe36f900-97.dhcp.inet.fi:/home/elkin/MySQL/TEAM/FIXES/5.1/bug16567_binlog_verbose_help_jeb sql/mysqld.cc: Auto merged
This commit is contained in:
commit
fa5cc52a43
3 changed files with 87 additions and 33 deletions
|
@ -7,8 +7,31 @@ start slave;
|
|||
drop database if exists mysqltest1;
|
||||
create database mysqltest1;
|
||||
use mysqltest1;
|
||||
set session binlog_format=mixed;
|
||||
show session variables like "binlog_format%";
|
||||
Variable_name Value
|
||||
binlog_format MIXED
|
||||
set session binlog_format=statement;
|
||||
show session variables like "binlog_format%";
|
||||
Variable_name Value
|
||||
binlog_format STATEMENT
|
||||
set session binlog_format=row;
|
||||
set global binlog_format=row;
|
||||
show session variables like "binlog_format%";
|
||||
Variable_name Value
|
||||
binlog_format ROW
|
||||
set global binlog_format=DEFAULT;
|
||||
show global variables like "binlog_format%";
|
||||
Variable_name Value
|
||||
binlog_format MIXED
|
||||
set global binlog_format=MIXED;
|
||||
show global variables like "binlog_format%";
|
||||
Variable_name Value
|
||||
binlog_format MIXED
|
||||
set global binlog_format=STATEMENT;
|
||||
show global variables like "binlog_format%";
|
||||
Variable_name Value
|
||||
binlog_format STATEMENT
|
||||
set global binlog_format=ROW;
|
||||
show global variables like "binlog_format%";
|
||||
Variable_name Value
|
||||
binlog_format ROW
|
||||
|
@ -67,12 +90,11 @@ execute stmt1 using @string;
|
|||
deallocate prepare stmt1;
|
||||
insert into t1 values("for_10_");
|
||||
insert into t1 select "yesterday_11_";
|
||||
set binlog_format=default;
|
||||
set binlog_format=statement;
|
||||
select @@global.binlog_format, @@session.binlog_format;
|
||||
@@global.binlog_format @@session.binlog_format
|
||||
STATEMENT STATEMENT
|
||||
set global binlog_format=default;
|
||||
ERROR 42000: Variable 'binlog_format' doesn't have a default value
|
||||
set global binlog_format=statement;
|
||||
select @@global.binlog_format, @@session.binlog_format;
|
||||
@@global.binlog_format @@session.binlog_format
|
||||
STATEMENT STATEMENT
|
||||
|
@ -87,11 +109,11 @@ execute stmt1 using @string;
|
|||
deallocate prepare stmt1;
|
||||
insert into t1 values("for_15_");
|
||||
insert into t1 select "yesterday_16_";
|
||||
set binlog_format=mixed;
|
||||
set global binlog_format=mixed;
|
||||
select @@global.binlog_format, @@session.binlog_format;
|
||||
@@global.binlog_format @@session.binlog_format
|
||||
STATEMENT MIXED
|
||||
set global binlog_format=mixed;
|
||||
MIXED STATEMENT
|
||||
set binlog_format=default;
|
||||
select @@global.binlog_format, @@session.binlog_format;
|
||||
@@global.binlog_format @@session.binlog_format
|
||||
MIXED MIXED
|
||||
|
|
|
@ -1,3 +1,14 @@
|
|||
#
|
||||
# rpl_switch_stm_row_mixed tests covers
|
||||
#
|
||||
# - switching explicitly between STATEMENT, ROW, and MIXED binlog format
|
||||
# showing when it is possible and when not.
|
||||
# - switching from MIXED to RBR implicitly listing all use cases,
|
||||
# e.g a query invokes UUID(), thereafter to serve as the definition
|
||||
# of MIXED binlog format
|
||||
# - correctness of execution
|
||||
|
||||
|
||||
-- source include/not_ndb_default.inc
|
||||
-- source include/master-slave.inc
|
||||
|
||||
|
@ -8,9 +19,22 @@ create database mysqltest1;
|
|||
--enable_warnings
|
||||
use mysqltest1;
|
||||
|
||||
set session binlog_format=row;
|
||||
set global binlog_format=row;
|
||||
|
||||
# play with switching
|
||||
set session binlog_format=mixed;
|
||||
show session variables like "binlog_format%";
|
||||
set session binlog_format=statement;
|
||||
show session variables like "binlog_format%";
|
||||
set session binlog_format=row;
|
||||
show session variables like "binlog_format%";
|
||||
|
||||
set global binlog_format=DEFAULT;
|
||||
show global variables like "binlog_format%";
|
||||
set global binlog_format=MIXED;
|
||||
show global variables like "binlog_format%";
|
||||
set global binlog_format=STATEMENT;
|
||||
show global variables like "binlog_format%";
|
||||
set global binlog_format=ROW;
|
||||
show global variables like "binlog_format%";
|
||||
show session variables like "binlog_format%";
|
||||
select @@global.binlog_format, @@session.binlog_format;
|
||||
|
@ -63,12 +87,10 @@ deallocate prepare stmt1;
|
|||
insert into t1 values("for_10_");
|
||||
insert into t1 select "yesterday_11_";
|
||||
|
||||
# test SET DEFAULT (=statement at this point of test)
|
||||
set binlog_format=default;
|
||||
# test statement (is not default after wl#3368)
|
||||
set binlog_format=statement;
|
||||
select @@global.binlog_format, @@session.binlog_format;
|
||||
# due to cluster it's hard to set back to default
|
||||
--error ER_NO_DEFAULT
|
||||
set global binlog_format=default;
|
||||
set global binlog_format=statement;
|
||||
select @@global.binlog_format, @@session.binlog_format;
|
||||
|
||||
prepare stmt1 from 'insert into t1 select ?';
|
||||
|
@ -87,10 +109,10 @@ insert into t1 select "yesterday_16_";
|
|||
|
||||
# and now the mixed mode
|
||||
|
||||
set binlog_format=mixed;
|
||||
select @@global.binlog_format, @@session.binlog_format;
|
||||
set global binlog_format=mixed;
|
||||
select @@global.binlog_format, @@session.binlog_format;
|
||||
set binlog_format=default;
|
||||
select @@global.binlog_format, @@session.binlog_format;
|
||||
|
||||
prepare stmt1 from 'insert into t1 select concat(UUID(),?)';
|
||||
set @string="emergency_17_";
|
||||
|
|
|
@ -448,9 +448,10 @@ my_bool sp_automatic_privileges= 1;
|
|||
ulong opt_binlog_rows_event_max_size;
|
||||
const char *binlog_format_names[]= {"STATEMENT", "ROW", "MIXED", NullS};
|
||||
TYPELIB binlog_format_typelib=
|
||||
{ array_elements(binlog_format_names)-1,"",
|
||||
{ array_elements(binlog_format_names) - 1, "",
|
||||
binlog_format_names, NULL };
|
||||
|
||||
ulong opt_binlog_format_id= (ulong) BINLOG_FORMAT_UNSPEC;
|
||||
const char *opt_binlog_format= binlog_format_names[opt_binlog_format_id];
|
||||
#ifdef HAVE_INITGROUPS
|
||||
static bool calling_initgroups= FALSE; /* Used in SIGSEGV handler. */
|
||||
#endif
|
||||
|
@ -3153,17 +3154,24 @@ with --log-bin instead.");
|
|||
"--log-slave-updates work.");
|
||||
unireg_abort(1);
|
||||
}
|
||||
|
||||
if (!opt_bin_log && (global_system_variables.binlog_format != BINLOG_FORMAT_UNSPEC))
|
||||
{
|
||||
sql_print_error("You need to use --log-bin to make "
|
||||
"--binlog-format work.");
|
||||
unireg_abort(1);
|
||||
}
|
||||
if (global_system_variables.binlog_format == BINLOG_FORMAT_UNSPEC)
|
||||
{
|
||||
if (!opt_bin_log)
|
||||
if (opt_binlog_format_id != BINLOG_FORMAT_UNSPEC)
|
||||
{
|
||||
sql_print_error("You need to use --log-bin to make "
|
||||
"--binlog-format work.");
|
||||
unireg_abort(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
global_system_variables.binlog_format= BINLOG_FORMAT_UNSPEC;
|
||||
}
|
||||
else
|
||||
if (opt_binlog_format_id == BINLOG_FORMAT_UNSPEC)
|
||||
global_system_variables.binlog_format= BINLOG_FORMAT_MIXED;
|
||||
}
|
||||
else
|
||||
{
|
||||
DBUG_ASSERT(global_system_variables.binlog_format != BINLOG_FORMAT_UNSPEC);
|
||||
}
|
||||
|
||||
/* Check that we have not let the format to unspecified at this point */
|
||||
DBUG_ASSERT((uint)global_system_variables.binlog_format <=
|
||||
|
@ -4914,6 +4922,7 @@ struct my_option my_long_options[] =
|
|||
(gptr*) &my_bind_addr_str, (gptr*) &my_bind_addr_str, 0, GET_STR,
|
||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"binlog_format", OPT_BINLOG_FORMAT,
|
||||
"Does not have any effect without '--log-bin'. "
|
||||
"Tell the master the form of binary logging to use: either 'row' for "
|
||||
"row-based binary logging, or 'statement' for statement-based binary "
|
||||
"logging, or 'mixed'. 'mixed' is statement-based binary logging except "
|
||||
|
@ -4921,11 +4930,12 @@ struct my_option my_long_options[] =
|
|||
"involve user-defined functions (i.e. UDFs) or the UUID() function; for "
|
||||
"those, row-based binary logging is automatically used. "
|
||||
#ifdef HAVE_NDB_BINLOG
|
||||
"If ndbcluster is enabled, the default is 'row'."
|
||||
"If ndbcluster is enabled and binlog_format is `mixed', the format switches"
|
||||
" to 'row' and back implicitly per each query accessing a NDB table."
|
||||
#endif
|
||||
, 0, 0, 0, GET_STR, REQUIRED_ARG,
|
||||
BINLOG_FORMAT_MIXED
|
||||
, 0, 0, 0, 0, 0 },
|
||||
,(gptr*) &opt_binlog_format, (gptr*) &opt_binlog_format,
|
||||
0, GET_STR, REQUIRED_ARG, BINLOG_FORMAT_MIXED, BINLOG_FORMAT_STMT,
|
||||
BINLOG_FORMAT_MIXED, 0, 0, 0},
|
||||
{"binlog-do-db", OPT_BINLOG_DO_DB,
|
||||
"Tells the master it should log updates for the specified database, and exclude all others not explicitly mentioned.",
|
||||
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
|
@ -7286,7 +7296,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||
binlog_format_names[BINLOG_FORMAT_MIXED]);
|
||||
exit(1);
|
||||
}
|
||||
global_system_variables.binlog_format= id-1;
|
||||
global_system_variables.binlog_format= opt_binlog_format_id= id - 1;
|
||||
break;
|
||||
}
|
||||
case (int)OPT_BINLOG_DO_DB:
|
||||
|
|
Loading…
Add table
Reference in a new issue