~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/table_share.cc

  • Committer: Brian Aker
  • Date: 2010-06-11 18:03:14 UTC
  • mfrom: (1608.2.4 rollup)
  • Revision ID: brian@gaz-20100611180314-1bafy27fvm3t7z1j
Merge in some recent changes to tableshare.

Show diffs side-by-side

added added

removed removed

Lines of Context:
245
245
    return foundTableShare(share);
246
246
  }
247
247
 
248
 
  if (not (share= new TableShare(key, key_length)))
 
248
  if (not (share= new TableShare(message::Table::STANDARD, key, key_length)))
249
249
  {
250
250
    return NULL;
251
251
  }
470
470
  return table_def_cache;
471
471
}
472
472
 
473
 
TableShare::TableShare(char *key, uint32_t key_length, char *path_arg, uint32_t path_length_arg) :
474
 
  table_category(TABLE_UNKNOWN_CATEGORY),
475
 
  open_count(0),
476
 
  found_next_number_field(NULL),
477
 
  timestamp_field(NULL),
478
 
  key_info(NULL),
479
 
  blob_field(NULL),
480
 
  block_size(0),
481
 
  version(0),
482
 
  timestamp_offset(0),
483
 
  reclength(0),
484
 
  stored_rec_length(0),
485
 
  row_type(ROW_TYPE_DEFAULT),
486
 
  max_rows(0),
487
 
  table_proto(NULL),
488
 
  storage_engine(NULL),
489
 
  tmp_table(message::Table::STANDARD),
 
473
TableShare::TableShare(TableIdentifier::Type type_arg) :
 
474
  table_category(TABLE_UNKNOWN_CATEGORY),
 
475
  open_count(0),
 
476
  found_next_number_field(NULL),
 
477
  timestamp_field(NULL),
 
478
  key_info(NULL),
 
479
  blob_field(NULL),
 
480
  block_size(0),
 
481
  version(0),
 
482
  timestamp_offset(0),
 
483
  reclength(0),
 
484
  stored_rec_length(0),
 
485
  row_type(ROW_TYPE_DEFAULT),
 
486
  max_rows(0),
 
487
  table_proto(NULL),
 
488
  storage_engine(NULL),
 
489
  tmp_table(type_arg),
 
490
  ref_count(0),
 
491
  null_bytes(0),
 
492
  last_null_bit_pos(0),
 
493
  fields(0),
 
494
  rec_buff_length(0),
 
495
  keys(0),
 
496
  key_parts(0),
 
497
  max_key_length(0),
 
498
  max_unique_length(0),
 
499
  total_key_length(0),
 
500
  uniques(0),
 
501
  null_fields(0),
 
502
  blob_fields(0),
 
503
  timestamp_field_offset(0),
 
504
  varchar_fields(0),
 
505
  db_create_options(0),
 
506
  db_options_in_use(0),
 
507
  db_record_offset(0),
 
508
  rowid_field_offset(0),
 
509
  primary_key(0),
 
510
  next_number_index(0),
 
511
  next_number_key_offset(0),
 
512
  next_number_keypart(0),
 
513
  error(0),
 
514
  open_errno(0),
 
515
  errarg(0),
 
516
  column_bitmap_size(0),
 
517
  blob_ptr_size(0),
 
518
  db_low_byte_first(false),
 
519
  name_lock(false),
 
520
  replace_with_name_lock(false),
 
521
  waiting_on_cond(false),
 
522
  keys_in_use(0),
 
523
  keys_for_keyread(0),
 
524
  event_observers(NULL),
 
525
  newed(true)
 
526
{
 
527
  memset(&name_hash, 0, sizeof(HASH));
 
528
 
 
529
  table_charset= 0;
 
530
  memset(&table_cache_key, 0, sizeof(LEX_STRING));
 
531
  memset(&db, 0, sizeof(LEX_STRING));
 
532
  memset(&table_name, 0, sizeof(LEX_STRING));
 
533
  memset(&path, 0, sizeof(LEX_STRING));
 
534
  memset(&normalized_path, 0, sizeof(LEX_STRING));
 
535
 
 
536
  init();
 
537
}
 
