~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/table.cc

  • Committer: Brian Aker
  • Date: 2010-06-05 00:14:39 UTC
  • mto: This revision was merged to the branch mainline in revision 1592.
  • Revision ID: brian@gir-20100605001439-kn5v6oaspacx5q6l
Merge in change to getTable() to private the field objects.

Show diffs side-by-side

added added

removed removed

Lines of Context:
210
210
  for (ptr= table->getBlobField(), end=ptr + table->sizeBlobFields();
211
211
       ptr != end ;
212
212
       ptr++)
213
 
    ((Field_blob*) table->field[*ptr])->free();
 
213
  {
 
214
    ((Field_blob*) table->getField(*ptr))->free();
 
215
  }
214
216
}
215
217
 
216
218
 
910
912
  session->mem_root= table->getMemRoot();
911
913
 
912
914
  share->setFields(field_count+1);
913
 
  reg_field= table->field= share->getFields(true);
 
915
  table->setFields(share->getFields(true));
 
916
  reg_field= share->getFields(true);
914
917
  table->alias= table_alias;
915
918
  table->reginfo.lock_type=TL_WRITE;    /* Will be updated */
916
919
  table->db_stat=HA_OPEN_KEYFILE+HA_OPEN_RNDFILE;
1071
1074
      null_count= 0;
1072
1075
    }
1073
1076
  }
1074
 
  assert(fieldnr == (uint32_t) (reg_field - table->field));
1075
 
  assert(field_count >= (uint32_t) (reg_field - table->field));
 
1077
  assert(fieldnr == (uint32_t) (reg_field - table->getFields()));
 
1078
  assert(field_count >= (uint32_t) (reg_field - table->getFields()));
1076
1079
  field_count= fieldnr;
1077
1080
  *reg_field= 0;
1078
1081
  *blob_field= 0;                               // End marker
1159
1162
  }
1160
1163
  null_count= (blob_count == 0) ? 1 : 0;
1161
1164
  hidden_field_count=param->hidden_field_count;
1162
 
  for (i= 0,reg_field=table->field; i < field_count; i++,reg_field++,recinfo++)
 
1165
  for (i= 0,reg_field= table->getFields(); i < field_count; i++,reg_field++,recinfo++)
1163
1166
  {
1164
1167
    Field *field= *reg_field;
1165
1168
    uint32_t length;
1390
1393
      key_part_info++;
1391
1394
    }
1392
1395
    /* Create a distinct key over the columns we are going to return */
1393
 
    for (i=param->hidden_field_count, reg_field=table->field + i ;
 
1396
    for (i=param->hidden_field_count, reg_field=table->getFields() + i ;
1394
1397
         i < field_count;
1395
1398
         i++, reg_field++, key_part_info++)
1396
1399
    {
1490
1493
 
1491
1494
  table= share->getTable();
1492
1495
  share->setFields(field_count + 1);
1493
 
  field= table->field= share->getFields(true);
 
1496
  table->setFields(share->getFields(true));
 
1497
  field= share->getFields(true);
1494
1498
  share->blob_field.resize(field_count+1);
1495
1499
  share->fields= field_count;
1496
1500
  share->blob_ptr_size= portable_sizeof_char_ptr;
1497
1501
  table->setup_tmp_table_column_bitmaps(bitmaps);
1498
1502
 
 
1503
  table->in_use= this;           /* field->reset() may access table->in_use */
 
1504
 
1499
1505
  /* Create all fields and calculate the total length of record */
1500
1506
  List_iterator_fast<CreateField> it(field_list);
1501
1507
  while ((cdef= it++))
1519
1525
      null_count++;
1520
1526
 
1521
1527
    if ((*field)->flags & BLOB_FLAG)
1522
 
      share->blob_field[blob_count++]= (uint32_t) (field - table->field);
 
1528
      share->blob_field[blob_count++]= (uint32_t) (field - table->getFields());
1523
1529
 
1524
1530
    field++;
1525
1531
  }
1540
1546
    share->null_fields= null_count;
1541
1547
    share->null_bytes= null_pack_length;
1542
1548
  }
1543
 
 
1544
 
  table->in_use= this;           /* field->reset() may access table->in_use */
1545
1549
  {
1546
1550
    /* Set up field pointers */
1547
1551
    unsigned char *null_pos= table->record[0];
1548
1552
    unsigned char *field_pos= null_pos + share->null_bytes;
1549
1553
    uint32_t null_bit= 1;
1550
1554
 
1551
 
    for (field= table->field; *field; ++field)
 
1555
    for (field= table->getFields(); *field; ++field)
1552
1556
    {
1553
1557
      Field *cur_field= *field;
1554
1558
      if ((cur_field->flags & NOT_NULL_FLAG))
1568
1572
      field_pos+= cur_field->pack_length();
1569
1573
    }
1570
1574
  }
 
1575
 
1571
1576
  return table;
 
1577
 
1572
1578
error:
1573
 
  for (field= table->field; *field; ++field)
 
1579
  for (field= table->getFields(); *field; ++field)
 
1580
  {
1574
1581
    delete *field;                         /* just invokes field destructor */
 
1582
  }
1575
1583
  return 0;
1576
1584
}
1577
1585
 
1751
1759
 
1752
1760
  /* free blobs */
1753
1761
  for (Field **ptr= field ; *ptr ; ptr++)
 
1762
  {
1754
1763
    (*ptr)->free();
 
1764
  }
1755
1765
  free_io_cache();
1756
1766
 
1757
1767
  own_root.free_root(MYF(0)); /* the table is allocated in its own root */