update fst core struct
This commit is contained in:
parent
c0ca718eed
commit
16f089c39a
|
@ -146,24 +146,27 @@ uint64_t fstUnFinishedNodesFindCommPrefixAndSetOutput(FstUnFinishedNodes *node,
|
||||||
size_t lsz = (size_t)(s->end - s->start + 1); // data len
|
size_t lsz = (size_t)(s->end - s->start + 1); // data len
|
||||||
size_t ssz = taosArrayGetSize(node->stack); // stack size
|
size_t ssz = taosArrayGetSize(node->stack); // stack size
|
||||||
|
|
||||||
uint64_t res = 0;
|
uint64_t i = 0;
|
||||||
for (size_t i = 0; i < lsz && i < ssz; i++) {
|
for (i = 0; i < lsz && i < ssz; i++) {
|
||||||
FstBuilderNodeUnfinished *un = taosArrayGet(node->stack, i);
|
FstBuilderNodeUnfinished *un = taosArrayGet(node->stack, i);
|
||||||
|
|
||||||
FstLastTransition *last = un->last;
|
FstLastTransition *t = un->last;
|
||||||
if (last->inp == s->data[s->start + i]) {
|
uint64_t addPrefix = 0;
|
||||||
uint64_t commPrefix = last->out;
|
if (t && t->inp == s->data[s->start + i]) {
|
||||||
uint64_t addPrefix = last->out - commPrefix;
|
uint64_t commPrefix = MIN(t->out, *out);
|
||||||
out = out - commPrefix;
|
uint64_t tAddPrefix = t->out - commPrefix;
|
||||||
last->out = commPrefix;
|
(*out) = (*out) - commPrefix;
|
||||||
if (addPrefix != 0) {
|
t->out = commPrefix;
|
||||||
fstBuilderNodeUnfinishedAddOutputPrefix(un, addPrefix);
|
addPrefix = tAddPrefix;
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
if (addPrefix != 0) {
|
||||||
|
fstBuilderNodeUnfinishedAddOutputPrefix(un, addPrefix);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return res;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -780,7 +783,7 @@ void fstBuilderInsertOutput(FstBuilder *b, FstSlice bs, Output in) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (prefixLen == FST_SLICE_LEN(s)) {
|
if (prefixLen == FST_SLICE_LEN(s)) {
|
||||||
assert(out != 0);
|
assert(out == 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue