~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/item/create.cc

  • Committer: Olaf van der Spek
  • Date: 2011-06-27 11:27:18 UTC
  • mto: This revision was merged to the branch mainline in revision 2350.
  • Revision ID: olafvdspek@gmail.com-20110627112718-fho02gkimtg3h7jv
Refactor

Show diffs side-by-side

added added

removed removed

Lines of Context:
1049
1049
{
1050
1050
  if (params)
1051
1051
  {
1052
 
    Item *param;
1053
1052
    List<Item>::iterator it(params->begin());
1054
 
    while ((param= it++))
 
1053
    while (Item* param= it++)
1055
1054
    {
1056
1055
      if (! param->is_autogenerated_name)
1057
1056
        return true;
1083
1082
  if (item_list != NULL)
1084
1083
    arg_count= item_list->size();
1085
1084
 
1086
 
  func= (*udf)(session->mem_root);
 
1085
  func= (*udf)(&session->mem);
1087
1086
 
1088
1087
  if(!func->check_argument_count(arg_count))
1089
1088
  {
1217
1216
Item*
1218
1217
Create_func_bin::create(Session *session, Item *arg1)
1219
1218
{
1220
 
  Item *i10= new (session->mem_root) Item_int((int32_t) 10,2);
1221
 
  Item *i2= new (session->mem_root) Item_int((int32_t) 2,1);
1222
 
  return new (session->mem_root) Item_func_conv(arg1, i10, i2);
 
1219
  Item *i10= new (session->mem) Item_int((int32_t) 10,2);
 
1220
  Item *i2= new (session->mem) Item_int((int32_t) 2,1);
 
1221
  return new (session->mem) Item_func_conv(arg1, i10, i2);
1223
1222
}
1224
1223
 
1225
1224
Create_func_concat Create_func_concat::s_singleton;
1239
1238
    return NULL;
1240
1239
  }
1241
1240
 
1242
 
  return new (session->mem_root) Item_func_concat(*session, *item_list);
 
1241
  return new (session->mem) Item_func_concat(*session, *item_list);
1243
1242
}
1244
1243
 
1245
1244
 
1261
1260
    return NULL;
1262
1261
  }
1263
1262
 
1264
 
  return new (session->mem_root) Item_func_concat_ws(*session, *item_list);
 
1263
  return new (session->mem) Item_func_concat_ws(*session, *item_list);
1265
1264
}
1266
1265
 
1267
1266
 
1270
1269
Item*
1271
1270
Create_func_conv::create(Session *session, Item *arg1, Item *arg2, Item *arg3)
1272
1271
{
1273
 
  return new (session->mem_root) Item_func_conv(arg1, arg2, arg3);
 
1272
  return new (session->mem) Item_func_conv(arg1, arg2, arg3);
1274
1273
}
1275
1274
 
1276
1275
Create_func_cot Create_func_cot::s_singleton;
1278
1277
Item*
1279
1278
Create_func_cot::create(Session *session, Item *arg1)
1280
1279
{
1281
 
  Item *i1= new (session->mem_root) Item_int((char*) "1", 1, 1);
1282
 
  Item *i2= new (session->mem_root) Item_func_tan(arg1);
1283
 
  return new (session->mem_root) Item_func_div(session, i1, i2);
 
1280
  Item *i1= new (session->mem) Item_int((char*) "1", 1, 1);
 
1281
  Item *i2= new (session->mem) Item_func_tan(arg1);
 
1282
  return new (session->mem) Item_func_div(session, i1, i2);
1284
1283
}
1285
1284
 
1286
1285
Create_func_date_format Create_func_date_format::s_singleton;
1288
1287
Item*
1289
1288
Create_func_date_format::create(Session *session, Item *arg1, Item *arg2)
1290
1289
{
1291
 
  return new (session->mem_root) Item_func_date_format(arg1, arg2, 0);
 
1290
  return new (session->mem) Item_func_date_format(arg1, arg2, 0);
1292
1291
}
1293
1292
 
1294
1293
 
1297
1296
Item*
1298
1297
Create_func_datediff::create(Session *session, Item *arg1, Item *arg2)
1299
1298
{
1300
 
  Item *i1= new (session->mem_root) Item_func_to_days(arg1);
1301
 
  Item *i2= new (session->mem_root) Item_func_to_days(arg2);
 
1299
  Item *i1= new (session->mem) Item_func_to_days(arg1);
 
1300
  Item *i2= new (session->mem) Item_func_to_days(arg2);
1302
1301
 
1303
 
  return new (session->mem_root) Item_func_minus(i1, i2);
 
1302
  return new (session->mem) Item_func_minus(i1, i2);
1304
1303
}
1305
1304
 
1306
1305
 
1309
1308
Item*
1310
1309
Create_func_dayname::create(Session *session, Item *arg1)
1311
1310
{
1312
 
  return new (session->mem_root) Item_func_dayname(arg1);
 
1311
  return new (session->mem) Item_func_dayname(arg1);
1313
1312
}
1314
1313
 
1315
1314
 
1318
1317
Item*
1319
1318
Create_func_dayofmonth::create(Session *session, Item *arg1)
1320
1319
{
1321
 
  return new (session->mem_root) Item_func_dayofmonth(arg1);
 
1320
  return new (session->mem) Item_func_dayofmonth(arg1);
1322
1321
}
1323
1322
 
1324
1323
 
1327
1326
Item*
1328
1327
Create_func_dayofweek::create(Session *session, Item *arg1)
1329
1328
{
1330
 
  return new (session->mem_root) Item_func_weekday(arg1, 1);
 
1329
  return new (session->mem) Item_func_weekday(arg1, 1);
1331
1330
}
1332
1331
 
1333
1332
 
1336
1335
Item*
1337
1336
Create_func_dayofyear::create(Session *session, Item *arg1)
1338
1337
{
1339
 
  return new (session->mem_root) Item_func_dayofyear(arg1);
 
1338
  return new (session->mem) Item_func_dayofyear(arg1);
1340
1339
}
1341
1340
 
1342
1341
 
1345
1344
Item*
1346
1345
Create_func_degrees::create(Session *session, Item *arg1)
1347
1346
{
1348
 
  return new (session->mem_root) Item_func_units((char*) "degrees", arg1,
 
1347
  return new (session->mem) Item_func_units((char*) "degrees", arg1,
1349
1348
                                             180/M_PI, 0.0);
1350
1349
}
1351
1350
 
1367
1366
    Item *param_1= item_list->pop();
1368
1367
    Item *param_2= item_list->pop();
1369
1368
    Item *param_3= item_list->pop();
1370
 
    func= new (session->mem_root) Item_func_export_set(param_1, param_2, param_3);
 
1369
    func= new (session->mem) Item_func_export_set(param_1, param_2, param_3);
1371
1370
    break;
1372
1371
  }
1373
1372
  case 4:
1376
1375
    Item *param_2= item_list->pop();
1377
1376
    Item *param_3= item_list->pop();
1378
1377
    Item *param_4= item_list->pop();
1379
 
    func= new (session->mem_root) Item_func_export_set(param_1, param_2, param_3,
 
1378
    func= new (session->mem) Item_func_export_set(param_1, param_2, param_3,
1380
1379
                                                   param_4);
1381
1380
    break;
1382
1381
  }
1387
1386
    Item *param_3= item_list->pop();
1388
1387
    Item *param_4= item_list->pop();
1389
1388
    Item *param_5= item_list->pop();
1390
 
    func= new (session->mem_root) Item_func_export_set(param_1, param_2, param_3,
 
1389
    func= new (session->mem) Item_func_export_set(param_1, param_2, param_3,
1391
1390
                                                   param_4, param_5);
1392
1391
    break;
1393
1392
  }
1419
1418
    return NULL;
1420
1419
  }
1421
1420
 
1422
 
  return new (session->mem_root) Item_func_field(*item_list);
 
