00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #pragma once
00022
00023 #include <drizzled/definitions.h>
00024 #include <drizzled/error.h>
00025 #include <drizzled/sql_parse.h>
00026 #include <drizzled/sql_base.h>
00027 #include <drizzled/show.h>
00028
00029 namespace drizzled {
00030
00031 class Session;
00032 class TableList;
00033 class Item;
00034
00035 namespace session { class Transactions; }
00036
00037 namespace statement {
00038
00043 class Statement
00044 {
00045 public:
00046 Statement(Session *in_session) :
00047 _session(*in_session)
00048 {}
00049
00050 virtual ~Statement() {}
00051
00052 void set_command(enum_sql_command);
00053 LEX& lex();
00054 session::Transactions& transaction();
00055
00061 virtual bool execute()= 0;
00062
00063
00064
00065 virtual bool isTransactional()
00066 {
00067 return false;
00068 }
00069
00070 Session& session() const
00071 {
00072 return _session;
00073 }
00074
00075 virtual bool isShow() { return false; }
00076
00077 private:
00078 Session& _session;
00079 };
00080
00081 }
00082 }
00083