~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/statement/alter_table.cc

  • Committer: Mark Atwood
  • Date: 2011-10-08 04:50:51 UTC
  • mfrom: (2430.1.1 rf)
  • Revision ID: me@mark.atwood.name-20111008045051-6ha1qiy7k2a9c3jv
Tags: 2011.10.27
mergeĀ lp:~olafvdspek/drizzle/refactor2

Show diffs side-by-side

added added

removed removed

Lines of Context:
165
165
  {
166
166
    identifier::Table identifier(first_table->getSchemaName(), first_table->getTableName());
167
167
    identifier::Table new_identifier(select_lex->db ? select_lex->db : first_table->getSchemaName(),
168
 
                                   lex().name.data() ? lex().name.data() : first_table->getTableName());
 
168
                                   lex().name.str ? lex().name.str : first_table->getTableName());
169
169
 
170
170
    res= alter_table(&session(),
171
171
                     identifier,
187
187
    {
188
188
      identifier::Table identifier(first_table->getSchemaName(), first_table->getTableName(), table->getMutableShare()->getPath());
189
189
      identifier::Table new_identifier(select_lex->db ? select_lex->db : first_table->getSchemaName(),
190
 
                                       lex().name.data() ? lex().name.data() : first_table->getTableName(),
 
190
                                       lex().name.str ? lex().name.str : first_table->getTableName(),
191
191
                                       table->getMutableShare()->getPath());
192
192
 
193
193
      res= alter_table(&session(),
318
318
    vector<string>::iterator it= drop_columns.begin();
319
319
    while (it != drop_columns.end())
320
320
    {
321
 
      if (not system_charset_info->strcasecmp(field->field_name, it->c_str()))
 
321
      if (not my_strcasecmp(system_charset_info, field->field_name, it->c_str()))
322
322
      {
323
323
        /* Reset auto_increment value if it was dropped */
324
324
        if (MTYP_TYPENR(field->unireg_check) == Field::NEXT_NUMBER &&
347
347
    while ((def= def_it++))
348
348
    {
349
349
      if (def->change &&
350
 
          ! system_charset_info->strcasecmp(field->field_name, def->change))
 
350
          ! my_strcasecmp(system_charset_info, field->field_name, def->change))
351
351
              break;
352
352
    }
353
353
 
373
373
 
374
374
      for (; alter != alter_info->alter_list.end(); alter++)
375
375
      {
376
 
        if (not system_charset_info->strcasecmp(field->field_name, alter->name))
 
376
        if (not my_strcasecmp(system_charset_info,field->field_name, alter->name))
377
377
          break;
378
378
      }
379
379
 
417
417
 
418
418
      while ((find= find_it++)) /* Add new columns */
419
419
      {
420
 
        if (not system_charset_info->strcasecmp(def->after, find->field_name))
 
420
        if (not my_strcasecmp(system_charset_info,def->after, find->field_name))
421
421
          break;
422
422
      }
423
423
 
466
466
  KeyInfo *key_info= table->key_info;
467
467
  for (uint32_t i= 0; i < table->getShare()->sizeKeys(); i++, key_info++)
468
468
  {
469
 
    const char *key_name= key_info->name;
 
469
    char *key_name= key_info->name;
470
470
 
471
471
    vector<string>::iterator it= drop_keys.begin();
472
472
    while (it != drop_keys.end())
473
473
    {
474
 
      if (not system_charset_info->strcasecmp(key_name, it->c_str()))
 
474
      if (not my_strcasecmp(system_charset_info, key_name, (*it).c_str()))
475
475
        break;
476
476
      it++;
477
477
    }
486
486
    List<Key_part_spec> key_parts;
487
487
    for (uint32_t j= 0; j < key_info->key_parts; j++, key_part++)
488
488
    {
489
 
      if (not key_part->field)
 
489
      if (! key_part->field)
490
490
              continue; /* Wrong field (from UNIREG) */
491
491
 
492
492
      const char *key_part_name= key_part->field->field_name;
496
496
      {
497
497
        if (cfield->change)
498
498
        {
499
 
          if (not system_charset_info->strcasecmp(key_part_name, cfield->change))
 
499
          if (not my_strcasecmp(system_charset_info, key_part_name, cfield->change))
500
500
            break;
501
501
        }
502
 
        else if (not system_charset_info->strcasecmp(key_part_name, cfield->field_name))
 
502
        else if (not my_strcasecmp(system_charset_info, key_part_name, cfield->field_name))
503
503
          break;
504
504
      }
505
505
 
529
529
          key_part_length= 0; /* Use whole field */
530
530
      }
531
531
      key_part_length/= key_part->field->charset()->mbmaxlen;
532
 
      key_parts.push_back(new Key_part_spec(str_ref(cfield->field_name), key_part_length));
 
532
      key_parts.push_back(new Key_part_spec(cfield->field_name, strlen(cfield->field_name), key_part_length));
533
533
    }
534
534
    if (key_parts.size())
535
535
    {
542
542
      if (key_info->flags & HA_USES_COMMENT)
543
543
        key_create_info.comment= key_info->comment;
544
544
 
545
 
      Key::Keytype key_type= key_info->flags & HA_NOSAME
546
 
        ? (is_primary_key(key_name) ? Key::PRIMARY : Key::UNIQUE)
547
 
        : Key::MULTIPLE;
548
 
      new_key_list.push_back(new Key(key_type, str_ref(key_name), &key_create_info, test(key_info->flags & HA_GENERATED_KEY), key_parts));
 
545
      Key::Keytype key_type;
 
546
      if (key_info->flags & HA_NOSAME)
 
547
      {
 
548
        key_type= is_primary_key(key_name) ? Key::PRIMARY : Key::UNIQUE;
 
549
      }
 
550
      else
 
551
      {
 
552
        key_type= Key::MULTIPLE;
 
553
      }
 
554
      new_key_list.push_back(new Key(key_type, key_name, strlen(key_name), &key_create_info, test(key_info->flags & HA_GENERATED_KEY), key_parts));
549
555
    }
550
556
  }
551
557
 
555
561
    vector<string>::iterator it= drop_fkeys.begin();
556
562
    while (it != drop_fkeys.end())
557
563
    {
558
 
      if (! system_charset_info->strcasecmp(original_proto.fk_constraint(j).name().c_str(), it->c_str()))
 
564
      if (! my_strcasecmp(system_charset_info, original_proto.fk_constraint(j).name().c_str(), it->c_str()))
559
565
      {
560
566
        break;
561
567
      }
586
592
 
587
593
        Foreign_key *fkey= (Foreign_key*)key;
588
594
        add_foreign_key_to_table_message(&table_message,
589
 
                                         fkey->name.data(),
 
595
                                         fkey->name.str,
590
596
                                         fkey->columns,
591
597
                                         fkey->ref_table,
592
598
                                         fkey->ref_columns,
598
604
      if (key->type != Key::FOREIGN_KEY)
599
605
        new_key_list.push_back(key);
600
606
 
601
 
      if (key->name.data() && is_primary_key(key->name.data()))
 
607
      if (key->name.str && is_primary_key(key->name.str))
602
608
      {
603
 
        my_error(ER_WRONG_NAME_FOR_INDEX, MYF(0), key->name.data());
 
609
        my_error(ER_WRONG_NAME_FOR_INDEX, MYF(0), key->name.str);
604
610
        return true;
605
611
      }
606
612
    }
1231
1237
 
1232
1238
      snprintf(old_name, sizeof(old_name), "%s2-%lx-%"PRIx64, TMP_FILE_PREFIX, (unsigned long) current_pid, session->thread_id);
1233
1239
 
1234
 
      files_charset_info->casedn_str(old_name);
 
1240
      my_casedn_str(files_charset_info, old_name);
1235
1241
 
1236
1242
      wait_while_table_is_used(session, table, HA_EXTRA_PREPARE_FOR_RENAME);
1237
1243
      session->close_data_files_and_morph_locks(original_table_identifier);