~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/table.cc

  • Committer: Jay Pipes
  • Date: 2009-04-10 05:31:39 UTC
  • mto: (971.1.47 mordred)
  • mto: This revision was merged to the branch mainline in revision 990.
  • Revision ID: jpipes@serialcoder-20090410053139-beat1rbcopkcgc4n
Changes libserialize to libdrizzledmessage per ML discussion.  All GPB messages are now in the drizzled::message namespace.

Show diffs side-by-side

added added

removed removed

Lines of Context:
35
35
#include <string>
36
36
 
37
37
#include <drizzled/unireg.h>
38
 
#include <drizzled/serialize/table.pb.h>
 
38
#include <drizzled/message/table.pb.h>
39
39
 
40
40
#include <drizzled/item/string.h>
41
41
#include <drizzled/item/int.h>
291
291
 
292
292
  switch(proto_field_type)
293
293
  {
294
 
  case drizzle::Table::Field::TINYINT:
 
294
  case drizzled::message::Table::Field::TINYINT:
295
295
    field_type= DRIZZLE_TYPE_TINY;
296
296
    break;
297
 
  case drizzle::Table::Field::INTEGER:
 
297
  case drizzled::message::Table::Field::INTEGER:
298
298
    field_type= DRIZZLE_TYPE_LONG;
299
299
    break;
300
 
  case drizzle::Table::Field::DOUBLE:
 
300
  case drizzled::message::Table::Field::DOUBLE:
301
301
    field_type= DRIZZLE_TYPE_DOUBLE;
302
302
    break;
303
 
  case drizzle::Table::Field::TIMESTAMP:
 
303
  case drizzled::message::Table::Field::TIMESTAMP:
304
304
    field_type= DRIZZLE_TYPE_TIMESTAMP;
305
305
    break;
306
 
  case drizzle::Table::Field::BIGINT:
 
306
  case drizzled::message::Table::Field::BIGINT:
307
307
    field_type= DRIZZLE_TYPE_LONGLONG;
308
308
    break;
309
 
  case drizzle::Table::Field::DATETIME:
 
309
  case drizzled::message::Table::Field::DATETIME:
310
310
    field_type= DRIZZLE_TYPE_DATETIME;
311
311
    break;
312
 
  case drizzle::Table::Field::DATE:
 
312
  case drizzled::message::Table::Field::DATE:
313
313
    field_type= DRIZZLE_TYPE_DATE;
314
314
    break;
315
 
  case drizzle::Table::Field::VARCHAR:
 
315
  case drizzled::message::Table::Field::VARCHAR:
316
316
    field_type= DRIZZLE_TYPE_VARCHAR;
317
317
    break;
318
 
  case drizzle::Table::Field::DECIMAL:
 
318
  case drizzled::message::Table::Field::DECIMAL:
319
319
    field_type= DRIZZLE_TYPE_NEWDECIMAL;
320
320
    break;
321
 
  case drizzle::Table::Field::ENUM:
 
321
  case drizzled::message::Table::Field::ENUM:
322
322
    field_type= DRIZZLE_TYPE_ENUM;
323
323
    break;
324
 
  case drizzle::Table::Field::BLOB:
 
324
  case drizzled::message::Table::Field::BLOB:
325
325
    field_type= DRIZZLE_TYPE_BLOB;
326
326
    break;
327
 
  case drizzle::Table::Field::VIRTUAL:
 
327
  case drizzled::message::Table::Field::VIRTUAL:
328
328
    field_type= DRIZZLE_TYPE_VIRTUAL;
329
329
    break;
330
330
  default:
402
402
  return default_item;
403
403
}
404
404
 
405
 
int parse_table_proto(Session *session, drizzle::Table &table, TABLE_SHARE *share)
 
