1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
4
* Copyright (C) 2008 Sun Microsystems
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; version 2 of the License.
10
* This program is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
15
* You should have received a copy of the GNU General Public License
16
* along with this program; if not, write to the Free Software
17
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
#ifndef DRIZZLED_TMP_TABLE_PARAM_H
22
#define DRIZZLED_TMP_TABLE_PARAM_H
25
Param to create temporary tables when doing SELECT:s
27
This structure is copied using memcpy as a part of JOIN.
30
class Tmp_Table_Param :public Sql_alloc
33
/* Prevent use of these (not safe because of lists and copy_field) */
34
Tmp_Table_Param(const Tmp_Table_Param &);
35
void operator=(Tmp_Table_Param &);
39
List<Item> copy_funcs;
40
List<Item> save_copy_funcs;
41
Copy_field *copy_field, *copy_field_end;
42
Copy_field *save_copy_field, *save_copy_field_end;
43
unsigned char *group_buff;
44
Item **items_to_copy; /* Fields in tmp table */
45
MI_COLUMNDEF *recinfo,*start_recinfo;
46
ha_rows end_write_records;
48
uint32_t sum_func_count;
50
uint32_t hidden_field_count;
51
uint32_t group_parts,group_length,group_null_parts;
53
bool using_indirect_summary_function;
57
True if GROUP BY and its aggregate functions are already computed
58
by a table access method (e.g. by loose index scan). In this case
59
query execution should not perform aggregation and should treat
60
aggregate functions as normal functions.
62
bool precomputed_group_by;
64
bool force_copy_fields;
66
/* If >0 convert all blob fields to varchar(convert_blob_length) */
67
uint32_t convert_blob_length;
69
const CHARSET_INFO *table_charset;
71
If true, create_tmp_field called from create_tmp_table will convert
72
all BIT fields to 64-bit longs. This is a workaround the limitation
73
that MEMORY tables cannot index BIT columns.
75
bool bit_fields_as_long;
83
precomputed_group_by(false),
84
force_copy_fields(false),
85
convert_blob_length(0),
86
bit_fields_as_long(false)
96
#endif /* DRIZZLED_TMP_TABLE_PARAM_H */