1421
  return new (session->mem) Item_func_field(*item_list);
1423
1422
}
1424
1423
 
1425
1424
 
1428
1427
Item*
1429
1428
Create_func_find_in_set::create(Session *session, Item *arg1, Item *arg2)
1430
1429
{
1431
 
  return new (session->mem_root) Item_func_find_in_set(arg1, arg2);
 
1430
  return new (session->mem) Item_func_find_in_set(arg1, arg2);
1432
1431
}
1433
1432
 
1434
1433
Create_func_found_rows Create_func_found_rows::s_singleton;
1436
1435
Item*
1437
1436
Create_func_found_rows::create(Session *session)
1438
1437
{
1439
 
  return new (session->mem_root) Item_func_found_rows();
 
1438
  return new (session->mem) Item_func_found_rows();
1440
1439
}
1441
1440
 
1442
1441
 
1445
1444
Item*
1446
1445
Create_func_from_days::create(Session *session, Item *arg1)
1447
1446
{
1448
 
  return new (session->mem_root) Item_func_from_days(arg1);
 
1447
  return new (session->mem) Item_func_from_days(arg1);
1449
1448
}
1450
1449
 
1451
1450
 
1465
1464
  case 1:
1466
1465
  {
1467
1466
    Item *param_1= item_list->pop();
1468
 
    func= new (session->mem_root) Item_func_from_unixtime(param_1);
 
1467
    func= new (session->mem) Item_func_from_unixtime(param_1);
1469
1468
    break;
1470
1469
  }
1471
1470
  case 2:
1472
1471
  {
1473
1472
    Item *param_1= item_list->pop();
1474
1473
    Item *param_2= item_list->pop();
1475
 
    Item *ut= new (session->mem_root) Item_func_from_unixtime(param_1);
1476
 
    func= new (session->mem_root) Item_func_date_format(ut, param_2, 0);
 
1474
    Item *ut= new (session->mem) Item_func_from_unixtime(param_1);
 
1475
    func= new (session->mem) Item_func_date_format(ut, param_2, 0);
1477
1476
    break;
1478
1477
  }
1479
1478
  default:
1504
1503
    return NULL;
1505
1504
  }
1506
1505
 
1507
 
  return new (session->mem_root) Item_func_max(*item_list);
 
1506
  return new (session->mem) Item_func_max(*item_list);
1508
1507
}
1509
1508
 
1510
1509
Create_func_ifnull Create_func_ifnull::s_singleton;
1512
1511
Item*
1513
1512
Create_func_ifnull::create(Session *session, Item *arg1, Item *arg2)
1514
1513
{
1515
 
  return new (session->mem_root) Item_func_ifnull(arg1, arg2);
 
1514
  return new (session->mem) Item_func_ifnull(arg1, arg2);
1516
1515
}
1517
1516
 
1518
1517
 
1521
1520
Item*
1522
1521
Create_func_instr::create(Session *session, Item *arg1, Item *arg2)
1523
1522
{
1524
 
  return new (session->mem_root) Item_func_locate(arg1, arg2);
 
1523
  return new (session->mem) Item_func_locate(arg1, arg2);
1525
1524
}
1526
1525
 
1527
1526
 
1530
1529
Item*
1531
1530
Create_func_isnull::create(Session *session, Item *arg1)
1532
1531
{
1533
 
  return new (session->mem_root) Item_func_isnull(arg1);
 
1532
  return new (session->mem) Item_func_isnull(arg1);
1534
1533
}
1535
1534
 
1536
1535
 
1539
1538
Item*
1540
1539
Create_func_last_day::create(Session *session, Item *arg1)
1541
1540
{
1542
 
  return new (session->mem_root) Item_func_last_day(arg1);
 
1541
  return new (session->mem) Item_func_last_day(arg1);
1543
1542
}
1544
1543
 
1545
1544
 
