[Tarantool-patches] [PATCH 02/15] Check data_offset overflow in struct tuple
Vladislav Shpilevoy
v.shpilevoy at tarantool.org
Sun Jul 5 20:03:47 MSK 2020
Thanks for the patch!
See 3 comments below.
> diff --git a/test/box/huge_field_map.result b/test/box/huge_field_map.result
> new file mode 100644
> index 0000000..11b4da3
> --- /dev/null
> +++ b/test/box/huge_field_map.result
> @@ -0,0 +1,49 @@
> +-- test-run result file version 2
> +env = require('test_run')
> + | ---
> + | ...
> +test_run = env.new()
> + | ---
> + | ...
> +
> +s = box.schema.space.create('test', {engine = 'memtx'})
> + | ---
> + | ...
> +i1 = s:create_index('pk')
> + | ---
> + | ...
> +i2 = s:create_index('mk', {parts={{'[2][*]', 'uint'}}})
1. Why do you need a multikey index? This test lacks a comment.
> + | ---
> + | ...
> +test_run:cmd("setopt delimiter ';'")
> + | ---
> + | - true
> + | ...
> diff --git a/test/box/huge_field_map_long.result b/test/box/huge_field_map_long.result
> new file mode 100644
> index 0000000..d7971ae
> --- /dev/null
> +++ b/test/box/huge_field_map_long.result
> @@ -0,0 +1,51 @@
> +-- test-run result file version 2
> +env = require('test_run')
> + | ---
> + | ...
> +test_run = env.new()
> + | ---
> + | ...
> +
> +s = box.schema.space.create('test', {engine = 'memtx'})
2. I saw you also fixed vinyl and runtime tuples. I suppose
you need to test them as well.
> + | ---
> + | ...
> +test_run:cmd("setopt delimiter ';'")
> + | ---
> + | - true
> + | ...
> +function test()
> + local t = {}
> + local k = {}
> + for i = 1,128 do
> + local parts = {}
> + for j = 0,127 do
> + table.insert(parts, {i * 128 - j, 'uint'})
> + table.insert(t, 1)
> + end
> + if i == 1 then k = table.deepcopy(t) end
> + s:create_index('test'..i, {parts = parts})
> + if i % 16 == 0 then
> + s:replace(t)
> + s:delete(k)
> + end
> + end
> +end;
> + | ---
> + | ...
> +test_run:cmd("setopt delimiter ''");
> + | ---
> + | - true
> + | ...
> +
> +pcall(test) -- must fail but not crash
> + | ---
> + | - false
> + | - 'Can''t create tuple: metadata size 65542 is too big'
> + | ...
> +
> +test = nil
> + | ---
> + | ...
> +s:drop()
> + | ---
> + | ...
> diff --git a/test/box/huge_field_map_long.test.lua b/test/box/huge_field_map_long.test.lua
> new file mode 100644
3. Why do you need a 'long' test? The first test seems to be good enough.
More information about the Tarantool-patches
mailing list