提交 0c5f2d1d 编写于 作者: dengyihao's avatar dengyihao

update index range query

上级 30d49687
...@@ -720,7 +720,6 @@ bool fstNodeFindInput(FstNode* node, uint8_t b, uint64_t* res) { ...@@ -720,7 +720,6 @@ bool fstNodeFindInput(FstNode* node, uint8_t b, uint64_t* res) {
uint64_t out = fstStateFindInput(st, node, b, &null); uint64_t out = fstStateFindInput(st, node, b, &null);
if (null == false) { if (null == false) {
*res = out; *res = out;
} else {
s = false; s = false;
} }
} }
...@@ -1184,7 +1183,7 @@ StreamWithState* streamWithStateCreate(Fst* fst, AutomationCtx* automation, FstB ...@@ -1184,7 +1183,7 @@ StreamWithState* streamWithStateCreate(Fst* fst, AutomationCtx* automation, FstB
sws->aut = automation; sws->aut = automation;
sws->inp = (SArray*)taosArrayInit(256, sizeof(uint8_t)); sws->inp = (SArray*)taosArrayInit(256, sizeof(uint8_t));
sws->emptyOutput.null = false; sws->emptyOutput.null = true;
sws->emptyOutput.out = 0; sws->emptyOutput.out = 0;
sws->stack = (SArray*)taosArrayInit(256, sizeof(StreamState)); sws->stack = (SArray*)taosArrayInit(256, sizeof(StreamState));
......
...@@ -164,7 +164,7 @@ AutomationCtx* automCtxCreate(void* data, AutomationType atype) { ...@@ -164,7 +164,7 @@ AutomationCtx* automCtxCreate(void* data, AutomationType atype) {
// add more search type // add more search type
} }
ctx->data = strdup((char*)data); ctx->data = (data != NULL ? strdup((char*)data) : NULL);
ctx->type = atype; ctx->type = atype;
ctx->stdata = (void*)sv; ctx->stdata = (void*)sv;
return ctx; return ctx;
......
...@@ -258,7 +258,7 @@ void checkFstLongTerm() { ...@@ -258,7 +258,7 @@ void checkFstLongTerm() {
// taosMemoryFree(ctx); // taosMemoryFree(ctx);
// delete m; // delete m;
} }
void checkFstCheckIterator() { void checkFstCheckIterator1() {
FstWriter* fw = new FstWriter; FstWriter* fw = new FstWriter;
int64_t s = taosGetTimestampUs(); int64_t s = taosGetTimestampUs();
int count = 2; int count = 2;
...@@ -293,6 +293,41 @@ void checkFstCheckIterator() { ...@@ -293,6 +293,41 @@ void checkFstCheckIterator() {
taosMemoryFree(ctx); taosMemoryFree(ctx);
delete m; delete m;
} }
void checkFstCheckIterator2() {
FstWriter* fw = new FstWriter;
int64_t s = taosGetTimestampUs();
int count = 2;
// Performance_fstWriteRecords(fw);
int64_t e = taosGetTimestampUs();
std::cout << "insert data count : " << count << "elapas time: " << e - s << std::endl;
fw->Put("a", 1);
fw->Put("b", 2);
fw->Put("c", 4);
delete fw;
FstReadMemory* m = new FstReadMemory(1024 * 64);
if (m->init() == false) {
std::cout << "init readMemory failed" << std::endl;
delete m;
return;
}
// prefix search
std::vector<uint64_t> result;
AutomationCtx* ctx = automCtxCreate((void*)"He", AUTOMATION_ALWAYS);
m->Search(ctx, result);
std::cout << "size: " << result.size() << std::endl;
// assert(result.size() == count);
for (int i = 0; i < result.size(); i++) {
// assert(result[i] == i); // check result
}
taosMemoryFree(ctx);
delete m;
}
void checkFstCheckIteratorPrefix() { void checkFstCheckIteratorPrefix() {
FstWriter* fw = new FstWriter; FstWriter* fw = new FstWriter;
int64_t s = taosGetTimestampUs(); int64_t s = taosGetTimestampUs();
...@@ -346,7 +381,7 @@ void checkFstCheckIteratorPrefix() { ...@@ -346,7 +381,7 @@ void checkFstCheckIteratorPrefix() {
} }
delete m; delete m;
} }
void checkFstCheckIteratorRange() { void checkFstCheckIteratorRange1() {
FstWriter* fw = new FstWriter; FstWriter* fw = new FstWriter;
int64_t s = taosGetTimestampUs(); int64_t s = taosGetTimestampUs();
int count = 2; int count = 2;
...@@ -376,7 +411,42 @@ void checkFstCheckIteratorRange() { ...@@ -376,7 +411,42 @@ void checkFstCheckIteratorRange() {
// [b, e) // [b, e)
m->SearchRange(ctx, "b", "e", result); m->SearchRange(ctx, "b", "e", result);
// assert(result.size() == 1); assert(result.size() == 3);
taosMemoryFree(ctx);
}
}
void checkFstCheckIteratorRange2() {
FstWriter* fw = new FstWriter;
int64_t s = taosGetTimestampUs();
int count = 2;
// Performance_fstWriteRecords(fw);
int64_t e = taosGetTimestampUs();
std::cout << "insert data count : " << count << "elapas time: " << e - s << std::endl;
fw->Put("ab", 1);
fw->Put("bd", 2);
fw->Put("cdd", 3);
fw->Put("cde", 3);
fw->Put("ddd", 4);
fw->Put("ed", 5);
delete fw;
FstReadMemory* m = new FstReadMemory(1024 * 64);
if (m->init() == false) {
std::cout << "init readMemory failed" << std::endl;
delete m;
return;
}
{
// prefix search
std::vector<uint64_t> result;
AutomationCtx* ctx = automCtxCreate((void*)"he", AUTOMATION_ALWAYS);
// [b, e)
m->SearchRange(ctx, "b", "ed", result);
assert(result.size() == 4);
taosMemoryFree(ctx); taosMemoryFree(ctx);
} }
} }
...@@ -443,9 +513,11 @@ int main(int argc, char* argv[]) { ...@@ -443,9 +513,11 @@ int main(int argc, char* argv[]) {
// path suid colName ver // path suid colName ver
// iterTFileReader(argv[1], argv[2], argv[3], argv[4]); // iterTFileReader(argv[1], argv[2], argv[3], argv[4]);
//} //}
// checkFstCheckIterator(); // checkFstCheckIterator1();
// checkFstCheckIterator2();
// checkFstCheckIteratorPrefix(); // checkFstCheckIteratorPrefix();
checkFstCheckIteratorRange(); checkFstCheckIteratorRange1();
checkFstCheckIteratorRange2();
// checkFstLongTerm(); // checkFstLongTerm();
// checkFstPrefixSearch(); // checkFstPrefixSearch();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册