Commit 9fe33acb authored by unknown's avatar unknown

Merge gbichot3.local:/home/mysql_src/mysql-5.1-new-WL3146-handler

into  gbichot3.local:/home/mysql_src/mysql-5.1


sql/sql_insert.cc:
  Auto merged
parents 94201860 d2dc70dc
...@@ -37,6 +37,23 @@ sub collect_test_cases ($) { ...@@ -37,6 +37,23 @@ sub collect_test_cases ($) {
opendir(TESTDIR, $testdir) or mtr_error("Can't open dir \"$testdir\": $!"); opendir(TESTDIR, $testdir) or mtr_error("Can't open dir \"$testdir\": $!");
# ----------------------------------------------------------------------
# Disable some tests listed in disabled.def
# ----------------------------------------------------------------------
my %disabled;
if ( open(DISABLED, "$testdir/disabled.def" ) )
{
while ( <DISABLED> )
{
chomp;
if ( /^\s*(\S+)\s*:\s*(.*?)\s*$/ )
{
$disabled{$1}= $2;
}
}
close DISABLED;
}
if ( @::opt_cases ) if ( @::opt_cases )
{ {
foreach my $tname ( @::opt_cases ) { # Run in specified order, no sort foreach my $tname ( @::opt_cases ) { # Run in specified order, no sort
...@@ -100,30 +117,13 @@ sub collect_test_cases ($) { ...@@ -100,30 +117,13 @@ sub collect_test_cases ($) {
} }
} }
collect_one_test_case($testdir,$resdir,$tname,$elem,$cases,{}, collect_one_test_case($testdir,$resdir,$tname,$elem,$cases,\%disabled,
$component_id); $component_id);
} }
closedir TESTDIR; closedir TESTDIR;
} }
else else
{ {
# ----------------------------------------------------------------------
# Disable some tests listed in disabled.def
# ----------------------------------------------------------------------
my %disabled;
if ( ! $::opt_ignore_disabled_def and open(DISABLED, "$testdir/disabled.def" ) )
{
while ( <DISABLED> )
{
chomp;
if ( /^\s*(\S+)\s*:\s*(.*?)\s*$/ )
{
$disabled{$1}= $2;
}
}
close DISABLED;
}
foreach my $elem ( sort readdir(TESTDIR) ) { foreach my $elem ( sort readdir(TESTDIR) ) {
my $component_id= undef; my $component_id= undef;
my $tname= undef; my $tname= undef;
...@@ -414,18 +414,33 @@ sub collect_one_test_case($$$$$$$) { ...@@ -414,18 +414,33 @@ sub collect_one_test_case($$$$$$$) {
} }
# FIXME why this late? # FIXME why this late?
my $marked_as_disabled= 0;
if ( $disabled->{$tname} ) if ( $disabled->{$tname} )
{ {
$tinfo->{'skip'}= 1; $marked_as_disabled= 1;
$tinfo->{'disable'}= 1; # Sub type of 'skip' $tinfo->{'comment'}= $disabled->{$tname};
$tinfo->{'comment'}= $disabled->{$tname} if $disabled->{$tname};
} }
if ( -f $disabled_file ) if ( -f $disabled_file )
{
$marked_as_disabled= 1;
$tinfo->{'comment'}= mtr_fromfile($disabled_file);
}
# If test was marked as disabled, either opt_enable_disabled is off and then
# we skip this test, or it is on and then we run this test but warn
if ( $marked_as_disabled )
{
if ( $::opt_enable_disabled )
{
$tinfo->{'dont_skip_though_disabled'}= 1;
}
else
{ {
$tinfo->{'skip'}= 1; $tinfo->{'skip'}= 1;
$tinfo->{'disable'}= 1; # Sub type of 'skip' $tinfo->{'disable'}= 1; # Sub type of 'skip'
$tinfo->{'comment'}= mtr_fromfile($disabled_file); }
} }
if ( $component_id eq 'im' ) if ( $component_id eq 'im' )
......
...@@ -10,6 +10,7 @@ sub mtr_report_test_name($); ...@@ -10,6 +10,7 @@ sub mtr_report_test_name($);
sub mtr_report_test_passed($); sub mtr_report_test_passed($);
sub mtr_report_test_failed($); sub mtr_report_test_failed($);
sub mtr_report_test_skipped($); sub mtr_report_test_skipped($);
sub mtr_report_test_not_skipped_though_disabled($);
sub mtr_show_failed_diff ($); sub mtr_show_failed_diff ($);
sub mtr_report_stats ($); sub mtr_report_stats ($);
...@@ -100,6 +101,23 @@ sub mtr_report_test_skipped ($) { ...@@ -100,6 +101,23 @@ sub mtr_report_test_skipped ($) {
} }
} }
sub mtr_report_tests_not_skipped_though_disabled ($) {
my $tests= shift;
if ( $::opt_enable_disabled )
{
my @disabled_tests= grep {$_->{'dont_skip_though_disabled'}} @$tests;
if ( @disabled_tests )
{
print "\nTest(s) which will be run though they are marked as disabled:\n";
foreach my $tinfo ( sort {$a->{'name'} cmp $b->{'name'}} @disabled_tests )
{
printf " %-20s : %s\n", $tinfo->{'name'}, $tinfo->{'comment'};
}
}
}
}
sub mtr_report_test_passed ($) { sub mtr_report_test_passed ($) {
my $tinfo= shift; my $tinfo= shift;
......
...@@ -216,6 +216,7 @@ our $opt_extern; ...@@ -216,6 +216,7 @@ our $opt_extern;
our $opt_fast; our $opt_fast;
our $opt_force; our $opt_force;
our $opt_reorder; our $opt_reorder;
our $opt_enable_disabled;
our $opt_gcov; our $opt_gcov;
our $opt_gcov_err; our $opt_gcov_err;
...@@ -660,6 +661,7 @@ sub command_line_setup () { ...@@ -660,6 +661,7 @@ sub command_line_setup () {
'netware' => \$opt_netware, 'netware' => \$opt_netware,
'old-master' => \$opt_old_master, 'old-master' => \$opt_old_master,
'reorder' => \$opt_reorder, 'reorder' => \$opt_reorder,
'enable-disabled' => \$opt_enable_disabled,
'script-debug' => \$opt_script_debug, 'script-debug' => \$opt_script_debug,
'sleep=i' => \$opt_sleep, 'sleep=i' => \$opt_sleep,
'socket=s' => \$opt_socket, 'socket=s' => \$opt_socket,
...@@ -1794,12 +1796,12 @@ sub run_suite () { ...@@ -1794,12 +1796,12 @@ sub run_suite () {
mtr_print_thick_line(); mtr_print_thick_line();
mtr_report("Finding Tests in the '$suite' suite");
mtr_timer_start($glob_timers,"suite", 60 * $opt_suite_timeout); mtr_timer_start($glob_timers,"suite", 60 * $opt_suite_timeout);
mtr_report("Starting Tests in the '$suite' suite"); mtr_report("Starting Tests in the '$suite' suite");
mtr_report_tests_not_skipped_though_disabled($tests);
mtr_print_header(); mtr_print_header();
foreach my $tinfo ( @$tests ) foreach my $tinfo ( @$tests )
...@@ -3352,6 +3354,12 @@ sub run_mysqltest ($) { ...@@ -3352,6 +3354,12 @@ sub run_mysqltest ($) {
"--port=$master->[0]->{'path_myport'} " . "--port=$master->[0]->{'path_myport'} " .
"--socket=$master->[0]->{'path_mysock'}"; "--socket=$master->[0]->{'path_mysock'}";
if ( $opt_debug )
{
$cmdline_mysql_client_test .=
" --debug=d:t:A,$opt_vardir_trace/log/mysql_client_test.trace";
}
if ( $glob_use_embedded_server ) if ( $glob_use_embedded_server )
{ {
$cmdline_mysql_client_test.= $cmdline_mysql_client_test.=
......
...@@ -178,6 +178,7 @@ CREATE TABLE t8 LIKE t4; ...@@ -178,6 +178,7 @@ CREATE TABLE t8 LIKE t4;
CREATE TABLE t9 LIKE tt4; CREATE TABLE t9 LIKE tt4;
CREATE TEMPORARY TABLE tt5 LIKE t4; CREATE TEMPORARY TABLE tt5 LIKE t4;
CREATE TEMPORARY TABLE tt6 LIKE tt4; CREATE TEMPORARY TABLE tt6 LIKE tt4;
CREATE TEMPORARY TABLE tt7 SELECT 1;
**** On Master **** **** On Master ****
SHOW CREATE TABLE t8; SHOW CREATE TABLE t8;
Table t8 Table t8
......
...@@ -142,12 +142,24 @@ select foo3(); ...@@ -142,12 +142,24 @@ select foo3();
ERROR HY000: Cannot change the binary logging format inside a stored function or trigger ERROR HY000: Cannot change the binary logging format inside a stored function or trigger
select * from t1 where a="alarm"; select * from t1 where a="alarm";
a a
insert delayed into t2 values("delay_1_");
insert delayed into t2 values(concat("delay_2_",UUID()));
Warnings:
Warning 1265 Data truncated for column 'UUID()' at row 1
insert delayed into t2 values("delay_3_"),(concat("delay_4_",UUID())),("delay_5_");
Warnings:
Warning 1265 Data truncated for column 'UUID()' at row 2
insert delayed into t2 values("delay_6_");
create table t12 (a int, b float);
insert delayed into t12 values(1,rand());
set @a=2.345;
insert delayed into t12 values(2,@a);
select count(*) from t1; select count(*) from t1;
count(*) count(*)
36 36
select count(*) from t2; select count(*) from t2;
count(*) count(*)
1 7
select count(*) from t3; select count(*) from t3;
count(*) count(*)
2 2
...@@ -157,11 +169,12 @@ count(*) ...@@ -157,11 +169,12 @@ count(*)
select count(*) from t5; select count(*) from t5;
count(*) count(*)
58 58
select count(*) from t12;
count(*)
2
show binlog events from 102; show binlog events from 102;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query 1 # drop database if exists mysqltest1 master-bin.000001 # Query 1 # drop database if exists mysqltest1
master-bin.000001 # Table_map 1 # table_id: # (mysql.proc)
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Query 1 # create database mysqltest1 master-bin.000001 # Query 1 # create database mysqltest1
master-bin.000001 # Query 1 # use `mysqltest1`; CREATE TABLE t1 (a varchar(100)) master-bin.000001 # Query 1 # use `mysqltest1`; CREATE TABLE t1 (a varchar(100))
master-bin.000001 # Table_map 1 # table_id: # (mysqltest1.t1) master-bin.000001 # Table_map 1 # table_id: # (mysqltest1.t1)
...@@ -178,10 +191,6 @@ master-bin.000001 # Table_map 1 # table_id: # (mysqltest1.t1) ...@@ -178,10 +191,6 @@ master-bin.000001 # Table_map 1 # table_id: # (mysqltest1.t1)
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map 1 # table_id: # (mysqltest1.t1) master-bin.000001 # Table_map 1 # table_id: # (mysqltest1.t1)
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map 1 # table_id: # (mysqltest1.t1)
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map 1 # table_id: # (mysqltest1.t1)
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Query 1 # use `mysqltest1`; insert into t1 values("work") master-bin.000001 # Query 1 # use `mysqltest1`; insert into t1 values("work")
master-bin.000001 # User var 1 # @`string`=_latin1 0x656D657267656E6379 COLLATE latin1_swedish_ci master-bin.000001 # User var 1 # @`string`=_latin1 0x656D657267656E6379 COLLATE latin1_swedish_ci
master-bin.000001 # Query 1 # use `mysqltest1`; insert into t1 select @'string' master-bin.000001 # Query 1 # use `mysqltest1`; insert into t1 select @'string'
...@@ -269,4 +278,17 @@ master-bin.000001 # Table_map 1 # table_id: # (mysqltest1.t1) ...@@ -269,4 +278,17 @@ master-bin.000001 # Table_map 1 # table_id: # (mysqltest1.t1)
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map 1 # table_id: # (mysqltest1.t1) master-bin.000001 # Table_map 1 # table_id: # (mysqltest1.t1)
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map 1 # table_id: # (mysqltest1.t2)
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map 1 # table_id: # (mysqltest1.t2)
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map 1 # table_id: # (mysqltest1.t2)
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map 1 # table_id: # (mysqltest1.t2)
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Query 1 # use `mysqltest1`; create table t12 (a int, b float)
master-bin.000001 # Table_map 1 # table_id: # (mysqltest1.t12)
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map 1 # table_id: # (mysqltest1.t12)
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
drop database mysqltest1; drop database mysqltest1;
...@@ -32,7 +32,6 @@ rpl_ndb_ddl : BUG#18946 result file needs update + test needs to ch ...@@ -32,7 +32,6 @@ rpl_ndb_ddl : BUG#18946 result file needs update + test needs to ch
rpl_ndb_innodb2ndb : Bug #19710 Cluster replication to partition table fails on DELETE FROM statement rpl_ndb_innodb2ndb : Bug #19710 Cluster replication to partition table fails on DELETE FROM statement
#rpl_ndb_log : BUG#18947 2006-03-21 tomas CRBR: order in binlog of create table and insert (on different table) not determ #rpl_ndb_log : BUG#18947 2006-03-21 tomas CRBR: order in binlog of create table and insert (on different table) not determ
rpl_ndb_myisam2ndb : Bug #19710 Cluster replication to partition table fails on DELETE FROM statement rpl_ndb_myisam2ndb : Bug #19710 Cluster replication to partition table fails on DELETE FROM statement
rpl_switch_stm_row_mixed : BUG#18590 2006-03-28 brian
rpl_row_blob_innodb : BUG#18980 2006-04-10 kent Test fails randomly rpl_row_blob_innodb : BUG#18980 2006-04-10 kent Test fails randomly
rpl_row_func003 : BUG#19074 2006-13-04 andrei test failed rpl_row_func003 : BUG#19074 2006-13-04 andrei test failed
rpl_sp : BUG#16456 2006-02-16 jmiller rpl_sp : BUG#16456 2006-02-16 jmiller
......
...@@ -97,6 +97,7 @@ CREATE TABLE t8 LIKE t4; ...@@ -97,6 +97,7 @@ CREATE TABLE t8 LIKE t4;
CREATE TABLE t9 LIKE tt4; CREATE TABLE t9 LIKE tt4;
CREATE TEMPORARY TABLE tt5 LIKE t4; CREATE TEMPORARY TABLE tt5 LIKE t4;
CREATE TEMPORARY TABLE tt6 LIKE tt4; CREATE TEMPORARY TABLE tt6 LIKE tt4;
CREATE TEMPORARY TABLE tt7 SELECT 1;
--echo **** On Master **** --echo **** On Master ****
--query_vertical SHOW CREATE TABLE t8 --query_vertical SHOW CREATE TABLE t8
--query_vertical SHOW CREATE TABLE t9 --query_vertical SHOW CREATE TABLE t9
......
...@@ -154,6 +154,22 @@ call foo2(); ...@@ -154,6 +154,22 @@ call foo2();
select foo3(); select foo3();
select * from t1 where a="alarm"; select * from t1 where a="alarm";
# Test that INSERT DELAYED works in mixed mode (BUG#20649)
insert delayed into t2 values("delay_1_");
insert delayed into t2 values(concat("delay_2_",UUID()));
insert delayed into t2 values("delay_3_"),(concat("delay_4_",UUID())),("delay_5_");
insert delayed into t2 values("delay_6_");
# Test for BUG#20633 (INSERT DELAYED RAND()/user_variable does not
# replicate fine in statement-based ; we test that in mixed mode it
# works).
create table t12 (a int, b float);
insert delayed into t12 values(1,rand());
set @a=2.345;
insert delayed into t12 values(2,@a);
sleep 4; # time for the delayed inserts to reach disk
# If you want to do manual testing of the mixed mode regarding UDFs (not # If you want to do manual testing of the mixed mode regarding UDFs (not
# testable automatically as quite platform- and compiler-dependent), # testable automatically as quite platform- and compiler-dependent),
# you just need to set the variable below to 1, and to # you just need to set the variable below to 1, and to
...@@ -188,6 +204,7 @@ select count(*) from t2; ...@@ -188,6 +204,7 @@ select count(*) from t2;
select count(*) from t3; select count(*) from t3;
select count(*) from t4; select count(*) from t4;
select count(*) from t5; select count(*) from t5;
select count(*) from t12;
if ($you_want_to_test_UDF) if ($you_want_to_test_UDF)
{ {
select count(*) from t6; select count(*) from t6;
......
...@@ -1637,7 +1637,8 @@ class select_create: public select_insert { ...@@ -1637,7 +1637,8 @@ class select_create: public select_insert {
virtual bool can_rollback_data() { return 1; } virtual bool can_rollback_data() { return 1; }
// Needed for access from local class MY_HOOKS in prepare(), since thd is proteted. // Needed for access from local class MY_HOOKS in prepare(), since thd is proteted.
THD *get_thd(void) { return thd; } const THD *get_thd(void) { return thd; }
const HA_CREATE_INFO *get_create_info() { return create_info; };
}; };
#include <myisam.h> #include <myisam.h>
......
...@@ -1287,6 +1287,11 @@ class delayed_insert :public ilink { ...@@ -1287,6 +1287,11 @@ class delayed_insert :public ilink {
thd.command=COM_DELAYED_INSERT; thd.command=COM_DELAYED_INSERT;
thd.lex->current_select= 0; // for my_message_sql thd.lex->current_select= 0; // for my_message_sql
thd.lex->sql_command= SQLCOM_INSERT; // For innodb::store_lock() thd.lex->sql_command= SQLCOM_INSERT; // For innodb::store_lock()
/*
Statement-based replication of INSERT DELAYED has problems with RAND()
and user vars, so in mixed mode we go to row-based.
*/
thd.set_current_stmt_binlog_row_based_if_mixed();
bzero((char*) &thd.net, sizeof(thd.net)); // Safety bzero((char*) &thd.net, sizeof(thd.net)); // Safety
bzero((char*) &table_list, sizeof(table_list)); // Safety bzero((char*) &table_list, sizeof(table_list)); // Safety
...@@ -2745,7 +2750,8 @@ class MY_HOOKS : public TABLEOP_HOOKS ...@@ -2745,7 +2750,8 @@ class MY_HOOKS : public TABLEOP_HOOKS
MY_HOOKS(select_create *x) : ptr(x) { } MY_HOOKS(select_create *x) : ptr(x) { }
virtual void do_prelock(TABLE **tables, uint count) virtual void do_prelock(TABLE **tables, uint count)
{ {
if (ptr->get_thd()->current_stmt_binlog_row_based) if (ptr->get_thd()->current_stmt_binlog_row_based &&
!(ptr->get_create_info()->options & HA_LEX_CREATE_TMP_TABLE))
ptr->binlog_show_create_table(tables, count); ptr->binlog_show_create_table(tables, count);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment