diff options
author | unknown <monty@mashka.mysql.fi> | 2002-09-11 06:40:08 +0300 |
---|---|---|
committer | unknown <monty@mashka.mysql.fi> | 2002-09-11 06:40:08 +0300 |
commit | 8f232cb75f0dce72142e2b584f2cdac4a1de517d (patch) | |
tree | 6ef035adfec09ec1e444dd169712750e2de1efeb /client/mysqlbinlog.cc | |
parent | d99cab040c90913cc5186702166d3b91f58ef42a (diff) | |
download | mariadb-git-8f232cb75f0dce72142e2b584f2cdac4a1de517d.tar.gz |
Portability fixes.
Improve mysql-test to be more robust.
Fix that GRANT doesn't delete SSL options
Change innobase_flush_log_at_trx_commit to uint.
Don't rotate logs if we read a rotate log entry from the master.
Docs/manual.texi:
Changelog
client/mysqlbinlog.cc:
Handle empty binlogfiles gracefully
client/mysqltest.c:
Do a sleep after 'sync_with_master'
Cleaned up sleep() handling.
Free all memory on exit
configure.in:
Fix for Mac OS 10.2
include/my_sys.h:
Added my_strdup_with_length()
innobase/btr/btr0cur.c:
Fixed wrong printf()
libmysql/libmysql.c:
Added DBUG_PRINT statements.
Assume that mysql_...send() functions has correct query length.
mysql-test/mysql-test-run.sh:
Properly remove log files before starting new tests.
mysql-test/r/grant.result:
Update for new test results
mysql-test/r/innodb.result:
Update for new test results
mysql-test/r/myisam.result:
Update for new test results
mysql-test/r/rpl_log.result:
Update for new test results
mysql-test/r/rpl_rotate_logs.result:
Update for new test results
mysql-test/r/variables.result:
Update for new test results
mysql-test/t/grant.test:
Test that GRANT doesn't delete SSL options
mysql-test/t/myisam.test:
Test long key usage
mysql-test/t/rpl_log.test:
Disable 'show new master'
mysql-test/t/rpl_mystery22.test:
Longer sleep for more safety.
mysql-test/t/rpl_rotate_logs.test:
More comments
mysys/my_malloc.c:
Added my_strdup_with_length()
mysys/safemalloc.c:
Added my_strdup_with_length()
mysys/thr_alarm.c:
Fix of alarms for windows.
sql/ha_innodb.cc:
Change innobase_flush_log_at_trx_commit to uint
mysql-test/r/rpl_redirect.result:
Updated test results
mysql-test/t/rpl_redirect.test:
Added more tests to improve code coverage.
sql/ha_innodb.h:
Change innobase_flush_log_at_trx_commit to uint
sql/item_func.cc:
Return GLOBAL and SESSION as part of column names
sql/log.cc:
Only write STOP events when server goes down.
sql/log_event.cc:
Don't rotate logs if we read a rotate log entry from the master.
sql/log_event.h:
Change ident_len to uint (more efficient)
sql/mysqld.cc:
Change innobase_flush_log_at_trx_commit to uint
sql/net_serv.cc:
More debug output
sql/repl_failsafe.cc:
More DEBUG
Search until we find next position in binary log (and not only =)
sql/slave.cc:
More DBUG & comments
Don't rotate the binary log on master flush logs
sql/slave.h:
indentation change
sql/sql_acl.cc:
Test that GRANT doesn't delete SSL options
sql/sql_parse.cc:
Disable show_new_master.
sql/sql_repl.cc:
Chamger show_binlog_events() to use my_error()
sql/sql_table.cc:
Fixed check for too long keys in MyISAM
sql/sql_udf.cc:
Fix udf handling
Diffstat (limited to 'client/mysqlbinlog.cc')
-rw-r--r-- | client/mysqlbinlog.cc | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc index 4109fbd76d4..58b49a748ec 100644 --- a/client/mysqlbinlog.cc +++ b/client/mysqlbinlog.cc @@ -21,7 +21,7 @@ #include "log_event.h" #define BIN_LOG_HEADER_SIZE 4 -#define PROBE_HEADER_LEN (BIN_LOG_HEADER_SIZE+EVENT_LEN_OFFSET+4) +#define PROBE_HEADER_LEN (EVENT_LEN_OFFSET+4) #define CLIENT_CAPABILITIES (CLIENT_LONG_PASSWORD | CLIENT_LONG_FLAG | CLIENT_LOCAL_FILES) @@ -378,31 +378,40 @@ static void dump_remote_log_entries(const char* logname) static int check_header(IO_CACHE* file) { + byte header[BIN_LOG_HEADER_SIZE]; byte buf[PROBE_HEADER_LEN]; int old_format=0; my_off_t pos = my_b_tell(file); my_b_seek(file, (my_off_t)0); - if (my_b_read(file, buf, sizeof(buf))) - die("Failed reading header"); - if (buf[EVENT_TYPE_OFFSET+4] == START_EVENT) + if (my_b_read(file, header, sizeof(header))) + die("Failed reading header; Probably an empty file"); + if (memcmp(header, BINLOG_MAGIC, sizeof(header))) + die("File is not a binary log file"); + if (!my_b_read(file, buf, sizeof(buf))) { - uint event_len; - event_len = uint4korr(buf + EVENT_LEN_OFFSET + 4); - old_format = (event_len < LOG_EVENT_HEADER_LEN + START_HEADER_LEN); + if (buf[4] == START_EVENT) + { + uint event_len; + event_len = uint4korr(buf + 4); + old_format = (event_len < LOG_EVENT_HEADER_LEN + START_HEADER_LEN); + } } my_b_seek(file, pos); return old_format; } + static void dump_local_log_entries(const char* logname) { File fd = -1; IO_CACHE cache,*file= &cache; ulonglong rec_count = 0; - char last_db[FN_REFLEN+1] = ""; + char last_db[FN_REFLEN+1], tmp_buff[BIN_LOG_HEADER_SIZE]; bool old_format = 0; + last_db[0]=0; + if (logname && logname[0] != '-') { if ((fd = my_open(logname, O_RDONLY | O_BINARY, MYF(MY_WME))) < 0) @@ -435,14 +444,7 @@ static void dump_local_log_entries(const char* logname) } if (!position) - { - char magic[BIN_LOG_HEADER_SIZE]; - if (my_b_read(file, (byte*) magic, sizeof(magic))) - die("I/O error reading binlog magic number"); - if (memcmp(magic, BINLOG_MAGIC, 4)) - die("Bad magic number; The file is probably not a MySQL binary log"); - } - + my_b_read(file, tmp_buff, BIN_LOG_HEADER_SIZE); // Skip header for (;;) { char llbuff[21]; |