Commit 786b5e95 authored by unknown's avatar unknown
Browse files

Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-5.0

into  mysql.com:/usr/home/ram/work/5.0.b10303

parents 39af58db 215602cb
Loading
Loading
Loading
Loading
+28 −16
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ static const char *load_default_groups[]= { "mysqlbinlog","client",0 };
void sql_print_error(const char *format, ...);

static bool one_database=0, to_last_remote_log= 0, disable_log_bin= 0;
static bool opt_hexdump= 0;
static const char* database= 0;
static my_bool force_opt= 0, short_form= 0, remote_opt= 0;
static ulonglong offset = 0;
@@ -489,12 +490,13 @@ static bool check_database(const char *log_dbname)



int process_event(LAST_EVENT_INFO *last_event_info, Log_event *ev,
int process_event(PRINT_EVENT_INFO *print_event_info, Log_event *ev,
                  my_off_t pos)
{
  char ll_buff[21];
  Log_event_type ev_type= ev->get_type_code();
  DBUG_ENTER("process_event");
  print_event_info->short_form= short_form;

  /*
    Format events are not concerned by --offset and such, we always need to
@@ -523,11 +525,16 @@ int process_event(LAST_EVENT_INFO *last_event_info, Log_event *ev,
    if (!short_form)
      fprintf(result_file, "# at %s\n",llstr(pos,ll_buff));

    if (!opt_hexdump)
      print_event_info->hexdump_from= 0; /* Disabled */
    else
      print_event_info->hexdump_from= pos;

    switch (ev_type) {
    case QUERY_EVENT:
      if (check_database(((Query_log_event*)ev)->db))
        goto end;
      ev->print(result_file, short_form, last_event_info);
      ev->print(result_file, print_event_info);
      break;
    case CREATE_FILE_EVENT:
    {
@@ -547,7 +554,8 @@ int process_event(LAST_EVENT_INFO *last_event_info, Log_event *ev,
	filename and use LOCAL), prepared in the 'case EXEC_LOAD_EVENT' 
	below.
      */
      ce->print(result_file, short_form, last_event_info, TRUE);
      ce->print(result_file, print_event_info, TRUE);

      // If this binlog is not 3.23 ; why this test??
      if (description_event->binlog_version >= 3)
      {
@@ -558,13 +566,13 @@ int process_event(LAST_EVENT_INFO *last_event_info, Log_event *ev,
      break;
    }
    case APPEND_BLOCK_EVENT:
      ev->print(result_file, short_form, last_event_info);
      ev->print(result_file, print_event_info);
      if (load_processor.process((Append_block_log_event*) ev))
	break;					// Error
      break;
    case EXEC_LOAD_EVENT:
    {
      ev->print(result_file, short_form, last_event_info);
      ev->print(result_file, print_event_info);
      Execute_load_log_event *exv= (Execute_load_log_event*)ev;
      Create_file_log_event *ce= load_processor.grab_event(exv->file_id);
      /*
@@ -574,7 +582,7 @@ int process_event(LAST_EVENT_INFO *last_event_info, Log_event *ev,
      */
      if (ce)
      {
	ce->print(result_file, short_form, last_event_info, TRUE);
	ce->print(result_file, print_event_info, TRUE);
	my_free((char*)ce->fname,MYF(MY_WME));
	delete ce;
      }
@@ -586,7 +594,8 @@ Create_file event for file_id: %u\n",exv->file_id);
    case FORMAT_DESCRIPTION_EVENT:
      delete description_event;
      description_event= (Format_description_log_event*) ev;
      ev->print(result_file, short_form, last_event_info);
      print_event_info->common_header_len= description_event->common_header_len;
      ev->print(result_file, print_event_info);
      /*
        We don't want this event to be deleted now, so let's hide it (I
        (Guilhem) should later see if this triggers a non-serious Valgrind
@@ -596,7 +605,7 @@ Create_file event for file_id: %u\n",exv->file_id);
      ev= 0;
      break;
    case BEGIN_LOAD_QUERY_EVENT:
      ev->print(result_file, short_form, last_event_info);
      ev->print(result_file, print_event_info);
      load_processor.process((Begin_load_query_log_event*) ev);
      break;
    case EXECUTE_LOAD_QUERY_EVENT:
@@ -613,7 +622,7 @@ Create_file event for file_id: %u\n",exv->file_id);

      if (fname)
      {
	exlq->print(result_file, short_form, last_event_info, fname);
	exlq->print(result_file, print_event_info, fname);
	my_free(fname, MYF(MY_WME));
      }
      else
@@ -622,7 +631,7 @@ Begin_load_query event for file_id: %u\n", exlq->file_id);
      break;
    }
    default:
      ev->print(result_file, short_form, last_event_info);
      ev->print(result_file, print_event_info);
    }
  }

@@ -669,6 +678,9 @@ static struct my_option my_long_options[] =
   0, 0},
  {"help", '?', "Display this help and exit.",
   0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
  {"hexdump", 'H', "Augment output with hexadecimal and ASCII event dump.",
   (gptr*) &opt_hexdump, (gptr*) &opt_hexdump, 0, GET_BOOL, NO_ARG,
   0, 0, 0, 0, 0, 0},
  {"host", 'h', "Get the binlog from server.", (gptr*) &host, (gptr*) &host,
   0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
  {"offset", 'o', "Skip the first N entries.", (gptr*) &offset, (gptr*) &offset,
@@ -1002,7 +1014,7 @@ static int dump_remote_log_entries(const char* logname)

{
  char buf[128];
  LAST_EVENT_INFO last_event_info;
  PRINT_EVENT_INFO print_event_info;
  ulong len;
  uint logname_len;
  NET* net;
@@ -1125,7 +1137,7 @@ could be out of memory");
          len= 1; // fake Rotate, so don't increment old_off
        }
      }
      if ((error= process_event(&last_event_info,ev,old_off)))
      if ((error= process_event(&print_event_info, ev, old_off)))
      {
	error= ((error < 0) ? 0 : 1);
        goto err;
@@ -1144,7 +1156,7 @@ could be out of memory");
        goto err;
      }
      
      if ((error= process_event(&last_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);
@@ -1273,7 +1285,7 @@ static int dump_local_log_entries(const char* logname)
{
  File fd = -1;
  IO_CACHE cache,*file= &cache;
  LAST_EVENT_INFO last_event_info;
  PRINT_EVENT_INFO print_event_info;
  byte tmp_buff[BIN_LOG_HEADER_SIZE];
  int error= 0;

@@ -1345,7 +1357,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(&last_event_info,ev,old_off)))
    if ((error= process_event(&print_event_info, ev, old_off)))
    {
      if (error < 0)
        error= 0;
+32 −9
Original line number Diff line number Diff line
@@ -14,15 +14,38 @@
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */

#ifndef __BASE64_HPP_INCLUDED__
#define __BASE64_HPP_INCLUDED__
#ifndef __BASE64_H_INCLUDED__
#define __BASE64_H_INCLUDED__

#include <UtilBuffer.hpp>
#include <BaseString.hpp>
#ifdef __cplusplus
extern "C" {
#endif

int base64_encode(const UtilBuffer &src, BaseString &dst);
int base64_encode(const void * s, size_t src_len, BaseString &dst);
int base64_decode(const BaseString &src, UtilBuffer &dst);
int base64_decode(const char * s, size_t len, UtilBuffer &dst);

#endif /* !__BASE64_HPP_INCLUDED__ */
#include <mysys_priv.h>

/*
  Calculate how much memory needed for dst of base64_encode()
*/
int base64_needed_encoded_length(int length_of_data);

/*
  Calculate how much memory needed for dst of base64_decode()
*/
int base64_needed_decoded_length(int length_of_encoded_data);

/*
  Encode data as a base64 string
*/
int base64_encode(const void *src, size_t src_len, char *dst);

/*
  Decode a base64 string into data
*/
int base64_decode(const char *src, size_t src_len, void *dst);


#ifdef __cplusplus
}
#endif
#endif /* !__BASE64_H_INCLUDED__ */
+12 −0
Original line number Diff line number Diff line
@@ -3181,3 +3181,15 @@ from t1 inner join (t2 right join t3 on t2.id = t3.b_id) on t1.id = t3.a_id;
count(*)
6
drop table t1,t2,t3;
create table t1 (a int);
create table t2 (b int);
create table t3 (c int);
select * from t1 join t2 join t3 on (t1.a=t3.c);
a	b	c
select * from t1 join t2 left join t3 on (t1.a=t3.c);
a	b	c
select * from t1 join t2 right join t3 on (t1.a=t3.c);
a	b	c
select * from t1 join t2 straight_join t3 on (t1.a=t3.c);
a	b	c
drop table t1, t2 ,t3;
+7 −7
Original line number Diff line number Diff line
@@ -512,6 +512,13 @@ t1 CREATE TABLE `t1` (
  KEY `c2` USING BTREE (`c2`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
flush tables;
SHOW TABLE STATUS like 't1';
Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
t1	NULL	NULL	NULL	NULL	#	#	#	#	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Incorrect information in file: './test/t1.frm'
show create table t1;
ERROR HY000: Incorrect information in file: './test/t1.frm'
drop table t1;
CREATE TABLE txt1(a int);
CREATE TABLE tyt2(a int);
CREATE TABLE urkunde(a int);
@@ -557,10 +564,3 @@ DROP TABLE tyt2;
DROP TABLE urkunde;
SHOW TABLES FROM non_existing_database;
ERROR 42000: Unknown database 'non_existing_database'
flush tables;
SHOW TABLE STATUS like 't1';
Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
t1	NULL	NULL	NULL	NULL	#	#	#	#	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Incorrect information in file: './test/t1.frm'
show create table t1;
ERROR HY000: Incorrect information in file: './test/t1.frm'
drop table t1;
+43 −0
Original line number Diff line number Diff line
@@ -3532,4 +3532,47 @@ select @a|
Local
drop function bug13941|
drop procedure bug13941|
DROP PROCEDURE IF EXISTS bug13095;
DROP TABLE IF EXISTS bug13095_t1;
DROP VIEW IF EXISTS bug13095_v1;
CREATE PROCEDURE bug13095(tbl_name varchar(32))
BEGIN
SET @str =
CONCAT("CREATE TABLE ", tbl_name, "(stuff char(15))");
SELECT @str;
PREPARE stmt FROM @str;
EXECUTE stmt;
SET @str =
CONCAT("INSERT INTO ", tbl_name, " VALUES('row1'),('row2'),('row3')" );
SELECT @str;
PREPARE stmt FROM @str;
EXECUTE stmt;
SET @str =
CONCAT("CREATE VIEW bug13095_v1(c1) AS SELECT stuff FROM ", tbl_name);
SELECT @str;
PREPARE stmt FROM @str;
EXECUTE stmt;
SELECT * FROM bug13095_v1;
SET @str =
"DROP VIEW bug13095_v1";
SELECT @str;
PREPARE stmt FROM @str;
EXECUTE stmt;
END|
CALL bug13095('bug13095_t1');
@str
CREATE TABLE bug13095_t1(stuff char(15))
@str
INSERT INTO bug13095_t1 VALUES('row1'),('row2'),('row3')
@str
CREATE VIEW bug13095_v1(c1) AS SELECT stuff FROM bug13095_t1
c1
row1
row2
row3
@str
DROP VIEW bug13095_v1
DROP PROCEDURE IF EXISTS bug13095;
DROP VIEW IF EXISTS bug13095_v1;
DROP TABLE IF EXISTS bug13095_t1;
drop table t1,t2;
Loading