Skip to content
Snippets Groups Projects
Commit d512174a authored by Vladimir Davydov's avatar Vladimir Davydov
Browse files

Allow to mix blackhole statements in other engines' transactions

Blackhole doesn't need transaction control as it doesn't actually store
anything so we can mark it with ENGINE_BYPASS_TX.
parent b9fd0b3b
No related branches found
No related tags found
No related merge requests found
......@@ -206,5 +206,6 @@ blackhole_engine_new(void)
engine->vtab = &blackhole_engine_vtab;
engine->name = "blackhole";
engine->flags = ENGINE_BYPASS_TX;
return engine;
}
......@@ -95,6 +95,58 @@ s:on_replace(nil, f1)
s:before_replace(nil, f2)
---
...
-- Blackhole statements can be mixed in other engines' transactions.
memtx = box.schema.space.create('memtx', {engine = 'memtx'})
---
...
_ = memtx:create_index('pk')
---
...
test_run:cmd("setopt delimiter ';'")
---
- true
...
box.begin()
s:replace{1}
memtx:replace{1}
s:replace{2}
memtx:replace{2}
box.commit();
---
...
test_run:cmd("setopt delimiter ''");
---
- true
...
memtx:select()
---
- - [1]
- [2]
...
f = s:on_replace(function(old, new) memtx:replace(new) end)
---
...
s:replace{3}
---
- [3]
...
s:replace{4}
---
- [4]
...
memtx:select()
---
- - [1]
- [2]
- [3]
- [4]
...
s:on_replace(nil, f)
---
...
memtx:drop()
---
...
-- Test recovery.
test_run:cmd('restart server default')
s = box.space.test
......
......@@ -33,6 +33,25 @@ s_old, s_new
s:on_replace(nil, f1)
s:before_replace(nil, f2)
-- Blackhole statements can be mixed in other engines' transactions.
memtx = box.schema.space.create('memtx', {engine = 'memtx'})
_ = memtx:create_index('pk')
test_run:cmd("setopt delimiter ';'")
box.begin()
s:replace{1}
memtx:replace{1}
s:replace{2}
memtx:replace{2}
box.commit();
test_run:cmd("setopt delimiter ''");
memtx:select()
f = s:on_replace(function(old, new) memtx:replace(new) end)
s:replace{3}
s:replace{4}
memtx:select()
s:on_replace(nil, f)
memtx:drop()
-- Test recovery.
test_run:cmd('restart server default')
s = box.space.test
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment