Commit c155c66d authored by unknown's avatar unknown
Browse files

Merge bk-internal.mysql.com:/home/bk/mysql-5.1-new-rpl

into  bodhi.local:/opt/local/work/mysql-5.1-runtime-merge


mysql-test/t/disabled.def:
  Auto merged
sql/handler.cc:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
sql/table.h:
  Auto merged
mysql-test/r/show_check.result:
  Manual merge.
mysql-test/t/show_check.test:
  Manual merge.
parents 198a8abd 4268313e
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -486,18 +486,15 @@ write_event_header_and_base64(Log_event *ev, FILE *result_file,
  DBUG_ENTER("write_event_header_and_base64");
  /* Write header and base64 output to cache */
  IO_CACHE result_cache;
  if (init_io_cache(&result_cache, -1, 0, WRITE_CACHE, 0L, FALSE,
                    MYF(MY_WME | MY_NABP)))
  {
  if (open_cached_file(&result_cache, NULL, NULL, 0, MYF(MY_WME | MY_NABP)))
    return 1;
  }

  ev->print_header(&result_cache, print_event_info, FALSE);
  ev->print_base64(&result_cache, print_event_info, FALSE);

  /* Read data from cache and write to result file */
  my_b_copy_to_file(&result_cache, result_file);
  end_io_cache(&result_cache);
  close_cached_file(&result_cache);
  DBUG_RETURN(0);
}

@@ -1016,6 +1013,9 @@ static int dump_log_entries(const char* logname)
{
  int rc;
  PRINT_EVENT_INFO print_event_info;

  if (!print_event_info.init_ok())
    return 1;
  /*
     Set safe delimiter, to dump things
     like CREATE PROCEDURE safely
+7 −0
Original line number Diff line number Diff line
@@ -1479,4 +1479,11 @@ do { doubleget_union _tmp; \
#define dlerror() ""
#endif

/*
  Include standard definitions of operator new and delete.
 */
#ifdef __cplusplus
#include <new>
#endif

#endif /* my_global_h */
+13 −0
Original line number Diff line number Diff line
@@ -67,6 +67,19 @@ create table if not exists t2 select * from t1;
create temporary table tt1 (a int);
create table if not exists t3 like tt1;

# BUG#25091 (A DELETE statement to mysql database is not logged with
# ROW mode format): Checking that some basic operations on tables in
# the mysql database is replicated even when the current database is
# 'mysql'.

--disable_warnings
USE mysql;
INSERT INTO user SET host='localhost', user='@#@', password=password('Just a test');
UPDATE user SET password=password('Another password') WHERE host='localhost' AND user='@#@';
DELETE FROM user WHERE host='localhost' AND user='@#@';
--enable_warnings

use test;
--replace_column 2 # 5 #
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
show binlog events from 102;
+11 −0
Original line number Diff line number Diff line
@@ -413,3 +413,14 @@ select * from t1;
insert into t1 values ('abc');
select * from t1;
drop table t1;

#
# Bug#25815 Data truncated for column TEXT
#
set names utf8;
create table t1 (a text) default character set cp932;
insert into t1 values (_utf8 0xE38182);
show warnings;
select * from t1;
select hex(a) from t1;
drop table t1;
+86 −0
Original line number Diff line number Diff line
# The two bugs below (BUG#25507 and BUG#26116) existed only in
# statement-based binlogging; we test that now they are fixed;
# we also test that mixed and row-based binlogging work too,
# for completeness.

connection master;
--disable_warnings
CREATE SCHEMA IF NOT EXISTS mysqlslap;
USE mysqlslap;
--enable_warnings

select @@global.binlog_format;

#
# BUG#25507 "multi-row insert delayed + auto increment causes
# duplicate key entries on slave";
# happened only in statement-based binlogging.
#

CREATE TABLE t1 (id INT primary key auto_increment, name VARCHAR(64));
let $query = "INSERT DELAYED INTO t1 VALUES (null, 'Dr. No'), (null, 'From Russia With Love'), (null, 'Goldfinger'), (null, 'Thunderball'), (null, 'You Only Live Twice')";
--exec $MYSQL_SLAP --silent --concurrency=5 --iterations=200 --query=$query --delimiter=";"

FLUSH TABLE t1; # another way to be sure INSERT DELAYED has inserted
SELECT COUNT(*) FROM t1;
# when bug existed slave failed below ("duplicate key" error at random INSERT)
sync_slave_with_master;
use mysqlslap;
SELECT COUNT(*) FROM t1;

#
# BUG#26116 "If multi-row INSERT DELAYED has errors,
# statement-based binlogging breaks";
# happened only in statement-based binlogging.
#

connection master;
truncate table t1;
# first scenario: duplicate on first row
insert delayed into t1 values(10, "my name");
if ($binlog_format_statement)
{
  # statement below will be converted to non-delayed INSERT and so
  # will stop at first error, guaranteeing replication.
  --error ER_DUP_ENTRY_WITH_KEY_NAME
  insert delayed into t1 values(10, "is Bond"), (20, "James Bond");
}
if (!$binlog_format_statement)
{
  insert delayed into t1 values(10, "is Bond"), (20, "James Bond");
}
flush table t1; # to wait for INSERT DELAYED to be done
select * from t1;
sync_slave_with_master;
# when bug existed in statement-based binlogging, t1 on slave had
# different content from on master
select * from t1;

# second scenario: duplicate on second row
connection master;
delete from t1 where id!=10;
if ($binlog_format_statement)
{
  # statement below will be converted to non-delayed INSERT and so
  # will be binlogged with its ER_DUP_ENTRY error code, guaranteeing
  # replication (slave will hit the same error code and so be fine).
  --error ER_DUP_ENTRY_WITH_KEY_NAME
  insert delayed into t1 values(20, "is Bond"), (10, "James Bond");
}
if (!$binlog_format_statement)
{
  insert delayed into t1 values(20, "is Bond"), (10, "James Bond");
}
flush table t1; # to wait for INSERT DELAYED to be done
select * from t1;
sync_slave_with_master;
# when bug existed in statement-based binlogging, query was binlogged
# with error_code=0 so slave stopped
select * from t1;

# clean up
connection master;
USE test;
DROP SCHEMA mysqlslap;
sync_slave_with_master;
connection master;
Loading