6
#include "replication_event.pb.h"
9
static uint64_t query_id= 0;
10
char transaction_id[37];
13
Example script for reader a Drizzle master replication list.
16
void write_ddl(drizzle::Event *record, const char *sql)
20
uuid_generate_time(uu);
21
uuid_unparse(uu, transaction_id);
23
using namespace drizzle;
24
record->set_type(Event::DDL);
25
record->set_autocommit(true);
26
record->set_server_id("localhost");
27
record->set_query_id(query_id++);
28
record->set_transaction_id(transaction_id);
29
record->set_schema("test");
33
void write_insert(drizzle::Event *record, const char *trx)
35
using namespace drizzle;
38
record->set_type(Event::INSERT);
39
record->set_autocommit(true);
40
record->set_server_id("localhost");
41
record->set_query_id(query_id++);
42
record->set_transaction_id(trx);
43
record->set_schema("test");
44
record->set_table("t1");
45
record->set_sql("INSERT INTO t1 (a) VALUES (1) (2)");
48
record->add_field_names("a");
50
/* Add values (first row) */
51
value= record->add_values();
52
value->add_value("1");
54
/* Add values (second row) */
55
value= record->add_values();
56
value->add_value("2");
59
void write_delete(drizzle::Event *record, const char *trx)
61
using namespace drizzle;
65
record->set_type(Event::DELETE);
66
record->set_autocommit(true);
67
record->set_server_id("localhost");
68
record->set_query_id(query_id++);
69
record->set_transaction_id(trx);
70
record->set_schema("test");
71
record->set_table("t1");
72
record->set_sql("DELETE FROM t1 WHERE a IN (1, 2)");
75
record->set_primary_key("a");
77
/* Add values for IN() */
78
value= record->add_values();
79
value->add_value("1");
80
value->add_value("2");
83
void write_update(drizzle::Event *record, const char *trx)
85
using namespace drizzle;
88
record->set_type(Event::UPDATE);
89
record->set_autocommit(true);
90
record->set_server_id("localhost");
91
record->set_query_id(query_id++);
92
record->set_transaction_id(trx);
93
record->set_schema("test");
94
record->set_table("t1");
95
record->set_sql("UPDATE t1 SET a=5 WHERE a = 1 ");
96
record->set_primary_key("a");
99
record->add_field_names("a");
101
/* Add values (first row) */
102
value= record->add_values();
103
value->add_value("1"); // The first value is always the primary key comparison value
104
value->add_value("5");
106
/* Add values (second row) */
107
value= record->add_values();
108
value->add_value("2");
109
value->add_value("6");
112
int main(int argc, char* argv[])
114
GOOGLE_PROTOBUF_VERIFY_VERSION;
117
cerr << "Usage: " << argv[0] << " REPLICATION_EVENT_LOG " << endl;
121
drizzle::EventList list;
123
write_ddl(list.add_event(), "CREATE TABLE A (a int) ENGINE=innodb");
124
write_insert(list.add_event(), transaction_id);
125
write_delete(list.add_event(), transaction_id);
126
write_update(list.add_event(), transaction_id);
128
fstream output(argv[1], ios::out | ios::trunc | ios::binary);
129
if (!list.SerializeToOstream(&output))
131
cerr << "Failed to write replication event log." << endl;