diff --git a/src/box/lua/space.cc b/src/box/lua/space.cc index 604cee10c587bab1b5b079152a0bb599e429d4ae..5c62e872ba3de10ce14a33f031b37843e8a0dd84 100644 --- a/src/box/lua/space.cc +++ b/src/box/lua/space.cc @@ -162,14 +162,15 @@ lbox_fillspace(struct lua_State *L, struct space *space, int i) if (index == NULL) continue; struct index_def *index_def = index->index_def; + struct index_opts *index_opts = &index_def->opts; lua_pushnumber(L, index_def->iid); lua_newtable(L); /* space.index[k] */ if (index_def->type == HASH || index_def->type == TREE) { - lua_pushboolean(L, index_def->opts.is_unique); + lua_pushboolean(L, index_opts->is_unique); lua_setfield(L, -2, "unique"); } else if (index_def->type == RTREE) { - lua_pushnumber(L, index_def->opts.dimension); + lua_pushnumber(L, index_opts->dimension); lua_setfield(L, -2, "dimension"); } @@ -204,6 +205,28 @@ lbox_fillspace(struct lua_State *L, struct space *space, int i) lua_settable(L, -3); /* space.index[k].parts */ + if (space_is_vinyl(space)) { + lua_pushstring(L, "options"); + lua_newtable(L); + + lua_pushnumber(L, index_opts->range_size); + lua_setfield(L, -2, "range_size"); + + lua_pushnumber(L, index_opts->page_size); + lua_setfield(L, -2, "page_size"); + + lua_pushnumber(L, index_opts->run_count_per_level); + lua_setfield(L, -2, "run_count_per_level"); + + lua_pushnumber(L, index_opts->run_size_ratio); + lua_setfield(L, -2, "run_size_ratio"); + + lua_pushnumber(L, index_opts->bloom_fpr); + lua_setfield(L, -2, "bloom_fpr"); + + lua_settable(L, -3); + } + lua_settable(L, -3); /* space.index[k] */ lua_rawgeti(L, -1, index_def->iid); lua_setfield(L, -2, index_def->name); diff --git a/src/box/vinyl.c b/src/box/vinyl.c index f2a9006bc57cd2b7bd8183328c26142b2a7c5af9..a134657e6e19fec0abeff968666035101f351955 100644 --- a/src/box/vinyl.c +++ b/src/box/vinyl.c @@ -4589,10 +4589,6 @@ vy_index_info(struct vy_index *index, struct info_handler *h) histogram_snprint(buf, sizeof(buf), index->run_hist); info_append_str(h, "run_histogram", buf); - info_append_double(h, "bloom_fpr", index->opts.bloom_fpr); - info_append_int(h, "range_size", index->opts.range_size); - info_append_int(h, "page_size", index->opts.page_size); - info_end(h); } diff --git a/test/vinyl/coalesce.result b/test/vinyl/coalesce.result index a2778380edee2e4de563f38b80e0143ff89d86bd..b6478d302baca1c0b83a9753848da595764e24b9 100644 --- a/test/vinyl/coalesce.result +++ b/test/vinyl/coalesce.result @@ -16,7 +16,7 @@ function vyinfo() return box.space.test.index.primary:info() end range_count = 4 --- ... -tuple_size = math.ceil(vyinfo().page_size / 4) +tuple_size = math.ceil(s.index.primary.options.page_size / 4) --- ... pad_size = tuple_size - 30 @@ -26,7 +26,7 @@ assert(pad_size >= 16) --- - true ... -keys_per_range = math.floor(vyinfo().range_size / tuple_size) +keys_per_range = math.floor(s.index.primary.options.range_size / tuple_size) --- ... key_count = range_count * keys_per_range diff --git a/test/vinyl/coalesce.test.lua b/test/vinyl/coalesce.test.lua index 04d6efe39bfe59eb23dce234f5396599f48a44a6..c41e22702ea321d6fc079012504fe1aef348d6d7 100644 --- a/test/vinyl/coalesce.test.lua +++ b/test/vinyl/coalesce.test.lua @@ -8,10 +8,10 @@ _ = s:create_index('primary', {unique=true, parts={1, 'unsigned'}, page_size=256 function vyinfo() return box.space.test.index.primary:info() end range_count = 4 -tuple_size = math.ceil(vyinfo().page_size / 4) +tuple_size = math.ceil(s.index.primary.options.page_size / 4) pad_size = tuple_size - 30 assert(pad_size >= 16) -keys_per_range = math.floor(vyinfo().range_size / tuple_size) +keys_per_range = math.floor(s.index.primary.options.range_size / tuple_size) key_count = range_count * keys_per_range -- Rewrite the space until enough ranges are created. diff --git a/test/vinyl/ddl.result b/test/vinyl/ddl.result index 092a61c5a2b0c538dfdf37f5aa639b827930fa2d..a1aab739e5e2a6b713d0335552fde99cae081a4a 100644 --- a/test/vinyl/ddl.result +++ b/test/vinyl/ddl.result @@ -259,15 +259,15 @@ sec = space:create_index('sec', {bloom_fpr = 0.2}) third = space:create_index('third', {bloom_fpr = 0.3}) --- ... -pk:info().bloom_fpr +pk.options.bloom_fpr --- - 0.1 ... -sec:info().bloom_fpr +sec.options.bloom_fpr --- - 0.2 ... -third:info().bloom_fpr +third.options.bloom_fpr --- - 0.3 ... @@ -318,7 +318,7 @@ pk:info().disk.pages --- - 4 ... -pk:info().page_size +space.index.pk.options.page_size --- - 8192 ... @@ -326,7 +326,7 @@ pk:info().run_count --- - 1 ... -pk:info().bloom_fpr +space.index.pk.options.bloom_fpr --- - 0.1 ... @@ -365,7 +365,7 @@ pk:info().disk.pages --- - 6 ... -pk:info().page_size +space.index.pk.options.page_size --- - 16384 ... @@ -373,7 +373,7 @@ pk:info().run_count --- - 1 ... -pk:info().bloom_fpr +space.index.pk.options.bloom_fpr --- - 0.2 ... diff --git a/test/vinyl/ddl.test.lua b/test/vinyl/ddl.test.lua index 752b22eff61bef7d3dc79a241fd507f12556ebcc..1808f38bcb3c304f78e434cef7d80cead323ebad 100644 --- a/test/vinyl/ddl.test.lua +++ b/test/vinyl/ddl.test.lua @@ -103,9 +103,9 @@ space = box.schema.space.create('test', {engine='vinyl'}) pk = space:create_index('pk', {bloom_fpr = 0.1}) sec = space:create_index('sec', {bloom_fpr = 0.2}) third = space:create_index('third', {bloom_fpr = 0.3}) -pk:info().bloom_fpr -sec:info().bloom_fpr -third:info().bloom_fpr +pk.options.bloom_fpr +sec.options.bloom_fpr +third.options.bloom_fpr space:drop() -- @@ -128,9 +128,9 @@ for i = 1, 20 do space:replace{i, pad} end est_bsize = pad_size * 20 box.snapshot() pk:info().disk.pages -pk:info().page_size +space.index.pk.options.page_size pk:info().run_count -pk:info().bloom_fpr +space.index.pk.options.bloom_fpr -- Change page_size and trigger compaction page_size = page_size * 2 @@ -145,9 +145,9 @@ box.snapshot() -- Wait for compaction while pk:info().run_count ~= 1 do fiber.sleep(0.01) end pk:info().disk.pages -pk:info().page_size +space.index.pk.options.page_size pk:info().run_count -pk:info().bloom_fpr +space.index.pk.options.bloom_fpr est_bsize / page_size == pk:info().disk.pages space:drop() diff --git a/test/vinyl/recover.result b/test/vinyl/recover.result index c6142ef80a9c84cddb55b5716a5637a18ecda599..4c3325bf22331086da54532a9a81425c4532c9f3 100644 --- a/test/vinyl/recover.result +++ b/test/vinyl/recover.result @@ -26,7 +26,7 @@ function vyinfo() return box.space.test.index.primary:info() end range_count = 4 --- ... -tuple_size = math.ceil(vyinfo().page_size / 4) +tuple_size = math.ceil(s.index.primary.options.page_size / 4) --- ... pad_size = tuple_size - 30 @@ -36,7 +36,7 @@ assert(pad_size >= 16) --- - true ... -keys_per_range = math.floor(vyinfo().range_size / tuple_size) +keys_per_range = math.floor(s.index.primary.options.range_size / tuple_size) --- ... key_count = range_count * keys_per_range diff --git a/test/vinyl/recover.test.lua b/test/vinyl/recover.test.lua index 046b016c20de709719d9968c354d926a00d48643..e88563535e837295337925bd99134843e8e73d06 100644 --- a/test/vinyl/recover.test.lua +++ b/test/vinyl/recover.test.lua @@ -14,10 +14,10 @@ _ = s:create_index('primary', {page_size=256, range_size=2048, run_count_per_lev function vyinfo() return box.space.test.index.primary:info() end range_count = 4 -tuple_size = math.ceil(vyinfo().page_size / 4) +tuple_size = math.ceil(s.index.primary.options.page_size / 4) pad_size = tuple_size - 30 assert(pad_size >= 16) -keys_per_range = math.floor(vyinfo().range_size / tuple_size) +keys_per_range = math.floor(s.index.primary.options.range_size / tuple_size) key_count = range_count * keys_per_range -- Add a number of tuples to the test space to trigger range splitting. diff --git a/test/vinyl/split.result b/test/vinyl/split.result index 25ed1615aa5da4ddc19e8e2f15baaa239fb3245d..222d49ae4cadbffb081e27c258bfbbee76fa9fc2 100644 --- a/test/vinyl/split.result +++ b/test/vinyl/split.result @@ -13,10 +13,10 @@ _= space:create_index('primary', { parts = { 1, 'unsigned' }, run_count_per_leve function vyinfo() return space.index.primary:info() end --- ... -range_size = vyinfo().range_size +range_size = space.index.primary.options.range_size --- ... -tuple_size = vyinfo().page_size / 2 +tuple_size = space.index.primary.options.page_size / 2 --- ... tuples_per_range = math.ceil(range_size / tuple_size + 1) diff --git a/test/vinyl/split.test.lua b/test/vinyl/split.test.lua index 18ba9bb1c8254607c7b127d71be723bbf4739b74..6f2d8e1402cb4a7533fc3303492b3a53d427ade9 100644 --- a/test/vinyl/split.test.lua +++ b/test/vinyl/split.test.lua @@ -6,8 +6,8 @@ _= space:create_index('primary', { parts = { 1, 'unsigned' }, run_count_per_leve function vyinfo() return space.index.primary:info() end -range_size = vyinfo().range_size -tuple_size = vyinfo().page_size / 2 +range_size = space.index.primary.options.range_size +tuple_size = space.index.primary.options.page_size / 2 tuples_per_range = math.ceil(range_size / tuple_size + 1) test_run:cmd("setopt delimiter ';'")