fst query
This commit is contained in:
parent
ddfcac1951
commit
65d72a48b4
|
@ -1317,7 +1317,7 @@ StreamWithStateResult* streamWithStateNextWith(StreamWithState* sws, StreamCallb
|
||||||
if (FST_NODE_ADDR(p->node) != fstGetRootAddr(sws->fst)) {
|
if (FST_NODE_ADDR(p->node) != fstGetRootAddr(sws->fst)) {
|
||||||
taosArrayPop(sws->inp);
|
taosArrayPop(sws->inp);
|
||||||
}
|
}
|
||||||
streamStateDestroy(p);
|
// streamStateDestroy(p);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
FstTransition trn;
|
FstTransition trn;
|
||||||
|
|
|
@ -85,10 +85,20 @@ static void* prefixStart(AutomationCtx* ctx) {
|
||||||
};
|
};
|
||||||
static bool prefixIsMatch(AutomationCtx* ctx, void* sv) {
|
static bool prefixIsMatch(AutomationCtx* ctx, void* sv) {
|
||||||
StartWithStateValue* ssv = (StartWithStateValue*)sv;
|
StartWithStateValue* ssv = (StartWithStateValue*)sv;
|
||||||
return ssv->val == strlen(ctx->data);
|
if (ssv == NULL) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (ssv->type == FST_INT) {
|
||||||
|
return ssv->val == strlen(ctx->data);
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
static bool prefixCanMatch(AutomationCtx* ctx, void* sv) {
|
static bool prefixCanMatch(AutomationCtx* ctx, void* sv) {
|
||||||
StartWithStateValue* ssv = (StartWithStateValue*)sv;
|
StartWithStateValue* ssv = (StartWithStateValue*)sv;
|
||||||
|
if (ssv == NULL) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
return ssv->val >= 0;
|
return ssv->val >= 0;
|
||||||
}
|
}
|
||||||
static bool prefixWillAlwaysMatch(AutomationCtx* ctx, void* state) { return true; }
|
static bool prefixWillAlwaysMatch(AutomationCtx* ctx, void* state) { return true; }
|
||||||
|
|
|
@ -243,8 +243,7 @@ void checkFstCheckIterator() {
|
||||||
std::cout << "insert data count : " << count << "elapas time: " << e - s << std::endl;
|
std::cout << "insert data count : " << count << "elapas time: " << e - s << std::endl;
|
||||||
|
|
||||||
fw->Put("Hello world", 1);
|
fw->Put("Hello world", 1);
|
||||||
fw->Put("hello world", 2);
|
fw->Put("Hello worle", 2);
|
||||||
fw->Put("hello worle", 3);
|
|
||||||
fw->Put("hello worlf", 4);
|
fw->Put("hello worlf", 4);
|
||||||
delete fw;
|
delete fw;
|
||||||
|
|
||||||
|
@ -258,7 +257,42 @@ void checkFstCheckIterator() {
|
||||||
// prefix search
|
// prefix search
|
||||||
std::vector<uint64_t> result;
|
std::vector<uint64_t> result;
|
||||||
|
|
||||||
AutomationCtx* ctx = automCtxCreate((void*)"H", AUTOMATION_PREFIX);
|
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() {
|
||||||
|
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("Hello world", 1);
|
||||||
|
fw->Put("Hello worle", 2);
|
||||||
|
fw->Put("hello worlf", 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_PREFIX);
|
||||||
m->Search(ctx, result);
|
m->Search(ctx, result);
|
||||||
std::cout << "size: " << result.size() << std::endl;
|
std::cout << "size: " << result.size() << std::endl;
|
||||||
// assert(result.size() == count);
|
// assert(result.size() == count);
|
||||||
|
@ -332,7 +366,8 @@ 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();
|
// checkFstCheckIterator();
|
||||||
|
checkFstCheckIteratorPrefix();
|
||||||
// checkFstLongTerm();
|
// checkFstLongTerm();
|
||||||
// checkFstPrefixSearch();
|
// checkFstPrefixSearch();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue