Drizzled Public API Documentation

sql_base.h
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 
22 #pragma once
23 
24 #include <drizzled/table.h>
25 #include <drizzled/table_list.h>
26 #include <drizzled/table/concurrent.h>
27 
28 #include <drizzled/visibility.h>
29 
30 namespace drizzled {
31 
32 void table_cache_free();
33 
34 table::Cache &get_open_cache();
35 
37 
38 /* sql_base.cc */
39 void set_item_name(Item *item,char *pos,uint32_t length);
40 bool add_field_to_list(Session *session, str_ref field_name, enum enum_field_types type,
41  const char *length, const char *decimal,
42  uint32_t type_modifier,
43  enum column_format_type column_format,
44  Item *default_value, Item *on_update_value,
45  str_ref comment,
46  const char *change, List<String> *interval_list,
47  const charset_info_st * const cs);
48 CreateField * new_create_field(Session *session, const char *field_name, enum_field_types type,
49  const char *length, const char *decimals,
50  uint32_t type_modifier,
51  Item *default_value, Item *on_update_value,
52  str_ref comment, const char *change,
53  List<String> *interval_list, charset_info_st *cs);
54 void push_new_name_resolution_context(Session&, TableList& left_op, TableList& right_op);
55 void add_join_on(TableList *b,Item *expr);
56 void add_join_natural(TableList *a,TableList *b,List<String> *using_fields,
57  Select_Lex *lex);
58 extern Item **not_found_item;
59 
65 {
66  NON_AGG_FIELD_USED= 0,
67  SUM_FUNC_USED
68 };
69 
83  NOT_RESOLVED=0,
84  RESOLVED_IGNORING_ALIAS,
85  RESOLVED_BEHIND_ALIAS,
86  RESOLVED_WITH_NO_ALIAS,
87  RESOLVED_AGAINST_ALIAS
88 };
89 Item ** find_item_in_list(Session *session,
90  Item *item, List<Item> &items, uint32_t *counter,
91  find_item_error_report_type report_error,
92  enum_resolution_type *resolution);
93 bool insert_fields(Session *session, Name_resolution_context *context,
94  const char *db_name, const char *table_name,
95  List<Item>::iterator *it, bool any_privileges);
96 bool setup_tables(Session *session, Name_resolution_context *context,
97  List<TableList> *from_clause, TableList *tables,
98  TableList **leaves, bool select_insert);
99 bool setup_tables_and_check_access(Session *session,
100  Name_resolution_context *context,
101  List<TableList> *from_clause,
102  TableList *tables,
103  TableList **leaves,
104  bool select_insert);
105 int setup_wild(Session *session, List<Item> &fields,
106  List<Item> *sum_func_list,
107  uint32_t wild_num);
108 bool setup_fields(Session *session, Item** ref_pointer_array,
109  List<Item> &item, enum_mark_columns mark_used_columns,
110  List<Item> *sum_func_list, bool allow_sum_func);
111 inline bool setup_fields_with_no_wrap(Session *session, Item **ref_pointer_array,
112  List<Item> &item,
113  enum_mark_columns mark_used_columns,
114  List<Item> *sum_func_list,
115  bool allow_sum_func)
116 {
117  bool res;
118  res= setup_fields(session, ref_pointer_array, item, mark_used_columns, sum_func_list,
119  allow_sum_func);
120  return res;
121 }
122 int setup_conds(Session *session, TableList *leaves, COND **conds);
123 /* open_and_lock_tables with optional derived handling */
124 TableList *find_table_in_list(TableList *table,
125  TableList *TableList::*link,
126  const char *db_name,
127  const char *table_name);
128 TableList *unique_table(TableList *table, TableList *table_list,
129  bool check_alias= false);
130 
131 /* bits for last argument to table::Cache::removeTable() */
132 #define RTFC_NO_FLAG 0x0000
133 #define RTFC_OWNED_BY_Session_FLAG 0x0001
134 #define RTFC_WAIT_OTHER_THREAD_FLAG 0x0002
135 #define RTFC_CHECK_KILLED_FLAG 0x0004
136 
137 void mem_alloc_error(size_t size);
138 
139 bool fill_record(Session* session, List<Item> &fields, List<Item> &values, bool ignore_errors= false);
140 bool fill_record(Session *session, Field **field, List<Item> &values, bool ignore_errors= false);
141 inline TableList *find_table_in_global_list(TableList *table,
142  const char *db_name,
143  const char *table_name)
144 {
145  return find_table_in_list(table, &TableList::next_global,
146  db_name, table_name);
147 }
148 
149 void drizzle_rm_tmp_tables();
150 
151 } /* namespace drizzled */
152 
TableList * next_global
Definition: table_list.h:110
bool add_field_to_list(Session *session, str_ref field_name, enum enum_field_types type, const char *length, const char *decimal, uint32_t type_modifier, enum column_format_type column_format, Item *default_value, Item *on_update_value, str_ref comment, const char *change, List< String > *interval_list, const charset_info_st *const cs)
Definition: sql_parse.cc:792
#define DRIZZLED_API
Definition: visibility.h:62
void add_join_natural(TableList *a, TableList *b, List< String > *using_fields, Select_Lex *lex)
Definition: sql_parse.cc:1360
Visibility Control Macros.
enum_group_by_mode_type
Definition: sql_base.h:64
enum_resolution_type
Definition: sql_base.h:82
void kill_drizzle(void)
Definition: sql_base.cc:3757