405
int parse_table_proto(Session *session, drizzled::message::Table &table, TABLE_SHARE *share)
406
406
{
407
407
  int error= 0;
408
408
  handler *handler_file= NULL;
415
415
 
416
416
  share->mysql_version= DRIZZLE_VERSION_ID; // TODO: remove
417
417
 
418
 
  drizzle::Table::TableOptions table_options;
 
418
  drizzled::message::Table::TableOptions table_options;
419
419
 
420
420
  if(table.has_options())
421
421
    table_options= table.options();
533
533
  KEY* keyinfo= share->key_info;
534
534
  for (int keynr=0; keynr < table.indexes_size(); keynr++, keyinfo++)
535
535
  {
536
 
    drizzle::Table::Index indx= table.indexes(keynr);
 
536
    drizzled::message::Table::Index indx= table.indexes(keynr);
537
537
 
538
538
    keyinfo->table= 0;
539
539
    keyinfo->flags= 0;
543
543
 
544
544
    if(indx.has_options())
545
545
    {
546
 
      drizzle::Table::Index::IndexOptions indx_options= indx.options();
 
546
      drizzled::message::Table::Index::IndexOptions indx_options= indx.options();
547
547
      if(indx_options.pack_key())
548
548
        keyinfo->flags|= HA_PACK_KEY;
549
549
 
576
576
 
577
577
    switch(indx.type())
578
578
    {
579
 
    case drizzle::Table::Index::UNKNOWN_INDEX:
 
579
    case drizzled::message::Table::Index::UNKNOWN_INDEX:
580
580
      keyinfo->algorithm= HA_KEY_ALG_UNDEF;
581
581
      break;
582
 
    case drizzle::Table::Index::BTREE:
 
582
    case drizzled::message::Table::Index::BTREE:
583
583
      keyinfo->algorithm= HA_KEY_ALG_BTREE;
584
584
      break;
585
 
    case drizzle::Table::Index::RTREE:
 
585
    case drizzled::message::Table::Index::RTREE:
586
586
      keyinfo->algorithm= HA_KEY_ALG_RTREE;
587
587
      break;
588
 
    case drizzle::Table::Index::HASH:
 
588
    case drizzled::message::Table::Index::HASH:
589
589
      keyinfo->algorithm= HA_KEY_ALG_HASH;
590
590
      break;
591
 
    case drizzle::Table::Index::FULLTEXT:
 
591
    case drizzled::message::Table::Index::FULLTEXT:
592
592
      keyinfo->algorithm= HA_KEY_ALG_FULLTEXT;
593
593
 
594
594
    default:
608
608
        partnr < keyinfo->key_parts;
609
609
        partnr++, key_part++)
610
610
    {
611
 
      drizzle::Table::Index::IndexPart part;
 
611
      drizzled::message::Table::Index::IndexPart part;
612
612
      part= indx.index_part(partnr);
613
613
 
614
614
      *rec_per_key++=0;
701
701
 
702
702
  for(unsigned int fieldnr=0; fieldnr < share->fields; fieldnr++)
703
703
  {
704
 
    drizzle::Table::Field pfield= table.field(fieldnr);
 
704
    drizzled::message::Table::Field pfield= table.field(fieldnr);
705
705
    if(pfield.has_constraints() && pfield.constraints().is_nullable())
706
706
      null_fields++;
707
707
 
712
712
 
713
713
    if(drizzle_field_type==DRIZZLE_TYPE_VIRTUAL)
714
714
    {
715
 
      drizzle::Table::Field::VirtualFieldOptions field_options=
 
715
      drizzled::message::Table::Field::VirtualFieldOptions field_options=
716
716
        pfield.virtual_options();
717
717
 
718
718
      drizzle_field_type=proto_field_type_to_drizzle_type(field_options.type());
731
731
    case DRIZZLE_TYPE_BLOB:
732
732
    case DRIZZLE_TYPE_VARCHAR:
733
733
      {
734
 
        drizzle::Table::Field::StringFieldOptions field_options=
 
734
        drizzled::message::Table::Field::StringFieldOptions field_options=
735
735
          pfield.string_options();
736
736
 
737
737
        const CHARSET_INFO *cs= get_charset(field_options.has_collation_id()?
748
748
      break;
749
749
    case DRIZZLE_TYPE_ENUM:
750
750
      {
751
 
        drizzle::Table::Field::SetFieldOptions field_options=
 
751
        drizzled::message::Table::Field::SetFieldOptions field_options=
752
752
          pfield.set_options();
753
753
 
754
754
        field_pack_length[fieldnr]=
760
760
      break;
761
761
    case DRIZZLE_TYPE_NEWDECIMAL:
762
762
      {
763
 
        drizzle::Table::Field::NumericFieldOptions fo= pfield.numeric_options();
 
763
        drizzled::message::Table::Field::NumericFieldOptions fo= pfield.numeric_options();
764
764
 
765
765
        field_pack_length[fieldnr]=
766
766
          my_decimal_get_binary_size(fo.precision(), fo.scale());
783
783
  /* fix up offsets for non-stored fields (at end of record) */
784
784
  for(unsigned int fieldnr=0; fieldnr < share->fields; fieldnr++)
785
785
  {
786
 
    drizzle::Table::Field pfield= table.field(fieldnr);
 
786
    drizzled::message::Table::Field pfield= table.field(fieldnr);
787
787
 
788
788
    bool field_is_stored= true;
789
789
 
792
792
 
793
793
    if(drizzle_field_type==DRIZZLE_TYPE_VIRTUAL)
794
794
    {
795
 
      drizzle::Table::Field::VirtualFieldOptions field_options=
 
795
      drizzled::message::Table::Field::VirtualFieldOptions field_options=
796
796
        pfield.virtual_options();
797
797
 
798
798
      field_is_stored= field_options.physically_stored();
865
865
 
866
866
  for(unsigned int fieldnr=0; fieldnr < share->fields; fieldnr++)
867
867
  {
868
 
    drizzle::Table::Field pfield= table.field(fieldnr);
 
868
    drizzled::message::Table::Field pfield= table.field(fieldnr);
869
869
 
870
870
    /* field names */
871
871
    share->fieldnames.type_names[fieldnr]= strmake_root(&share->mem_root,
875
875
    share->fieldnames.type_lengths[fieldnr]= pfield.name().length();
876
876
 
877
877
    /* enum typelibs */
878
 
    if(pfield.type() != drizzle::Table::Field::ENUM)
 
878
    if(pfield.type() != drizzled::message::Table::Field::ENUM)
879
879
      continue;
880
880
 
881
 
    drizzle::Table::Field::SetFieldOptions field_options=
 
881
    drizzled::message::Table::Field::SetFieldOptions field_options=
882
882
      pfield.set_options();
883
883
 
884
884
    const CHARSET_INFO *charset= get_charset(field_options.has_collation_id()?
935
935
 
936
936
  for(unsigned int fieldnr=0; fieldnr < share->fields; fieldnr++)
937
937
  {
938
 
    drizzle::Table::Field pfield= table.field(fieldnr);
 
938
    drizzled::message::Table::Field pfield= table.field(fieldnr);
939
939
 
940
940
    enum column_format_type column_format= COLUMN_FORMAT_TYPE_DEFAULT;
941
941
 
942
942
    switch(pfield.format())
943
943
    {
944
 
    case drizzle::Table::Field::DefaultFormat:
 
944
    case drizzled::message::Table::Field::DefaultFormat:
945
945
      column_format= COLUMN_FORMAT_TYPE_DEFAULT;
946
946
      break;
947
 
    case drizzle::Table::Field::FixedFormat:
 
947
    case drizzled::message::Table::Field::FixedFormat:
948
948
      column_format= COLUMN_FORMAT_TYPE_FIXED;
949
949
      break;
950
 
    case drizzle::Table::Field::DynamicFormat:
 
950
    case drizzled::message::Table::Field::DynamicFormat:
951
951
      column_format= COLUMN_FORMAT_TYPE_DYNAMIC;
952
952
      break;
953
953
    default:
1009
1009
 
1010
1010
    if(field_type==DRIZZLE_TYPE_VIRTUAL)
1011
1011
    {
1012
 
      drizzle::Table::Field::VirtualFieldOptions field_options=
 
1012
      drizzled::message::Table::Field::VirtualFieldOptions field_options=
1013
1013
        pfield.virtual_options();
1014
1014
 
1015
1015
      vcol_info= new virtual_column_info();
1030
1030
    if(field_type==DRIZZLE_TYPE_BLOB
1031
1031
       || field_type==DRIZZLE_TYPE_VARCHAR)
1032
1032
    {
1033
 
      drizzle::Table::Field::StringFieldOptions field_options=
 
1033
      drizzled::message::Table::Field::StringFieldOptions field_options=
1034
1034
        pfield.string_options();
1035
1035
 
1036
1036
      charset= get_charset(field_options.has_collation_id()?
1043
1043
 
1044
1044
    if(field_type==DRIZZLE_TYPE_ENUM)
1045
1045
    {
1046
 
      drizzle::Table::Field::SetFieldOptions field_options=
 
1046
      drizzled::message::Table::Field::SetFieldOptions field_options=
1047
1047
        pfield.set_options();
1048
1048
 
1049
1049
      charset= get_charset(field_options.has_collation_id()?
1436
1436
 
1437
1437
  proto_path.append(".dfe");
1438
1438
 
1439
 
  drizzle::Table table;
 
1439
  drizzled::message::Table table;
1440
1440
 
1441
1441
  if((error= drizzle_read_table_proto(proto_path.c_str(), &table)))
1442
1442
  {