1558
1557
  switch (arg_count) {
1559
1558
  case 0:
1560
1559
  {
1561
 
    func= new (session->mem_root) Item_func_last_insert_id();
 
1560
    func= new (session->mem) Item_func_last_insert_id();
1562
1561
    break;
1563
1562
  }
1564
1563
  case 1:
1565
1564
  {
1566
1565
    Item *param_1= item_list->pop();
1567
 
    func= new (session->mem_root) Item_func_last_insert_id(param_1);
 
1566
    func= new (session->mem) Item_func_last_insert_id(param_1);
1568
1567
    break;
1569
1568
  }
1570
1569
  default:
1583
1582
Item*
1584
1583
Create_func_lcase::create(Session *session, Item *arg1)
1585
1584
{
1586
 
  return new (session->mem_root) Item_func_lcase(arg1);
 
1585
  return new (session->mem) Item_func_lcase(arg1);
1587
1586
}
1588
1587
 
1589
1588
 
1604
1603
    return NULL;
1605
1604
  }
1606
1605
 
1607
 
  return new (session->mem_root) Item_func_min(*item_list);
 
1606
  return new (session->mem) Item_func_min(*item_list);
1608
1607
}
1609
1608
 
1610
1609
Create_func_load_file Create_func_load_file::s_singleton;
1612
1611
Item*
1613
1612
Create_func_load_file::create(Session *session, Item *arg1)
1614
1613
{
1615
 
  return new (session->mem_root) Item_load_file(*session, arg1);
 
1614
  return new (session->mem) Item_load_file(*session, arg1);
1616
1615
}
1617
1616
 
1618
1617
 
1634
1633
    Item *param_1= item_list->pop();
1635
1634
    Item *param_2= item_list->pop();
1636
1635
    /* Yes, parameters in that order : 2, 1 */
1637
 
    func= new (session->mem_root) Item_func_locate(param_2, param_1);
 
1636
    func= new (session->mem) Item_func_locate(param_2, param_1);
1638
1637
    break;
1639
1638
  }
1640
1639
  case 3:
1643
1642
    Item *param_2= item_list->pop();
1644
1643
    Item *param_3= item_list->pop();
1645
1644
    /* Yes, parameters in that order : 2, 1, 3 */
1646
 
    func= new (session->mem_root) Item_func_locate(param_2, param_1, param_3);
 
1645
    func= new (session->mem) Item_func_locate(param_2, param_1, param_3);
1647
1646
    break;
1648
1647
  }
1649
1648
  default:
1661
1660
Item*
1662
1661
Create_func_lpad::create(Session *session, Item *arg1, Item *arg2, Item *arg3)
1663
1662
{
1664
 
  return new (session->mem_root) Item_func_lpad(*session, arg1, arg2, arg3);
 
1663
  return new (session->mem) Item_func_lpad(*session, arg1, arg2, arg3);
1665
1664
}
1666
1665
 
1667
1666
 
1670
1669
Item*
1671
1670
Create_func_ltrim::create(Session *session, Item *arg1)
1672
1671
{
1673
 
  return new (session->mem_root) Item_func_ltrim(arg1);
 
1672
  return new (session->mem) Item_func_ltrim(arg1);
1674
1673
}
1675
1674
 
1676
1675
 
1679
1678
Item*
1680
1679
Create_func_makedate::create(Session *session, Item *arg1, Item *arg2)
1681
1680
{
1682
 
  return new (session->mem_root) Item_func_makedate(arg1, arg2);
 
1681
  return new (session->mem) Item_func_makedate(arg1, arg2);
1683
1682
}
1684
1683
 
1685
1684
 
1701
1700
  }
1702
1701
 
1703
1702
  Item *param_1= item_list->pop();
1704
 
  return new (session_arg->mem_root) Item_func_make_set(*session_arg, param_1, *item_list);
 
1703
  return new (session_arg->mem) Item_func_make_set(*session_arg, param_1, *item_list);
1705
1704
}
1706
1705
 
1707
1706
 
