Commit df2af6cd authored by unknown's avatar unknown
Browse files

Merge quant.(none):/ext/mysql/bkroot/mysql-5.0-rpl

into  quant.(none):/ext/mysql/bk/mysql-5.0-bug24507


client/mysqlbinlog.cc:
  Auto merged
client/mysqldump.c:
  Auto merged
mysql-test/t/disabled.def:
  Auto merged
sql/item_timefunc.cc:
  Auto merged
sql/log_event.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/sql_parse.cc:
  Auto merged
parents 9f37ea45 b93baf48
Loading
Loading
Loading
Loading
+27 −11
Original line number Diff line number Diff line
@@ -94,8 +94,10 @@ static bool stop_passed= 0;
*/
Format_description_log_event* description_event; 

static int dump_local_log_entries(const char* logname);
static int dump_remote_log_entries(const char* logname);
static int dump_local_log_entries(PRINT_EVENT_INFO *print_event_info,
                                  const char* logname);
static int dump_remote_log_entries(PRINT_EVENT_INFO *print_event_info,
                                   const char* logname);
static int dump_log_entries(const char* logname);
static int dump_remote_file(NET* net, const char* fname);
static void die(const char* fmt, ...);
@@ -950,8 +952,22 @@ static MYSQL* safe_connect()

static int dump_log_entries(const char* logname)
{
  return (remote_opt ? dump_remote_log_entries(logname) :
          dump_local_log_entries(logname));
  int rc;
  PRINT_EVENT_INFO print_event_info;
  /*
     Set safe delimiter, to dump things
     like CREATE PROCEDURE safely
  */
  fprintf(result_file, "DELIMITER /*!*/;\n");
  strcpy(print_event_info.delimiter, "/*!*/;");

  rc= (remote_opt ? dump_remote_log_entries(&print_event_info, logname) :
       dump_local_log_entries(&print_event_info, logname));

  /* Set delimiter back to semicolon */
  fprintf(result_file, "DELIMITER ;\n");
  strcpy(print_event_info.delimiter, ";");
  return rc;
}


@@ -1016,11 +1032,11 @@ static int check_master_version(MYSQL* mysql,
}


static int dump_remote_log_entries(const char* logname)
static int dump_remote_log_entries(PRINT_EVENT_INFO *print_event_info,
                                   const char* logname)

{
  char buf[128];
  PRINT_EVENT_INFO print_event_info;
  ulong len;
  uint logname_len;
  NET* net;
@@ -1143,7 +1159,7 @@ could be out of memory");
          len= 1; // fake Rotate, so don't increment old_off
        }
      }
      if ((error= process_event(&print_event_info, ev, old_off)))
      if ((error= process_event(print_event_info, ev, old_off)))
      {
	error= ((error < 0) ? 0 : 1);
        goto err;
@@ -1162,7 +1178,7 @@ could be out of memory");
        goto err;
      }
      
      if ((error= process_event(&print_event_info, ev, old_off)))
      if ((error= process_event(print_event_info, ev, old_off)))
      {
 	my_close(file,MYF(MY_WME));
	error= ((error < 0) ? 0 : 1);
@@ -1288,11 +1304,11 @@ at offset %lu ; this could be a log format error or read error",
}


