~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/message/transaction_writer.cc

  • Committer: Brian Aker
  • Date: 2009-11-12 16:57:30 UTC
  • mfrom: (1143.2.37 transaction-log)
  • Revision ID: brian@gaz-20091112165730-drc1242xr96jampa
Jay's replication patches

Show diffs side-by-side

added added

removed removed

Lines of Context:
99
99
  statement->set_end_timestamp(getNanoTimestamp());
100
100
}
101
101
 
 
102
static void doCreateTable3(message::Transaction &transaction)
 
103
{
 
104
  message::Statement *statement= transaction.add_statement();
 
105
 
 
106
  statement->set_type(message::Statement::RAW_SQL);
 
107
  statement->set_sql("CREATE TABLE t3 (a INTEGER NOT NULL, b BLOB NOT NULL, PRIMARY KEY a) ENGINE=InnoDB");
 
108
  statement->set_start_timestamp(getNanoTimestamp());
 
109
  statement->set_end_timestamp(getNanoTimestamp());
 
110
}
 
111
 
102
112
static void doSimpleInsert(message::Transaction &transaction)
103
113
{
104
114
  message::Statement *statement= transaction.add_statement();
169
179
  statement->set_end_timestamp(getNanoTimestamp());
170
180
}
171
181
 
 
182
static void doBlobInsert(message::Transaction &transaction)
 
183
{
 
184
  message::Statement *statement= transaction.add_statement();
 
185
 
 
186
  /* Do generic Statement setup */
 
187
  statement->set_type(message::Statement::INSERT);
 
188
  statement->set_sql("INSERT INTO t3 (a, b) VALUES (1, 'test\0me')", 43); /* 43 == length including \0 */
 
189
  statement->set_start_timestamp(getNanoTimestamp());
 
190
 
 
191
  /* Do INSERT-specific header and setup */
 
192
  message::InsertHeader *header= statement->mutable_insert_header();
 
193
 
 
194
  /* Add table and field metadata for the statement */
 
195
  message::TableMetadata *t_meta= header->mutable_table_metadata();
 
196
  t_meta->set_schema_name("test");
 
197
  t_meta->set_table_name("t3");
 
198
 
 
199
  message::FieldMetadata *f_meta= header->add_field_metadata();
 
200
  f_meta->set_name("a");
 
201
  f_meta->set_type(message::Table::Field::INTEGER);
 
202
 
 
203
  f_meta= header->add_field_metadata();
 
204
  f_meta->set_name("b");
 
205
  f_meta->set_type(message::Table::Field::BLOB);
 
206
 
 
207
  /* Add new values... */
 
208
  message::InsertData *data= statement->mutable_insert_data();
 
209
  data->set_segment_id(1);
 
210
  data->set_end_segment(true);
 
211
 
 
212
  message::InsertRecord *record1= data->add_record();
 
213
 
 
214
  record1->add_insert_value("1");
 
215
  record1->add_insert_value("test\0me", 7); /* 7 == length including \0 */
 
216
 
 
217
  statement->set_end_timestamp(getNanoTimestamp());
 
218
}
 
219
 
172
220
static void doSimpleDelete(message::Transaction &transaction)
173
221
{
174
222
  message::Statement *statement= transaction.add_statement();
354
402
  writeTransaction(coded_output, transaction);
355
403
  transaction.Clear();
356
404
 
 
405
  /* Write an INSERT which writes BLOB data */
 
406
  initTransactionContext(transaction);
 
407
  doCreateTable3(transaction);
 
408
  doBlobInsert(transaction);
 
409
  writeTransaction(coded_output, transaction);
 
410
  transaction.Clear();
 
411
 
357
412
  delete coded_output;
358
413
  delete raw_output;
359
414