File: bitset.lua

package info (click to toggle)
tarantool 1.9.1.26.g63eb81e3c-1.1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 38,724 kB
  • sloc: ansic: 247,425; cpp: 24,952; sh: 17,809; python: 10,699; makefile: 2,682
file content (53 lines) | stat: -rw-r--r-- 1,295 bytes parent folder | download | duplicates (2)
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