1710
1709
Item*
1711
1710
Create_func_monthname::create(Session *session, Item *arg1)
1712
1711
{
1713
 
  return new (session->mem_root) Item_func_monthname(arg1);
 
1712
  return new (session->mem) Item_func_monthname(arg1);
1714
1713
}
1715
1714
 
1716
1715
 
1719
1718
Item*
1720
1719
Create_func_nullif::create(Session *session, Item *arg1, Item *arg2)
1721
1720
{
1722
 
  return new (session->mem_root) Item_func_nullif(arg1, arg2);
 
1721
  return new (session->mem) Item_func_nullif(arg1, arg2);
1723
1722
}
1724
1723
 
1725
1724
 
1728
1727
Item*
1729
1728
Create_func_oct::create(Session *session, Item *arg1)
1730
1729
{
1731
 
  Item *i10= new (session->mem_root) Item_int((int32_t) 10,2);
1732
 
  Item *i8= new (session->mem_root) Item_int((int32_t) 8,1);
1733
 
  return new (session->mem_root) Item_func_conv(arg1, i10, i8);
 
1730
  Item *i10= new (session->mem) Item_int((int32_t) 10,2);
 
1731
  Item *i8= new (session->mem) Item_int((int32_t) 8,1);
 
1732
  return new (session->mem) Item_func_conv(arg1, i10, i8);
1734
1733
}
1735
1734
 
1736
1735
Create_func_period_add Create_func_period_add::s_singleton;
1738
1737
Item*
1739
1738
Create_func_period_add::create(Session *session, Item *arg1, Item *arg2)
1740
1739
{
1741
 
  return new (session->mem_root) Item_func_period_add(arg1, arg2);
 
1740
  return new (session->mem) Item_func_period_add(arg1, arg2);
1742
1741
}
1743
1742
 
1744
1743
 
1747
1746
Item*
1748
1747
Create_func_period_diff::create(Session *session, Item *arg1, Item *arg2)
1749
1748
{
1750
 
  return new (session->mem_root) Item_func_period_diff(arg1, arg2);
 
1749
  return new (session->mem) Item_func_period_diff(arg1, arg2);
1751
1750
}
1752
1751
 
1753
1752
 
1756
1755
Item*
1757
1756
Create_func_pi::create(Session *session)
1758
1757
{
1759
 
  return new (session->mem_root) Item_static_float_func("pi()", M_PI, 6, 8);
 
1758
  return new (session->mem) Item_static_float_func("pi()", M_PI, 6, 8);
1760
1759
}
1761
1760
 
