Commit a312447e authored by unknown's avatar unknown

Bug#7853 (mysqlbinlog does not accept input from stdin)

  The utility 'mysqlbinlog' now accepts input from stdin. It can 
  now be used to read the output from, e.g., 'zcat' or other utility.


client/mysqlbinlog.cc:
  Reading from stdin instead of stdout [sic].
  Not repositioning manually since my_b_read does that correctly.
mysql-test/r/mysqlbinlog.result:
  Adding tests for reading from stdin.
mysql-test/t/mysqlbinlog.test:
  Adding tests for reading from stdin.
parent 6b522b37
......@@ -1121,15 +1121,15 @@ static int dump_local_log_entries(const char* logname)
}
check_header(file, &description_event);
}
else // reading from stdin; TODO: check that it works
else // reading from stdin;
{
if (init_io_cache(file, fileno(result_file), 0, READ_CACHE, (my_off_t) 0,
if (init_io_cache(file, fileno(stdin), 0, READ_CACHE, (my_off_t) 0,
0, MYF(MY_WME | MY_NABP | MY_DONT_CHECK_FILESIZE)))
return 1;
check_header(file, &description_event);
if (start_position)
{
/* skip 'start_position' characters from stdout */
/* skip 'start_position' characters from stdin */
byte buff[IO_SIZE];
my_off_t length,tmp;
for (length= start_position_mot ; length > 0 ; length-=tmp)
......@@ -1142,8 +1142,6 @@ static int dump_local_log_entries(const char* logname)
}
}
}
file->pos_in_file= start_position_mot;
file->seek_not_done=0;
}
if (!description_event || !description_event->is_valid())
......
......@@ -96,4 +96,14 @@ SET TIMESTAMP=1000000000;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
SET @@session.sql_mode=0;
insert into t1 values ("Alas");
--- reading stdin --
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
use test;
SET TIMESTAMP=1065204671;
BEGIN;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
use test;
SET TIMESTAMP=1065204671;
BEGIN;
drop table t1, t2;
......@@ -95,5 +95,15 @@ select "--- --position --" as "";
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQL_TEST_DIR/var/tmp/ --read-from-remote-server --position=118 --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000002
# Bug#7853 (mysqlbinlog does not accept input from stdin)
--disable_query_log
select "--- reading stdin --" as "";
--enable_query_log
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
--exec cat $MYSQL_TEST_DIR/std_data/trunc_binlog.000001 | $MYSQL_BINLOG --short-form -
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
--exec cat $MYSQL_TEST_DIR/std_data/trunc_binlog.000001 | $MYSQL_BINLOG --short-form --position=79 -
# clean up
drop table t1, t2;
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