~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_table.cc

  • Committer: Mark Atwood
  • Date: 2011-10-13 18:28:03 UTC
  • mfrom: (2433.1.5 rf1)
  • Revision ID: me@mark.atwood.name-20111013182803-pbmb3r5emfxfrbvy
mergeĀ lp:~olafvdspek/drizzle/refactor2

Show diffs side-by-side

added added

removed removed

Lines of Context:
806
806
      Foreign_key *fk_key= (Foreign_key*) key;
807
807
 
808
808
      add_foreign_key_to_table_message(&create_proto,
809
 
                                       fk_key->name.str,
 
809
                                       fk_key->name.data(),
810
810
                                       fk_key->columns,
811
811
                                       fk_key->ref_table,
812
812
                                       fk_key->ref_columns,
818
818
          fk_key->ref_columns.size() != fk_key->columns.size())
819
819
      {
820
820
        my_error(ER_WRONG_FK_DEF, MYF(0),
821
 
                 (fk_key->name.str ? fk_key->name.str :
822
 
                                     "foreign key without name"),
 
821
                 (fk_key->name.data() ? fk_key->name.data() : "foreign key without name"),
823
822
                 ER(ER_KEY_REF_DO_NOT_MATCH_TABLE_REF));
824
823
        return true;
825
824
      }
845
844
          Then we do not need the generated shorter key.
846
845
        */
847
846
        if ((key2->type != Key::FOREIGN_KEY &&
848
 
             key2->name.str != ignore_key &&
 
847
             key2->name.data() != ignore_key &&
849
848
             !foreign_key_prefix(key, key2)))
850
849
        {
851
850
          /* @todo issue warning message */
864
863
        }
865
864
      }
866
865
    }
867
 
    if (key->name.str != ignore_key)
 
866
    if (key->name.data() != ignore_key)
868
867
      key_parts+=key->columns.size();
869
868
    else
870
869
      (*key_count)--;
871
 
    if (key->name.str && !tmp_table && (key->type != Key::PRIMARY) && is_primary_key(key->name.str))
 
870
    if (key->name.data() && !tmp_table && (key->type != Key::PRIMARY) && is_primary_key(key->name.str))
872
871
    {
873
 
      my_error(ER_WRONG_NAME_FOR_INDEX, MYF(0), key->name.str);
 
872
      my_error(ER_WRONG_NAME_FOR_INDEX, MYF(0), key->name.data());
874
873
      return true;
875
874
    }
876
875
  }
891
890
    uint32_t key_length=0;
892
891
    Key_part_spec *column;
893
892
 
894
 
    if (key->name.str == ignore_key)
 
893
    if (key->name.data() == ignore_key)
895
894
    {
896
895
      /* ignore redundant keys */
897
896
      do
898
897
        key=key_iterator++;
899
 
      while (key && key->name.str == ignore_key);
 
898
      while (key && key->name.data() == ignore_key);
900
899
      if (!key)
901
900
        break;
902
901
    }
952
951
      field=0;
953
952
      while ((sql_field=it++) && ++proto_field_nr &&
954
953
             my_strcasecmp(system_charset_info,
955
 
                           column->field_name.str,
 
954
                           column->field_name.data(),
956
955
                           sql_field->field_name))
957
956
      {
958
957
        field++;
960
959
 
961
960
      if (!sql_field)
962
961
      {
963
 
        my_error(ER_KEY_COLUMN_DOES_NOT_EXITS, MYF(0), column->field_name.str);
 
962
        my_error(ER_KEY_COLUMN_DOES_NOT_EXITS, MYF(0), column->field_name.data());
964
963
        return true;
965
964
      }
966
965
 
967
966
      while ((dup_column= cols2++) != column)
968
967
      {
969
968
        if (!my_strcasecmp(system_charset_info,
970
 
                           column->field_name.str, dup_column->field_name.str))
 
969
                           column->field_name.data(), dup_column->field_name.data()))
971
970
        {
972
971
          my_printf_error(ER_DUP_FIELDNAME,
973
972
                          ER(ER_DUP_FIELDNAME),MYF(0),
974
 
                          column->field_name.str);
 
973
                          column->field_name.data());
975
974
          return true;
976
975
        }
977
976
      }
987
986
        {
988
987
          if (! (engine->check_flag(HTON_BIT_CAN_INDEX_BLOBS)))
989
988
          {
990
 
            my_error(ER_BLOB_USED_AS_KEY, MYF(0), column->field_name.str);
 
989
            my_error(ER_BLOB_USED_AS_KEY, MYF(0), column->field_name.data());
991
990
            return true;
992
991
          }
993
992
          if (! column->length)
994
993
          {
995
 
            my_error(ER_BLOB_KEY_WITHOUT_LENGTH, MYF(0), column->field_name.str);
 
994
            my_error(ER_BLOB_KEY_WITHOUT_LENGTH, MYF(0), column->field_name.data());
996
995
            return true;
997
996
          }
998
997
        }
1018
1017
            key_info->flags|= HA_NULL_PART_KEY;
1019
1018
            if (! (engine->check_flag(HTON_BIT_NULL_IN_KEY)))
1020
1019
            {
1021
 
              my_error(ER_NULL_COLUMN_IN_INDEX, MYF(0), column->field_name.str);
 
1020
              my_error(ER_NULL_COLUMN_IN_INDEX, MYF(0), column->field_name.data());
1022
1021
              return true;
1023
1022
            }
1024
1023
          }
1075
1074
      }
1076
1075
      else if (length == 0)
1077
1076
      {
1078
 
        my_error(ER_WRONG_KEY_COLUMN, MYF(0), column->field_name.str);
 
1077
        my_error(ER_WRONG_KEY_COLUMN, MYF(0), column->field_name.data());
1079
1078
          return true;
1080
1079
      }
1081
1080
      if (length > engine->max_key_part_length())
1137
1136
          key_name=pkey_name;
1138
1137
          primary_key=1;
1139
1138
        }
1140
 
        else if (!(key_name= key->name.str))
 
1139
        else if (!(key_name= key->name.data()))
1141
1140
          key_name=make_unique_key_name(sql_field->field_name,
1142
1141
                                        *key_info_buffer, key_info);
1143
1142
        if (check_if_keyname_exists(key_name, *key_info_buffer, key_info))
1806
1805
      {
1807
1806
        session->getClient()->store(table_name.c_str());
1808
1807
        session->getClient()->store(operator_name);
1809
 
        session->getClient()->store(warning_level_names[err->level].str, warning_level_names[err->level].length);
 
1808
        session->getClient()->store(warning_level_names[err->level].data(), warning_level_names[err->level].size());
1810
1809
        session->getClient()->store(err->msg);
1811
1810
        if (session->getClient()->flush())
1812
1811
          goto err;