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.
This commit is contained in:
unknown 2005-02-04 14:29:54 +01:00
parent 98f97f2260
commit 00a71ae83a
3 changed files with 23 additions and 5 deletions

View file

@ -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())

View file

@ -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;

View file

@ -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;