This commit is contained in:
Hongze Cheng 2022-02-15 08:59:29 +00:00
parent 8050546d7d
commit f44954b326
2 changed files with 32 additions and 2 deletions

View File

@ -30,6 +30,8 @@ struct STDbCurosr {
SBtCursor *pBtCur; SBtCursor *pBtCur;
}; };
static int tdbDefaultKeyCmprFn(int keyLen1, const void *pKey1, int keyLen2, const void *pKey2);
int tdbCreate(TDB **ppDb) { int tdbCreate(TDB **ppDb) {
TDB *pDb; TDB *pDb;
@ -42,7 +44,7 @@ int tdbCreate(TDB **ppDb) {
pDb->klen = TDB_VARIANT_LEN; pDb->klen = TDB_VARIANT_LEN;
pDb->vlen = TDB_VARIANT_LEN; pDb->vlen = TDB_VARIANT_LEN;
pDb->dup = false; pDb->dup = false;
pDb->cFn = NULL /*TODO*/; pDb->cFn = tdbDefaultKeyCmprFn;
*ppDb = pDb; *ppDb = pDb;
return 0; return 0;
@ -152,3 +154,23 @@ int tdbGetDup(TDB *pDb) {
return 0; return 0;
} }
} }
static int tdbDefaultKeyCmprFn(int keyLen1, const void *pKey1, int keyLen2, const void *pKey2) {
int mlen;
int cret;
ASSERT(keyLen1 > 0 && keyLen2 > 0 && pKey1 != NULL && pKey2 != NULL);
mlen = keyLen1 < keyLen2 ? keyLen1 : keyLen2;
cret = memcmp(pKey1, pKey2, mlen);
if (cret == 0) {
if (keyLen1 < keyLen2) {
cret = -1;
} else if (keyLen1 > keyLen2) {
cret = 1;
} else {
cret = 0;
}
}
return cret;
}

View File

@ -25,9 +25,17 @@ TEST(tdb_test, simple_test) {
GTEST_ASSERT_EQ(tdbSetKeyLen(pDb1, 8), 0); GTEST_ASSERT_EQ(tdbSetKeyLen(pDb1, 8), 0);
GTEST_ASSERT_EQ(tdbGetKeyLen(pDb1), 8);
// GTEST_ASSERT_EQ(tdbSetValLen(pDb1, 3), 0); // GTEST_ASSERT_EQ(tdbSetValLen(pDb1, 3), 0);
// GTEST_ASSERT_EQ(tdbSetDup(pDb1, 3), 0); // GTEST_ASSERT_EQ(tdbGetValLen(pDb1), 3);
// GTEST_ASSERT_EQ(tdbSetDup(pDb1, 1), 0);
// GTEST_ASSERT_EQ(tdbGetDup(pDb1), 1);
// GTEST_ASSERT_EQ(tdbSetCmprFunc(pDb1, NULL), 0);
GTEST_ASSERT_EQ(tdbOpen(pDb1, "db.db", "db1", pEnv), 0); GTEST_ASSERT_EQ(tdbOpen(pDb1, "db.db", "db1", pEnv), 0);