28 #include <drizzled/cached_item.h>
29 #include <drizzled/field.h>
30 #include <drizzled/sql_string.h>
31 #include <drizzled/session.h>
32 #include <drizzled/item/field.h>
33 #include <drizzled/system_variables.h>
46 if (item->real_item()->type() == Item::FIELD_ITEM &&
47 !(((
Item_field *) (item->real_item()))->field->flags & BLOB_FLAG))
50 Field *cached_field= real_item->field;
54 switch (item->result_type()) {
71 Cached_item::~Cached_item() {}
81 :item(arg), value(min(arg->max_length,
82 (uint32_t)session->variables.max_sort_length))
85 bool Cached_item_str::cmp(
void)
90 if ((res=item->
val_str(&tmp_value)))
91 res->length(min(res->length(), value.alloced_length()));
104 tmp= sortcmp(&value,res,item->collation.collation) != 0;
111 Cached_item_str::~Cached_item_str()
117 bool Cached_item_real::cmp(
void)
120 if (null_value != item->
null_value || nr != value)
129 bool Cached_item_int::cmp(
void)
132 if (null_value != item->
null_value || nr != value)
142 Cached_item_field::Cached_item_field(Field *arg_field)
147 buff= (
unsigned char*) memory::sql_calloc(length= field->pack_length());
150 bool Cached_item_field::cmp(
void)
153 bool tmp= field->cmp_internal(buff) != 0;
156 field->get_image(buff,length,field->charset());
157 if (null_value != field->is_null())
159 null_value= !null_value;
166 Cached_item_decimal::Cached_item_decimal(Item *it)
173 bool Cached_item_decimal::cmp()
184 class_decimal2decimal(ptmp, &value);
Cached_item * new_Cached_item(Session *session, Item *item)
virtual int64_t val_int()=0
TODO: Rename this file - func.h is stupid.
int class_decimal_cmp(const type::Decimal *a, const type::Decimal *b)
virtual double val_real()=0
virtual String * val_str(String *str)=0
virtual type::Decimal * val_decimal(type::Decimal *decimal_buffer)=0