~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/table_proto_write.cc

  • Committer: Brian Aker
  • Date: 2010-03-22 01:36:36 UTC
  • mto: This revision was merged to the branch mainline in revision 1375.
  • Revision ID: brian@gaz-20100322013636-g0jhd53j829zmc0g
Refactor for table message.

Show diffs side-by-side

added added

removed removed

Lines of Context:
78
78
      /* Other code paths still have to fill out the proto */
79
79
      attribute= table_proto.add_field();
80
80
 
81
 
      if(field_arg->flags & NOT_NULL_FLAG)
 
81
      if (field_arg->flags & NOT_NULL_FLAG)
82
82
      {
83
83
        message::Table::Field::FieldConstraints *constraints;
84
84
 
223
223
      assert(strcmp(attribute->comment().c_str(), field_arg->comment.str)==0);
224
224
    }
225
225
 
226
 
    if(field_arg->unireg_check == Field::NEXT_NUMBER)
 
226
    if (field_arg->unireg_check == Field::NEXT_NUMBER)
227
227
    {
228
228
      message::Table::Field::NumericFieldOptions *field_options;
229
229
      field_options= attribute->mutable_numeric_options();
230
230
      field_options->set_is_autoincrement(true);
231
231
    }
232
232
 
233
 
    if(field_arg->unireg_check == Field::TIMESTAMP_DN_FIELD
 
233
    if (field_arg->unireg_check == Field::TIMESTAMP_DN_FIELD
234
234
       || field_arg->unireg_check == Field::TIMESTAMP_DNUN_FIELD)
235
235
    {
236
236
      message::Table::Field::FieldOptions *field_options;
238
238
      field_options->set_default_value("NOW()");
239
239
    }
240
240
 
241
 
    if(field_arg->unireg_check == Field::TIMESTAMP_UN_FIELD
 
241
    if (field_arg->unireg_check == Field::TIMESTAMP_UN_FIELD
242
242
       || field_arg->unireg_check == Field::TIMESTAMP_DNUN_FIELD)
243
243
    {
244
244
      message::Table::Field::FieldOptions *field_options;
253
253
 
254
254
      field_options->set_default_null(true);
255
255
    }
256
 
    if(field_arg->def)
 
256
    if (field_arg->def)
257
257
    {
258
258
      message::Table::Field::FieldOptions *field_options;
259
259
      field_options= attribute->mutable_options();
260
260
 
261
 
      if(field_arg->def->is_null())
 
261
      if (field_arg->def->is_null())
262
262
      {
263
263
        field_options->set_default_null(true);
264
264
      }
269
269
 
270
270
        assert(default_value);
271
271
 
272
 
        if((field_arg->sql_type==DRIZZLE_TYPE_VARCHAR
 
272
        if ((field_arg->sql_type==DRIZZLE_TYPE_VARCHAR
273
273
           || field_arg->sql_type==DRIZZLE_TYPE_BLOB)
274
274
           && ((field_arg->length / field_arg->charset->mbmaxlen)
275
275
           < default_value->length()))
278
278
          return 1;
279
279
        }
280
280
 
281
 
        if((field_arg->sql_type==DRIZZLE_TYPE_VARCHAR
 
281
        if ((field_arg->sql_type==DRIZZLE_TYPE_VARCHAR
282
282
            && field_arg->charset==&my_charset_bin)
283
283
           || (field_arg->sql_type==DRIZZLE_TYPE_BLOB
284
284
            && field_arg->charset==&my_charset_bin))
305
305
 
306
306
  assert(! use_existing_fields || (field_number == table_proto.field_size()));
307
307
 
308
 
  switch(create_info->row_type)
309
 
  {
310
 
  case ROW_TYPE_DEFAULT:
311
 
    /* No use setting a default row type... just adds redundant info to message */
312
 
    break;
313
 
  case ROW_TYPE_FIXED:
314
 
    table_options->set_row_type(message::Table::TableOptions::ROW_TYPE_FIXED);
315
 
    break;
316
 
  case ROW_TYPE_DYNAMIC:
317
 
    table_options->set_row_type(message::Table::TableOptions::ROW_TYPE_DYNAMIC);
318
 
    break;
319
 
  case ROW_TYPE_COMPRESSED:
320
 
    table_options->set_row_type(message::Table::TableOptions::ROW_TYPE_COMPRESSED);
321
 
    break;
322
 
  case ROW_TYPE_REDUNDANT:
323
 
    table_options->set_row_type(message::Table::TableOptions::ROW_TYPE_REDUNDANT);
324
 
    break;
325
 
  case ROW_TYPE_COMPACT:
326
 
    table_options->set_row_type(message::Table::TableOptions::ROW_TYPE_COMPACT);
327
 
    break;
328
 
  case ROW_TYPE_PAGE:
329
 
    table_options->set_row_type(message::Table::TableOptions::ROW_TYPE_PAGE);
330
 
    break;
331
 
  default:
332
 
    abort();
333
 
  }
334
 
 
335
308
  if (create_info->table_options & HA_OPTION_PACK_RECORD)
336
309
    table_options->set_pack_record(true);
337
310
 
376
349
 
377
350
    idx->set_key_length(key_info[i].key_length);
378
351
 
379
 
    if(is_primary_key_name(key_info[i].name))
 
352
    if (is_primary_key_name(key_info[i].name))
380
353
      idx->set_is_primary(true);
381
354
    else
382
355
      idx->set_is_primary(false);
406
379
 
407
380
    message::Table::Index::IndexOptions *index_options= idx->mutable_options();
408
381
 
409
 
    if(key_info[i].flags & HA_USES_BLOCK_SIZE)
 
382
    if (key_info[i].flags & HA_USES_BLOCK_SIZE)
410
383
      index_options->set_key_block_size(key_info[i].block_size);
411
384
 
412
 
    if(key_info[i].flags & HA_PACK_KEY)
 
385
    if (key_info[i].flags & HA_PACK_KEY)
413
386
      index_options->set_pack_key(true);
414
387
 
415
 
    if(key_info[i].flags & HA_BINARY_PACK_KEY)
 
388
    if (key_info[i].flags & HA_BINARY_PACK_KEY)
416
389
      index_options->set_binary_pack_key(true);
417
390
 
418
 
    if(key_info[i].flags & HA_VAR_LENGTH_PART)
 
391
    if (key_info[i].flags & HA_VAR_LENGTH_PART)
419
392
      index_options->set_var_length_key(true);
420
393
 
421
 
    if(key_info[i].flags & HA_NULL_PART_KEY)
 
394
    if (key_info[i].flags & HA_NULL_PART_KEY)
422
395
      index_options->set_null_part_key(true);
423
396
 
424
 
    if(key_info[i].flags & HA_KEY_HAS_PART_KEY_SEG)
 
397
    if (key_info[i].flags & HA_KEY_HAS_PART_KEY_SEG)
425
398
      index_options->set_has_partial_segments(true);
426
399
 
427
 
    if(key_info[i].flags & HA_GENERATED_KEY)
 
400
    if (key_info[i].flags & HA_GENERATED_KEY)
428
401
      index_options->set_auto_generated_key(true);
429
402
 
430
403
    if (key_info[i].flags & HA_USES_COMMENT)
510
483
    1  error
511
484
*/
512
485
 
513
 
int rea_create_table(Session *session,
514
 
                     TableIdentifier &identifier,
515
 
                     message::Table &table_proto,
516
 
                     HA_CREATE_INFO *create_info,
517
 
                     List<CreateField> &create_fields,
518
 
                     uint32_t keys, KEY *key_info)
 
486
bool rea_create_table(Session *session,
 
487
                      TableIdentifier &identifier,
 
488
                      message::Table &table_proto,
 
489
                      HA_CREATE_INFO *create_info,
 
490
                      List<CreateField> &create_fields,
 
491
                      uint32_t keys, KEY *key_info)
519
492
{
520
493
  if (fill_table_proto(table_proto, identifier.getTableName(), create_fields, create_info,
521
494
                      keys, key_info))
522
 
    return 1;
 
495
    return false;
523
496
 
524
497
  if (plugin::StorageEngine::createTable(*session,
525
498
                                         identifier,
526
499
                                         false, table_proto))
527
500
  {
528
 
    return 1;
 
501
    return false;
529
502
  }
530
503
 
531
 
  return 0;
 
504
  return true;
532
505
 
533
506
} /* rea_create_table */
534
507