538
 
 
539
TableShare::TableShare(TableIdentifier::Type type_arg,
 
540
                       const char *key,
 
541
                       uint32_t key_length,
 
542
                       const char *new_table_name,
 
543
                       const char *new_path) :
 
544
  table_category(TABLE_UNKNOWN_CATEGORY),
 
545
  open_count(0),
 
546
  found_next_number_field(NULL),
 
547
  timestamp_field(NULL),
 
548
  key_info(NULL),
 
549
  blob_field(NULL),
 
550
  block_size(0),
 
551
  version(0),
 
552
  timestamp_offset(0),
 
553
  reclength(0),
 
554
  stored_rec_length(0),
 
555
  row_type(ROW_TYPE_DEFAULT),
 
556
  max_rows(0),
 
557
  table_proto(NULL),
 
558
  storage_engine(NULL),
 
559
  tmp_table(type_arg),
 
560
  ref_count(0),
 
561
  null_bytes(0),
 
562
  last_null_bit_pos(0),
 
563
  fields(0),
 
564
  rec_buff_length(0),
 
565
  keys(0),
 
566
  key_parts(0),
 
567
  max_key_length(0),
 
568
  max_unique_length(0),
 
569
  total_key_length(0),
 
570
  uniques(0),
 
571
  null_fields(0),
 
572
  blob_fields(0),
 
573
  timestamp_field_offset(0),
 
574
  varchar_fields(0),
 
575
  db_create_options(0),
 
576
  db_options_in_use(0),
 
577
  db_record_offset(0),
 
578
  rowid_field_offset(0),
 
579
  primary_key(0),
 
580
  next_number_index(0),
 
581
  next_number_key_offset(0),
 
582
  next_number_keypart(0),
 
583
  error(0),
 
584
  open_errno(0),
 
585
  errarg(0),
 
586
  column_bitmap_size(0),
 
587
  blob_ptr_size(0),
 
588
  db_low_byte_first(false),
 
589
  name_lock(false),
 
590
  replace_with_name_lock(false),
 
591
  waiting_on_cond(false),
 
592
  keys_in_use(0),
 
593
  keys_for_keyread(0),
 
594
  event_observers(NULL),
 
595
  newed(true)
 
596
{
 
597
  memset(&name_hash, 0, sizeof(HASH));
 
598
 
 
599
  table_charset= 0;
 
600
  memset(&table_cache_key, 0, sizeof(LEX_STRING));
 
601
  memset(&db, 0, sizeof(LEX_STRING));
 
602
  memset(&table_name, 0, sizeof(LEX_STRING));
 
603
  memset(&path, 0, sizeof(LEX_STRING));
 
604
  memset(&normalized_path, 0, sizeof(LEX_STRING));
 
605
  init(key, key_length, new_table_name, new_path);
 
606
  assert(type_arg == message::Table::INTERNAL);
 
607
}
 
608
 
 
609
 
 
610
TableShare::TableShare(TableIdentifier &identifier) :
 
611
  table_category(TABLE_UNKNOWN_CATEGORY),
 
612
  open_count(0),
 
613
  found_next_number_field(NULL),
 
614
  timestamp_field(NULL),
 
615
  key_info(NULL),
 
616
  blob_field(NULL),
 
617
  block_size(0),
 
618
  version(0),
 
619
  timestamp_offset(0),
 
620
  reclength(0),
 
621
  stored_rec_length(0),
 
622
  row_type(ROW_TYPE_DEFAULT),
 
623
  max_rows(0),
 
624
  table_proto(NULL),
 
625
  storage_engine(NULL),
 
626
  tmp_table(identifier.getType()),
 
627
  ref_count(0),
 
628
  null_bytes(0),
 
629
  last_null_bit_pos(0),
 
630
  fields(0),
 
631
  rec_buff_length(0),
 
632
  keys(0),
 
633
  key_parts(0),
 
634
  max_key_length(0),
 
635
  max_unique_length(0),
 
636
  total_key_length(0),
 
637
  uniques(0),
 
638
  null_fields(0),
 
639
  blob_fields(0),
 
640
  timestamp_field_offset(0),
 
641
  varchar_fields(0),
 
642
  db_create_options(0),
 
643
  db_options_in_use(0),
 
644
  db_record_offset(0),
 
645
  rowid_field_offset(0),
 
646
  primary_key(0),
 
