~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_table.cc

  • Committer: Stewart Smith
  • Date: 2008-11-15 17:33:00 UTC
  • mto: This revision was merged to the branch mainline in revision 593.
  • Revision ID: stewart@flamingspork.com-20081115173300-ged6lav03y022fpz
begin moving from global const char* primary_key_name to methods is_primary_key() and is_primary_key_name()

in future: primary_key_nr in table def and IS_PRIMARY flag in KEY
(should make writing table definition easier)

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
 
33
33
int creating_table= 0;        // How many mysql_create_table are running
34
34
 
35
 
const char * primary_key_name="PRIMARY";
 
35
 
 
36
bool is_primary_key(KEY *key_info)
 
37
{
 
38
  static const char * primary_key_name="PRIMARY";
 
39
  return (strcmp(key_info->name, primary_key_name)==0);
 
40
}
 
41
 
 
42
const char* is_primary_key_name(const char* key_name)
 
43
{
 
44
  static const char * primary_key_name="PRIMARY";
 
45
  if (strcmp(key_name, primary_key_name)==0)
 
46
    return key_name;
 
47
  else
 
48
    return NULL;
 
49
}
36
50
 
37
51
static bool check_if_keyname_exists(const char *name,KEY *start, KEY *end);
38
52
static char *make_unique_key_name(const char *field_name,KEY *start,KEY *end);
662
676
      /* Sort NOT NULL keys before other keys */
663
677
      return (a_flags & (HA_NULL_PART_KEY)) ? 1 : -1;
664
678
    }
665
 
    if (a->name == primary_key_name)
 
679
    if (is_primary_key(a))
666
680
      return -1;
667
 
    if (b->name == primary_key_name)
 
681
    if (is_primary_key(b))
668
682
      return 1;
669
683
    /* Sort keys don't containing partial segments before others */
670
684
    if ((a_flags ^ b_flags) & HA_KEY_HAS_PART_KEY_SEG)
1266
1280
    else
1267
1281
      (*key_count)--;
1268
1282
    if (key->name.str && !tmp_table && (key->type != Key::PRIMARY) &&
1269
 
        !my_strcasecmp(system_charset_info,key->name.str, primary_key_name))
 
1283
        is_primary_key_name(key->name.str))
1270
1284
    {
1271
1285
      my_error(ER_WRONG_NAME_FOR_INDEX, MYF(0), key->name.str);
1272
1286
      return(true);
1536
1550
                       MYF(0));
1537
1551
            return(true);
1538
1552
          }
1539
 
          key_name=primary_key_name;
 
1553
          static const char pkey_name[]= "PRIMARY";
 
1554
          key_name=pkey_name;
1540
1555
          primary_key=1;
1541
1556
        }
1542
1557
        else if (!(key_name= key->name.str))
2030
2045
  char buff[MAX_FIELD_NAME],*buff_end;
2031
2046
 
2032
2047
  if (!check_if_keyname_exists(field_name,start,end) &&
2033
 
      my_strcasecmp(system_charset_info,field_name,primary_key_name))
 
2048
      !is_primary_key_name(field_name))
2034
2049
    return (char*) field_name;                  // Use fieldname
2035
2050
  buff_end=strmake(buff,field_name, sizeof(buff)-4);
2036
2051
 
3499
3514
      if (table_key->flags & HA_NOSAME)
3500
3515
      {
3501
3516
        /* Unique key. Check for "PRIMARY". */
3502
 
        if (! my_strcasecmp(system_charset_info,
3503
 
                            table_key->name, primary_key_name))
 
3517
        if (is_primary_key(table_key))
3504
3518
          *alter_flags|= HA_DROP_PK_INDEX;
3505
3519
        else
3506
3520
          *alter_flags|= HA_DROP_UNIQUE_INDEX;
3520
3534
      if (table_key->flags & HA_NOSAME)
3521
3535
      {
3522
3536
        // Unique key. Check for "PRIMARY".
3523
 
        if (! my_strcasecmp(system_charset_info,
3524
 
                            table_key->name, primary_key_name))
 
3537
        if (is_primary_key(table_key))
3525
3538
          *alter_flags|= HA_ALTER_PK_INDEX;
3526
3539
        else
3527
3540
          *alter_flags|= HA_ALTER_UNIQUE_INDEX;
3550
3563
        if (table_key->flags & HA_NOSAME)
3551
3564
        {
3552
3565
          /* Unique key. Check for "PRIMARY" */
3553
 
          if (! my_strcasecmp(system_charset_info,
3554
 
                              table_key->name, primary_key_name))
 
3566
          if (is_primary_key(table_key))
3555
3567
            *alter_flags|= HA_ALTER_PK_INDEX;
3556
3568
          else
3557
3569
            *alter_flags|= HA_ALTER_UNIQUE_INDEX;
3613
3625
      if (new_key->flags & HA_NOSAME)
3614
3626
      {
3615
3627
        /* Unique key. Check for "PRIMARY" */
3616
 
        if (! my_strcasecmp(system_charset_info,
3617
 
                            new_key->name, primary_key_name))
 
3628
        if (is_primary_key(new_key))
3618
3629
          *alter_flags|= HA_ADD_PK_INDEX;
3619
3630
        else
3620
3631
        *alter_flags|= HA_ADD_UNIQUE_INDEX;
4276
4287
 
4277
4288
      if (key_info->flags & HA_NOSAME)
4278
4289
      {
4279
 
        if (! my_strcasecmp(system_charset_info, key_name, primary_key_name))
 
4290
        if (is_primary_key_name(key_name))
4280
4291
          key_type= Key::PRIMARY;
4281
4292
        else
4282
4293
          key_type= Key::UNIQUE;
4300
4311
        goto err;
4301
4312
      if (key->type != Key::FOREIGN_KEY)
4302
4313
        new_key_list.push_back(key);
4303
 
      if (key->name.str &&
4304
 
          !my_strcasecmp(system_charset_info, key->name.str, primary_key_name))
 
4314
      if (key->name.str && is_primary_key_name(key->name.str))
4305
4315
      {
4306
4316
        my_error(ER_WRONG_NAME_FOR_INDEX, MYF(0), key->name.str);
4307
4317
        goto err;