DROP SCHEMA/TABLE IF EXISTS being logged even if the object didn't exist
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Drizzle |
Fix Released
|
Medium
|
David Shrewsbury | ||
7.0 |
Fix Released
|
Medium
|
David Shrewsbury |
Bug Description
If you issue a DROP SCHEMA IF EXISTS $schema, the transaction log is recording this as DROP SCHEMA $schema.
This is problematic as trying to execute the SQL from this would result in an error *and* the log is recording something that didn't actually happen.
I'll create a branch with a test-case shortly, but here is an example.
./test.run --start-and-exit --drizzled=
DROP SCHEMA IF EXISTS bobo;
select print_transacti
+------
| print_transacti
+------
| transaction_context {
server_id: 1
transaction_id: 772
start_timestamp: 1289563680419957
end_timestamp: 1289563680419970
}
statement {
type: DROP_SCHEMA
start_timestamp: 1289563680419967
end_timestamp: 1289563680419970
drop_
schema_name: "bobo"
}
}
|
+------
1 row in set (0 sec)
Related branches
- Lee Bieber (community): Needs Fixing
-
Diff: 4150 lines (+497/-746)54 files modifieddrizzled/db.cc (+10/-10)
drizzled/message/statement_transform.cc (+0/-7)
drizzled/message/transaction.proto (+0/-1)
drizzled/sql_table.cc (+7/-6)
drizzled/transaction_services.cc (+1/-4)
drizzled/transaction_services.h (+1/-3)
plugin/filtered_replicator/tests/r/filtered_replicator.result (+35/-50)
plugin/storage_engine_api_tester/tests/r/txn_log_insert.result (+0/-3)
plugin/storage_engine_api_tester/tests/r/txn_log_rollback_large_stmt.result (+0/-3)
plugin/transaction_log/tests/r/alter.result (+0/-6)
plugin/transaction_log/tests/r/auto_commit.result (+0/-6)
plugin/transaction_log/tests/r/blob.result (+0/-12)
plugin/transaction_log/tests/r/create_select.result (+0/-12)
plugin/transaction_log/tests/r/create_table.result (+0/-6)
plugin/transaction_log/tests/r/ddl_transaction_id.result (+2/-23)
plugin/transaction_log/tests/r/delete.result (+0/-6)
plugin/transaction_log/tests/r/information_schema.result (+2/-23)
plugin/transaction_log/tests/r/insert.result (+0/-6)
plugin/transaction_log/tests/r/insert_multi.result (+7/-6)
plugin/transaction_log/tests/r/insert_on_duplicate_update.result (+0/-6)
plugin/transaction_log/tests/r/insert_select.result (+13/-12)
plugin/transaction_log/tests/r/multi_column_primary_key.result (+0/-6)
plugin/transaction_log/tests/r/multi_table.result (+0/-12)
plugin/transaction_log/tests/r/no_modification.result (+7/-6)
plugin/transaction_log/tests/r/no_primary_key.result (+0/-6)
plugin/transaction_log/tests/r/null_values.result (+0/-24)
plugin/transaction_log/tests/r/rand.result (+0/-6)
plugin/transaction_log/tests/r/rename.result (+7/-12)
plugin/transaction_log/tests/r/replace.result (+0/-12)
plugin/transaction_log/tests/r/rollback.result (+0/-6)
plugin/transaction_log/tests/r/schema.result (+0/-6)
plugin/transaction_log/tests/r/select_for_update.result (+0/-6)
plugin/transaction_log/tests/r/temp_tables.result (+0/-6)
plugin/transaction_log/tests/r/transaction_log_alter.result (+58/-58)
plugin/transaction_log/tests/r/transaction_log_create.result (+36/-36)
plugin/transaction_log/tests/r/transaction_log_data_type.result (+172/-172)
plugin/transaction_log/tests/r/transaction_log_delete.result (+20/-20)
plugin/transaction_log/tests/r/transaction_log_drop.result (+14/-42)
plugin/transaction_log/tests/r/transaction_log_large_blob.result (+2/-2)
plugin/transaction_log/tests/r/transaction_log_loaddata.result (+2/-2)
plugin/transaction_log/tests/r/transaction_log_replace.result (+8/-8)
plugin/transaction_log/tests/r/transaction_log_rollback.result (+2/-2)
plugin/transaction_log/tests/r/transaction_log_schema.result (+0/-1)
plugin/transaction_log/tests/r/transaction_log_transaction.result (+28/-28)
plugin/transaction_log/tests/r/transaction_log_update.result (+38/-38)
plugin/transaction_log/tests/r/truncate.result (+4/-3)
plugin/transaction_log/tests/r/truncate_log.result (+1/-1)
plugin/transaction_log/tests/r/update.result (+0/-6)
plugin/transaction_log/tests/t/insert_multi.inc (+2/-0)
plugin/transaction_log/tests/t/insert_select.inc (+2/-0)
plugin/transaction_log/tests/t/no_modification.inc (+2/-0)
plugin/transaction_log/tests/t/rename.inc (+2/-0)
plugin/transaction_log/tests/t/transaction_log_drop.test (+10/-8)
plugin/transaction_log/tests/t/truncate.inc (+2/-0)
Changed in drizzle: | |
status: | New → Confirmed |
importance: | Undecided → High |
assignee: | nobody → David Shrewsbury (dshrews) |
Changed in drizzle: | |
status: | Triaged → In Progress |
Changed in drizzle: | |
status: | In Progress → Fix Committed |
Also happens for DROP TABLE IF