59
static bool statement(Session *session, const char *query, size_t)
61
using namespace drizzle;
63
drizzle::EventList list;
65
if (isEnabled == false)
67
cerr << "Got into statement" <<endl;
69
drizzle::Event *record= list.add_event();
70
record->set_type(Event::DDL);
71
record->set_autocommit(true);
72
record->set_server_id("localhost");
73
record->set_query_id(10);
74
record->set_transaction_id("junk");
75
record->set_schema(session->db);
76
record->set_sql(query);
78
return write_to_disk(log_file, &list);
81
static bool session_init(Session *session)
83
using namespace drizzle;
85
if (isEnabled == false)
88
drizzle::EventList *list= new drizzle::EventList;
89
session->setReplicationData(list);
91
drizzle::Event *record= list->add_event();
93
record->set_type(Event::DDL);
94
record->set_autocommit(true);
95
record->set_server_id("localhost");
96
record->set_query_id(10);
97
record->set_transaction_id("junk");
98
record->set_schema(session->db);
99
record->set_sql("BEGIN");
104
static bool row_insert(Session *session, Table *)
106
using namespace drizzle;
108
if (isEnabled == false)
111
drizzle::EventList *list= (drizzle::EventList *)session->getReplicationData();
112
drizzle::Event *record= list->add_event();
114
record->set_type(Event::INSERT);
115
record->set_autocommit(true);
116
record->set_server_id("localhost");
117
record->set_query_id(10);
118
record->set_transaction_id("junk");
119
record->set_schema(session->db);
120
record->set_sql(session->query);
125
static bool row_update(Session *session, Table *,
126
const unsigned char *,
127
const unsigned char *)
129
using namespace drizzle;
131
if (isEnabled == false)
134
drizzle::EventList *list= (drizzle::EventList *)session->getReplicationData();
135
drizzle::Event *record= list->add_event();
137
record->set_type(Event::UPDATE);
138
record->set_autocommit(true);
139
record->set_server_id("localhost");
140
record->set_query_id(10);
141
record->set_transaction_id("junk");
142
record->set_schema(session->db);
143
record->set_sql(session->query);
148
static bool row_delete(Session *session, Table *)
150
using namespace drizzle;
152
if (isEnabled == false)
155
drizzle::EventList *list= (drizzle::EventList *)session->getReplicationData();
156
drizzle::Event *record= list->add_event();
158
record->set_type(Event::DELETE);
159
record->set_autocommit(true);
160
record->set_server_id("localhost");
161
record->set_query_id(10);
162
record->set_transaction_id("junk");
163
record->set_schema(session->db);
164
record->set_sql(session->query);
169
static bool end_transaction(Session *session, bool autocommit, bool commit)
172
using namespace drizzle;
174
if (isEnabled == false)
177
cerr << "Got into end" <<endl;
179
drizzle::EventList *list= (drizzle::EventList *)session->getReplicationData();
180
drizzle::Event *record= list->add_event();
182
record->set_type(Event::DELETE);
183
record->set_autocommit(true);
184
record->set_server_id("localhost");
185
record->set_query_id(10);
186
record->set_transaction_id("junk");
187
record->set_schema(session->db);
192
record->set_sql("COMMIT");
59
class Protobuf_replicator: public Replicator
63
Protobuf_replicator() : log_file(-1)
69
logname.append(log_directory ? log_directory : "/tmp");
70
logname.append("/replication_log");
72
if ((log_file= open(logname.c_str(), O_TRUNC|O_CREAT|O_SYNC|O_WRONLY, S_IRWXU)) == -1)
74
cerr << "Can not open file: " << logname.c_str() << endl;
81
~Protobuf_replicator()
87
virtual bool statement_hook(Session *session, const char *query, size_t)
89
using namespace drizzle;
91
drizzle::EventList list;
93
if (isEnabled == false)
95
cerr << "Got into statement" <<endl;
97
drizzle::Event *record= list.add_event();
98
record->set_type(Event::DDL);
99
record->set_autocommit(true);
100
record->set_server_id("localhost");
101
record->set_query_id(10);
102
record->set_transaction_id("junk");
103
record->set_schema(session->db);
104
record->set_sql(query);
106
return write_to_disk(log_file, &list);
109
virtual bool session_init_hook(Session *session)
111
using namespace drizzle;
113
if (isEnabled == false)
116
drizzle::EventList *list= new drizzle::EventList;
117
session->setReplicationData(list);
119
drizzle::Event *record= list->add_event();
121
record->set_type(Event::DDL);
122
record->set_autocommit(true);
123
record->set_server_id("localhost");
124
record->set_query_id(10);
125
record->set_transaction_id("junk");
126
record->set_schema(session->db);
127
record->set_sql("BEGIN");
132
virtual bool row_insert_hook(Session *session, Table *)
134
using namespace drizzle;
136
if (isEnabled == false)
139
drizzle::EventList *list= (drizzle::EventList *)session->getReplicationData();
140
drizzle::Event *record= list->add_event();
142
record->set_type(Event::INSERT);
143
record->set_autocommit(true);
144
record->set_server_id("localhost");
145
record->set_query_id(10);
146
record->set_transaction_id("junk");
147
record->set_schema(session->db);
148
record->set_sql(session->query);
153
virtual bool row_update_hook(Session *session, Table *,
154
const unsigned char *,
155
const unsigned char *)
157
using namespace drizzle;
159
if (isEnabled == false)
162
drizzle::EventList *list= (drizzle::EventList *)session->getReplicationData();
163
drizzle::Event *record= list->add_event();
165
record->set_type(Event::UPDATE);
166
record->set_autocommit(true);
167
record->set_server_id("localhost");
168
record->set_query_id(10);
169
record->set_transaction_id("junk");
170
record->set_schema(session->db);
171
record->set_sql(session->query);
176
virtual bool row_delete_hook(Session *session, Table *)
178
using namespace drizzle;
180
if (isEnabled == false)
183
drizzle::EventList *list= (drizzle::EventList *)session->getReplicationData();
184
drizzle::Event *record= list->add_event();
186
record->set_type(Event::DELETE);
187
record->set_autocommit(true);
188
record->set_server_id("localhost");
189
record->set_query_id(10);
190
record->set_transaction_id("junk");
191
record->set_schema(session->db);
192
record->set_sql(session->query);
197
virtual bool end_transaction_hook(Session *session,
198
bool autocommit, bool commit)
201
using namespace drizzle;
203
if (isEnabled == false)
206
cerr << "Got into end" <<endl;
208
drizzle::EventList *list= (drizzle::EventList *)session->getReplicationData();
209
drizzle::Event *record= list->add_event();
211
record->set_type(Event::DELETE);
212
record->set_autocommit(true);
213
record->set_server_id("localhost");
214
record->set_query_id(10);
215
record->set_transaction_id("junk");
216
record->set_schema(session->db);
221
record->set_sql("COMMIT");
223
record->set_sql("AUTOCOMMIT");
194
record->set_sql("AUTOCOMMIT");
226
record->set_sql("ROLLBACK");
228
error= write_to_disk(log_file, list);
230
session->setReplicationData(NULL);
197
record->set_sql("ROLLBACK");
199
error= write_to_disk(log_file, list);
201
session->setReplicationData(NULL);
207
237
static int init(void *p)
209
replicator_t *repl = (replicator_t *)p;
211
repl->statement= statement;
212
repl->session_init= session_init;
213
repl->row_insert= row_insert;
214
repl->row_delete= row_delete;
215
repl->row_update= row_update;
216
repl->end_transaction= end_transaction;
224
logname.append(log_directory ? log_directory : "/tmp");
225
logname.append("/replication_log");
227
if ((log_file= open(logname.c_str(), O_TRUNC|O_CREAT|O_SYNC|O_WRONLY, S_IRWXU)) == -1)
229
cerr << "Can not open file: " << logname.c_str() << endl;
239
Replicator **repl = static_cast<Replicator **>(p);
241
*repl= new Protobuf_replicator();
237
static int deinit(void *)
246
static int deinit(void *p)
248
Protobuf_replicator *repl = static_cast<Protobuf_replicator *>(p);