647
  next_number_index(0),
 
648
  next_number_key_offset(0),
 
649
  next_number_keypart(0),
 
650
  error(0),
 
651
  open_errno(0),
 
652
  errarg(0),
 
653
  column_bitmap_size(0),
 
654
  blob_ptr_size(0),
 
655
  db_low_byte_first(false),
 
656
  name_lock(false),
 
657
  replace_with_name_lock(false),
 
658
  waiting_on_cond(false),
 
659
  keys_in_use(0),
 
660
  keys_for_keyread(0),
 
661
  event_observers(NULL),
 
662
  newed(true)
 
663
{
 
664
  memset(&name_hash, 0, sizeof(HASH));
 
665
 
 
666
  table_charset= 0;
 
667
  memset(&table_cache_key, 0, sizeof(LEX_STRING));
 
668
  memset(&db, 0, sizeof(LEX_STRING));
 
669
  memset(&table_name, 0, sizeof(LEX_STRING));
 
670
  memset(&path, 0, sizeof(LEX_STRING));
 
671
  memset(&normalized_path, 0, sizeof(LEX_STRING));
 
672
 
 
673
  {
 
674
    memory::init_sql_alloc(&mem_root, TABLE_ALLOC_BLOCK_SIZE, 0);
 
675
    table_category=         TABLE_CATEGORY_TEMPORARY;
 
676
    tmp_table=              message::Table::INTERNAL;
 
677
    db.str= const_cast<char *>(identifier.getSchemaName().c_str());
 
678
    db.length= identifier.getSchemaName().length();
 
679
    table_cache_key.str= const_cast<char *>(identifier.getSchemaName().c_str());
 
680
    table_cache_key.length= 0;
 
681
    table_name.str= const_cast<char *>(identifier.getTableName().c_str());
 
682
    table_name.length= identifier.getTableName().length();
 
683
    path.str= const_cast<char *>(identifier.getPath().c_str());
 
684
    normalized_path.str= const_cast<char *>(identifier.getPath().c_str());
 
685
    path.length= normalized_path.length= strlen(path.str);
 
686
  }
 
687
}
 
688
 
 
689
 
 
690
TableShare::TableShare(TableIdentifier::Type type_arg,
 
691
                       char *key,
 
692
                       uint32_t key_length,
 
693
                       char *path_arg,
 
694
                       uint32_t path_length_arg) :
 
695
  table_category(TABLE_UNKNOWN_CATEGORY),
 
696
  open_count(0),
 
697
  found_next_number_field(NULL),
 
698
  timestamp_field(NULL),
 
699
  key_info(NULL),
 
700
  blob_field(NULL),
 
701
  block_size(0),
 
702
  version(0),
 
703
  timestamp_offset(0),
 
704
  reclength(0),
 
705
  stored_rec_length(0),
 
706
  row_type(ROW_TYPE_DEFAULT),
 
707
  max_rows(0),
 
708
  table_proto(NULL),
 
709
  storage_engine(NULL),
 
710
  tmp_table(type_arg),
490
711
  ref_count(0),
491
712
  null_bytes(0),
492
713
  last_null_bit_pos(0),
575
796
  newed= true;
576
797
}
577
798
 
 
799
void TableShare::init(const char *key,
 
800
                      uint32_t key_length, const char *new_table_name,
 
801
                      const char *new_path)
 
802
{
 
803
  memory::init_sql_alloc(&mem_root, TABLE_ALLOC_BLOCK_SIZE, 0);
 
804
  table_category=         TABLE_CATEGORY_TEMPORARY;
 
805
  tmp_table=              message::Table::INTERNAL;
 
806
  db.str=                 (char*) key;
 
807
  db.length=             strlen(key);
 
808
  table_cache_key.str=    (char*) key;
 
809
  table_cache_key.length= key_length;
 
810
  table_name.str=         (char*) new_table_name;
 
811
  table_name.length=      strlen(new_table_name);
 
812
  path.str=               (char*) new_path;
 
813
  normalized_path.str=    (char*) new_path;
 
814
  path.length= normalized_path.length= strlen(new_path);
 
815
}
 
816
 
578
817
int TableShare::inner_parse_table_proto(Session& session, message::Table &table)
579
818
{
580
819
  int local_error= 0;