#!/usr/bin/perl BEGIN { die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n" unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH}; unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib"; }; use strict; use warnings FATAL => 'all'; use English qw(-no_match_vars); use Test::More tests => 9; use PerconaTest; use BinaryLogParser; my $p = new BinaryLogParser(); my $oktorun = 1; my $sample = "t/lib/samples/binlogs/"; test_log_parser( parser => $p, file => $sample."binlog001.txt", oktorun => sub { $oktorun = $_[0]; }, result => [ { '@@session.character_set_client' => '8', '@@session.collation_connection' => '8', '@@session.collation_server' => '8', '@@session.foreign_key_checks' => '1', '@@session.sql_auto_is_null' => '1', '@@session.sql_mode' => '0', '@@session.time_zone' => '\'system\'', '@@session.unique_checks' => '1', Query_time => '20664', Thread_id => '104168', arg => 'BEGIN', bytes => 5, cmd => 'Query', end_log_pos => '498006652', error_code => '0', offset => '498006722', pos_in_log => 146, server_id => '21', timestamp => '1197046970', ts => '071207 12:02:50' }, { Query_time => '20675', Thread_id => '104168', arg => 'update test3.tblo as o inner join test3.tbl2 as e on o.animal = e.animal and o.oid = e.oid set e.tblo = o.tblo, e.col3 = o.col3 where e.tblo is null', bytes => 179, cmd => 'Query', db => 'test1', end_log_pos => '278', error_code => '0', offset => '498006789', pos_in_log => 605, server_id => '21', timestamp => '1197046927', ts => '071207 12:02:07' }, { Query_time => '20704', Thread_id => '104168', arg => 'replace into test4.tbl9(tbl5, day, todo, comment) select distinct o.tbl5, date(o.col3), \'misc\', right(\'foo\', 50) from test3.tblo as o inner join test3.tbl2 as e on o.animal = e.animal and o.oid = e.oid where e.tblo is not null and o.col1 > 0 and o.tbl2 is null and o.col3 >= date_sub(current_date, interval 30 day)', bytes => 363, cmd => 'Query', end_log_pos => '836', error_code => '0', offset => '498007067', pos_in_log => 953, server_id => '21', timestamp => '1197046928', ts => '071207 12:02:08' }, { Query_time => '20664', Thread_id => '104168', arg => 'update test3.tblo as o inner join test3.tbl2 as e on o.animal = e.animal and o.oid = e.oid set o.tbl2 = e.tbl2, e.col9 = now() where o.tbl2 is null', bytes => 170, cmd => 'Query', end_log_pos => '1161', error_code => '0', offset => '498007625', pos_in_log => 1469, server_id => '21', timestamp => '1197046970', ts => '071207 12:02:50' }, { Xid => '4584956', arg => 'COMMIT', bytes => 6, cmd => 'Query', end_log_pos => '498007840', offset => '498007950', pos_in_log => 1793, server_id => '21', ts => '071207 12:02:50' }, { Query_time => '20661', Thread_id => '103374', arg => 'insert into test1.tbl6 (day, tbl5, misccol9type, misccol9, metric11, metric12, secs) values (convert_tz(current_timestamp,\'EST5EDT\',\'PST8PDT\'), \'239\', \'foo\', \'bar\', 1, \'1\', \'16.3574378490448\') on duplicate key update metric11 = metric11 + 1, metric12 = metric12 + values(metric12), secs = secs + values(secs)', bytes => 341, cmd => 'Query', end_log_pos => '417', error_code => '0', offset => '498007977', pos_in_log => 1889, server_id => '21', timestamp => '1197046973', ts => '071207 12:02:53' }, { Xid => '4584964', arg => 'COMMIT', bytes => 6, cmd => 'Query', end_log_pos => '498008284', offset => '498008394', pos_in_log => 2383, server_id => '21', ts => '071207 12:02:53' }, { Query_time => '20661', Thread_id => '103374', arg => 'update test2.tbl8 set last2metric1 = last1metric1, last2time = last1time, last1metric1 = last0metric1, last1time = last0time, last0metric1 = ondeckmetric1, last0time = now() where tbl8 in (10800712)', bytes => 228, cmd => 'Query', end_log_pos => '314', error_code => '0', offset => '498008421', pos_in_log => 2479, server_id => '21', timestamp => '1197046973', ts => '071207 12:02:53' }, { Xid => '4584965', arg => 'COMMIT', bytes => 6, cmd => 'Query', end_log_pos => '498008625', offset => '498008735', pos_in_log => 2860, server_id => '21', ts => '071207 12:02:53' }, { arg => 'ROLLBACK /* added by mysqlbinlog */ /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/', bytes => 87, cmd => 'Query', pos_in_log => 3066, ts => undef } ] ); is( $oktorun, 0, 'Sets oktorun' ); test_log_parser( parser => $p, file => $sample."binlog002.txt", result => [ { arg => 'ROLLBACK', bytes => 8, cmd => 'Query', end_log_pos => '98', offset => '4', pos_in_log => 146, server_id => '12345', ts => '090722 7:21:41' }, { '@@session.character_set_client' => '8', '@@session.collation_connection' => '8', '@@session.collation_server' => '8', '@@session.foreign_key_checks' => '1', '@@session.sql_auto_is_null' => '1', '@@session.sql_mode' => '0', '@@session.unique_checks' => '1', Query_time => '0', Thread_id => '3', arg => 'create database d', bytes => 17, cmd => 'Query', end_log_pos => '175', error_code => '0', offset => '98', pos_in_log => 381, server_id => '12345', timestamp => '1248268919', ts => '090722 7:21:59' }, { Query_time => '0', Thread_id => '3', arg => 'create table foo (i int)', bytes => 24, cmd => 'Query', db => 'd', end_log_pos => '259', error_code => '0', offset => '175', pos_in_log => 795, server_id => '12345', timestamp => '1248268936', ts => '090722 7:22:16' }, { Query_time => '0', Thread_id => '3', arg => 'insert foo values (1),(2)', bytes => 25, cmd => 'Query', end_log_pos => '344', error_code => '0', offset => '259', pos_in_log => 973, server_id => '12345', timestamp => '1248268944', ts => '090722 7:22:24' }, { arg => 'ROLLBACK /* added by mysqlbinlog */ /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/', bytes => 87, cmd => 'Query', pos_in_log => 1152, ts => undef } ] ); # ############################################################################# # Issue 1335960 - Cannot parse MySQL 5.6 Binary Logs # because CRC32 checksum was introduced # ############################################################################# test_log_parser( parser => $p, file => $sample."binlog-CRC32.txt", oktorun => sub { $oktorun = $_[0]; }, result => [ { arg => q[BINLOG ' hUu0Uw85MAAAdAAAAHgAAAABAAQANS42LjE3LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAXAAEGggAAAAICAgCAAAACgoKGRkAAWfc INs= '], bytes => 169, cmd => 'Query', end_log_pos => '120', offset => '4', pos_in_log => 192, server_id => '12345', ts => '140702 15:12:21' }, { '@@session.auto_increment_increment' => '1', '@@session.auto_increment_offset' => '1', '@@session.autocommit' => '1', '@@session.character_set_client' => '33', '@@session.collation_connection' => '33', '@@session.collation_database' => 'default', '@@session.collation_server' => '8', '@@session.foreign_key_checks' => '1', '@@session.lc_time_names' => '0', '@@session.pseudo_thread_id' => '14', '@@session.sql_auto_is_null' => '0', '@@session.sql_mode' => '1073741824', '@@session.time_zone' => '\'system\'', '@@session.unique_checks' => '1', Query_time => '0', Thread_id => '14', arg => 'BEGIN', bytes => 5, cmd => 'Query', end_log_pos => '204', error_code => '0', offset => '120', pos_in_log => 574, server_id => '12345', timestamp => '1404326011', ts => '140702 15:33:31' }, { arg => '140702 15:33:31 server id 12345 end_log_pos 437 CRC32 0x7f23afd0 Query thread_id=14 exec_time=0 error_code=0 use `sakila` SET TIMESTAMP=1404326011/*!*/ insert into film values (NULL,"Contact","Extraterrestrials contact earth", 2005, 1,1,24,5.55,120,25,\'PG\',\'Trailers\',now()) /*!*/' , bytes => 282, cmd => 'Query', pos_in_log => 1390, ts => undef }, { Xid => '285', arg => 'T', bytes => 1, cmd => 'Query', end_log_pos => '468', offset => '437', pos_in_log => 1682, server_id => '12345', ts => '140702 15:33:31' }, { arg => 'ROLLBACK /* added by mysqlbinlog */ /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/ /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/', bytes => 132, cmd => 'Query', pos_in_log => 1794, ts => undef } ] ); # ############################################################################# # Issue 606: Unknown event type Rotate at ./mk-slave-prefetch # ############################################################################# test_log_parser( parser => $p, file => $sample."binlog006.txt", result => [], ); # ############################################################################# # Done. # ############################################################################# exit;