17
17
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22
#include <drizzled/check_stack_overrun.h>
23
#include <drizzled/current_session.h>
24
#include <drizzled/error.h>
22
#include <drizzled/sql_string.h>
23
#include <drizzled/sql_list.h>
25
#include <drizzled/function/math/int.h>
26
#include <drizzled/field/int32.h>
27
#include <drizzled/field/int64.h>
25
28
#include <drizzled/field/decimal.h>
26
29
#include <drizzled/field/double.h>
27
#include <drizzled/field/int32.h>
28
#include <drizzled/field/int64.h>
29
30
#include <drizzled/field/size.h>
30
#include <drizzled/function/math/int.h>
31
31
#include <drizzled/session.h>
32
#include <drizzled/sql_list.h>
33
#include <drizzled/sql_string.h>
32
#include <drizzled/error.h>
33
#include <drizzled/check_stack_overrun.h>
36
35
#include <algorithm>
44
Item_func::Item_func(void):
45
_session(*current_session),
46
allowed_arg_cols(1), arg_count(0),
47
const_item_cache(false)
50
collation.set(DERIVATION_SYSCONST);
53
Item_func::Item_func(Item *a):
54
_session(*current_session),
55
allowed_arg_cols(1), arg_count(1),
56
const_item_cache(false)
60
with_sum_func= a->with_sum_func;
61
collation.set(DERIVATION_SYSCONST);
64
Item_func::Item_func(Item *a,Item *b):
65
_session(*current_session),
66
allowed_arg_cols(1), arg_count(2),
67
const_item_cache(false)
70
args[0]= a; args[1]= b;
71
with_sum_func= a->with_sum_func || b->with_sum_func;
72
collation.set(DERIVATION_SYSCONST);
75
Item_func::Item_func(Item *a,Item *b,Item *c):
76
_session(*current_session),
78
const_item_cache(false)
81
if ((args= (Item**) memory::sql_alloc(sizeof(Item*)*3)))
84
args[0]= a; args[1]= b; args[2]= c;
85
with_sum_func= a->with_sum_func || b->with_sum_func || c->with_sum_func;
87
collation.set(DERIVATION_SYSCONST);
90
Item_func::Item_func(Item *a,Item *b,Item *c,Item *d):
91
_session(*current_session),
93
const_item_cache(false)
96
if ((args= (Item**) memory::sql_alloc(sizeof(Item*)*4)))
99
args[0]= a; args[1]= b; args[2]= c; args[3]= d;
100
with_sum_func= a->with_sum_func || b->with_sum_func ||
101
c->with_sum_func || d->with_sum_func;
103
collation.set(DERIVATION_SYSCONST);
106
Item_func::Item_func(Item *a,Item *b,Item *c,Item *d,Item* e):
107
_session(*current_session),
109
const_item_cache(false)
112
if ((args= (Item**) memory::sql_alloc(sizeof(Item*)*5)))
114
args[0]= a; args[1]= b; args[2]= c; args[3]= d; args[4]= e;
115
with_sum_func= a->with_sum_func || b->with_sum_func ||
116
c->with_sum_func || d->with_sum_func || e->with_sum_func ;
118
collation.set(DERIVATION_SYSCONST);
122
43
void Item_func::set_arguments(List<Item> &list)
124
45
allowed_arg_cols= 1;
136
57
with_sum_func|=item->with_sum_func;
139
list.clear(); // Fields are used
60
list.empty(); // Fields are used
142
63
Item_func::Item_func(List<Item> &list) :
143
64
_session(*current_session),
145
const_item_cache(false)
147
67
collation.set(DERIVATION_SYSCONST);
148
68
set_arguments(list);
214
134
unsigned char buff[STACK_BUFF_ALLOC]; // Max argument in function
215
135
session->session_marker= 0;
216
136
used_tables_cache= not_null_tables_cache= 0;
217
const_item_cache= true;
219
139
if (check_stack_overrun(session, STACK_MIN_SIZE, buff))
220
140
return true; // Fatal error if flag is set!
517
bool Item_func::get_arg0_date(type::Time <ime, uint32_t fuzzy_date)
437
bool Item_func::get_arg0_date(type::Time *ltime, uint32_t fuzzy_date)
519
439
return (null_value=args[0]->get_date(ltime, fuzzy_date));
523
bool Item_func::get_arg0_time(type::Time <ime)
443
bool Item_func::get_arg0_time(type::Time *ltime)
525
445
return (null_value= args[0]->get_time(ltime));