static int dump_local_log_entries(const char* logname)
static int dump_local_log_entries(PRINT_EVENT_INFO *print_event_info,
                                  const char* logname)
{
  File fd = -1;
  IO_CACHE cache,*file= &cache;
  PRINT_EVENT_INFO print_event_info;
  byte tmp_buff[BIN_LOG_HEADER_SIZE];
  int error= 0;

@@ -1364,7 +1380,7 @@ static int dump_local_log_entries(const char* logname)
      // file->error == 0 means EOF, that's OK, we break in this case
      break;
    }
    if ((error= process_event(&print_event_info, ev, old_off)))
    if ((error= process_event(print_event_info, ev, old_off)))
    {
      if (error < 0)
        error= 0;
+3 −3
Original line number Diff line number Diff line
@@ -41,6 +41,6 @@ IN ind DECIMAL(10,2))
BEGIN
INSERT INTO t4 VALUES (ins1, ins2, ind);
END
master-bin.000001	801	Query	1	1006	use `test`; INSERT INTO t4 VALUES ( NAME_CONST('ins1',_latin1'Foo\'s a Bar'),  NAME_CONST('ins2',_cp932 0xED40ED41ED42),  NAME_CONST('ind',47.93))
master-bin.000001	1006	Query	1	1092	use `test`; DROP PROCEDURE bug18293
master-bin.000001	1092	Query	1	1168	use `test`; DROP TABLE t4
master-bin.000001	801	Query	1	1017	use `test`; INSERT INTO t4 VALUES ( NAME_CONST('ins1',_latin1 0x466F6F2773206120426172),  NAME_CONST('ins2',_cp932 0xED40ED41ED42),  NAME_CONST('ind',47.93))
master-bin.000001	1017	Query	1	1103	use `test`; DROP PROCEDURE bug18293
master-bin.000001	1103	Query	1	1179	use `test`; DROP TABLE t4
+11 −9
Original line number Diff line number Diff line
@@ -9,15 +9,17 @@ master-bin.000001 98 User var 1 138 @`v`=_ucs2 0x006100620063 COLLATE ucs2_gener
master-bin.000001	138	Query	1	227	use `test`; insert into t2 values (@v)
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
ROLLBACK;
SET @`v`:=_ucs2 0x006100620063 COLLATE `ucs2_general_ci`;
use test;
SET TIMESTAMP=10000;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
SET @@session.sql_mode=0;
/*!\C latin1 */;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
insert into t2 values (@v);
DELIMITER /*!*/;
ROLLBACK/*!*/;
SET @`v`:=_ucs2 0x006100620063 COLLATE `ucs2_general_ci`/*!*/;
use test/*!*/;
SET TIMESTAMP=10000/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
insert into t2 values (@v)/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
+23 −1
Original line number Diff line number Diff line
@@ -124,12 +124,34 @@ create table t1 select date_format("2004-01-19 10:10:10", "%Y-%m-%d");
show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `date_format("2004-01-19 10:10:10", "%Y-%m-%d")` varbinary(10) default NULL
  `date_format("2004-01-19 10:10:10", "%Y-%m-%d")` varchar(10) character set utf8 default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
select * from t1;
date_format("2004-01-19 10:10:10", "%Y-%m-%d")
2004-01-19
drop table t1;
set names utf8;
set LC_TIME_NAMES='fr_FR';
create table t1 (s1 char(20) character set latin1);
insert into t1 values (date_format('2004-02-02','%M'));
select hex(s1) from t1;
hex(s1)
66E97672696572
drop table t1;
create table t1 (s1 char(20) character set koi8r);
set LC_TIME_NAMES='ru_RU';
insert into t1 values (date_format('2004-02-02','%M'));
insert into t1 values (date_format('2004-02-02','%b'));
insert into t1 values (date_format('2004-02-02','%W'));
insert into t1 values (date_format('2004-02-02','%a'));
select hex(s1), s1 from t1;
hex(s1)	s1
E6C5D7D2C1CCD1	Февраля
E6C5D7	Фев
F0CFCEC5C4C5CCD8CEC9CB	Понедельник
F0CEC4	Пнд
drop table t1;
set LC_TIME_NAMES='en_US';
set names koi8r;
create table t1 (s1 char(1) character set utf8);
insert into t1 values (_koi8r'');
+2 −2
Original line number Diff line number Diff line
@@ -275,8 +275,8 @@ is not null;
is not null
1
select
@a like "%#%error_code=0%ROLLBACK;%ROLLBACK /* added by mysqlbinlog */;%",
@a like "%#%error_code=0%ROLLBACK/*!*/;%ROLLBACK /* added by mysqlbinlog */;%",
@a not like "%#%error_code=%error_code=%";
@a like "%#%error_code=0%ROLLBACK;%ROLLBACK /* added by mysqlbinlog */;%"	@a not like "%#%error_code=%error_code=%"
@a like "%#%error_code=0%ROLLBACK/*!*/;%ROLLBACK /* added by mysqlbinlog */;%"	@a not like "%#%error_code=%error_code=%"
1	1
drop table t1, t2;
Loading