Skip to content

Commit

Permalink
fixed FT.DROP to work again
Browse files Browse the repository at this point in the history
  • Loading branch information
dvirsky committed Jan 16, 2017
1 parent 1aff2cb commit 5a7c01f
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 34 deletions.
17 changes: 17 additions & 0 deletions src/pytest/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,23 @@ def testDelete(self):
self.assertEqual(1, r.execute_command(
'ft.del', 'idx', 'doc%d' % i))

def testDrop(self):
with self.redis() as r:
r.flushdb()
self.assertOk(r.execute_command(
'ft.create', 'idx', 'schema', 'f', 'text'))

for i in range(100):
self.assertOk(r.execute_command('ft.add', 'idx', 'doc%d' % i, 1.0, 'fields',
'f', 'hello world'))

keys = r.keys('*')
self.assertEqual(107, len(keys))

self.assertOk(r.execute_command('ft.drop', 'idx'))
keys = r.keys('*')
self.assertEqual(0, len(keys))

def testExact(self):
with self.redis() as r:
r.flushdb()
Expand Down
68 changes: 34 additions & 34 deletions src/redis_index.c
Original file line number Diff line number Diff line change
Expand Up @@ -304,40 +304,40 @@ int Redis_DropScanHandler(RedisModuleCtx *ctx, RedisModuleString *kn, void *opaq
}

int Redis_DropIndex(RedisSearchCtx *ctx, int deleteDocuments) {
size_t len;
return REDISMODULE_ERR;
// if (deleteDocuments) {

// RedisModuleCallReply *r = RedisModule_Call(ctx->redisCtx, "HKEYS", "c",
// REDISINDEX_DOCKEY_MAP);
// if (r == NULL || RedisModule_CallReplyType(r) == REDISMODULE_REPLY_ERROR) {
// return REDISMODULE_ERR;
// }

// len = RedisModule_CallReplyLength(r);
// for (size_t i = 0; i < len; i++) {
// RedisModuleKey *k = RedisModule_OpenKey(
// ctx->redisCtx,
// RedisModule_CreateStringFromCallReply(RedisModule_CallReplyArrayElement(r, i)),
// REDISMODULE_WRITE);

// if (k != NULL) {
// RedisModule_DeleteKey(k);
// }
// RedisModule_CloseKey(k);
// }

// RedisModuleString *dmd =
// RedisModule_CreateStringPrintf(ctx->redisCtx, DOCTABLE_KEY_FMT, ctx->spec->name);
// RedisModule_Call(ctx->redisCtx, "DEL", "cccs", REDISINDEX_DOCKEY_MAP,
// REDISINDEX_DOCIDS_MAP,
// REDISINDEX_DOCIDCOUNTER, dmd);
// }

// RedisModuleString *pf = fmtRedisTermKey(ctx, "*", 1);
// const char *prefix = RedisModule_StringPtrLen(pf, &len);

if (deleteDocuments) {

DocTable *dt = &ctx->spec->docs;

for (size_t i = 1; i < dt->size; i++) {
RedisModuleKey *k = RedisModule_OpenKey(
ctx->redisCtx,
RedisModule_CreateString(ctx->redisCtx, dt->docs[i].key, strlen(dt->docs[i].key)),
REDISMODULE_WRITE);

if (k != NULL) {
RedisModule_DeleteKey(k);
RedisModule_CloseKey(k);
}
}
}

RedisModuleString *pf = fmtRedisTermKey(ctx, "*", 1);
const char *prefix = RedisModule_StringPtrLen(pf, NULL);

// // Delete the actual index sub keys
// Redis_ScanKeys(ctx->redisCtx, prefix, Redis_DropScanHandler, ctx);
// return REDISMODULE_OK;
Redis_ScanKeys(ctx->redisCtx, prefix, Redis_DropScanHandler, ctx);

// Delete the index spec
RedisModuleKey *k = RedisModule_OpenKey(
ctx->redisCtx,
RedisModule_CreateStringPrintf(ctx->redisCtx, INDEX_SPEC_KEY_FMT, ctx->spec->name),
REDISMODULE_WRITE);
if (k != NULL) {
RedisModule_DeleteKey(k);
RedisModule_CloseKey(k);
return REDISMODULE_OK;
}

return REDISMODULE_ERR;
}

0 comments on commit 5a7c01f

Please sign in to comment.