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/select_result_interceptor.h>
00024
00025 namespace drizzled
00026 {
00027
00028 class select_insert :public select_result_interceptor {
00029 public:
00030 TableList *table_list;
00031 Table *table;
00032 List<Item> *fields;
00033 uint64_t autoinc_value_of_last_inserted_row;
00034 CopyInfo info;
00035 bool insert_into_view;
00036 select_insert(TableList *table_list_par,
00037 Table *table_par, List<Item> *fields_par,
00038 List<Item> *update_fields, List<Item> *update_values,
00039 enum_duplicates duplic, bool ignore);
00040 ~select_insert();
00041 int prepare(List<Item> &list, Select_Lex_Unit *u);
00042 virtual int prepare2(void);
00043 bool send_data(List<Item> &items);
00044 virtual void store_values(List<Item> &values);
00045 virtual bool can_rollback_data() { return 0; }
00046 void send_error(drizzled::error_t errcode,const char *err);
00047 bool send_eof();
00048 void abort();
00049
00050 void cleanup();
00051 };
00052
00053 }
00054