1762
1761
Create_func_radians Create_func_radians::s_singleton;
1764
1763
Item*
1765
1764
Create_func_radians::create(Session *session, Item *arg1)
1766
1765
{
1767
 
  return new (session->mem_root) Item_func_units((char*) "radians", arg1,
 
1766
  return new (session->mem) Item_func_units((char*) "radians", arg1,
1768
1767
                                             M_PI/180, 0.0);
1769
1768
}
1770
1769
 
1784
1783
  case 1:
1785
1784
  {
1786
1785
    Item *param_1= item_list->pop();
1787
 
    Item *i0 = new (session->mem_root) Item_int((char*)"0", 0, 1);
1788
 
    func= new (session->mem_root) Item_func_round(param_1, i0, 0);
 
1786
    Item *i0 = new (session->mem) Item_int((char*)"0", 0, 1);
 
1787
    func= new (session->mem) Item_func_round(param_1, i0, 0);
1789
1788
    break;
1790
1789
  }
1791
1790
  case 2:
1792
1791
  {
1793
1792
    Item *param_1= item_list->pop();
1794
1793
    Item *param_2= item_list->pop();
1795
 
    func= new (session->mem_root) Item_func_round(param_1, param_2, 0);
 
1794
    func= new (session->mem) Item_func_round(param_1, param_2, 0);
1796
1795
    break;
1797
1796
  }
1798
1797
  default:
1811
1810
Item*
1812
1811
Create_func_row_count::create(Session *session)
1813
1812
{
1814
 
  return new (session->mem_root) Item_func_row_count();
 
1813
  return new (session->mem) Item_func_row_count();
1815
1814
}
1816
1815
 
1817
1816
 
1820
1819
Item*
1821
1820
Create_func_rpad::create(Session *session, Item *arg1, Item *arg2, Item *arg3)
1822
1821
{
1823
 
  return new (session->mem_root) Item_func_rpad(*session, arg1, arg2, arg3);
 
1822
  return new (session->mem) Item_func_rpad(*session, arg1, arg2, arg3);
1824
1823
}
1825
1824
 
1826
1825
 
1829
1828
Item*
1830
1829
Create_func_rtrim::create(Session *session, Item *arg1)
1831
1830
{
1832
 
  return new (session->mem_root) Item_func_rtrim(arg1);
 
1831
  return new (session->mem) Item_func_rtrim(arg1);
1833
1832
}
1834
1833
 
1835
1834
 
1838
1837
Item*
1839
1838
Create_func_sign::create(Session *session, Item *arg1)
1840
1839
{
1841
 
  return new (session->mem_root) Item_func_sign(arg1);
 
1840
  return new (session->mem) Item_func_sign(arg1);
1842
1841
}
1843
1842
 
1844
1843
Create_func_space Create_func_space::s_singleton;
1856
1855
 
1857
1856
  if (cs->mbminlen > 1)
1858
1857
  {
1859
 
    sp= new (session->mem_root) Item_string("", 0, cs, DERIVATION_COERCIBLE);
 
1858
    sp= new (session->mem) Item_string("", 0, cs, DERIVATION_COERCIBLE);
1860
1859
    sp->str_value.copy(" ", 1, cs);
1861
1860
  }
1862
1861
  else
1863
1862
  {
1864
 
    sp= new (session->mem_root) Item_string(" ", 1, cs, DERIVATION_COERCIBLE);
 
1863
    sp= new (session->mem) Item_string(" ", 1, cs, DERIVATION_COERCIBLE);
1865
1864
  }
1866
1865
 
1867
 
  return new (session->mem_root) Item_func_repeat(*session, sp, arg1);
 
1866
  return new (session->mem) Item_func_repeat(*session, sp, arg1);
1868
1867
}
1869
1868
 
1870
1869
Create_func_strcmp Create_func_strcmp::s_singleton;
1872
1871
Item*
1873
1872
Create_func_strcmp::create(Session *session, Item *arg1, Item *arg2)
1874
1873
{
1875
 
  return new (session->mem_root) Item_func_strcmp(arg1, arg2);
 
1874
  return new (session->mem) Item_func_strcmp(arg1, arg2);
1876
1875
}
1877
1876
 
1878
1877
 
1881
1880
Item*
1882
1881
Create_func_tan::create(Session *session, Item *arg1)
1883
1882
{
1884
 
  return new (session->mem_root) Item_func_tan(arg1);
 
1883
  return new (session->mem) Item_func_tan(arg1);
1885
1884
}
1886
1885
 
1887
1886
 
1890
1889
Item*
1891
1890
Create_func_time_format::create(Session *session, Item *arg1, Item *arg2)
1892
1891
{
1893
 
  return new (session->mem_root) Item_func_date_format(arg1, arg2, 1);
 
1892
  return new (session->mem) Item_func_date_format(arg1, arg2, 1);
1894
1893
}
1895
1894
 
1896
1895
Create_func_to_days Create_func_to_days::s_singleton;
1898
1897
Item*
1899
1898
Create_func_to_days::create(Session *session, Item *arg1)
1900
1899
{
1901
 
  return new (session->mem_root) Item_func_to_days(arg1);
 
1900
  return new (session->mem) Item_func_to_days(arg1);
1902
1901
}
1903
1902
 
1904
1903
 
1907
1906
Item*
1908
1907
Create_func_ucase::create(Session *session, Item *arg1)
1909
1908
{
1910
 
  return new (session->mem_root) Item_func_ucase(arg1);
 
1909
  return new (session->mem) Item_func_ucase(arg1);
1911
1910
}
1912
1911
 
