[Tarantool-patches] [PATCH] vinyl: add NULL check of xrow_upsert_execute() retval
Vladislav Shpilevoy
v.shpilevoy at tarantool.org
Sat May 30 00:34:44 MSK 2020
Note, I didn't see an error message in the log in the test below,
when it skipped the upsert.
> Here is a test. Create a tuple, and dump it on disk so as it would
> disappear from the memory level and from the cache:
>
> box.cfg{}
> s = box.schema.create_space('test', {engine = 'vinyl'})
> pk = s:create_index('pk')
> s:insert({1, 1})
> box.snapshot()
>
> Then restart (to ensure the cache is clear), and create 2 upserts:
>
> box.cfg{}
> s = box.space.test
> ops = {}
> op = {'=', 2, 100}
> for i = 1, 2500 do table.insert(ops, op) end
> s:upsert({1}, ops)
> op = {'=', -1, 200}
> ops = {}
> for i = 1, 2500 do table.insert(ops, op) end
> s:upsert({1}, ops)
>
> Now if I do select, I get
>
> tarantool> s:select{}
> ---
> - - [1, 200]
> ...
>
> But if I do dump + select, I get:
>
> tarantool> box.snapshot()
> ---
> - ok
> ...
>
> tarantool> s:select{}
> ---
> - - [1, 100]
> ...
>
> During dump the second upsert was skipped even though it was valid.
>
More information about the Tarantool-patches
mailing list