37
37
#include <drizzled/unireg.h>
38
#include <drizzled/serialize/table.pb.h>
38
#include <drizzled/message/table.pb.h>
40
40
#include <drizzled/item/string.h>
41
41
#include <drizzled/item/int.h>
292
292
switch(proto_field_type)
294
case drizzle::Table::Field::TINYINT:
294
case drizzled::message::Table::Field::TINYINT:
295
295
field_type= DRIZZLE_TYPE_TINY;
297
case drizzle::Table::Field::INTEGER:
297
case drizzled::message::Table::Field::INTEGER:
298
298
field_type= DRIZZLE_TYPE_LONG;
300
case drizzle::Table::Field::DOUBLE:
300
case drizzled::message::Table::Field::DOUBLE:
301
301
field_type= DRIZZLE_TYPE_DOUBLE;
303
case drizzle::Table::Field::TIMESTAMP:
303
case drizzled::message::Table::Field::TIMESTAMP:
304
304
field_type= DRIZZLE_TYPE_TIMESTAMP;
306
case drizzle::Table::Field::BIGINT:
306
case drizzled::message::Table::Field::BIGINT:
307
307
field_type= DRIZZLE_TYPE_LONGLONG;
309
case drizzle::Table::Field::DATETIME:
309
case drizzled::message::Table::Field::DATETIME:
310
310
field_type= DRIZZLE_TYPE_DATETIME;
312
case drizzle::Table::Field::DATE:
312
case drizzled::message::Table::Field::DATE:
313
313
field_type= DRIZZLE_TYPE_DATE;
315
case drizzle::Table::Field::VARCHAR:
315
case drizzled::message::Table::Field::VARCHAR:
316
316
field_type= DRIZZLE_TYPE_VARCHAR;
318
case drizzle::Table::Field::DECIMAL:
318
case drizzled::message::Table::Field::DECIMAL:
319
319
field_type= DRIZZLE_TYPE_NEWDECIMAL;
321
case drizzle::Table::Field::ENUM:
321
case drizzled::message::Table::Field::ENUM:
322
322
field_type= DRIZZLE_TYPE_ENUM;
324
case drizzle::Table::Field::BLOB:
324
case drizzled::message::Table::Field::BLOB:
325
325
field_type= DRIZZLE_TYPE_BLOB;
327
case drizzle::Table::Field::VIRTUAL:
327
case drizzled::message::Table::Field::VIRTUAL:
328
328
field_type= DRIZZLE_TYPE_VIRTUAL;
402
402
return default_item;
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)
408
408
handler *handler_file= NULL;
533
533
KEY* keyinfo= share->key_info;
534
534
for (int keynr=0; keynr < table.indexes_size(); keynr++, keyinfo++)
536
drizzle::Table::Index indx= table.indexes(keynr);
536
drizzled::message::Table::Index indx= table.indexes(keynr);
538
538
keyinfo->table= 0;
539
539
keyinfo->flags= 0;
577
577
switch(indx.type())
579
case drizzle::Table::Index::UNKNOWN_INDEX:
579
case drizzled::message::Table::Index::UNKNOWN_INDEX:
580
580
keyinfo->algorithm= HA_KEY_ALG_UNDEF;
582
case drizzle::Table::Index::BTREE:
582
case drizzled::message::Table::Index::BTREE:
583
583
keyinfo->algorithm= HA_KEY_ALG_BTREE;
585
case drizzle::Table::Index::RTREE:
585
case drizzled::message::Table::Index::RTREE:
586
586
keyinfo->algorithm= HA_KEY_ALG_RTREE;
588
case drizzle::Table::Index::HASH:
588
case drizzled::message::Table::Index::HASH:
589
589
keyinfo->algorithm= HA_KEY_ALG_HASH;
591
case drizzle::Table::Index::FULLTEXT:
591
case drizzled::message::Table::Index::FULLTEXT:
592
592
keyinfo->algorithm= HA_KEY_ALG_FULLTEXT;
702
702
for(unsigned int fieldnr=0; fieldnr < share->fields; fieldnr++)
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())
713
713
if(drizzle_field_type==DRIZZLE_TYPE_VIRTUAL)
715
drizzle::Table::Field::VirtualFieldOptions field_options=
715
drizzled::message::Table::Field::VirtualFieldOptions field_options=
716
716
pfield.virtual_options();
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:
734
drizzle::Table::Field::StringFieldOptions field_options=
734
drizzled::message::Table::Field::StringFieldOptions field_options=
735
735
pfield.string_options();
737
737
const CHARSET_INFO *cs= get_charset(field_options.has_collation_id()?
761
761
case DRIZZLE_TYPE_NEWDECIMAL:
763
drizzle::Table::Field::NumericFieldOptions fo= pfield.numeric_options();
763
drizzled::message::Table::Field::NumericFieldOptions fo= pfield.numeric_options();
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++)
786
drizzle::Table::Field pfield= table.field(fieldnr);
786
drizzled::message::Table::Field pfield= table.field(fieldnr);
788
788
bool field_is_stored= true;
793
793
if(drizzle_field_type==DRIZZLE_TYPE_VIRTUAL)
795
drizzle::Table::Field::VirtualFieldOptions field_options=
795
drizzled::message::Table::Field::VirtualFieldOptions field_options=
796
796
pfield.virtual_options();
798
798
field_is_stored= field_options.physically_stored();
866
866
for(unsigned int fieldnr=0; fieldnr < share->fields; fieldnr++)
868
drizzle::Table::Field pfield= table.field(fieldnr);
868
drizzled::message::Table::Field pfield= table.field(fieldnr);
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();
877
877
/* enum typelibs */
878
if(pfield.type() != drizzle::Table::Field::ENUM)
878
if(pfield.type() != drizzled::message::Table::Field::ENUM)
881
drizzle::Table::Field::SetFieldOptions field_options=
881
drizzled::message::Table::Field::SetFieldOptions field_options=
882
882
pfield.set_options();
884
884
const CHARSET_INFO *charset= get_charset(field_options.has_collation_id()?
936
936
for(unsigned int fieldnr=0; fieldnr < share->fields; fieldnr++)
938
drizzle::Table::Field pfield= table.field(fieldnr);
938
drizzled::message::Table::Field pfield= table.field(fieldnr);
940
940
enum column_format_type column_format= COLUMN_FORMAT_TYPE_DEFAULT;
942
942
switch(pfield.format())
944
case drizzle::Table::Field::DefaultFormat:
944
case drizzled::message::Table::Field::DefaultFormat:
945
945
column_format= COLUMN_FORMAT_TYPE_DEFAULT;
947
case drizzle::Table::Field::FixedFormat:
947
case drizzled::message::Table::Field::FixedFormat:
948
948
column_format= COLUMN_FORMAT_TYPE_FIXED;
950
case drizzle::Table::Field::DynamicFormat:
950
case drizzled::message::Table::Field::DynamicFormat:
951
951
column_format= COLUMN_FORMAT_TYPE_DYNAMIC;
1010
1010
if(field_type==DRIZZLE_TYPE_VIRTUAL)
1012
drizzle::Table::Field::VirtualFieldOptions field_options=
1012
drizzled::message::Table::Field::VirtualFieldOptions field_options=
1013
1013
pfield.virtual_options();
1015
1015
vcol_info= new virtual_column_info();
1030
1030
if(field_type==DRIZZLE_TYPE_BLOB
1031
1031
|| field_type==DRIZZLE_TYPE_VARCHAR)
1033
drizzle::Table::Field::StringFieldOptions field_options=
1033
drizzled::message::Table::Field::StringFieldOptions field_options=
1034
1034
pfield.string_options();
1036
1036
charset= get_charset(field_options.has_collation_id()?
1044
1044
if(field_type==DRIZZLE_TYPE_ENUM)
1046
drizzle::Table::Field::SetFieldOptions field_options=
1046
drizzled::message::Table::Field::SetFieldOptions field_options=
1047
1047
pfield.set_options();
1049
1049
charset= get_charset(field_options.has_collation_id()?