~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/function/func.h

  • Committer: Brian Aker
  • Date: 2009-01-17 02:46:52 UTC
  • Revision ID: brian@gir-3.local-20090117024652-4ducefje08ajbs1q
Refactor append_identifier and remove dead OPTION_QUOTE_SHOW_CREATE option
(we always quote).

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
#include <drizzled/sql_list.h>
27
27
#include <drizzled/item/bin_string.h>
28
28
 
29
 
namespace drizzled
30
 
{
31
29
 
32
30
class Item_func :public Item_result_field
33
31
{
39
37
  */
40
38
  uint32_t allowed_arg_cols;
41
39
public:
42
 
 
43
 
  using Item::split_sum_func;
44
 
 
45
40
  uint32_t arg_count;
46
41
  table_map used_tables_cache, not_null_tables_cache;
47
42
  bool const_item_cache;
60
55
                       OPTIMIZE_EQUAL };
61
56
  enum Type type() const { return FUNC_ITEM; }
62
57
  virtual enum Functype functype() const   { return UNKNOWN_FUNC; }
63
 
  virtual ~Item_func() {}
64
58
  Item_func(void):
65
59
    allowed_arg_cols(1), arg_count(0)
66
60
  {
84
78
    allowed_arg_cols(1)
85
79
  {
86
80
    arg_count= 0;
87
 
    if ((args= (Item**) memory::sql_alloc(sizeof(Item*)*3)))
 
81
    if ((args= (Item**) sql_alloc(sizeof(Item*)*3)))
88
82
    {
89
83
      arg_count= 3;
90
84
      args[0]= a; args[1]= b; args[2]= c;
95
89
    allowed_arg_cols(1)
96
90
  {
97
91
    arg_count= 0;
98
 
    if ((args= (Item**) memory::sql_alloc(sizeof(Item*)*4)))
 
92
    if ((args= (Item**) sql_alloc(sizeof(Item*)*4)))
99
93
    {
100
94
      arg_count= 4;
101
95
      args[0]= a; args[1]= b; args[2]= c; args[3]= d;
107
101
    allowed_arg_cols(1)
108
102
  {
109
103
    arg_count= 5;
110
 
    if ((args= (Item**) memory::sql_alloc(sizeof(Item*)*5)))
 
104
    if ((args= (Item**) sql_alloc(sizeof(Item*)*5)))
111
105
    {
112
106
      args[0]= a; args[1]= b; args[2]= c; args[3]= d; args[4]= e;
113
107
      with_sum_func= a->with_sum_func || b->with_sum_func ||
118
112
  // Constructor used for Item_cond_and/or (see Item comment)
119
113
  Item_func(Session *session, Item_func *item);
120
114
  bool fix_fields(Session *, Item **ref);
121
 
  void fix_after_pullout(Select_Lex *new_parent, Item **ref);
 
115
  void fix_after_pullout(st_select_lex *new_parent, Item **ref);
122
116
  table_map used_tables() const;
123
117
  table_map not_null_tables() const;
124
118
  void update_used_tables();
142
136
  void set_arguments(List<Item> &list);
143
137
  uint32_t argument_count() const { return arg_count; }
144
138
  void remove_arguments() { arg_count=0; }
145
 
 
146
 
  /**
147
 
   * Check if the UDF supports the number of arguments passed in
148
 
   * @param number of args
149
 
   */
150
 
  virtual bool check_argument_count(int) { return true ; }
151
 
  virtual void split_sum_func(Session *session, Item **ref_pointer_array,
152
 
                              List<Item> &fields);
153
 
 
 
139
  void split_sum_func(Session *session, Item **ref_pointer_array, List<Item> &fields);
154
140
  virtual void print(String *str, enum_query_type query_type);
155
141
  void print_op(String *str, enum_query_type query_type);
156
142
  void print_args(String *str, uint32_t from, enum_query_type query_type);
166
152
 
167
153
  void signal_divide_by_null();
168
154
 
169
 
  virtual Field *tmp_table_field() { return result_field; }
170
 
  virtual Field *tmp_table_field(Table *t_arg);
171
 
 
 
155
  Field *tmp_table_field() { return result_field; }
 
156
  Field *tmp_table_field(Table *t_arg);
172
157
  Item *get_tmp_table_item(Session *session);
173
158
 
174
159
  my_decimal *val_decimal(my_decimal *);
190
175
 
191
176
};
192
177
 
193
 
} /* namespace drizzled */
194
 
 
195
178
 
196
179
#endif /* DRIZZLED_FUNCTION_FUNC_H */