Drizzled Public API Documentation

parser.h
00001 /* Copyright (C) 2000-2003 MySQL AB
00002 
00003    This program is free software; you can redistribute it and/or modify
00004    it under the terms of the GNU General Public License as published by
00005    the Free Software Foundation; version 2 of the License.
00006 
00007    This program is distributed in the hope that it will be useful,
00008    but WITHOUT ANY WARRANTY; without even the implied warranty of
00009    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00010    GNU General Public License for more details.
00011 
00012    You should have received a copy of the GNU General Public License
00013    along with this program; if not, write to the Free Software
00014    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA */
00015 
00016 #pragma once
00017 
00018 #include <drizzled/charset.h>
00019 #include <drizzled/error.h>
00020 #include <drizzled/foreign_key.h>
00021 #include <drizzled/function/bit/functions.h>
00022 #include <drizzled/function/get_system_var.h>
00023 #include <drizzled/function/locate.h>
00024 #include <drizzled/function/set_user_var.h>
00025 #include <drizzled/function/str/char.h>
00026 #include <drizzled/function/str/collation.h>
00027 #include <drizzled/function/str/concat.h>
00028 #include <drizzled/function/str/insert.h>
00029 #include <drizzled/function/str/left.h>
00030 #include <drizzled/function/str/repeat.h>
00031 #include <drizzled/function/str/replace.h>
00032 #include <drizzled/function/str/right.h>
00033 #include <drizzled/function/str/set_collation.h>
00034 #include <drizzled/function/str/trim.h>
00035 #include <drizzled/function/time/curdate.h>
00036 #include <drizzled/function/time/date_add_interval.h>
00037 #include <drizzled/function/time/dayofmonth.h>
00038 #include <drizzled/function/time/extract.h>
00039 #include <drizzled/function/time/hour.h>
00040 #include <drizzled/function/time/microsecond.h>
00041 #include <drizzled/function/time/minute.h>
00042 #include <drizzled/function/time/month.h>
00043 #include <drizzled/function/time/now.h>
00044 #include <drizzled/function/time/quarter.h>
00045 #include <drizzled/function/time/second.h>
00046 #include <drizzled/function/time/sysdate_local.h>
00047 #include <drizzled/function/time/timestamp_diff.h>
00048 #include <drizzled/function/time/typecast.h>
00049 #include <drizzled/function/time/year.h>
00050 #include <drizzled/global_charset_info.h>
00051 #include <drizzled/internal/m_string.h>
00052 #include <drizzled/item/boolean.h>
00053 #include <drizzled/item/cmpfunc.h>
00054 #include <drizzled/item/copy_string.h>
00055 #include <drizzled/item/create.h>
00056 #include <drizzled/item/default_value.h>
00057 #include <drizzled/item/func.h>
00058 #include <drizzled/item/insert_value.h>
00059 #include <drizzled/item/null.h>
00060 #include <drizzled/item/uint.h>
00061 #include <drizzled/lex_string.h>
00062 #include <drizzled/lex_symbol.h>
00063 #include <drizzled/message/schema.pb.h>
00064 #include <drizzled/message/table.pb.h>
00065 #include <drizzled/nested_join.h>
00066 #include <drizzled/pthread_globals.h>
00067 #include <drizzled/select_dump.h>
00068 #include <drizzled/select_dumpvar.h>
00069 #include <drizzled/select_export.h>
00070 #include <drizzled/sql_base.h>
00071 #include <drizzled/sql_parse.h>
00072 #include <drizzled/statement.h>
00073 #include <drizzled/statement/alter_schema.h>
00074 #include <drizzled/statement/alter_table.h>
00075 #include <drizzled/statement/analyze.h>
00076 #include <drizzled/statement/catalog.h>
00077 #include <drizzled/statement/change_schema.h>
00078 #include <drizzled/statement/check.h>
00079 #include <drizzled/statement/commit.h>
00080 #include <drizzled/statement/create_index.h>
00081 #include <drizzled/statement/create_schema.h>
00082 #include <drizzled/statement/create_table.h>
00083 #include <drizzled/statement/create_table/like.h>
00084 #include <drizzled/statement/create_table/select.h>
00085 #include <drizzled/statement/delete.h>
00086 #include <drizzled/statement/drop_index.h>
00087 #include <drizzled/statement/drop_schema.h>
00088 #include <drizzled/statement/drop_table.h>
00089 #include <drizzled/statement/empty_query.h>
00090 #include <drizzled/statement/execute.h>
00091 #include <drizzled/statement/flush.h>
00092 #include <drizzled/statement/insert.h>
00093 #include <drizzled/statement/insert_select.h>
00094 #include <drizzled/statement/kill.h>
00095 #include <drizzled/statement/load.h>
00096 #include <drizzled/statement/release_savepoint.h>
00097 #include <drizzled/statement/rename_table.h>
00098 #include <drizzled/statement/replace.h>
00099 #include <drizzled/statement/replace_select.h>
00100 #include <drizzled/statement/rollback.h>
00101 #include <drizzled/statement/rollback_to_savepoint.h>
00102 #include <drizzled/statement/savepoint.h>
00103 #include <drizzled/statement/select.h>
00104 #include <drizzled/statement/set_option.h>
00105 #include <drizzled/statement/show.h>
00106 #include <drizzled/statement/show_errors.h>
00107 #include <drizzled/statement/show_warnings.h>
00108 #include <drizzled/statement/start_transaction.h>
00109 #include <drizzled/statement/truncate.h>
00110 #include <drizzled/statement/unlock_tables.h>
00111 #include <drizzled/statement/update.h>
00112 
00113 namespace drizzled {
00114 
00115 class Session;
00116 class Table_ident;
00117 class Item;
00118 class Item_num;
00119 
00120 namespace item
00121 {
00122 class Boolean;
00123 class True;
00124 class False;
00125 }
00126 
00127 namespace parser {
00128 
00129 Item* handle_sql2003_note184_exception(Session *session, Item* left, bool equal, Item *expr);
00130 bool add_select_to_union_list(Session *session, LEX *lex, bool is_union_distinct);
00131 bool setup_select_in_parentheses(Session *session, LEX *lex);
00132 Item* reserved_keyword_function(Session *session, const std::string &name, List<Item> *item_list);
00133 void my_parse_error(Lex_input_stream *lip);
00134 void my_parse_error(const char *message);
00135 bool check_reserved_words(LEX_STRING *name);
00136 void errorOn(drizzled::Session *session, const char *s);
00137 
00138 
00139 bool buildOrderBy(LEX *lex);
00140 void buildEngineOption(LEX *lex, const char *key, const LEX_STRING &value);
00141 void buildEngineOption(LEX *lex, const char *key, uint64_t value);
00142 void buildSchemaOption(LEX *lex, const char *key, const LEX_STRING &value);
00143 void buildSchemaOption(LEX *lex, const char *key, uint64_t value);
00144 bool checkFieldIdent(LEX *lex, const LEX_STRING &schema_name, const LEX_STRING &table_name);
00145 
00146 Item *buildIdent(LEX *lex, const LEX_STRING &schema_name, const LEX_STRING &table_name, const LEX_STRING &field_name);
00147 Item *buildTableWild(LEX *lex, const LEX_STRING &schema_name, const LEX_STRING &table_name);
00148 
00149 void buildCreateFieldIdent(LEX *lex);
00150 
00151 void storeAlterColumnPosition(LEX *lex, const char *position);
00152 
00153 bool buildCollation(LEX *lex, const CHARSET_INFO *arg);
00154 void buildKey(LEX *lex, Key::Keytype type_par, const lex_string_t &name_arg);
00155 void buildForeignKey(LEX *lex, const lex_string_t &name_arg, drizzled::Table_ident *table);
00156 
00157 drizzled::enum_field_types buildIntegerColumn(LEX *lex, drizzled::enum_field_types final_type, const bool is_unsigned);
00158 drizzled::enum_field_types buildSerialColumn(LEX *lex);
00159 drizzled::enum_field_types buildVarcharColumn(LEX *lex, const char *length);
00160 drizzled::enum_field_types buildVarbinaryColumn(LEX *lex, const char *length);
00161 drizzled::enum_field_types buildBlobColumn(LEX *lex);
00162 drizzled::enum_field_types buildBooleanColumn(LEX *lex);
00163 drizzled::enum_field_types buildUuidColumn(LEX *lex);
00164 drizzled::enum_field_types buildDoubleColumn(LEX *lex);
00165 drizzled::enum_field_types buildTimestampColumn(LEX *lex, const char *length);
00166 drizzled::enum_field_types buildDecimalColumn(LEX *lex);
00167 
00168 void buildKeyOnColumn(LEX *lex);
00169 void buildAutoOnColumn(LEX *lex);
00170 void buildPrimaryOnColumn(LEX *lex);
00171 void buildReplicationOption(LEX *lex, bool arg);
00172 void buildAddAlterDropIndex(LEX *lex, const char *name, bool is_foreign_key= false);
00173 
00174 } // namespace parser
00175 } // namespace drizzled
00176