22 #include <drizzled/charset.h>
23 #include <drizzled/function/locate.h>
24 #include <drizzled/lex_string.h>
29 void Item_func_locate::fix_length_and_dec()
31 max_length= MY_INT32_NUM_DECIMAL_DIGITS;
32 agg_arg_charsets(cmp_collation, args, 2, MY_COLL_CMP_CONV, 1);
53 start0= start= args[2]->
val_int() - 1;
55 if ((start < 0) || (start > static_cast<int64_t>(a->length())))
59 start= a->charpos((
int) start);
61 if (start + b->length() > a->length())
67 if (!cmp_collation.collation->coll->instr(cmp_collation.collation,
69 (uint32_t) (a->length()-start),
70 b->ptr(), b->length(),
73 return (int64_t) match.mb_len + start0 + 1;
79 str->append(STRING_WITH_LEN(
"locate("));
virtual int64_t val_int()=0
TODO: Rename this file - func.h is stupid.
virtual void print(String *str)
virtual String * val_str(String *str)=0
virtual void print(String *str)