1913
1912
Create_func_unix_timestamp Create_func_unix_timestamp::s_singleton;
1925
1924
  switch (arg_count) {
1926
1925
  case 0:
1927
1926
  {
1928
 
    func= new (session->mem_root) Item_func_unix_timestamp();
 
1927
    func= new (session->mem) Item_func_unix_timestamp();
1929
1928
    break;
1930
1929
  }
1931
1930
  case 1:
1932
1931
  {
1933
1932
    Item *param_1= item_list->pop();
1934
 
    func= new (session->mem_root) Item_func_unix_timestamp(param_1);
 
1933
    func= new (session->mem) Item_func_unix_timestamp(param_1);
1935
1934
    break;
1936
1935
  }
1937
1936
  default:
1950
1949
Item*
1951
1950
Create_func_weekday::create(Session *session, Item *arg1)
1952
1951
{
1953
 
  return new (session->mem_root) Item_func_weekday(arg1, 0);
 
1952
  return new (session->mem) Item_func_weekday(arg1, 0);
1954
1953
}
1955
1954
 
1956
1955
struct Native_func_registry
2047
2046
 
2048
2047
Item* create_func_char_cast(Session *session, Item *a, int len, const charset_info_st * const cs)
2049
2048
{
2050
 
  return new (session->mem_root) Item_char_typecast(a, len, cs ? cs : session->variables.getCollation());
 
2049
  return new (session->mem) Item_char_typecast(a, len, cs ? cs : session->variables.getCollation());
2051
2050
}
2052
2051
 
2053
2052
Item* create_func_cast(Session *session, Item *a, Cast_target cast_type,
2060
2059
 
2061
2060
  switch (cast_type) {
2062
2061
  case ITEM_CAST_SIGNED:
2063
 
    res= new (session->mem_root) function::cast::Signed(a);
 
2062
    res= new (session->mem) function::cast::Signed(a);
2064
2063
    break;
2065
2064
 
2066
2065
  case ITEM_CAST_UNSIGNED:
2067
 
    res= new (session->mem_root) function::cast::Unsigned(a);
 
2066
    res= new (session->mem) function::cast::Unsigned(a);
2068
2067
    break;
2069
2068
 
2070
2069
  case ITEM_CAST_BINARY:
2071
 
    res= new (session->mem_root) Item_func_binary(a);
 
2070
    res= new (session->mem) Item_func_binary(a);
2072
2071
    break;
2073
2072
 
2074
2073
  case ITEM_CAST_BOOLEAN:
2075
 
    res= new (session->mem_root) function::cast::Boolean(a);
 
2074
    res= new (session->mem) function::cast::Boolean(a);
2076
2075
    break;
2077
2076
 
2078
2077
  case ITEM_CAST_TIME:
2079
 
    res= new (session->mem_root) function::cast::Time(a);
 
2078
    res= new (session->mem) function::cast::Time(a);
2080
2079
    break;
2081
2080
 
2082
2081
  case ITEM_CAST_DATE:
2083
 
    res= new (session->mem_root) Item_date_typecast(a);
 
2082
    res= new (session->mem) Item_date_typecast(a);
2084
2083
    break;
2085
2084
 
2086
2085
  case ITEM_CAST_DATETIME:
2087
 
    res= new (session->mem_root) Item_datetime_typecast(a);
 
2086
    res= new (session->mem) Item_datetime_typecast(a);
2088
2087
    break;
2089
2088
 
2090
2089
  case ITEM_CAST_DECIMAL:
2109
2108
                 DECIMAL_MAX_SCALE);
2110
2109
        return 0;
2111
2110
      }
2112
 
      res= new (session->mem_root) Item_decimal_typecast(a, len, dec);
 
2111
      res= new (session->mem) Item_decimal_typecast(a, len, dec);
2113
2112
      break;
2114
2113
    }
2115
2114
  case ITEM_CAST_CHAR: