fix fst bug
This commit is contained in:
parent
92ec6ccea0
commit
b1ed45fcf1
|
@ -19,8 +19,8 @@
|
||||||
const static uint32_t STATE_LIMIT = 1000;
|
const static uint32_t STATE_LIMIT = 1000;
|
||||||
|
|
||||||
static int dfaInstsEqual(const void *a, const void *b, size_t size) {
|
static int dfaInstsEqual(const void *a, const void *b, size_t size) {
|
||||||
SArray *ar = (SArray *)a;
|
SArray *ar = *(SArray **)a;
|
||||||
SArray *br = (SArray *)b;
|
SArray *br = *(SArray **)b;
|
||||||
size_t al = ar != NULL ? taosArrayGetSize(ar) : 0;
|
size_t al = ar != NULL ? taosArrayGetSize(ar) : 0;
|
||||||
size_t bl = br != NULL ? taosArrayGetSize(br) : 0;
|
size_t bl = br != NULL ? taosArrayGetSize(br) : 0;
|
||||||
if (al != bl) {
|
if (al != bl) {
|
||||||
|
@ -71,8 +71,8 @@ FstDfa *dfaBuilderBuild(FstDfaBuilder *builder) {
|
||||||
|
|
||||||
dfaAdd(builder->dfa, cur, 0);
|
dfaAdd(builder->dfa, cur, 0);
|
||||||
|
|
||||||
SArray *states = taosArrayInit(0, sizeof(uint32_t));
|
|
||||||
uint32_t result;
|
uint32_t result;
|
||||||
|
SArray *states = taosArrayInit(0, sizeof(uint32_t));
|
||||||
if (dfaBuilderCacheState(builder, cur, &result)) {
|
if (dfaBuilderCacheState(builder, cur, &result)) {
|
||||||
taosArrayPush(states, &result);
|
taosArrayPush(states, &result);
|
||||||
}
|
}
|
||||||
|
@ -146,10 +146,9 @@ bool dfaBuilderCacheState(FstDfaBuilder *builder, FstSparseSet *set, uint32_t *r
|
||||||
*result = *v;
|
*result = *v;
|
||||||
taosArrayDestroy(tinsts);
|
taosArrayDestroy(tinsts);
|
||||||
} else {
|
} else {
|
||||||
DfaState st;
|
DfaState st = {.insts = tinsts, .isMatch = isMatch};
|
||||||
st.insts = tinsts;
|
|
||||||
st.isMatch = isMatch;
|
|
||||||
taosArrayPush(builder->dfa->states, &st);
|
taosArrayPush(builder->dfa->states, &st);
|
||||||
|
|
||||||
int32_t sz = taosArrayGetSize(builder->dfa->states) - 1;
|
int32_t sz = taosArrayGetSize(builder->dfa->states) - 1;
|
||||||
taosHashPut(builder->cache, &tinsts, sizeof(POINTER_BYTES), &sz, sizeof(sz));
|
taosHashPut(builder->cache, &tinsts, sizeof(POINTER_BYTES), &sz, sizeof(sz));
|
||||||
*result = sz;
|
*result = sz;
|
||||||
|
|
|
@ -85,11 +85,12 @@ static int idxFileCtxDoReadFrom(IFileCtx* ctx, uint8_t* buf, int len, int32_t of
|
||||||
blk->blockId = blkId;
|
blk->blockId = blkId;
|
||||||
blk->nread = taosPReadFile(ctx->file.pFile, blk->buf, kBlockSize, blkId * kBlockSize);
|
blk->nread = taosPReadFile(ctx->file.pFile, blk->buf, kBlockSize, blkId * kBlockSize);
|
||||||
assert(blk->nread <= kBlockSize);
|
assert(blk->nread <= kBlockSize);
|
||||||
nread = TMIN(blkLeft, len);
|
|
||||||
|
|
||||||
if (blk->nread < kBlockSize && blk->nread < len) {
|
if (blk->nread < kBlockSize && blk->nread < len) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nread = TMIN(blkLeft, len);
|
||||||
memcpy(buf + total, blk->buf + blkOffset, nread);
|
memcpy(buf + total, blk->buf + blkOffset, nread);
|
||||||
|
|
||||||
LRUStatus s = taosLRUCacheInsert(ctx->lru, key, strlen(key), blk, cacheMemSize, deleteDataBlockFromLRU, NULL,
|
LRUStatus s = taosLRUCacheInsert(ctx->lru, key, strlen(key), blk, cacheMemSize, deleteDataBlockFromLRU, NULL,
|
||||||
|
|
|
@ -78,8 +78,8 @@ bool sparSetContains(FstSparseSet *ss, int32_t ip) {
|
||||||
if (ip >= ss->cap || ip < 0) {
|
if (ip >= ss->cap || ip < 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
int32_t i = ss->sparse[ip];
|
|
||||||
|
|
||||||
|
int32_t i = ss->sparse[ip];
|
||||||
if (i >= 0 && i < ss->cap && i < ss->size && ss->dense[i] == ip) {
|
if (i >= 0 && i < ss->cap && i < ss->size && ss->dense[i] == ip) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue