~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/item.cc

  • Committer: Mark Atwood
  • Date: 2011-07-07 02:23:07 UTC
  • mfrom: (2318.6.116 refactor18)
  • Revision ID: me@mark.atwood.name-20110707022307-4db00nqaaczzc3jv
mergeĀ lp:~olafvdspek/drizzle/refactor18

Show diffs side-by-side

added added

removed removed

Lines of Context:
284
284
  is_expensive_cache(-1),
285
285
  name(0), 
286
286
  name_length(0),
287
 
  orig_name(0), 
288
287
  max_length(0), 
289
288
  marker(0),
290
289
  decimals(0),
322
321
  str_value(item->str_value),
323
322
  name(item->name),
324
323
  name_length(item->name_length),
325
 
  orig_name(item->orig_name),
326
324
  max_length(item->max_length),
327
325
  marker(item->marker),
328
326
  decimals(item->decimals),
385
383
{
386
384
  fixed= false;
387
385
  marker= 0;
388
 
  if (orig_name)
389
 
    name= orig_name;
390
 
  return;
391
 
}
392
 
 
393
 
void Item::rename(char *new_name)
394
 
{
395
 
  /*
396
 
    we can compare pointers to names here, because if name was not changed,
397
 
    pointer will be same
398
 
  */
399
 
  if (! orig_name && new_name != name)
400
 
    orig_name= name;
401
 
  name= new_name;
402
386
}
403
387
 
404
388
Item* Item::transform(Item_transformer transformer, unsigned char *arg)
628
612
  return false;
629
613
}
630
614
 
631
 
bool Item::remove_fixed(unsigned char *)
632
 
{
633
 
  fixed= false;
634
 
  return false;
635
 
}
636
 
 
637
615
bool Item::collect_item_field_processor(unsigned char *)
638
616
{
639
617
  return false;
1422
1400
  return max_length / collation.collation->mbmaxlen;
1423
1401
}
1424
1402
 
1425
 
void Item::fix_length_and_charset(uint32_t max_char_length_arg, charset_info_st *cs)
1426
 
1427
 
  max_length= char_to_byte_length_safe(max_char_length_arg, cs->mbmaxlen);
1428
 
  collation.collation= cs;
1429
 
}
1430
 
 
1431
1403
void Item::fix_char_length(uint32_t max_char_length_arg)
1432
1404
1433
1405
  max_length= char_to_byte_length_safe(max_char_length_arg, collation.collation->mbmaxlen);
1434
1406
}
1435
1407
 
1436
 
void Item::fix_char_length_uint64_t(uint64_t max_char_length_arg)
1437
 
1438
 
  uint64_t max_result_length= max_char_length_arg *
1439
 
    collation.collation->mbmaxlen;
1440
 
 
1441
 
  if (max_result_length >= MAX_BLOB_WIDTH)
1442
 
  { 
1443
 
    max_length= MAX_BLOB_WIDTH;
1444
 
    maybe_null= false;
1445
 
  }
1446
 
  else
1447
 
  {
1448
 
    max_length= max_result_length;
1449
 
  }
1450
 
}
1451
 
 
1452
 
void Item::fix_length_and_charset_datetime(uint32_t max_char_length_arg)
1453
 
1454
 
  collation.set(&my_charset_bin);
1455
 
  fix_char_length(max_char_length_arg);
1456
 
}
1457
 
 
1458
1408
Item_result item_cmp_type(Item_result a,Item_result b)
1459
1409
{
1460
1410
  if (a == STRING_RESULT && b == STRING_RESULT)
1478
1428
  Item *new_item= NULL;
1479
1429
  if (item->basic_const_item())
1480
1430
    return; /* Can't be better */
1481
 
  Item_result res_type=item_cmp_type(comp_item->result_type(),
1482
 
                                     item->result_type());
1483
 
  char *name=item->name; /* Alloced by memory::sql_alloc */
 
1431
  Item_result res_type=item_cmp_type(comp_item->result_type(), item->result_type());
 
1432
  const char *name=item->name; /* Alloced by memory::sql_alloc */
1484
1433
 
1485
 
  switch (res_type) {
 
1434
  switch (res_type) 
 
1435
  {
1486
1436
  case STRING_RESULT:
1487
1437
    {
1488
1438
      char buff[MAX_FIELD_WIDTH];