~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/item.h

  • Committer: Eric Herman
  • Date: 2008-12-06 19:42:46 UTC
  • mto: (656.1.6 devel)
  • mto: This revision was merged to the branch mainline in revision 665.
  • Revision ID: eric@mysql.com-20081206194246-5cdexuu81i366eek
removed trailing whitespace with simple script:

for file in $(find . -name "*.c") $(find . -name "*.cc") $(find . -name "*.h"); do ruby -pe 'gsub(/\s+$/, $/)' < $file > $file.out; mv $file.out $file; done;

Show diffs side-by-side

added added

removed removed

Lines of Context:
77
77
 
78
78
public:
79
79
 
80
 
  enum Type {FIELD_ITEM= 0, 
 
80
  enum Type {FIELD_ITEM= 0,
81
81
    FUNC_ITEM,
82
82
    SUM_FUNC_ITEM,
83
83
    STRING_ITEM,
617
617
class Item_ident :public Item
618
618
{
619
619
protected:
620
 
  /* 
 
620
  /*
621
621
    We have to store initial values of db_name, table_name and field_name
622
 
    to be able to restore them during cleanup() because they can be 
623
 
    updated during fix_fields() to values from Field object and life-time 
 
622
    to be able to restore them during cleanup() because they can be
 
623
    updated during fix_fields() to values from Field object and life-time
624
624
    of those is shorter than life-time of Item_field.
625
625
  */
626
626
  const char *orig_db_name;
633
633
  const char *table_name;
634
634
  const char *field_name;
635
635
  bool alias_name_used; /* true if item was resolved against alias */
636
 
  /* 
637
 
    Cached value of index for this field in table->field array, used by prep. 
 
636
  /*
 
637
    Cached value of index for this field in table->field array, used by prep.
638
638
    stmts for speeding up their re-execution. Holds NO_CACHED_FIELD_INDEX
639
639
    if index value is not known.
640
640
  */
826
826
  }
827
827
  bool check_vcol_func_processor(unsigned char *)
828
828
  { return true; }
829
 
};  
 
829
};
830
830
 
831
831
/* Item represents one placeholder ('?') of prepared statement */
832
832
 
1190
1190
  enum_field_types field_type() const { return DRIZZLE_TYPE_VARCHAR; }
1191
1191
  bool basic_const_item() const { return 1; }
1192
1192
  bool eq(const Item *item, bool binary_cmp) const;
1193
 
  Item *clone_item() 
 
1193
  Item *clone_item()
1194
1194
  {
1195
 
    return new Item_string(name, str_value.ptr(), 
 
1195
    return new Item_string(name, str_value.ptr(),
1196
1196
                           str_value.length(), collation.collation);
1197
1197
  }
1198
1198
  Item *safe_charset_converter(const CHARSET_INFO * const tocs);
1330
1330
  Item_hex_string(const char *str,uint32_t str_length);
1331
1331
  enum Type type() const { return VARBIN_ITEM; }
1332
1332
  double val_real()
1333
 
  { 
1334
 
    assert(fixed == 1); 
 
1333
  {
 
1334
    assert(fixed == 1);
1335
1335
    return (double) (uint64_t) Item_hex_string::val_int();
1336
1336
  }
1337
1337
  int64_t val_int();
1400
1400
    This constructor is used in two scenarios:
1401
1401
    A) *item = NULL
1402
1402
      No initialization is performed, fix_fields() call will be necessary.
1403
 
      
1404
 
    B) *item points to an Item this Item_ref will refer to. This is 
 
1403
 
 
1404
    B) *item points to an Item this Item_ref will refer to. This is
1405
1405
      used for GROUP BY. fix_fields() will not be called in this case,
1406
1406
      so we call set_properties to make this item "fixed". set_properties
1407
1407
      performs a subset of action Item_ref::fix_fields does, and this subset
1408
1408
      is enough for Item_ref's used in GROUP BY.
1409
 
    
1410
 
    TODO we probably fix a superset of problems like in BUG#6658. Check this 
 
1409
 
 
1410
    TODO we probably fix a superset of problems like in BUG#6658. Check this
1411
1411
         with Bar, and if we have a more broader set of problems like this.
1412
1412
  */
