summaryrefslogtreecommitdiff
path: root/sql/log_event.h
diff options
context:
space:
mode:
authorunknown <serg@serg.mylan>2005-01-16 13:16:23 +0100
committerunknown <serg@serg.mylan>2005-01-16 13:16:23 +0100
commit88bd301d36dd00735f6380d37a93594cc8539fe1 (patch)
tree58ca68b7179b2df96e7b2f14a1da686cc9d2b959 /sql/log_event.h
parent83e58bc0eaa2856e54b08c84417192b07db68a86 (diff)
downloadmariadb-git-88bd301d36dd00735f6380d37a93594cc8539fe1.tar.gz
XA (not completely polished out yet)
include/my_pthread.h: cleanup. don't use gcc extensions innobase/include/trx0sys.ic: Jan's fix for innobase_xa_prepare innobase/read/read0read.c: Jan's fix for innobase_xa_prepare innobase/trx/trx0trx.c: Jan's fix for innobase_xa_prepare mysql-test/include/varchar.inc: test fix mysql-test/r/ctype_ucs.result: new log event - all binlog positions are changed :( mysql-test/r/drop_temp_table.result: new log event - all binlog positions are changed :( mysql-test/r/insert_select.result: new log event - all binlog positions are changed :( mysql-test/r/mix_innodb_myisam_binlog.result: new log event - all binlog positions are changed :( mysql-test/r/myisam.result: test fix mysql-test/r/rpl000015.result: new log event - all binlog positions are changed :( mysql-test/r/rpl_change_master.result: new log event - all binlog positions are changed :( mysql-test/r/rpl_charset.result: new log event - all binlog positions are changed :( mysql-test/r/rpl_error_ignored_table.result: new log event - all binlog positions are changed :( mysql-test/r/rpl_flush_log_loop.result: new log event - all binlog positions are changed :( mysql-test/r/rpl_flush_tables.result: new log event - all binlog positions are changed :( mysql-test/r/rpl_loaddata.result: new log event - all binlog positions are changed :( mysql-test/r/rpl_loaddata_rule_m.result: new log event - all binlog positions are changed :( mysql-test/r/rpl_loaddata_rule_s.result: new log event - all binlog positions are changed :( mysql-test/r/rpl_log.result: new log event - all binlog positions are changed :( mysql-test/r/rpl_log_pos.result: new log event - all binlog positions are changed :( mysql-test/r/rpl_max_relay_size.result: new log event - all binlog positions are changed :( mysql-test/r/rpl_relayrotate.result: new log event - all binlog positions are changed :( mysql-test/r/rpl_replicate_do.result: new log event - all binlog positions are changed :( mysql-test/r/rpl_reset_slave.result: new log event - all binlog positions are changed :( mysql-test/r/rpl_rotate_logs.result: new log event - all binlog positions are changed :( mysql-test/r/rpl_server_id1.result: new log event - all binlog positions are changed :( mysql-test/r/rpl_server_id2.result: new log event - all binlog positions are changed :( mysql-test/r/rpl_temporary.result: new log event - all binlog positions are changed :( mysql-test/r/rpl_timezone.result: new log event - all binlog positions are changed :( mysql-test/r/rpl_until.result: new log event - all binlog positions are changed :( mysql-test/r/rpl_user_variables.result: new log event - all binlog positions are changed :( mysql-test/r/user_var.result: new log event - all binlog positions are changed :( mysql-test/t/ctype_ucs.test: new log event - all binlog positions are changed :( mysql-test/t/mix_innodb_myisam_binlog.test: new log event - all binlog positions are changed :( mysql-test/t/mysqlbinlog.test: new log event - all binlog positions are changed :( mysql-test/t/mysqlbinlog2.test: new log event - all binlog positions are changed :( mysql-test/t/rpl_charset.test: new log event - all binlog positions are changed :( mysql-test/t/rpl_error_ignored_table.test: new log event - all binlog positions are changed :( mysql-test/t/rpl_loaddata_rule_m.test: new log event - all binlog positions are changed :( mysql-test/t/rpl_loaddata_rule_s.test: new log event - all binlog positions are changed :( mysql-test/t/rpl_log.test: new log event - all binlog positions are changed :( mysql-test/t/rpl_log_pos.test: new log event - all binlog positions are changed :( mysql-test/t/rpl_user_variables.test: new log event - all binlog positions are changed :( mysql-test/t/user_var.test: new log event - all binlog positions are changed :( mysys/hash.c: typo fixed sql/ha_berkeley.cc: handlerton framework sql/ha_berkeley.h: handlerton framework sql/ha_innodb.cc: handlerton framework sql/ha_innodb.h: handlerton framework sql/handler.cc: new transaction handling, handlerton framework, two-phase commit, XA support sql/handler.h: new transaction handling, handlerton framework, two-phase commit, XA support sql/lex.h: XA commands sql/log.cc: new transaction handling, handlerton framework, two-phase commit, XA support, tc-logging, TC_LOG_MMAP class sql/log_event.cc: Xid_log_event sql/log_event.h: Xid_log_event, LOG_EVENT_BINLOG_CLOSED_F flag sql/mysql_priv.h: wrapper for query_id++ sql/mysqld.cc: new command-line options --log-tc, --log-tc-size, --tc-heuristic-recover, new status variables Tc_log_page_size, Tc_log_max_pages_used, Tc_log_page_waits. init/stop tc logging sql/set_var.h: warning fixed sql/share/errmsg.txt: XA error messages sql/sp_head.cc: s/query_id++/next_query_id()/ sql/sql_base.cc: typo fixed. new transaction handling. sql/sql_class.cc: cleanup of THD.transaction sql/sql_class.h: TC_LOG classes, new status variables, new savepoint handling, XA support sql/sql_insert.cc: comments sql/sql_lex.cc: s/found_colon/found_semicolon/ sql/sql_lex.h: SQLCOM_XA_xxx, XA related changes in Lex sql/sql_parse.cc: cleanup, XA commands, new savepoint handling sql/sql_repl.cc: two functions moved to log.cc sql/sql_repl.h: two functions moved to log.cc sql/sql_trigger.cc: s/lex.name_and_length/lex.ident/ sql/sql_yacc.yy: XA commands, cleanup
Diffstat (limited to 'sql/log_event.h')
-rw-r--r--sql/log_event.h86
1 files changed, 61 insertions, 25 deletions
diff --git a/sql/log_event.h b/sql/log_event.h
index 390a8c8070d..d69ec935258 100644
--- a/sql/log_event.h
+++ b/sql/log_event.h
@@ -301,6 +301,15 @@ struct sql_ex_info
#define LOG_EVENT_TIME_F 0x1
#define LOG_EVENT_FORCED_ROTATE_F 0x2
#endif
+
+/*
+ This flag only makes sense for Format_description_log_event.
+ It is set not when the event is written, but when a binlog file
+ is closed.
+*/
+
+#define LOG_EVENT_BINLOG_CLOSED_F 0x1
+
/*
If the query depends on the thread (for example: TEMPORARY TABLE).
Currently this is used by mysqlbinlog to know it must print
@@ -310,6 +319,19 @@ struct sql_ex_info
#define LOG_EVENT_THREAD_SPECIFIC_F 0x4
/*
+ Suppress the generation of 'USE' statements before the actual
+ statement. This flag should be set for any events that does not need
+ the current database set to function correctly. Most notable cases
+ are 'CREATE DATABASE' and 'DROP DATABASE'.
+
+ This flags should only be used in exceptional circumstances, since
+ it introduce a significant change in behaviour regarding the
+ replication logic together with the flags --binlog-do-db and
+ --replicated-do-db.
+ */
+#define LOG_EVENT_SUPPRESS_USE_F 0x8
+
+/*
OPTIONS_WRITTEN_TO_BIN_LOG are the bits of thd->options which must be written
to the binlog. OPTIONS_WRITTEN_TO_BINLOG could be written into the
Format_description_log_event, so that if later we don't want to replicate a
@@ -329,19 +351,6 @@ struct sql_ex_info
#define OPTIONS_WRITTEN_TO_BIN_LOG (OPTION_AUTO_IS_NULL | \
OPTION_NO_FOREIGN_KEY_CHECKS | OPTION_RELAXED_UNIQUE_CHECKS)
-/*
- Suppress the generation of 'USE' statements before the actual
- statement. This flag should be set for any events that does not need
- the current database set to function correctly. Most notable cases
- are 'CREATE DATABASE' and 'DROP DATABASE'.
-
- This flags should only be used in exceptional circumstances, since
- it introduce a significant change in behaviour regarding the
- replication logic together with the flags --binlog-do-db and
- --replicated-do-db.
- */
-#define LOG_EVENT_SUPPRESS_USE_F 0x8
-
enum Log_event_type
{
/*
@@ -357,7 +366,7 @@ enum Log_event_type
allowing multibyte TERMINATED BY etc; both types share the same class
(Load_log_event)
*/
- NEW_LOAD_EVENT,
+ NEW_LOAD_EVENT, XID_EVENT,
RAND_EVENT, USER_VAR_EVENT,
FORMAT_DESCRIPTION_EVENT,
ENUM_END_EVENT /* end marker */
@@ -458,10 +467,8 @@ public:
uint32 server_id;
/*
- Some 16 flags. Only one is really used now; look above for
- LOG_EVENT_TIME_F, LOG_EVENT_FORCED_ROTATE_F,
- LOG_EVENT_THREAD_SPECIFIC_F, and LOG_EVENT_SUPPRESS_USE_F for
- notes.
+ Some 16 flags. Look above for LOG_EVENT_TIME_F, LOG_EVENT_FORCED_ROTATE_F,
+ LOG_EVENT_THREAD_SPECIFIC_F, and LOG_EVENT_SUPPRESS_USE_F for notes.
*/
uint16 flags;
@@ -557,11 +564,11 @@ public:
temp_buf = 0;
}
}
- virtual int get_data_size() { return 0;}
/*
Get event length for simple events. For complicated events the length
is calculated during write()
*/
+ virtual int get_data_size() { return 0;}
static Log_event* read_log_event(const char* buf, uint event_len,
const char **error,
const Format_description_log_event
@@ -1026,6 +1033,40 @@ class Rand_log_event: public Log_event
bool is_valid() const { return 1; }
};
+/*****************************************************************************
+
+ Xid Log Event class
+
+ Logs xid of the transaction-to-be-committed in the 2pc protocol.
+ Has no meaning in replication, slaves ignore it.
+
+ ****************************************************************************/
+#ifdef MYSQL_CLIENT
+typedef ulong my_xid;
+#endif
+
+class Xid_log_event: public Log_event
+{
+ public:
+ my_xid xid;
+
+#ifndef MYSQL_CLIENT
+ Xid_log_event(THD* thd_arg, my_xid x): Log_event(thd_arg,0,0), xid(x) {}
+#ifdef HAVE_REPLICATION
+ void pack_info(Protocol* protocol);
+ int exec_event(struct st_relay_log_info* rli);
+#endif /* HAVE_REPLICATION */
+#else
+ void print(FILE* file, bool short_form = 0, LAST_EVENT_INFO* last_event_info= 0);
+#endif
+
+ Xid_log_event(const char* buf, const Format_description_log_event* description_event);
+ ~Xid_log_event() {}
+ Log_event_type get_type_code() { return XID_EVENT;}
+ int get_data_size() { return sizeof(xid); }
+ bool write(IO_CACHE* file);
+ bool is_valid() const { return 1; }
+};
/*****************************************************************************
@@ -1075,8 +1116,6 @@ public:
Stop Log Event class
****************************************************************************/
-#ifdef HAVE_REPLICATION
-
class Stop_log_event: public Log_event
{
public:
@@ -1096,14 +1135,11 @@ public:
bool is_valid() const { return 1; }
};
-#endif /* HAVE_REPLICATION */
-
-
/*****************************************************************************
Rotate Log Event class
- This will be depricated when we move to using sequence ids.
+ This will be deprecated when we move to using sequence ids.
****************************************************************************/