Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
65d72a48
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1187
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
65d72a48
编写于
3月 28, 2022
作者:
dengyihao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fst query
上级
ddfcac19
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
51 addition
and
6 deletion
+51
-6
source/libs/index/src/index_fst.c
source/libs/index/src/index_fst.c
+1
-1
source/libs/index/src/index_fst_automation.c
source/libs/index/src/index_fst_automation.c
+11
-1
source/libs/index/test/fstTest.cc
source/libs/index/test/fstTest.cc
+39
-4
未找到文件。
source/libs/index/src/index_fst.c
浏览文件 @
65d72a48
...
...
@@ -1317,7 +1317,7 @@ StreamWithStateResult* streamWithStateNextWith(StreamWithState* sws, StreamCallb
if
(
FST_NODE_ADDR
(
p
->
node
)
!=
fstGetRootAddr
(
sws
->
fst
))
{
taosArrayPop
(
sws
->
inp
);
}
streamStateDestroy
(
p
);
//
streamStateDestroy(p);
continue
;
}
FstTransition
trn
;
...
...
source/libs/index/src/index_fst_automation.c
浏览文件 @
65d72a48
...
...
@@ -85,10 +85,20 @@ static void* prefixStart(AutomationCtx* ctx) {
};
static
bool
prefixIsMatch
(
AutomationCtx
*
ctx
,
void
*
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
)
{
StartWithStateValue
*
ssv
=
(
StartWithStateValue
*
)
sv
;
if
(
ssv
==
NULL
)
{
return
false
;
}
return
ssv
->
val
>=
0
;
}
static
bool
prefixWillAlwaysMatch
(
AutomationCtx
*
ctx
,
void
*
state
)
{
return
true
;
}
...
...
source/libs/index/test/fstTest.cc
浏览文件 @
65d72a48
...
...
@@ -243,8 +243,7 @@ void checkFstCheckIterator() {
std
::
cout
<<
"insert data count : "
<<
count
<<
"elapas time: "
<<
e
-
s
<<
std
::
endl
;
fw
->
Put
(
"Hello world"
,
1
);
fw
->
Put
(
"hello world"
,
2
);
fw
->
Put
(
"hello worle"
,
3
);
fw
->
Put
(
"Hello worle"
,
2
);
fw
->
Put
(
"hello worlf"
,
4
);
delete
fw
;
...
...
@@ -258,7 +257,42 @@ void checkFstCheckIterator() {
// prefix search
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
);
std
::
cout
<<
"size: "
<<
result
.
size
()
<<
std
::
endl
;
// assert(result.size() == count);
...
...
@@ -332,7 +366,8 @@ int main(int argc, char* argv[]) {
// path suid colName ver
// iterTFileReader(argv[1], argv[2], argv[3], argv[4]);
//}
checkFstCheckIterator
();
// checkFstCheckIterator();
checkFstCheckIteratorPrefix
();
// checkFstLongTerm();
// checkFstPrefixSearch();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录