Atomic drop table (MDEV-23844) does not recover the replaced table if CREATE OR REPLACE TABLE fails.
This is because current, as before, CREATE OR REPLACE TABLE foo ... is implemented as:
DROP TABLE IF EXISTS foo;
CREATE TABLE foo ..
Because of that failed CREATE OR REPLACE TABLE or a crash during the create will lead to lost table, if the original table existed.
This task equips table drop with backing up the old table until the new table was successfully created.
In other words, this task ensures that if one executes CREATE OR REPLACE TABLE foo on an existing table, the table foo will either be the new or old table after the statement has executed, including in the cases the CREATE fails or the server crashes.
NOTE: this change was in a preview release for MariaDB Community Server 10.10.0, but could not be added to 10.10 RC
MDEV-28956Locking is broken if CREATE OR REPLACE fails under LOCK TABLES
Closed
MDEV-29544SIGSEGV in HA_CREATE_INFO::finalize_locked_tables
Closed
MDEV-29620Assertion `next_insert_id == 0' failed in handler::ha_external_lock
Closed
MDEV-29628Memory leak after CREATE OR REPLACE with foreign key
Closed
MDEV-29664Assertion `!n_mysql_tables_in_use' failed in innobase_close_connection
Closed
MDEV-29676Dual thread hang in 'closing tables' and 'Waiting for table metadata lock' on Spider CREATE OR REPLACE TABLE
Closed
MDEV-29680ASAN heap-use-after-free in myrocks::Rdb_transaction::on_commit upon CREATE OR REPLACE .. SELECT
Open
MDEV-29698Server crash or assertion failure upon CREATE OR REPLACE with a MERGE table
Closed
MDEV-29699Assertion `!table_list->table || frm.str || !atomic_replace' failed upon CREATE OR REPLACE with ARCHIVE
Closed
MDEV-29701Inconsistencies and eventual failure upon CREATE OR REPLACE with foreign keys
Closed
MDEV-29709Unexpected ER_NO_SUCH_TABLE on CREATE OR REPLACE with further assertion failures
Closed
MDEV-29758CREATE OR REPLACE .. SELECT of Federated table doesn't store selected values
Closed
MDEV-29767CREATE OR REPLACE bypasses S3 restriction for table creation
Closed
MDEV-29770Broken table cannot be CREATE OR REPLACE -ed anymore
Closed
MDEV-29772CREATE OR REPLACE not atomic for sequences (a.k.a tables with SEQUENCE=1)
Closed
MDEV-29779Unexpected ER_ERROR_ON_RENAME upon CREATE OR REPLACE
Closed
MDEV-29781Server crashes in ha_myisammrg::add_children_list upon CREATE OR REPLACE with MERGE
Closed
MDEV-29783ER_NO_SUCH_TABLE_IN_ENGINE after failed CREATE OR REPLACE with FK violation
Closed
MDEV-29787CREATE OR REPLACE does not work with custom DATA/INDEX DIRECTORY
Closed
MDEV-29791ER_NO_SUCH_TABLE_IN_ENGINE or "File not found" upon concurrent DDL with CREATE OR REPLACE
Closed
MDEV-29793Assertion failure in translog_write_record upon CREATE OR REPLACE
Closed
MDEV-29800ERROR 1062 (23000): Duplicate entry 'test-t-0' for key 'PRIMARY' on CoR for Spider table, DDL_LOG: Got error 1032 or 12524 when trying to execute action for entry 1/2/3/4/5/6/7 of type 'rename table'
Closed
MDEV-29802#sql-backup tables are visible upon CREATE OR REPLACE and get stuck in S3 storage
Closed
MDEV-29824Galera crashes when running CoR for a locked table
Closed
MDEV-29831Galera crashes when running CoR for a locked table after setting the minimum memory for a user session
Closed
MDEV-36435Assertion failure in Table_specification_st::finalize_locked_tables upon attempt to create an already existing table under lock
Atomic drop table (MDEV-23844) does not recover the replaced table if CREATE OR REPLACE TABLE fails.
This is because current, as before, CREATE OR REPLACE TABLE foo ... is implemented as:
DROP TABLE IF EXISTS foo;
CREATE TABLE foo ..
Because of that failed CREATE OR REPLACE TABLE or a crash during the create will lead to lost table, if the original table existed.
This task equips table drop with backing up the old table until the new table was successfully created.
Atomic drop table (MDEV-23844) does not recover the replaced table if CREATE OR REPLACE TABLE fails.
This is because current, as before, CREATE OR REPLACE TABLE foo ... is implemented as:
DROP TABLE IF EXISTS foo;
CREATE TABLE foo ..
Because of that failed CREATE OR REPLACE TABLE or a crash during the create will lead to lost table, if the original table existed.
This task equips table drop with backing up the old table until the new table was successfully created.
In other words, this task ensures that if one executes CREATE OR REPLACE TABLE foo on an existing table,
the table foo will either be the new or old table after the statement has executed, including in the cases the CREATE fails
or the server crashes.
Atomic drop table (MDEV-23844) does not recover the replaced table if CREATE OR REPLACE TABLE fails.
This is because current, as before, CREATE OR REPLACE TABLE foo ... is implemented as:
DROP TABLE IF EXISTS foo;
CREATE TABLE foo ..
Because of that failed CREATE OR REPLACE TABLE or a crash during the create will lead to lost table, if the original table existed.
This task equips table drop with backing up the old table until the new table was successfully created.
In other words, this task ensures that if one executes CREATE OR REPLACE TABLE foo on an existing table,
the table foo will either be the new or old table after the statement has executed, including in the cases the CREATE fails
or the server crashes.
Atomic drop table (MDEV-23844) does not recover the replaced table if CREATE OR REPLACE TABLE fails.
This is because current, as before, CREATE OR REPLACE TABLE foo ... is implemented as:
DROP TABLE IF EXISTS foo;
CREATE TABLE foo ..
Because of that failed CREATE OR REPLACE TABLE or a crash during the create will lead to lost table, if the original table existed.
This task equips table drop with backing up the old table until the new table was successfully created.
In other words, this task ensures that if one executes CREATE OR REPLACE TABLE foo on an existing table, the table foo will either be the new or old table after the statement has executed, including in the cases the CREATE fails or the server crashes.
Atomic drop table (MDEV-23844) does not recover the replaced table if CREATE OR REPLACE TABLE fails.
This is because current, as before, CREATE OR REPLACE TABLE foo ... is implemented as:
DROP TABLE IF EXISTS foo;
CREATE TABLE foo ..
Because of that failed CREATE OR REPLACE TABLE or a crash during the create will lead to lost table, if the original table existed.
This task equips table drop with backing up the old table until the new table was successfully created.
In other words, this task ensures that if one executes CREATE OR REPLACE TABLE foo on an existing table, the table foo will either be the new or old table after the statement has executed, including in the cases the CREATE fails or the server crashes.
Atomic drop table (MDEV\-23844) does not recover the replaced table if CREATE OR REPLACE TABLE fails.
This is because current, as before, CREATE OR REPLACE TABLE foo ... is implemented as:
DROP TABLE IF EXISTS foo;
CREATE TABLE foo ..
Because of that failed CREATE OR REPLACE TABLE or a crash during the create will lead to lost table, if the original table existed.
This task equips table drop with backing up the old table until the new table was successfully created.
In other words, this task ensures that if one executes CREATE OR REPLACE TABLE foo on an existing table, the table foo will either be the new or old table after the statement has executed, including in the cases the CREATE fails or the server crashes.
Atomic drop table (MDEV\-23844) does not recover the replaced table if CREATE OR REPLACE TABLE fails.
This is because current, as before, CREATE OR REPLACE TABLE foo ... is implemented as:
DROP TABLE IF EXISTS foo;
CREATE TABLE foo ..
Because of that failed CREATE OR REPLACE TABLE or a crash during the create will lead to lost table, if the original table existed.
This task equips table drop with backing up the old table until the new table was successfully created.
In other words, this task ensures that if one executes CREATE OR REPLACE TABLE foo on an existing table, the table foo will either be the new or old table after the statement has executed, including in the cases the CREATE fails or the server crashes.
Atomic drop table (MDEV-23844) does not recover the replaced table if CREATE OR REPLACE TABLE fails.
This is because current, as before, CREATE OR REPLACE TABLE foo ... is implemented as:
DROP TABLE IF EXISTS foo;
CREATE TABLE foo ..
Because of that failed CREATE OR REPLACE TABLE or a crash during the create will lead to lost table, if the original table existed.
This task equips table drop with backing up the old table until the new table was successfully created.
In other words, this task ensures that if one executes CREATE OR REPLACE TABLE foo on an existing table, the table foo will either be the new or old table after the statement has executed, including in the cases the CREATE fails or the server crashes.
[ h5. Rebase to 10.12
1. Pick the task from bb-10.11-midenok-MDEV-25292
2. Apply patches from bb-10.11-midenok-MDEV-25292-fixes (everything except MDEV-28576)
]
Atomic drop table (MDEV-23844) does not recover the replaced table if CREATE OR REPLACE TABLE fails.
This is because current, as before, CREATE OR REPLACE TABLE foo ... is implemented as:
DROP TABLE IF EXISTS foo;
CREATE TABLE foo ..
Because of that failed CREATE OR REPLACE TABLE or a crash during the create will lead to lost table, if the original table existed.
This task equips table drop with backing up the old table until the new table was successfully created.
In other words, this task ensures that if one executes CREATE OR REPLACE TABLE foo on an existing table, the table foo will either be the new or old table after the statement has executed, including in the cases the CREATE fails or the server crashes.
Atomic drop table (MDEV-23844) does not recover the replaced table if CREATE OR REPLACE TABLE fails.
This is because current, as before, CREATE OR REPLACE TABLE foo ... is implemented as:
DROP TABLE IF EXISTS foo;
CREATE TABLE foo ..
Because of that failed CREATE OR REPLACE TABLE or a crash during the create will lead to lost table, if the original table existed.
This task equips table drop with backing up the old table until the new table was successfully created.
In other words, this task ensures that if one executes CREATE OR REPLACE TABLE foo on an existing table, the table foo will either be the new or old table after the statement has executed, including in the cases the CREATE fails or the server crashes.
*NOTE: this change was in a preview release for MariaDB Community Server 10.10.0, but could not be added to 10.10 RC*