Skip to content
Snippets Groups Projects
Commit 330a607a authored by imarkov's avatar imarkov Committed by Konstantin Osipov
Browse files

box: Add before_replace trigger tests

* Add test on usage run_triggers inside before_replace.
Test verifies that other before_replace triggers within the
same space will be executed but other triggers won't.
* Add test on return old in before_replace.
Test verifies that other before_replace triggers will be executed,
but insertion won't take place and other triggers will be ignored.

Closes #3128
parent 97918db3
No related branches found
No related tags found
No related merge requests found
......@@ -664,6 +664,104 @@ row.BODY.space_id == s.id
---
- true
...
-- gh-3128 before_replace with run_triggers
s2 = box.schema.space.create("test2")
---
...
_ = s2:create_index("prim")
---
...
before_replace1 = function() s2:insert{1} s:run_triggers(false) end
---
...
before_replace2 = function() s2:insert{2} end
---
...
on_replace = function() s2:insert{3} end
---
...
type(s:on_replace(on_replace))
---
- function
...
type(s:before_replace(before_replace1))
---
- function
...
type(s:before_replace(before_replace2))
---
- function
...
s:insert{1, 1}
---
...
s2:select{}
---
- - [1]
- [2]
...
s:truncate()
---
...
s2:truncate()
---
...
s:on_replace(nil, on_replace)
---
...
s:before_replace(nil, before_replace1)
---
...
s:before_replace(nil, before_replace2)
---
...
--
-- gh-3128
-- If at least one before trigger returns old
-- insertion will be aborted, but other before triggers
-- will be executed
before_replace1 = function(old, new) s2:insert{1} return old end
---
...
before_replace2 = function(old, new) s2:insert{2} end
---
...
type(s:on_replace(on_replace))
---
- function
...
type(s:before_replace(before_replace1))
---
- function
...
type(s:before_replace(before_replace2))
---
- function
...
s:insert{1, 1}
---
...
s:select{}
---
- []
...
s2:select{}
---
- - [1]
- [2]
...
s:on_replace(nil, on_replace)
---
...
s:before_replace(nil, before_replace1)
---
...
s:before_replace(nil, before_replace2)
---
...
s2:drop()
---
...
s:drop()
---
...
......@@ -223,4 +223,44 @@ state, row = fun(param, state)
row.HEADER.type
row.BODY.space_id == s.id
-- gh-3128 before_replace with run_triggers
s2 = box.schema.space.create("test2")
_ = s2:create_index("prim")
before_replace1 = function() s2:insert{1} s:run_triggers(false) end
before_replace2 = function() s2:insert{2} end
on_replace = function() s2:insert{3} end
type(s:on_replace(on_replace))
type(s:before_replace(before_replace1))
type(s:before_replace(before_replace2))
s:insert{1, 1}
s2:select{}
s:truncate()
s2:truncate()
s:on_replace(nil, on_replace)
s:before_replace(nil, before_replace1)
s:before_replace(nil, before_replace2)
--
-- gh-3128
-- If at least one before trigger returns old
-- insertion will be aborted, but other before triggers
-- will be executed
before_replace1 = function(old, new) s2:insert{1} return old end
before_replace2 = function(old, new) s2:insert{2} end
type(s:on_replace(on_replace))
type(s:before_replace(before_replace1))
type(s:before_replace(before_replace2))
s:insert{1, 1}
s:select{}
s2:select{}
s:on_replace(nil, on_replace)
s:before_replace(nil, before_replace1)
s:before_replace(nil, before_replace2)
s2:drop()
s:drop()
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