00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #pragma once
00021
00022 #include <drizzled/function/func.h>
00023 #include <drizzled/lex_string.h>
00024
00025 namespace drizzled
00026 {
00027
00028 class user_var_entry;
00029
00030 class Item_func_get_user_var :public Item_func
00031 {
00032 user_var_entry *var_entry;
00033 Item_result m_cached_result_type;
00034 Session &session;
00035
00036 public:
00037 LEX_STRING name;
00038 Item_func_get_user_var(Session &session_arg, LEX_STRING a):
00039 Item_func(),
00040 m_cached_result_type(STRING_RESULT),
00041 session(session_arg),
00042 name(a)
00043 {}
00044 enum Functype functype() const { return GUSERVAR_FUNC; }
00045 LEX_STRING get_name() { return name; }
00046 double val_real();
00047 int64_t val_int();
00048 type::Decimal *val_decimal(type::Decimal*);
00049 String *val_str(String* str);
00050 void fix_length_and_dec();
00051 virtual void print(String *str);
00052 enum Item_result result_type() const;
00053
00054
00055
00056
00057 const char *func_name() const { return "get_user_var"; }
00058 bool const_item() const;
00059 table_map used_tables() const
00060 { return const_item() ? 0 : RAND_TABLE_BIT; }
00061 bool eq(const Item *item, bool binary_cmp) const;
00062 };
00063
00064 }
00065