1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
local utils = require('utils')
local SPACE_NO = 0
local INDEX_NO = 1
function create_space()
local space = box.schema.create_space('tweedledum')
space:create_index('primary', { type = 'hash', parts = {1, 'unsigned'}, unique = true })
space:create_index('bitset', { type = 'bitset', parts = {2, 'unsigned'}, unique = false })
end
function fill(...)
local space = box.space['tweedledum']
local nums = utils.table_generate(utils.arithmetic(...))
utils.table_shuffle(nums)
for _k, v in ipairs(nums) do
space:insert{v, v}
end
end
function delete(...)
local space = box.space['tweedledum']
local nums = utils.table_generate(utils.arithmetic(...))
utils.table_shuffle(nums)
for _k, v in ipairs(nums) do
space:delete{v}
end
end
function clear()
box.space['tweedledum']:truncate()
end
function drop_space()
box.space['tweedledum']:drop()
end
function dump(...)
return iterate('tweedledum', 'bitset', 1, 2, ...)
end
function test_insert_delete(n)
local t = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53,
59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127}
utils.table_shuffle(t)
clear()
fill(1, n)
for _, v in ipairs(t) do delete(v, n / v) end
return dump(box.index.BITS_ALL)
end
|