~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/message/table_writer.cc

MergeĀ fromĀ trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
#include <iostream>
23
23
#include <fstream>
24
24
#include <string>
 
25
#include <getopt.h>
25
26
#include <drizzled/message/table.pb.h>
26
27
 
27
28
using namespace std;
78
79
  index->set_is_primary(is_primary);
79
80
  index->set_is_unique(is_unique);
80
81
 
 
82
  int key_length= 0;
 
83
 
 
84
  for(int i=0; i< num_index_parts; i++)
 
85
    key_length+= compare_lengths[i];
 
86
 
 
87
  index->set_key_length(key_length);
 
88
 
81
89
  while (x < num_index_parts)
82
90
  {
83
91
    index_part= index->add_index_part();
190
198
 
191
199
}
192
200
 
 
201
static void fill_table1(message::Table *table)
 
202
{
 
203
  message::Table::Field *field;
 
204
  message::Table::TableOptions *tableopts;
 
205
 
 
206
  table->set_name("t1");
 
207
  table->set_type(message::Table::INTERNAL);
 
208
 
 
209
  tableopts= table->mutable_options();
 
210
  tableopts->set_comment("Table without a StorageEngine message");
 
211
 
 
212
  {
 
213
    field= table->add_field();
 
214
    field->set_name("number");
 
215
    field->set_type(message::Table::Field::INTEGER);
 
216
  }
 
217
 
 
218
}
 
219
 
 
220
static void usage(char *argv0)
 
221
{
 
222
  cerr << "Usage:  " << argv0 << " [-t N] TABLE_NAME.dfe" << endl;
 
223
  cerr << endl;
 
224
  cerr << "-t N\tTable Number" << endl;
 
225
  cerr << "\t0 - default" << endl;
 
226
  cerr << endl;
 
227
}
 
228
 
193
229
int main(int argc, char* argv[])
194
230
{
 
231
  int opt;
 
232
  int table_number= 0;
 
233
 
195
234
  GOOGLE_PROTOBUF_VERIFY_VERSION;
196
235
 
197
 
  if (argc != 2)
 
236
  while ((opt= getopt(argc, argv, "t:")) != -1)
198
237
  {
199
 
    cerr << "Usage:  " << argv[0] << " SCHEMA" << endl;
200
 
    return -1;
 
238
    switch (opt)
 
239
    {
 
240
    case 't':
 
241
      table_number= atoi(optarg);
 
242
      break;
 
243
    default:
 
244
      usage(argv[0]);
 
245
      exit(EXIT_FAILURE);
 
246
    }
 
247
  }
 
248
 
 
249
  if (optind >= argc) {
 
250
    fprintf(stderr, "Expected Table name argument\n\n");
 
251
    usage(argv[0]);
 
252
    exit(EXIT_FAILURE);
201
253
  }
202
254
 
203
255
  message::Table table;
204
256
 
205
 
  fill_table(&table, "example_table");
 
257
  switch (table_number)
 
258
  {
 
259
  case 0:
 
260
    fill_table(&table, "example_table");
 
261
    break;
 
262
  case 1:
 
263
    fill_table1(&table);
 
264
    break;
 
265
  default:
 
266
    fprintf(stderr, "Invalid table number.\n\n");
 
267
    usage(argv[0]);
 
268
    exit(EXIT_FAILURE);
 
269
  }
206
270
 
207
 
  fstream output(argv[1], ios::out | ios::trunc | ios::binary);
 
271
  fstream output(argv[optind], ios::out | ios::trunc | ios::binary);
208
272
  if (!table.SerializeToOstream(&output))
209
273
  {
210
274
    cerr << "Failed to write schema." << endl;