From c63996e7be28936696726fff82217118c6456ae6 Mon Sep 17 00:00:00 2001 From: Evgeny Kornev Date: Tue, 31 Dec 2024 11:07:13 +0200 Subject: [PATCH] API: add compact_sstables and list_column_families Add compact_sstables, list_column_families APIs Add tests for the above --- test_lua.lua | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++ tidesdb-lua.c | 20 +++++++++++++++ 2 files changed, 87 insertions(+) diff --git a/test_lua.lua b/test_lua.lua index d29f053..a0d408b 100644 --- a/test_lua.lua +++ b/test_lua.lua @@ -101,11 +101,78 @@ function test_put_and_delete() assert(code == 0, message) end +function test_put_and_compact() + code, message = db.open(directory) + assert(code == 0, message) + + code, message = db.create_column_family(name, + threshold, + max_skip_list, + prob_skip_list, + enable_compression, + compression_algo, + enable_bloom_filter, + db_data_struct) + assert(code == 0, message) + + for i=1,20 do + code, message = db.put(name, i + '0', value, ttl) + assert(code == 0, message) + end + + code, message = db.compact_sstables(name, 2) + + code, message = db.drop_column_family(name) + assert(code == 0, message) + + code, message = db.close() + assert(code == 0, message) +end + +function test_list_column_families() + code, message = db.open(directory) + assert(code == 0, message) + + code, message = db.create_column_family("one", + threshold, + max_skip_list, + prob_skip_list, + enable_compression, + compression_algo, + enable_bloom_filter, + db_data_struct) + assert(code == 0, message) + + code, message = db.create_column_family("two", + threshold, + max_skip_list, + prob_skip_list, + enable_compression, + compression_algo, + enable_bloom_filter, + db_data_struct) + assert(code == 0, message) + + list = db.list_column_families() + assert(list == "one\ntwo\n") + + code, message = db.drop_column_family("one") + assert(code == 0, message) + + code, message = db.drop_column_family("two") + assert(code == 0, message) + + code, message = db.close() + assert(code == 0, message) +end + function test_all() test_open_close() test_create_and_drop_column() test_put_and_get() test_put_and_delete() + test_put_and_compact() + test_list_column_families() end test_all() diff --git a/tidesdb-lua.c b/tidesdb-lua.c index f8c7f70..0ce6b5a 100644 --- a/tidesdb-lua.c +++ b/tidesdb-lua.c @@ -138,6 +138,24 @@ static int delete(lua_State *L) LUA_RET_CODE() } +static int compact_sstables(lua_State *L) +{ + const char* column_family = luaL_checkstring(L, 1); + const int max_threads = (uint32_t)luaL_checkinteger(L, 2); + tidesdb_err_t *ret = tidesdb_compact_sstables(db, + column_family, + max_threads); + LUA_RET_CODE() +} + +static int list_column_families(lua_State *L) +{ + const char* list = tidesdb_list_column_families(db); + lua_pushstring(L, list); + return 1; +} + + static const luaL_Reg regs_tidesdb_lua[] = { {"open", db_open}, {"close", db_close}, @@ -146,6 +164,8 @@ static const luaL_Reg regs_tidesdb_lua[] = { {"put", put}, {"get", get}, {"delete", delete}, + {"compact_sstables", compact_sstables}, + {"list_column_families", list_column_families}, {NULL, NULL} };