~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/item_strfunc.h

moving functions from item_strfunc to functions/str directory

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
 
21
21
#include <drizzled/functions/str/concat.h>
22
22
#include <drizzled/functions/str/conv.h>
 
23
#include <drizzled/functions/str/elt.h>
 
24
#include <drizzled/functions/str/format.h>
23
25
#include <drizzled/functions/str/insert.h>
24
26
#include <drizzled/functions/str/left.h>
 
27
#include <drizzled/functions/str/make_set.h>
25
28
#include <drizzled/functions/str/replace.h>
26
29
#include <drizzled/functions/str/reverse.h>
27
30
#include <drizzled/functions/str/right.h>
29
32
#include <drizzled/functions/str/sysconst.h>
30
33
#include <drizzled/functions/str/database.h>
31
34
#include <drizzled/functions/str/trim.h>
32
 
 
33
 
class Item_func_user :public Item_func_sysconst
34
 
{
35
 
protected:
36
 
  bool init (const char *user, const char *host);
37
 
 
38
 
public:
39
 
  Item_func_user()
40
 
  {
41
 
    str_value.set("", 0, system_charset_info);
42
 
  }
43
 
  String *val_str(String *)
44
 
  {
45
 
    assert(fixed == 1);
46
 
    return (null_value ? 0 : &str_value);
47
 
  }
48
 
  bool fix_fields(Session *session, Item **ref);
49
 
  void fix_length_and_dec()
50
 
  {
51
 
    max_length= (USERNAME_CHAR_LENGTH + HOSTNAME_LENGTH + 1) *
52
 
                system_charset_info->mbmaxlen;
53
 
  }
54
 
  const char *func_name() const { return "user"; }
55
 
  const char *fully_qualified_func_name() const { return "user()"; }
56
 
  int save_in_field(Field *field,
57
 
                    bool no_conversions __attribute__((unused)))
58
 
  {
59
 
    return save_str_value_in_field(field, &str_value);
60
 
  }
61
 
};
62
 
 
63
 
 
64
 
class Item_func_current_user :public Item_func_user
65
 
{
66
 
  Name_resolution_context *context;
67
 
 
68
 
public:
69
 
  Item_func_current_user(Name_resolution_context *context_arg)
70
 
    : context(context_arg) {}
71
 
  bool fix_fields(Session *session, Item **ref);
72
 
  const char *func_name() const { return "current_user"; }
73
 
  const char *fully_qualified_func_name() const { return "current_user()"; }
74
 
};
75
 
 
76
 
 
77
 
class Item_func_soundex :public Item_str_func
78
 
{
79
 
  String tmp_value;
80
 
public:
81
 
  Item_func_soundex(Item *a) :Item_str_func(a) {}
82
 
  String *val_str(String *);
83
 
  void fix_length_and_dec();
84
 
  const char *func_name() const { return "soundex"; }
85
 
};
86
 
 
87
 
 
88
 
class Item_func_elt :public Item_str_func
89
 
{
90
 
public:
91
 
  Item_func_elt(List<Item> &list) :Item_str_func(list) {}
92
 
  double val_real();
93
 
  int64_t val_int();
94
 
  String *val_str(String *str);
95
 
  void fix_length_and_dec();
96
 
  const char *func_name() const { return "elt"; }
97
 
};
98
 
 
99
 
 
100
 
class Item_func_make_set :public Item_str_func
101
 
{
102
 
  Item *item;
103
 
  String tmp_str;
104
 
 
105
 
public:
106
 
  Item_func_make_set(Item *a,List<Item> &list) :Item_str_func(list),item(a) {}
107
 
  String *val_str(String *str);
108
 
  bool fix_fields(Session *session, Item **ref)
109
 
  {
110
 
    assert(fixed == 0);
111
 
    return ((!item->fixed && item->fix_fields(session, &item)) ||
112
 
            item->check_cols(1) ||
113
 
            Item_func::fix_fields(session, ref));
114
 
  }
115
 
  void split_sum_func(Session *session, Item **ref_pointer_array, List<Item> &fields);
116
 
  void fix_length_and_dec();
117
 
  void update_used_tables();
118
 
  const char *func_name() const { return "make_set"; }
119
 
 
120
 
  bool walk(Item_processor processor, bool walk_subquery, unsigned char *arg)
121
 
  {
122
 
    return item->walk(processor, walk_subquery, arg) ||
123
 
      Item_str_func::walk(processor, walk_subquery, arg);
124
 
  }
125
 
  Item *transform(Item_transformer transformer, unsigned char *arg);
126
 
  virtual void print(String *str, enum_query_type query_type);
127
 
};
128
 
 
129
 
 
130
 
class Item_func_format :public Item_str_func
131
 
{
132
 
  String tmp_str;
133
 
public:
134
 
  Item_func_format(Item *org, Item *dec);
135
 
  String *val_str(String *);
136
 
  void fix_length_and_dec();
137
 
  const char *func_name() const { return "format"; }
138
 
  virtual void print(String *str, enum_query_type query_type);
139
 
};
140
 
 
 
35
#include <drizzled/functions/str/user.h>
141
36
 
142
37
class Item_func_char :public Item_str_func
143
38
{