diff --git a/src/box/lua/load_cfg.lua b/src/box/lua/load_cfg.lua index be134f513847b37597850c49776af67349e09f96..55ee8e14fdada0b749ba62297ed5873f90e3231a 100644 --- a/src/box/lua/load_cfg.lua +++ b/src/box/lua/load_cfg.lua @@ -21,7 +21,8 @@ local default_sophia_cfg = { memory_limit = 0, threads = 5, node_size = 134217728, - page_size = 131072 + page_size = 131072, + compression = "none" } -- all available options @@ -65,7 +66,8 @@ local sophia_template_cfg = { memory_limit = 'number', threads = 'number', node_size = 'number', - page_size = 'number' + page_size = 'number', + compression = 'string' } -- types of available options diff --git a/src/box/sophia_index.cc b/src/box/sophia_index.cc index d81d2b6ca21575136899f70749e3f34db79535a7..57c719b53504fdbb9970c60349bd0be877734253 100644 --- a/src/box/sophia_index.cc +++ b/src/box/sophia_index.cc @@ -139,6 +139,8 @@ sophia_configure(struct space *space, struct key_def *key_def) snprintf(pointer, sizeof(pointer), "pointer: %p", (void*)sophia_index_compare); snprintf(pointer_arg, sizeof(pointer_arg), "pointer: %p", (void*)key_def); sp_set(c, name, pointer, pointer_arg); + snprintf(name, sizeof(name), "db.%" PRIu32 ".compression", key_def->space_id); + sp_set(c, name, cfg_gets("sophia.compression")); snprintf(name, sizeof(name), "db.%" PRIu32, key_def->space_id); void *db = sp_get(c, name); if (db == NULL) diff --git a/test/box/admin.result b/test/box/admin.result index 807cff8b1fdc2191de54ab3bfe0745a8b11243df..973347aa1bf609cbebd3b827727fad26fa23c4a6 100644 --- a/test/box/admin.result +++ b/test/box/admin.result @@ -26,9 +26,10 @@ box.cfg slab_alloc_arena: 0.1 sophia: page_size: 131072 + memory_limit: 0 threads: 5 node_size: 134217728 - memory_limit: 0 + compression: none listen: <uri> logger_nonblock: true snap_dir: . diff --git a/test/box/cfg.result b/test/box/cfg.result index 61e12fb73d441be2a8f7e3918be35412a7201ef0..fc615be3ed65375fb4c314c964cfb8460d8efa40 100644 --- a/test/box/cfg.result +++ b/test/box/cfg.result @@ -2,7 +2,7 @@ --# push filter 'admin: .*' to 'admin: <uri>' box.cfg.nosuchoption = 1 --- -- error: '[string "-- load_cfg.lua - internal file..."]:260: Attempt to modify a read-only +- error: '[string "-- load_cfg.lua - internal file..."]:262: Attempt to modify a read-only table' ... t = {} for k,v in pairs(box.cfg) do if type(v) ~= 'table' and type(v) ~= 'function' then table.insert(t, k..': '..tostring(v)) end end @@ -36,7 +36,7 @@ t -- must be read-only box.cfg() --- -- error: '[string "-- load_cfg.lua - internal file..."]:206: bad argument #1 to ''pairs'' +- error: '[string "-- load_cfg.lua - internal file..."]:208: bad argument #1 to ''pairs'' (table expected, got nil)' ... t = {} for k,v in pairs(box.cfg) do if type(v) ~= 'table' and type(v) ~= 'function' then table.insert(t, k..': '..tostring(v)) end end @@ -70,23 +70,23 @@ t -- check that cfg with unexpected parameter fails. box.cfg{sherlock = 'holmes'} --- -- error: '[string "-- load_cfg.lua - internal file..."]:162: Error: cfg parameter +- error: '[string "-- load_cfg.lua - internal file..."]:164: Error: cfg parameter ''sherlock'' is unexpected' ... -- check that cfg with unexpected type of parameter failes box.cfg{listen = {}} --- -- error: '[string "-- load_cfg.lua - internal file..."]:182: Error: cfg parameter +- error: '[string "-- load_cfg.lua - internal file..."]:184: Error: cfg parameter ''listen'' should be one of types: string, number' ... box.cfg{wal_dir = 0} --- -- error: '[string "-- load_cfg.lua - internal file..."]:176: Error: cfg parameter +- error: '[string "-- load_cfg.lua - internal file..."]:178: Error: cfg parameter ''wal_dir'' should be of type string' ... box.cfg{coredump = 'true'} --- -- error: '[string "-- load_cfg.lua - internal file..."]:176: Error: cfg parameter +- error: '[string "-- load_cfg.lua - internal file..."]:178: Error: cfg parameter ''coredump'' should be of type boolean' ... -------------------------------------------------------------------------------- @@ -94,17 +94,17 @@ box.cfg{coredump = 'true'} -------------------------------------------------------------------------------- box.cfg{slab_alloc_arena = "100500"} --- -- error: '[string "-- load_cfg.lua - internal file..."]:176: Error: cfg parameter +- error: '[string "-- load_cfg.lua - internal file..."]:178: Error: cfg parameter ''slab_alloc_arena'' should be of type number' ... box.cfg{sophia = "sophia"} --- -- error: '[string "-- load_cfg.lua - internal file..."]:170: Error: cfg parameter +- error: '[string "-- load_cfg.lua - internal file..."]:172: Error: cfg parameter ''sophia'' should be a table' ... box.cfg{sophia = {threads = "threads"}} --- -- error: '[string "-- load_cfg.lua - internal file..."]:176: Error: cfg parameter +- error: '[string "-- load_cfg.lua - internal file..."]:178: Error: cfg parameter ''sophia.threads'' should be of type number' ... -------------------------------------------------------------------------------- diff --git a/test/sophia/options.result b/test/sophia/options.result index 75c23ee4a8d5f129793fca2178484888994edce6..4249fd3862eb027730828d2108c946b35d499774 100644 --- a/test/sophia/options.result +++ b/test/sophia/options.result @@ -1,9 +1,10 @@ box.cfg.sophia --- - page_size: 131072 + memory_limit: 0 threads: 0 node_size: 134217728 - memory_limit: 0 + compression: none ... box.cfg.sophia.threads = 3 --- diff --git a/third_party/sophia b/third_party/sophia index d7010473cfe8ceb7b1254183a77d286aa0cd3b11..68ce375fb75f9194edf967d96d0ff5dc04f3724f 160000 --- a/third_party/sophia +++ b/third_party/sophia @@ -1 +1 @@ -Subproject commit d7010473cfe8ceb7b1254183a77d286aa0cd3b11 +Subproject commit 68ce375fb75f9194edf967d96d0ff5dc04f3724f