From 18e3463d2837b870aea1e36c3c7f918cec81f1b5 Mon Sep 17 00:00:00 2001 From: Vladimir Davydov <vdavydov.dev@gmail.com> Date: Tue, 27 Jun 2017 20:04:56 +0300 Subject: [PATCH] vinyl: move index options from index.info to index.options index.info() is supposed to show index stats, not options. box.space.<space_name>.index.<index_name>.options looks like a better place for reporting index options. Needed for #1662 --- src/box/lua/space.cc | 27 +++++++++++++++++++++++++-- src/box/vinyl.c | 4 ---- test/vinyl/coalesce.result | 4 ++-- test/vinyl/coalesce.test.lua | 4 ++-- test/vinyl/ddl.result | 14 +++++++------- test/vinyl/ddl.test.lua | 14 +++++++------- test/vinyl/recover.result | 4 ++-- test/vinyl/recover.test.lua | 4 ++-- test/vinyl/split.result | 4 ++-- test/vinyl/split.test.lua | 4 ++-- 10 files changed, 51 insertions(+), 32 deletions(-) diff --git a/src/box/lua/space.cc b/src/box/lua/space.cc index 604cee10c5..5c62e872ba 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 f2a9006bc5..a134657e6e 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 a2778380ed..b6478d302b 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 04d6efe39b..c41e22702e 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 092a61c5a2..a1aab739e5 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 752b22eff6..1808f38bcb 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 c6142ef80a..4c3325bf22 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 046b016c20..e88563535e 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 25ed1615aa..222d49ae4c 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 18ba9bb1c8..6f2d8e1402 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 ';'") -- GitLab