diff --git a/CMakeLists.txt b/CMakeLists.txt
index f27f5f1672..65d1e133d7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -42,7 +42,7 @@ if(${BUILD_WITH_LEVELDB})
endif(${BUILD_WITH_LEVELDB})
## rocksdb
-option(BUILD_WITH_ROCKSDB "If build with rocksdb" ON)
+option(BUILD_WITH_ROCKSDB "If build with rocksdb" OFF)
if(${BUILD_WITH_ROCKSDB})
cat("${CMAKE_SUPPORT_DIR}/rocksdb_CMakeLists.txt.in" ${DEPS_TMP_FILE})
endif(${BUILD_WITH_ROCKSDB})
diff --git a/include/libs/tkv/tkv.h b/include/libs/tkv/tkv.h
index c31d655e43..d9cabc1e40 100644
--- a/include/libs/tkv/tkv.h
+++ b/include/libs/tkv/tkv.h
@@ -16,30 +16,43 @@
#ifndef _TD_TKV_H_
#define _TD_TKV_H_
+#include "os.h"
+
#ifdef __cplusplus
extern "C" {
#endif
// Types exported
-typedef struct STkvDb STkvDb;
-typedef struct STkvOptions STkvOptions;
-typedef struct STkvCache STkvCache;
+typedef struct STkvDb STkvDb;
+typedef struct STkvOpts STkvOpts;
+typedef struct STkvCache STkvCache;
+typedef struct STkvReadOpts STkvReadOpts;
+typedef struct STkvWriteOpts STkvWriteOpts;
// DB operations
-STkvDb *tkvOpen(const STkvOptions *options, const char *path);
+STkvDb *tkvOpen(const STkvOpts *options, const char *path);
void tkvClose(STkvDb *db);
-void tkvPut(STkvDb *db, void * /*TODO*/);
+void tkvPut(STkvDb *db, STkvWriteOpts *, char *key, size_t keylen, char *val, size_t vallen);
+char * tkvGet(STkvDb *db, STkvReadOpts *, char *key, size_t keylen, size_t *vallen);
// DB options
-STkvOptions *tkvOptionsCreate();
-void tkvOptionsDestroy(STkvOptions *);
-void tkvOptionsSetCache(STkvOptions *, STkvCache *);
+STkvOpts *tkvOptionsCreate();
+void tkvOptionsDestroy(STkvOpts *);
+void tkvOptionsSetCache(STkvOpts *, STkvCache *);
// DB cache
typedef enum { TKV_LRU_CACHE = 0, TKV_LFU_CACHE = 1 } ETkvCacheType;
STkvCache *tkvCacheCreate(size_t capacity, ETkvCacheType type);
void tkvCacheDestroy(STkvCache *);
+// STkvReadOpts
+STkvReadOpts *tkvReadOptsCreate();
+void tkvReadOptsDestroy(STkvReadOpts *);
+
+// STkvWriteOpts
+STkvWriteOpts *tkvWriteOptsCreate();
+void tkvWriteOptsDestroy(STkvWriteOpts *);
+
#ifdef __cplusplus
}
#endif
diff --git a/source/libs/tkv/CMakeLists.txt b/source/libs/tkv/CMakeLists.txt
index bec359d75d..6ad553b1ca 100644
--- a/source/libs/tkv/CMakeLists.txt
+++ b/source/libs/tkv/CMakeLists.txt
@@ -4,4 +4,8 @@ target_include_directories(
tkv
PUBLIC "${CMAKE_SOURCE_DIR}/include/libs/tkv"
PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/inc"
+)
+target_link_libraries(
+ tkv
+ PUBLIC os
)
\ No newline at end of file
diff --git a/source/libs/tkv/src/tkv.c b/source/libs/tkv/src/tkv.c
index 6dea4a4e57..9c78c23db4 100644
--- a/source/libs/tkv/src/tkv.c
+++ b/source/libs/tkv/src/tkv.c
@@ -11,4 +11,71 @@
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
- */
\ No newline at end of file
+ */
+
+#include "tkv.h"
+
+struct STkvDb {
+ // TODO
+};
+struct STkvOpts {
+ // TODO
+};
+struct STkvCache {
+ // TODO
+};
+struct STkvReadOpts {
+ // TODO
+};
+struct STkvWriteOpts {
+ // TODO
+};
+
+STkvDb *tkvOpen(const STkvOpts *options, const char *path) {
+ // TODO
+ return NULL;
+}
+
+void tkvClose(STkvDb *db) {
+ // TODO
+}
+
+void tkvPut(STkvDb *db, STkvWriteOpts *pwopts, char *key, size_t keylen, char *val, size_t vallen) {
+ // TODO
+}
+
+char *tkvGet(STkvDb *db, STkvReadOpts *propts, char *key, size_t keylen, size_t *vallen) {
+ // TODO
+ return NULL;
+}
+
+STkvOpts *tkvOptionsCreate() {
+ // TODO
+ return NULL;
+}
+
+void tkvOptionsDestroy(STkvOpts *popts) {
+ // TODO
+}
+
+void tkvOptionsSetCache(STkvOpts *popts, STkvCache *pCache) {
+ // TODO
+}
+
+STkvReadOpts *tkvReadOptsCreate() {
+ // TODO
+ return NULL;
+}
+
+void tkvReadOptsDestroy(STkvReadOpts *propts) {
+ // TODO
+}
+
+STkvWriteOpts *tkvWriteOptsCreate() {
+ // TODO
+ return NULL;
+}
+
+void tkvWriteOptsDestroy(STkvWriteOpts *pwopts) {
+ // TODO
+}
\ No newline at end of file
diff --git a/source/server/vnode/meta/CMakeLists.txt b/source/server/vnode/meta/CMakeLists.txt
index 94bf9581d3..0de78074ee 100644
--- a/source/server/vnode/meta/CMakeLists.txt
+++ b/source/server/vnode/meta/CMakeLists.txt
@@ -8,8 +8,8 @@ target_include_directories(
target_link_libraries(
meta
PUBLIC common
+ PUBLIC tkv
)
-target_link_libraries(meta PUBLIC rocksdb)
if(${BUILD_TEST})
add_subdirectory(test)
diff --git a/source/server/vnode/meta/src/meta.c b/source/server/vnode/meta/src/meta.c
index 000b2ca9b0..c63aa31b30 100644
--- a/source/server/vnode/meta/src/meta.c
+++ b/source/server/vnode/meta/src/meta.c
@@ -13,8 +13,7 @@
* along with this program. If not, see .
*/
-#include
-
+#include "tkv.h"
#include "thash.h"
#include "tlist.h"
#include "tlockfree.h"
@@ -44,13 +43,13 @@ typedef struct STableObj {
struct SMeta {
pthread_rwlock_t rwLock;
- SHashObj * pTableObjHash; // uid --> STableObj
- SList * stbList; // super table list
- rocksdb_t *tbnameDb; // tbname --> uid
- rocksdb_t *tagDb; // uid --> tag
- rocksdb_t *schemaDb;
- rocksdb_t *tagIdx;
- size_t totalUsed;
+ SHashObj *pTableObjHash; // uid --> STableObj
+ SList * stbList; // super table list
+ STkvDb * tbnameDb; // tbname --> uid
+ STkvDb * tagDb; // uid --> tag
+ STkvDb * schemaDb;
+ STkvDb * tagIdx;
+ size_t totalUsed;
};
static STable * metaTableNew(tb_uid_t uid, const char *name, int32_t sver);
@@ -74,34 +73,33 @@ SMeta *metaOpen(SMetaOpts *options) {
pMeta->stbList = tdListNew(sizeof(STableObj *));
// Options
- rocksdb_options_t *dbOptions = rocksdb_options_create();
- rocksdb_options_set_create_if_missing(dbOptions, 1);
+ STkvOpts *dbOptions = tkvOptionsCreate();
taosMkDir("meta");
// Open tbname DB
- pMeta->tbnameDb = rocksdb_open(dbOptions, "meta/tbname_uid_db", &err);
+ pMeta->tbnameDb = tkvOpen(dbOptions, "meta/tbname_uid_db");
// Open tag DB
- pMeta->tagDb = rocksdb_open(dbOptions, "meta/uid_tag_db", &err);
+ pMeta->tagDb = tkvOpen(dbOptions, "meta/uid_tag_db");
// Open schema DB
- pMeta->schemaDb = rocksdb_open(dbOptions, "meta/schema_db", &err);
+ pMeta->schemaDb = tkvOpen(dbOptions, "meta/schema_db");
// Open tag index
- pMeta->tagIdx = rocksdb_open(dbOptions, "meta/tag_idx_db", &err);
+ pMeta->tagIdx = tkvOpen(dbOptions, "meta/tag_idx_db");
- rocksdb_options_destroy(dbOptions);
+ tkvOptionsDestroy(dbOptions);
return pMeta;
}
void metaClose(SMeta *pMeta) {
if (pMeta) {
- rocksdb_close(pMeta->tagIdx);
- rocksdb_close(pMeta->schemaDb);
- rocksdb_close(pMeta->tagDb);
- rocksdb_close(pMeta->tbnameDb);
+ tkvClose(pMeta->tagIdx);
+ tkvClose(pMeta->schemaDb);
+ tkvClose(pMeta->tagDb);
+ tkvClose(pMeta->tbnameDb);
tdListFree(pMeta->stbList);
taosHashCleanup(pMeta->pTableObjHash);
@@ -110,22 +108,21 @@ void metaClose(SMeta *pMeta) {
}
int metaCreateTable(SMeta *pMeta, STableOpts *pTableOpts) {
- size_t vallen;
- char * err = NULL;
- rocksdb_readoptions_t * ropt;
- STableObj * pTableObj = NULL;
- rocksdb_writeoptions_t *wopt;
+ size_t vallen;
+ STkvReadOpts *ropt;
+ STableObj * pTableObj = NULL;
+ STkvWriteOpts *wopt;
// Check if table already exists
- ropt = rocksdb_readoptions_create();
+ ropt = tkvReadOptsCreate();
- char *uidStr = rocksdb_get(pMeta->tbnameDb, ropt, pTableOpts->name, strlen(pTableOpts->name), &vallen, &err);
+ char *uidStr = tkvGet(pMeta->tbnameDb, ropt, pTableOpts->name, strlen(pTableOpts->name), &vallen);
if (uidStr != NULL) {
// Has duplicate named table
return -1;
}
- rocksdb_readoptions_destroy(ropt);
+ tkvReadOptsDestroy(ropt);
// Create table obj
pTableObj = metaTableObjNew();
@@ -144,12 +141,12 @@ int metaCreateTable(SMeta *pMeta, STableOpts *pTableOpts) {
taosHashPut(pMeta->pTableObjHash, &(pTableObj->pTable->uid), sizeof(tb_uid_t), &pTableObj, sizeof(pTableObj));
- wopt = rocksdb_writeoptions_create();
- rocksdb_writeoptions_disable_WAL(wopt, 1);
+ wopt = tkvWriteOptsCreate();
+ // rocksdb_writeoptions_disable_WAL(wopt, 1);
// Add to tbname db
- rocksdb_put(pMeta->tbnameDb, wopt, pTableOpts->name, strlen(pTableOpts->name), &pTableObj->pTable->uid,
- sizeof(tb_uid_t), &err);
+ tkvPut(pMeta->tbnameDb, wopt, pTableOpts->name, strlen(pTableOpts->name), (char *)&pTableObj->pTable->uid,
+ sizeof(tb_uid_t));
// Add to schema db
char id[12];
@@ -159,9 +156,9 @@ int metaCreateTable(SMeta *pMeta, STableOpts *pTableOpts) {
*(int32_t *)(id + sizeof(tb_uid_t)) = schemaVersion(pTableOpts->pSchema);
int size = tdEncodeSchema(&pBuf, pTableOpts->pSchema);
- rocksdb_put(pMeta->schemaDb, wopt, id, 12, buf, size, &err);
+ tkvPut(pMeta->schemaDb, wopt, id, 12, buf, size);
- rocksdb_writeoptions_destroy(wopt);
+ tkvWriteOptsDestroy(wopt);
pthread_rwlock_unlock(&pMeta->rwLock);
diff --git a/source/server/vnode/meta/test/CMakeLists.txt b/source/server/vnode/meta/test/CMakeLists.txt
index ee16a28687..bca02c2907 100644
--- a/source/server/vnode/meta/test/CMakeLists.txt
+++ b/source/server/vnode/meta/test/CMakeLists.txt
@@ -14,8 +14,8 @@ target_link_libraries(metaTest
os
util
common
- rocksdb
gtest_main
+ tkv
)
enable_testing()
add_test(