1413
1413
  Item_ref(Name_resolution_context *context_arg, Item **item,
1419
1419
    :Item_ident(session, item), result_field(item->result_field), ref(item->ref) {}
1420
1420
  enum Type type() const                { return REF_ITEM; }
1421
1421
  bool eq(const Item *item, bool binary_cmp) const
1422
 
  { 
 
1422
  {
1423
1423
    Item *it= ((Item *) item)->real_item();
1424
1424
    return ref && (*ref)->eq(it, binary_cmp);
1425
1425
  }
1446
1446
  Field *get_tmp_table_field()
1447
1447
  { return result_field ? result_field : (*ref)->get_tmp_table_field(); }
1448
1448
  Item *get_tmp_table_item(Session *session);
1449
 
  table_map used_tables() const         
 
1449
  table_map used_tables() const
1450
1450
  {
1451
 
    return depended_from ? OUTER_REF_TABLE_BIT : (*ref)->used_tables(); 
 
1451
    return depended_from ? OUTER_REF_TABLE_BIT : (*ref)->used_tables();
1452
1452
  }
1453
 
  void update_used_tables() 
1454
 
  { 
1455
 
    if (!depended_from) 
1456
 
      (*ref)->update_used_tables(); 
 
1453
  void update_used_tables()
 
1454
  {
 
1455
    if (!depended_from)
 
1456
      (*ref)->update_used_tables();
1457
1457
  }
1458
1458
  table_map not_null_tables() const { return (*ref)->not_null_tables(); }
1459
1459
  void set_result_field(Field *field)   { result_field= field; }
1493
1493
  }
1494
1494
  bool check_cols(uint32_t c)
1495
1495
  {
1496
 
    return ref && result_type() == ROW_RESULT ? (*ref)->check_cols(c) 
 
1496
    return ref && result_type() == ROW_RESULT ? (*ref)->check_cols(c)
1497
1497
                                              : Item::check_cols(c);
1498
1498
  }
1499
1499
  bool null_inside()
1501
1501
    return ref && result_type() == ROW_RESULT ? (*ref)->null_inside() : 0;
1502
1502
  }
1503
1503
  void bring_value()
1504
 
  { 
 
1504
  {
1505
1505
    if (ref && result_type() == ROW_RESULT)
1506
1506
      (*ref)->bring_value();
1507
1507
  }
1631
1631
  The following class is used to optimize comparing of date and bigint columns
1632
1632
  We need to save the original item ('ref') to be able to call
1633
1633
  ref->save_in_field(). This is used to create index search keys.
1634
 
  
 
1634
 
1635
1635
  An instance of Item_int_with_ref may have signed or unsigned integer value.
1636
 
  
 
1636
 
1637
1637
*/
1638
1638
 
1639
1639
class Item_int_with_ref :public Item_int
1750
1750
  {
1751
1751
    return Item_field::save_in_field(field_arg, no_conversions);
1752
1752
  }
1753
 
  /* 
 
1753
  /*
1754
1754
   We use RAND_TABLE_BIT to prevent Item_insert_value from
1755
1755
   being treated as a constant and precalculated before execution
1756
1756
  */
1772
1772
  Item *example;
1773
1773
  table_map used_table_map;
1774
1774
  /*
1775
 
    Field that this object will get value from. This is set/used by 
1776
 
    index-based subquery engines to detect and remove the equality injected 
 
1775
    Field that this object will get value from. This is set/used by
 
1776
    index-based subquery engines to detect and remove the equality injected
1777
1777
    by IN->EXISTS transformation.
1778
1778
    For all other uses of Item_cache, cached_field doesn't matter.
1779
 
  */  
 
1779
  */
1780
1780
  Field *cached_field;
1781
1781
  enum enum_field_types cached_field_type;
1782
1782
public:
1783
 
  Item_cache(): 
1784
 
    example(0), used_table_map(0), cached_field(0), cached_field_type(DRIZZLE_TYPE_VARCHAR) 
 
1783
  Item_cache():
 
1784
    example(0), used_table_map(0), cached_field(0), cached_field_type(DRIZZLE_TYPE_VARCHAR)
1785
1785
  {
1786
 
    fixed= 1; 
 
1786
    fixed= 1;
1787
1787
    null_value= 1;
1788
1788
  }
1789
1789
  Item_cache(enum_field_types field_type_arg):