/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=2:tabstop=2:smarttab: * * Copyright (C) 2008 Sun Microsystems * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef DRIZZLED_MULTI_DELETE_H #define DRIZZLED_MULTI_DELETE_H class multi_delete :public select_result_interceptor { TableList *delete_tables, *table_being_deleted; Unique **tempfiles; ha_rows deleted, found; uint32_t num_of_tables; int error; bool do_delete; /* True if at least one table we delete from is transactional */ bool transactional_tables; /* True if at least one table we delete from is not transactional */ bool normal_tables; bool delete_while_scanning; /* error handling (rollback and binlogging) can happen in send_eof() so that afterward send_error() needs to find out that. */ bool error_handled; public: multi_delete(TableList *dt, uint32_t num_of_tables); ~multi_delete(); int prepare(List &list, Select_Lex_Unit *u); bool send_data(List &items); bool initialize_tables (JOIN *join); void send_error(uint32_t errcode,const char *err); int do_deletes(); bool send_eof(); virtual void abort(); }; #endif /* DRIZZLED_MULTI_DELETE_H */