mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
71d263a198
This commit fixed the problems with S3 after the "DROP TABLE FORCE" changes. It also fixes all failing replication S3 tests. A slave is delayed if it is trying to execute replicated queries on a table that is already converted to S3 by the master later in the binlog. Fixes for replication events on S3 tables for delayed slaves: - INSERT and INSERT ... SELECT and CREATE TABLE are ignored but written to the binary log. UPDATE & DELETE will be fixed in a future commit. Other things: - On slaves with --s3-slave-ignore-updates set, allow S3 tables to be opened in read-write mode. This was done to be able to ignore-but-replicate queries like insert. Without this change any open of an S3 table failed with 'Table is read only' which is too early to be able to replicate the original query. - Errors are now printed if handler::extra() call fails in wait_while_tables_are_used(). - Error message for row changes are changed from HA_ERR_WRONG_COMMAND to HA_ERR_TABLE_READONLY. - Disable some maria_extra() calls for S3 tables. This could cause S3 tables to fail in some cases. - Added missing thr_lock_delete() to ma_open() in case of failure. - Removed from mysql_prepare_insert() the not needed argument 'table'.
53 lines
2.4 KiB
C
53 lines
2.4 KiB
C
/* Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
|
|
|
|
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-1335 USA */
|
|
|
|
#ifndef SQL_INSERT_INCLUDED
|
|
#define SQL_INSERT_INCLUDED
|
|
|
|
#include "sql_class.h" /* enum_duplicates */
|
|
#include "sql_list.h"
|
|
|
|
/* Instead of including sql_lex.h we add this typedef here */
|
|
typedef List<Item> List_item;
|
|
typedef struct st_copy_info COPY_INFO;
|
|
|
|
int mysql_prepare_insert(THD *thd, TABLE_LIST *table_list,
|
|
List<Item> &fields, List_item *values,
|
|
List<Item> &update_fields,
|
|
List<Item> &update_values, enum_duplicates duplic,
|
|
COND **where, bool select_insert);
|
|
bool mysql_insert(THD *thd,TABLE_LIST *table,List<Item> &fields,
|
|
List<List_item> &values, List<Item> &update_fields,
|
|
List<Item> &update_values, enum_duplicates flag,
|
|
bool ignore, select_result* result);
|
|
void upgrade_lock_type_for_insert(THD *thd, thr_lock_type *lock_type,
|
|
enum_duplicates duplic,
|
|
bool is_multi_insert);
|
|
int check_that_all_fields_are_given_values(THD *thd, TABLE *entry,
|
|
TABLE_LIST *table_list);
|
|
int vers_insert_history_row(TABLE *table);
|
|
int check_duplic_insert_without_overlaps(THD *thd, TABLE *table,
|
|
enum_duplicates duplic);
|
|
int write_record(THD *thd, TABLE *table, COPY_INFO *info,
|
|
select_result *returning= NULL);
|
|
void kill_delayed_threads(void);
|
|
bool binlog_create_table(THD *thd, TABLE *table, bool replace);
|
|
bool binlog_drop_table(THD *thd, TABLE *table);
|
|
|
|
#ifdef EMBEDDED_LIBRARY
|
|
inline void kill_delayed_threads(void) {}
|
|
#endif
|
|
|
|
#endif /* SQL_INSERT_INCLUDED */
|