[PATCH 01/10] ddl: unreference view on space drop synchronously
Vladimir Davydov
vdavydov.dev at gmail.com
Wed Jul 3 22:30:03 MSK 2019
Do it on_replace rather than on_commit. This is required to implement
transactional DDL.
Note, this is the only place where on_replace_dd_space() postpones
schema update until after commit. Other than that, space updates are
already transactional DDL friendly.
---
src/box/alter.cc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/box/alter.cc b/src/box/alter.cc
index e76b9e68..7c4d949f 100644
--- a/src/box/alter.cc
+++ b/src/box/alter.cc
@@ -1680,7 +1680,6 @@ on_drop_view_commit(struct trigger *trigger, void *event)
{
(void) event;
struct Select *select = (struct Select *)trigger->data;
- update_view_references(select, -1, true, NULL);
sql_select_delete(sql_get(), select);
}
@@ -1694,6 +1693,7 @@ on_drop_view_rollback(struct trigger *trigger, void *event)
{
(void) event;
struct Select *select = (struct Select *)trigger->data;
+ update_view_references(select, 1, true, NULL);
sql_select_delete(sql_get(), select);
}
@@ -1912,6 +1912,7 @@ on_replace_dd_space(struct trigger * /* trigger */, void *event)
txn_alter_trigger_new(on_drop_view_rollback,
select);
txn_on_rollback(txn, on_rollback_view);
+ update_view_references(select, -1, true, NULL);
select_guard.is_active = false;
}
} else { /* UPDATE, REPLACE */
--
2.11.0
More information about the Tarantool-patches
mailing list