17
17
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
#include "drizzled/sql_select.h"
22
#include "drizzled/error.h"
23
#include "drizzled/show.h"
24
#include "drizzled/item/cmpfunc.h"
25
#include "drizzled/item/cache_row.h"
26
#include "drizzled/item/type_holder.h"
27
#include "drizzled/item/sum.h"
28
#include "drizzled/item/copy_string.h"
29
#include "drizzled/function/str/conv_charset.h"
30
#include "drizzled/sql_base.h"
31
#include "drizzled/util/convert.h"
32
#include "drizzled/plugin/client.h"
33
#include "drizzled/time_functions.h"
35
#include "drizzled/field/str.h"
36
#include "drizzled/field/num.h"
38
#include "drizzled/field/blob.h"
39
#include "drizzled/field/date.h"
40
#include "drizzled/field/datetime.h"
41
#include "drizzled/field/decimal.h"
42
#include "drizzled/field/double.h"
43
#include "drizzled/field/enum.h"
44
#include "drizzled/field/epoch.h"
45
#include "drizzled/field/int32.h"
46
#include "drizzled/field/int64.h"
47
#include "drizzled/field/microtime.h"
48
#include "drizzled/field/null.h"
49
#include "drizzled/field/real.h"
50
#include "drizzled/field/size.h"
51
#include "drizzled/field/time.h"
52
#include "drizzled/field/varstring.h"
21
#include <drizzled/sql_select.h>
22
#include <drizzled/error.h>
23
#include <drizzled/show.h>
24
#include <drizzled/item/cmpfunc.h>
25
#include <drizzled/item/cache_row.h>
26
#include <drizzled/item/type_holder.h>
27
#include <drizzled/item/sum.h>
28
#include <drizzled/item/copy_string.h>
29
#include <drizzled/function/str/conv_charset.h>
30
#include <drizzled/sql_base.h>
31
#include <drizzled/util/convert.h>
32
#include <drizzled/plugin/client.h>
33
#include <drizzled/time_functions.h>
34
#include <drizzled/field/str.h>
35
#include <drizzled/field/num.h>
36
#include <drizzled/field/blob.h>
37
#include <drizzled/field/date.h>
38
#include <drizzled/field/datetime.h>
39
#include <drizzled/field/decimal.h>
40
#include <drizzled/field/double.h>
41
#include <drizzled/field/enum.h>
42
#include <drizzled/field/epoch.h>
43
#include <drizzled/field/int32.h>
44
#include <drizzled/field/int64.h>
45
#include <drizzled/field/microtime.h>
46
#include <drizzled/field/null.h>
47
#include <drizzled/field/real.h>
48
#include <drizzled/field/size.h>
49
#include <drizzled/field/time.h>
50
#include <drizzled/field/varstring.h>
54
51
#include <drizzled/current_session.h>
55
52
#include <drizzled/session.h>
57
#include "drizzled/internal/m_string.h"
53
#include <drizzled/internal/m_string.h>
54
#include <drizzled/item/ref.h>
55
#include <drizzled/item/subselect.h>
784
782
Item_ref to allow fields from view being stored in tmp table.
786
784
Item_aggregate_ref *item_ref;
787
uint32_t el= fields.elements;
785
uint32_t el= fields.size();
788
786
Item *real_itm= real_item();
790
788
ref_pointer_array[el]= real_itm;
791
if (!(item_ref= new Item_aggregate_ref(&session->lex->current_select->context,
789
if (!(item_ref= new Item_aggregate_ref(&session->getLex()->current_select->context,
792
790
ref_pointer_array + el, 0, name)))
793
791
return; /* fatal_error is set */
794
792
if (type() == SUM_FUNC_ITEM)
795
793
item_ref->depended_from= ((Item_sum *) this)->depended_from();
796
794
fields.push_front(real_itm);
797
session->change_item_tree(ref, item_ref);
1219
1195
name, decimals, 0, unsigned_flag);
1221
1197
case DRIZZLE_TYPE_NULL:
1222
field= new Field_null((unsigned char*) 0, max_length, name, &my_charset_bin);
1198
field= new Field_null((unsigned char*) 0, max_length, name);
1224
1200
case DRIZZLE_TYPE_DATE:
1225
field= new Field_date(maybe_null, name, &my_charset_bin);
1201
field= new Field_date(maybe_null, name);
1228
1204
case DRIZZLE_TYPE_MICROTIME:
1703
1679
case STRING_RESULT:
1704
1680
assert(item->collation.collation);
1706
enum enum_field_types type;
1708
1683
DATE/TIME fields have STRING_RESULT result type.
1709
1684
To preserve type they needed to be handled separately.
1711
if ((type= item->field_type()) == DRIZZLE_TYPE_DATETIME ||
1712
type == DRIZZLE_TYPE_TIME ||
1713
type == DRIZZLE_TYPE_MICROTIME ||
1714
type == DRIZZLE_TYPE_DATE ||
1715
type == DRIZZLE_TYPE_TIMESTAMP)
1686
if (field::isDateTime(item->field_type()))
1717
1688
new_field= item->tmp_table_field_from_field_type(table, 1);