Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
0c5f2d1d
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
0c5f2d1d
编写于
3月 28, 2022
作者:
dengyihao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update index range query
上级
30d49687
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
79 addition
and
8 deletion
+79
-8
source/libs/index/src/index_fst.c
source/libs/index/src/index_fst.c
+1
-2
source/libs/index/src/index_fst_automation.c
source/libs/index/src/index_fst_automation.c
+1
-1
source/libs/index/test/fstTest.cc
source/libs/index/test/fstTest.cc
+77
-5
未找到文件。
source/libs/index/src/index_fst.c
浏览文件 @
0c5f2d1d
...
@@ -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
=
fals
e
;
sws
->
emptyOutput
.
null
=
tru
e
;
sws
->
emptyOutput
.
out
=
0
;
sws
->
emptyOutput
.
out
=
0
;
sws
->
stack
=
(
SArray
*
)
taosArrayInit
(
256
,
sizeof
(
StreamState
));
sws
->
stack
=
(
SArray
*
)
taosArrayInit
(
256
,
sizeof
(
StreamState
));
...
...
source/libs/index/src/index_fst_automation.c
浏览文件 @
0c5f2d1d
...
@@ -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
;
...
...
source/libs/index/test/fstTest.cc
浏览文件 @
0c5f2d1d
...
@@ -258,7 +258,7 @@ void checkFstLongTerm() {
...
@@ -258,7 +258,7 @@ void checkFstLongTerm() {
// taosMemoryFree(ctx);
// taosMemoryFree(ctx);
// delete m;
// delete m;
}
}
void
checkFstCheckIterator
()
{
void
checkFstCheckIterator
1
()
{
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
checkFstCheckIteratorRange
1
()
{
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录