~drizzle-trunk/drizzle/development

1285 by Brian Aker
Remove giant include header to its own file.
1
/* Copyright (C) 2000-2003 MySQL AB
2
3
   This program is free software; you can redistribute it and/or modify
4
   it under the terms of the GNU General Public License as published by
5
   the Free Software Foundation; version 2 of the License.
6
7
   This program is distributed in the hope that it will be useful,
8
   but WITHOUT ANY WARRANTY; without even the implied warranty of
9
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10
   GNU General Public License for more details.
11
12
   You should have received a copy of the GNU General Public License
13
   along with this program; if not, write to the Free Software
1802.10.2 by Monty Taylor
Update all of the copyright headers to include the correct address.
14
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA */
1285 by Brian Aker
Remove giant include header to its own file.
15
16
#ifndef DRIZZLED_PARSER_H
17
#define DRIZZLED_PARSER_H
18
2154.2.24 by Brian Aker
Merge in all changes for current_session, etc.
19
#include <drizzled/charset.h>
20
#include <drizzled/error.h>
1285 by Brian Aker
Remove giant include header to its own file.
21
#include <drizzled/foreign_key.h>
2154.2.24 by Brian Aker
Merge in all changes for current_session, etc.
22
#include <drizzled/function/get_system_var.h>
1285 by Brian Aker
Remove giant include header to its own file.
23
#include <drizzled/function/locate.h>
2154.2.24 by Brian Aker
Merge in all changes for current_session, etc.
24
#include <drizzled/function/set_user_var.h>
1285 by Brian Aker
Remove giant include header to its own file.
25
#include <drizzled/function/str/char.h>
26
#include <drizzled/function/str/collation.h>
27
#include <drizzled/function/str/insert.h>
28
#include <drizzled/function/str/left.h>
29
#include <drizzled/function/str/repeat.h>
30
#include <drizzled/function/str/replace.h>
31
#include <drizzled/function/str/right.h>
32
#include <drizzled/function/str/set_collation.h>
33
#include <drizzled/function/str/trim.h>
34
#include <drizzled/function/time/curdate.h>
35
#include <drizzled/function/time/date_add_interval.h>
36
#include <drizzled/function/time/dayofmonth.h>
37
#include <drizzled/function/time/extract.h>
38
#include <drizzled/function/time/hour.h>
39
#include <drizzled/function/time/microsecond.h>
40
#include <drizzled/function/time/minute.h>
41
#include <drizzled/function/time/month.h>
42
#include <drizzled/function/time/now.h>
43
#include <drizzled/function/time/quarter.h>
44
#include <drizzled/function/time/second.h>
45
#include <drizzled/function/time/sysdate_local.h>
46
#include <drizzled/function/time/timestamp_diff.h>
47
#include <drizzled/function/time/typecast.h>
48
#include <drizzled/function/time/year.h>
2194.4.2 by Brian Aker
Bit functions/fix for <<
49
#include <drizzled/function/bit/functions.h>
2154.2.24 by Brian Aker
Merge in all changes for current_session, etc.
50
#include <drizzled/global_charset_info.h>
51
#include <drizzled/internal/m_string.h>
52
#include <drizzled/item/boolean.h>
53
#include <drizzled/item/cmpfunc.h>
1285 by Brian Aker
Remove giant include header to its own file.
54
#include <drizzled/item/copy_string.h>
55
#include <drizzled/item/create.h>
56
#include <drizzled/item/default_value.h>
2154.2.24 by Brian Aker
Merge in all changes for current_session, etc.
57
#include <drizzled/item/func.h>
1285 by Brian Aker
Remove giant include header to its own file.
58
#include <drizzled/item/insert_value.h>
2154.2.24 by Brian Aker
Merge in all changes for current_session, etc.
59
#include <drizzled/item/null.h>
60
#include <drizzled/item/uint.h>
1285 by Brian Aker
Remove giant include header to its own file.
61
#include <drizzled/lex_string.h>
2154.2.24 by Brian Aker
Merge in all changes for current_session, etc.
62
#include <drizzled/lex_symbol.h>
63
#include <drizzled/message/schema.pb.h>
1285 by Brian Aker
Remove giant include header to its own file.
64
#include <drizzled/message/table.pb.h>
2154.2.24 by Brian Aker
Merge in all changes for current_session, etc.
65
#include <drizzled/nested_join.h>
66
#include <drizzled/pthread_globals.h>
67
#include <drizzled/select_dump.h>
68
#include <drizzled/select_dumpvar.h>
69
#include <drizzled/select_export.h>
70
#include <drizzled/session.h>
71
#include <drizzled/sql_base.h>
72
#include <drizzled/sql_parse.h>
1285 by Brian Aker
Remove giant include header to its own file.
73
#include <drizzled/statement.h>
74
#include <drizzled/statement/alter_schema.h>
75
#include <drizzled/statement/alter_table.h>
76
#include <drizzled/statement/analyze.h>
2073.1.2 by Brian Aker
Basic DDL for catalog.
77
#include <drizzled/statement/catalog.h>
1285 by Brian Aker
Remove giant include header to its own file.
78
#include <drizzled/statement/change_schema.h>
79
#include <drizzled/statement/check.h>
80
#include <drizzled/statement/commit.h>
81
#include <drizzled/statement/create_index.h>
82
#include <drizzled/statement/create_schema.h>
83
#include <drizzled/statement/create_table.h>
2029.1.1 by Brian Aker
Merge in first pass.
84
#include <drizzled/statement/create_table/like.h>
85
#include <drizzled/statement/create_table/select.h>
1285 by Brian Aker
Remove giant include header to its own file.
86
#include <drizzled/statement/delete.h>
87
#include <drizzled/statement/drop_index.h>
88
#include <drizzled/statement/drop_schema.h>
89
#include <drizzled/statement/drop_table.h>
90
#include <drizzled/statement/empty_query.h>
1835.1.6 by Brian Aker
This patch returns dynamic SQL into the core (through SQL-Server syntax).
91
#include <drizzled/statement/execute.h>
1285 by Brian Aker
Remove giant include header to its own file.
92
#include <drizzled/statement/flush.h>
93
#include <drizzled/statement/insert.h>
94
#include <drizzled/statement/insert_select.h>
95
#include <drizzled/statement/kill.h>
96
#include <drizzled/statement/load.h>
97
#include <drizzled/statement/release_savepoint.h>
98
#include <drizzled/statement/rename_table.h>
99
#include <drizzled/statement/replace.h>
100
#include <drizzled/statement/replace_select.h>
101
#include <drizzled/statement/rollback.h>
102
#include <drizzled/statement/rollback_to_savepoint.h>
103
#include <drizzled/statement/savepoint.h>
104
#include <drizzled/statement/select.h>
2154.2.24 by Brian Aker
Merge in all changes for current_session, etc.
105
#include <drizzled/statement/set_option.h>
1874.2.2 by Brian Aker
What was once old, is now new again. Seperated out show from select.
106
#include <drizzled/statement/show.h>
1285 by Brian Aker
Remove giant include header to its own file.
107
#include <drizzled/statement/show_errors.h>
108
#include <drizzled/statement/show_warnings.h>
109
#include <drizzled/statement/start_transaction.h>
110
#include <drizzled/statement/truncate.h>
111
#include <drizzled/statement/unlock_tables.h>
112
#include <drizzled/statement/update.h>
2023.2.7 by Brian Aker
Create an Bool primtive type for item.
113
2096.1.14 by Brian Aker
Pull in more C code from parser.
114
namespace drizzled {
115
116
class Session;
117
class Table_ident;
118
class Item;
119
class Item_num;
120
121
namespace item
122
{
123
class Boolean;
124
class True;
125
class False;
126
}
127
2096.1.15 by Brian Aker
Additional parser cleanup.
128
namespace parser {
129
2096.1.14 by Brian Aker
Pull in more C code from parser.
130
Item* handle_sql2003_note184_exception(Session *session, Item* left, bool equal, Item *expr);
131
bool add_select_to_union_list(Session *session, LEX *lex, bool is_union_distinct);
132
bool setup_select_in_parentheses(Session *session, LEX *lex);
133
Item* reserved_keyword_function(Session *session, const std::string &name, List<Item> *item_list);
2104.3.5 by Brian Aker
Fixed case where parser error message might be null.
134
void my_parse_error(Lex_input_stream *lip);
135
void my_parse_error(const char *message);
2096.1.15 by Brian Aker
Additional parser cleanup.
136
bool check_reserved_words(LEX_STRING *name);
2172.3.8 by Brian Aker
Modernize our call to the parser, no more casting required.
137
void errorOn(drizzled::Session *session, const char *s);
2114.4.9 by Brian Aker
Try not to pass session quite as often
138
139
140
bool buildOrderBy(LEX *lex);
141
void buildEngineOption(LEX *lex, const char *key, const LEX_STRING &value);
142
void buildEngineOption(LEX *lex, const char *key, uint64_t value);
143
void buildSchemaOption(LEX *lex, const char *key, const LEX_STRING &value);
144
void buildSchemaOption(LEX *lex, const char *key, uint64_t value);
145
bool checkFieldIdent(LEX *lex, const LEX_STRING &schema_name, const LEX_STRING &table_name);
146
147
Item *buildIdent(LEX *lex, const LEX_STRING &schema_name, const LEX_STRING &table_name, const LEX_STRING &field_name);
148
Item *buildTableWild(LEX *lex, const LEX_STRING &schema_name, const LEX_STRING &table_name);
149
150
void buildCreateFieldIdent(LEX *lex);
2114.4.5 by Brian Aker
Remove duplicate code around ident check.
151
2137.1.13 by Brian Aker
Fix bad error in warnings/errors.
152
void storeAlterColumnPosition(LEX *lex, const char *position);
153
2148.5.4 by Brian Aker
Move over the collation test to a function outside of the parser.
154
bool buildCollation(LEX *lex, const CHARSET_INFO *arg);
2148.5.5 by Brian Aker
buildKey for parser.
155
void buildKey(LEX *lex, Key::Keytype type_par, const lex_string_t &name_arg);
2148.5.6 by Brian Aker
Additional encapsulation.
156
void buildForeignKey(LEX *lex, const lex_string_t &name_arg, drizzled::Table_ident *table);
2148.5.4 by Brian Aker
Move over the collation test to a function outside of the parser.
157
2148.5.8 by Brian Aker
Move integer building into parser code file.
158
drizzled::enum_field_types buildIntegerColumn(LEX *lex, drizzled::enum_field_types final_type, const bool is_unsigned);
2148.5.9 by Brian Aker
Merge in column varchar build.
159
drizzled::enum_field_types buildSerialColumn(LEX *lex);
160
drizzled::enum_field_types buildVarcharColumn(LEX *lex, const char *length);
2148.5.10 by Brian Aker
Merge in timestamp build parser function.
161
drizzled::enum_field_types buildVarbinaryColumn(LEX *lex, const char *length);
162
drizzled::enum_field_types buildBlobColumn(LEX *lex);
163
drizzled::enum_field_types buildBooleanColumn(LEX *lex);
164
drizzled::enum_field_types buildUuidColumn(LEX *lex);
165
drizzled::enum_field_types buildDoubleColumn(LEX *lex);
166
drizzled::enum_field_types buildTimestampColumn(LEX *lex, const char *length);
2148.5.14 by Brian Aker
function for decimal to be pulled out of the parser.
167
drizzled::enum_field_types buildDecimalColumn(LEX *lex);
2148.5.8 by Brian Aker
Move integer building into parser code file.
168
2148.5.16 by Brian Aker
Adding build for unique column
169
void buildKeyOnColumn(LEX *lex);
2148.5.17 by Brian Aker
Merge up parser work for additional column builds.
170
void buildAutoOnColumn(LEX *lex);
171
void buildPrimaryOnColumn(LEX *lex);
2172.3.3 by Brian Aker
Abstract out the replication set.
172
void buildReplicationOption(LEX *lex, bool arg);
2172.3.4 by Brian Aker
Move out drop keys to parser method file.
173
void buildAddAlterDropIndex(LEX *lex, const char *name, bool is_foreign_key= false);
2148.5.16 by Brian Aker
Adding build for unique column
174
2096.1.14 by Brian Aker
Pull in more C code from parser.
175
} // namespace parser
176
} // namespace drizzled
177
1285 by Brian Aker
Remove giant include header to its own file.
178
#endif /* DRIZZLED_PARSER_H */