37
37
#include <drizzled/functions/divide.h>
38
38
#include <drizzled/functions/int.h>
39
39
#include <drizzled/functions/int_divide.h>
40
#include <drizzled/functions/length.h>
41
#include <drizzled/functions/min_max.h>
40
42
#include <drizzled/functions/minus.h>
41
43
#include <drizzled/functions/mod.h>
42
44
#include <drizzled/functions/multiply.h>
48
50
#include <drizzled/functions/plus.h>
49
51
#include <drizzled/functions/real.h>
50
52
#include <drizzled/functions/dec.h>
53
#include <drizzled/functions/int_val.h>
54
#include <drizzled/functions/acos.h>
55
#include <drizzled/functions/asin.h>
56
#include <drizzled/functions/atan.h>
57
#include <drizzled/functions/ceiling.h>
58
#include <drizzled/functions/cos.h>
51
59
#include <drizzled/functions/exp.h>
60
#include <drizzled/functions/floor.h>
52
61
#include <drizzled/functions/ln.h>
53
62
#include <drizzled/functions/log.h>
63
#include <drizzled/functions/pow.h>
64
#include <drizzled/functions/rand.h>
65
#include <drizzled/functions/round.h>
66
#include <drizzled/functions/sin.h>
67
#include <drizzled/functions/sqrt.h>
68
#include <drizzled/functions/sign.h>
54
69
#include <drizzled/functions/signed.h>
70
#include <drizzled/functions/tan.h>
55
71
#include <drizzled/functions/unsigned.h>
57
class Item_func_sqrt :public Item_dec_func
60
Item_func_sqrt(Item *a) :Item_dec_func(a) {}
62
const char *func_name() const { return "sqrt"; }
66
class Item_func_pow :public Item_dec_func
69
Item_func_pow(Item *a,Item *b) :Item_dec_func(a,b) {}
71
const char *func_name() const { return "pow"; }
75
class Item_func_acos :public Item_dec_func
78
Item_func_acos(Item *a) :Item_dec_func(a) {}
80
const char *func_name() const { return "acos"; }
83
class Item_func_asin :public Item_dec_func
86
Item_func_asin(Item *a) :Item_dec_func(a) {}
88
const char *func_name() const { return "asin"; }
91
class Item_func_atan :public Item_dec_func
94
Item_func_atan(Item *a) :Item_dec_func(a) {}
95
Item_func_atan(Item *a,Item *b) :Item_dec_func(a,b) {}
97
const char *func_name() const { return "atan"; }
100
class Item_func_cos :public Item_dec_func
103
Item_func_cos(Item *a) :Item_dec_func(a) {}
105
const char *func_name() const { return "cos"; }
108
class Item_func_sin :public Item_dec_func
111
Item_func_sin(Item *a) :Item_dec_func(a) {}
113
const char *func_name() const { return "sin"; }
116
class Item_func_tan :public Item_dec_func
119
Item_func_tan(Item *a) :Item_dec_func(a) {}
121
const char *func_name() const { return "tan"; }
124
73
class Item_func_integer :public Item_int_func
128
77
void fix_length_and_dec();
132
class Item_func_int_val :public Item_func_num1
135
Item_func_int_val(Item *a) :Item_func_num1(a) {}
136
void fix_num_length_and_dec();
137
void find_num_type();
141
class Item_func_ceiling :public Item_func_int_val
144
Item_func_ceiling(Item *a) :Item_func_int_val(a) {}
145
const char *func_name() const { return "ceiling"; }
148
my_decimal *decimal_op(my_decimal *);
149
bool check_vcol_func_processor(unsigned char *int_arg __attribute__((unused)))
154
class Item_func_floor :public Item_func_int_val
157
Item_func_floor(Item *a) :Item_func_int_val(a) {}
158
const char *func_name() const { return "floor"; }
161
my_decimal *decimal_op(my_decimal *);
162
bool check_vcol_func_processor(unsigned char *int_arg __attribute__((unused)))
166
/* This handles round and truncate */
168
class Item_func_round :public Item_func_num1
172
Item_func_round(Item *a, Item *b, bool trunc_arg)
173
:Item_func_num1(a,b), truncate(trunc_arg) {}
174
const char *func_name() const { return truncate ? "truncate" : "round"; }
177
my_decimal *decimal_op(my_decimal *);
178
void fix_length_and_dec();
182
class Item_func_rand :public Item_real_func
184
struct rand_struct *rand;
186
Item_func_rand(Item *a) :Item_real_func(a), rand(0) {}
187
Item_func_rand() :Item_real_func() {}
189
const char *func_name() const { return "rand"; }
190
bool const_item() const { return 0; }
191
void update_used_tables();
192
bool fix_fields(THD *thd, Item **ref);
193
bool check_vcol_func_processor(unsigned char *int_arg __attribute__((unused)))
196
void seed_random (Item * val);
200
class Item_func_sign :public Item_int_func
203
Item_func_sign(Item *a) :Item_int_func(a) {}
204
const char *func_name() const { return "sign"; }
209
80
class Item_func_units :public Item_real_func
223
class Item_func_min_max :public Item_func
225
Item_result cmp_type;
228
/* TRUE <=> arguments should be compared in the DATETIME context. */
229
bool compare_as_dates;
230
/* An item used for issuing warnings while string to DATETIME conversion. */
234
enum_field_types cached_field_type;
236
Item_func_min_max(List<Item> &list,int cmp_sign_arg) :Item_func(list),
237
cmp_type(INT_RESULT), cmp_sign(cmp_sign_arg), compare_as_dates(false),
241
String *val_str(String *);
242
my_decimal *val_decimal(my_decimal *);
243
void fix_length_and_dec();
244
enum Item_result result_type () const { return cmp_type; }
245
bool result_as_int64_t() { return compare_as_dates; };
246
uint32_t cmp_datetimes(uint64_t *value);
247
enum_field_types field_type() const { return cached_field_type; }
250
class Item_func_min :public Item_func_min_max
253
Item_func_min(List<Item> &list) :Item_func_min_max(list,1) {}
254
const char *func_name() const { return "least"; }
257
class Item_func_max :public Item_func_min_max
260
Item_func_max(List<Item> &list) :Item_func_min_max(list,-1) {}
261
const char *func_name() const { return "greatest"; }
266
95
Objects of this class are used for ROLLUP queries to wrap up
267
96
each constant item referred to in GROUP BY list.