~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_table.cc

  • Committer: Olaf van der Spek
  • Date: 2011-08-19 08:06:53 UTC
  • mto: This revision was merged to the branch mainline in revision 2408.
  • Revision ID: olafvdspek@gmail.com-20110819080653-kvxd8zva88i9s3p1
Refactor

Show diffs side-by-side

added added

removed removed

Lines of Context:
56
56
 
57
57
namespace drizzled {
58
58
 
59
 
bool is_primary_key(KeyInfo *key_info)
60
 
{
61
 
  return strcmp(key_info->name, "PRIMARY") == 0;
62
 
}
63
 
 
64
 
const char* is_primary_key_name(const char* key_name)
65
 
{
66
 
  return strcmp(key_name, "PRIMARY") == 0 ? key_name : NULL;
 
59
bool is_primary_key(const char* name)
 
60
{
 
61
  return strcmp(name, "PRIMARY") == 0;
67
62
}
68
63
 
69
64
static bool check_if_keyname_exists(const char *name,KeyInfo *start, KeyInfo *end);
70
 
static char *make_unique_key_name(const char *field_name,KeyInfo *start,KeyInfo *end);
71
 
 
 
65
static const char *make_unique_key_name(const char *field_name,KeyInfo *start,KeyInfo *end);
72
66
static bool prepare_blob_field(Session *session, CreateField *sql_field);
73
67
 
74
68
void set_table_default_charset(HA_CREATE_INFO *create_info, const char *db)
78
72
    let's fetch the database default character set and
79
73
    apply it to the table.
80
74
  */
81
 
  identifier::Schema identifier(db);
82
 
  if (create_info->default_table_charset == NULL)
83
 
    create_info->default_table_charset= plugin::StorageEngine::getSchemaCollation(identifier);
 
75
  if (not create_info->default_table_charset)
 
76
    create_info->default_table_charset= plugin::StorageEngine::getSchemaCollation(identifier::Schema(db));
84
77
}
85
78
 
86
79
/*
277
270
      /* Sort NOT NULL keys before other keys */
278
271
      return (a_flags & (HA_NULL_PART_KEY)) ? 1 : -1;
279
272
    }
280
 
    if (is_primary_key(a))
 
273
    if (is_primary_key(a->name))
281
274
      return -1;
282
 
    if (is_primary_key(b))
 
275
    if (is_primary_key(b->name))
283
276
      return 1;
284
277
    /* Sort keys don't containing partial segments before others */
285
278
    if ((a_flags ^ b_flags) & HA_KEY_HAS_PART_KEY_SEG)
875
868
      key_parts+=key->columns.size();
876
869
    else
877
870
      (*key_count)--;
878
 
    if (key->name.str && !tmp_table && (key->type != Key::PRIMARY) &&
879
 
        is_primary_key_name(key->name.str))
 
871
    if (key->name.str && !tmp_table && (key->type != Key::PRIMARY) && is_primary_key(key->name.str))
880
872
    {
881
873
      my_error(ER_WRONG_NAME_FOR_INDEX, MYF(0), key->name.str);
882
874
      return true;
1550
1542
}
1551
1543
 
1552
1544
 
1553
 
static char *
 
1545
static const char*
1554
1546
make_unique_key_name(const char *field_name,KeyInfo *start,KeyInfo *end)
1555
1547
{
1556
1548
  char buff[MAX_FIELD_NAME],*buff_end;
1557
1549
 
1558
 
  if (!check_if_keyname_exists(field_name,start,end) &&
1559
 
      !is_primary_key_name(field_name))
1560
 
    return (char*) field_name;                  // Use fieldname
 
1550
  if (not check_if_keyname_exists(field_name,start,end) && not is_primary_key(field_name))
 
1551
    return field_name;                  // Use fieldname
1561
1552
 
1562
1553
  buff_end= strncpy(buff, field_name, sizeof(buff)-4);
1563
1554
  buff_end+= strlen(buff);