~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/tmp_table_param.h

Merged vcol stuff.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
 
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
 
 *
4
 
 *  Copyright (C) 2008 Sun Microsystems, Inc.
5
 
 *
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.
9
 
 *
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.
14
 
 *
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
18
 
 */
19
 
 
20
 
 
21
 
#ifndef DRIZZLED_TMP_TABLE_PARAM_H
22
 
#define DRIZZLED_TMP_TABLE_PARAM_H
23
 
 
24
 
namespace drizzled
25
 
{
26
 
 
27
 
/*
28
 
  Param to create temporary tables when doing SELECT:s
29
 
  NOTE
30
 
    This structure is copied using memcpy as a part of JOIN.
31
 
*/
32
 
 
33
 
class Tmp_Table_Param :public memory::SqlAlloc
34
 
{
35
 
private:
36
 
  /* Prevent use of these (not safe because of lists and copy_field) */
37
 
  Tmp_Table_Param(const Tmp_Table_Param &);
38
 
  void operator=(Tmp_Table_Param &);
39
 
 
40
 
public:
41
 
  KeyInfo *keyinfo;
42
 
  List<Item> copy_funcs;
43
 
  List<Item> save_copy_funcs;
44
 
  CopyField *copy_field, *copy_field_end;
45
 
  CopyField *save_copy_field, *save_copy_field_end;
46
 
  unsigned char     *group_buff;
47
 
  Item      **items_to_copy;                    /* Fields in tmp table */
48
 
  MI_COLUMNDEF *recinfo,*start_recinfo;
49
 
  ha_rows end_write_records;
50
 
  uint32_t      field_count;
51
 
  uint32_t      sum_func_count;
52
 
  uint32_t      func_count;
53
 
  uint32_t  hidden_field_count;
54
 
  uint32_t      group_parts,group_length,group_null_parts;
55
 
  uint32_t      quick_group;
56
 
  bool using_indirect_summary_function;
57
 
  bool schema_table;
58
 
 
59
 
  /*
60
 
    True if GROUP BY and its aggregate functions are already computed
61
 
    by a table access method (e.g. by loose index scan). In this case
62
 
    query execution should not perform aggregation and should treat
63
 
    aggregate functions as normal functions.
64
 
  */
65
 
  bool precomputed_group_by;
66
 
 
67
 
  bool force_copy_fields;
68
 
 
69
 
  /* If >0 convert all blob fields to varchar(convert_blob_length) */
70
 
  uint32_t  convert_blob_length;
71
 
 
72
 
  const CHARSET_INFO *table_charset;
73
 
 
74
 
  Tmp_Table_Param() :
75
 
    keyinfo(0),
76
 
    copy_funcs(),
77
 
    save_copy_funcs(),
78
 
    copy_field(0),
79
 
    copy_field_end(0),
80
 
    save_copy_field(0),
81
 
    save_copy_field_end(0),
82
 
    group_buff(0),
83
 
    items_to_copy(0),
84
 
    recinfo(0),
85
 
    start_recinfo(0),
86
 
    end_write_records(0),
87
 
    field_count(0),
88
 
    sum_func_count(0),
89
 
    func_count(0),
90
 
    hidden_field_count(0),
91
 
    group_parts(0),
92
 
    group_length(0),
93
 
    group_null_parts(0),
94
 
    quick_group(0),
95
 
    using_indirect_summary_function(false),
96
 
    schema_table(false),
97
 
    precomputed_group_by(false),
98
 
    force_copy_fields(false),
99
 
    convert_blob_length(0),
100
 
    table_charset(0)
101
 
  {}
102
 
 
103
 
  ~Tmp_Table_Param()
104
 
  {
105
 
    cleanup();
106
 
  }
107
 
  void init(void);
108
 
  void cleanup(void);
109
 
};
110
 
 
111
 
} /* namespace drizzled */
112
 
 
113
 
#endif /* DRIZZLED_TMP_TABLE_PARAM_H */