23
23
#define DRIZZLED_ITEM_H
25
25
#include <drizzled/dtcollation.h>
26
#include <drizzled/global_charset_info.h>
27
#include <drizzled/item_result.h>
28
#include <drizzled/memory/sql_alloc.h>
26
#include <drizzled/type/time.h>
27
#include <drizzled/type/decimal.h>
29
28
#include <drizzled/sql_list.h>
30
#include <drizzled/sql_string.h>
29
#include "drizzled/memory/sql_alloc.h"
30
#include <drizzled/table.h>
31
#include "drizzled/item_result.h"
32
#include <drizzled/visibility.h>
33
#include "drizzled/visibility.h"
40
class Name_resolution_context;
41
45
class Item_in_subselect;
48
namespace plugin { class Client; }
49
namespace type { class Time; }
50
namespace type { class Decimal; }
53
55
Dummy error processor used by default by Name_resolution_context.
791
793
return (tmp > UINT32_MAX) ? (uint32_t) UINT32_MAX : (uint32_t) tmp;
794
uint32_t max_char_length() const;
796
void fix_length_and_charset(uint32_t max_char_length_arg, CHARSET_INFO *cs);
797
void fix_char_length(uint32_t max_char_length_arg);
798
void fix_char_length_uint64_t(uint64_t max_char_length_arg);
799
void fix_length_and_charset_datetime(uint32_t max_char_length_arg);
796
uint32_t max_char_length() const
798
return max_length / collation.collation->mbmaxlen;
801
void fix_length_and_charset(uint32_t max_char_length_arg, CHARSET_INFO *cs)
803
max_length= char_to_byte_length_safe(max_char_length_arg, cs->mbmaxlen);
804
collation.collation= cs;
807
void fix_char_length(uint32_t max_char_length_arg)
809
max_length= char_to_byte_length_safe(max_char_length_arg,
810
collation.collation->mbmaxlen);
813
void fix_char_length_uint64_t(uint64_t max_char_length_arg)
815
uint64_t max_result_length= max_char_length_arg *
816
collation.collation->mbmaxlen;
818
if (max_result_length >= MAX_BLOB_WIDTH)
820
max_length= MAX_BLOB_WIDTH;
825
max_length= max_result_length;
829
void fix_length_and_charset_datetime(uint32_t max_char_length_arg)
831
collation.set(&my_charset_bin);
832
fix_char_length(max_char_length_arg);
802
835
Session &getSession()