623
627
idx->set_is_unique(false);
625
/* FIXME: block_size ? */
629
drizzle::Table::Index::IndexOptions *index_options= idx->mutable_options();
631
if(key_info[i].flags & HA_USES_BLOCK_SIZE)
632
index_options->set_key_block_size(key_info[i].block_size);
634
if(key_info[i].flags & HA_PACK_KEY)
635
index_options->set_pack_key(true);
637
if(key_info[i].flags & HA_BINARY_PACK_KEY)
638
index_options->set_binary_pack_key(true);
640
if(key_info[i].flags & HA_VAR_LENGTH_PART)
641
index_options->set_var_length_key(true);
643
if(key_info[i].flags & HA_NULL_PART_KEY)
644
index_options->set_null_part_key(true);
646
if(key_info[i].flags & HA_KEY_HAS_PART_KEY_SEG)
647
index_options->set_has_partial_segments(true);
649
if(key_info[i].flags & HA_GENERATED_KEY)
650
index_options->set_auto_generated_key(true);
652
if (key_info[i].flags & HA_USES_COMMENT)
653
idx->set_comment(key_info[i].comment.str);
655
if(key_info[i].flags & ~(HA_NOSAME | HA_PACK_KEY | HA_USES_BLOCK_SIZE | HA_BINARY_PACK_KEY | HA_VAR_LENGTH_PART | HA_NULL_PART_KEY | HA_KEY_HAS_PART_KEY_SEG | HA_GENERATED_KEY | HA_USES_COMMENT))
656
abort(); // Invalid (unknown) index flag.
627
658
for(unsigned int j=0; j< key_info[i].key_parts; j++)
629
660
drizzle::Table::Index::IndexPart *idxpart;
630
drizzle::Table::Field *field;
632
662
idxpart= idx->add_index_part();
634
field= idxpart->mutable_field();
635
*field= table_proto->field(key_info[i].key_part[j].fieldnr);
664
idxpart->set_fieldnr(key_info[i].key_part[j].fieldnr+1);
637
666
idxpart->set_compare_length(key_info[i].key_part[j].length);
640
if (key_info[i].flags & HA_USES_COMMENT)
641
idx->set_comment(key_info[i].comment.str);