Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
47d2f9ad
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
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看板
提交
47d2f9ad
编写于
8月 11, 2023
作者:
S
slzhou
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: first run without tag cond
上级
65306588
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
17 addition
and
9 deletion
+17
-9
source/dnode/vnode/src/meta/metaQuery.c
source/dnode/vnode/src/meta/metaQuery.c
+2
-2
source/dnode/vnode/src/vnd/vnodeQuery.c
source/dnode/vnode/src/vnd/vnodeQuery.c
+3
-3
source/libs/executor/src/operator.c
source/libs/executor/src/operator.c
+1
-0
source/libs/executor/src/scanoperator.c
source/libs/executor/src/scanoperator.c
+11
-4
未找到文件。
source/dnode/vnode/src/meta/metaQuery.c
浏览文件 @
47d2f9ad
...
...
@@ -427,7 +427,7 @@ SMCtbCursor *metaOpenCtbCursor(void* pVnode, tb_uid_t uid, int lock) {
metaRLock
(
pMeta
);
}
ret
=
tdbTbcOpen
(
pMeta
->
pCtbIdx
,
&
pCtbCur
->
pCur
,
NULL
);
ret
=
tdbTbcOpen
(
pMeta
->
pCtbIdx
,
(
TBC
**
)
&
pCtbCur
->
pCur
,
NULL
);
if
(
ret
<
0
)
{
metaULock
(
pMeta
);
taosMemoryFree
(
pCtbCur
);
...
...
@@ -1365,7 +1365,7 @@ int32_t metaGetTableTagsByUids(void *pVnode, int64_t suid, SArray *uidList) {
}
int32_t
metaGetTableTags
(
void
*
pVnode
,
uint64_t
suid
,
SArray
*
pUidTagInfo
)
{
SMCtbCursor
*
pCur
=
metaOpenCtbCursor
(
((
SVnode
*
)
pVnode
)
->
pMeta
,
suid
,
1
);
SMCtbCursor
*
pCur
=
metaOpenCtbCursor
(
pVnode
,
suid
,
1
);
// If len > 0 means there already have uids, and we only want the
// tags of the specified tables, of which uid in the uid list. Otherwise, all table tags are retrieved and kept
...
...
source/dnode/vnode/src/vnd/vnodeQuery.c
浏览文件 @
47d2f9ad
...
...
@@ -440,7 +440,7 @@ int32_t vnodeGetTableList(void* pVnode, int8_t type, SArray* pList) {
}
int32_t
vnodeGetAllTableList
(
SVnode
*
pVnode
,
uint64_t
uid
,
SArray
*
list
)
{
SMCtbCursor
*
pCur
=
metaOpenCtbCursor
(
pVnode
->
pMeta
,
uid
,
1
);
SMCtbCursor
*
pCur
=
metaOpenCtbCursor
(
pVnode
,
uid
,
1
);
while
(
1
)
{
tb_uid_t
id
=
metaCtbCursorNext
(
pCur
);
...
...
@@ -462,7 +462,7 @@ int32_t vnodeGetCtbIdListByFilter(SVnode *pVnode, int64_t suid, SArray *list, bo
int32_t
vnodeGetCtbIdList
(
void
*
pVnode
,
int64_t
suid
,
SArray
*
list
)
{
SVnode
*
pVnodeObj
=
pVnode
;
SMCtbCursor
*
pCur
=
metaOpenCtbCursor
(
pVnodeObj
->
pMeta
,
suid
,
1
);
SMCtbCursor
*
pCur
=
metaOpenCtbCursor
(
pVnodeObj
,
suid
,
1
);
while
(
1
)
{
tb_uid_t
id
=
metaCtbCursorNext
(
pCur
);
...
...
@@ -521,7 +521,7 @@ int32_t vnodeGetStbIdListByFilter(SVnode *pVnode, int64_t suid, SArray *list, bo
}
int32_t
vnodeGetCtbNum
(
SVnode
*
pVnode
,
int64_t
suid
,
int64_t
*
num
)
{
SMCtbCursor
*
pCur
=
metaOpenCtbCursor
(
pVnode
->
pMeta
,
suid
,
0
);
SMCtbCursor
*
pCur
=
metaOpenCtbCursor
(
pVnode
,
suid
,
0
);
if
(
!
pCur
)
{
return
TSDB_CODE_FAILED
;
}
...
...
source/libs/executor/src/operator.c
浏览文件 @
47d2f9ad
...
...
@@ -371,6 +371,7 @@ SOperatorInfo* createOperator(SPhysiNode* pPhyNode, SExecTaskInfo* pTaskInfo, SR
pOperator
=
createTableCountScanOperatorInfo
(
pHandle
,
pTblCountScanNode
,
pTaskInfo
);
}
else
if
(
QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN
==
type
)
{
STagScanPhysiNode
*
pTagScanPhyNode
=
(
STagScanPhysiNode
*
)
pPhyNode
;
pTagScanPhyNode
->
onlyMetaCtbIdx
=
true
;
STableListInfo
*
pTableListInfo
=
tableListCreate
();
if
(
!
pTagScanPhyNode
->
onlyMetaCtbIdx
)
{
int32_t
code
=
createScanTableListInfo
((
SScanPhysiNode
*
)
pTagScanPhyNode
,
NULL
,
false
,
pHandle
,
pTableListInfo
,
pTagCond
,
...
...
source/libs/executor/src/scanoperator.c
浏览文件 @
47d2f9ad
...
...
@@ -2922,7 +2922,8 @@ static SSDataBlock* doTagScanFromCtbIdx(SOperatorInfo* pOperator) {
SArray
*
aFilterIdxs
=
taosArrayInit
(
pOperator
->
resultInfo
.
capacity
,
sizeof
(
int32_t
));
while
(
1
)
{
while
(
count
<
pOperator
->
resultInfo
.
capacity
)
{
int32_t
numTables
=
0
;
while
(
numTables
<
pOperator
->
resultInfo
.
capacity
)
{
SMCtbCursor
*
pCur
=
pInfo
->
pCtbCursor
;
tb_uid_t
uid
=
pAPI
->
metaFn
.
ctbCursorNext
(
pInfo
->
pCtbCursor
);
if
(
uid
==
0
)
{
...
...
@@ -2932,14 +2933,19 @@ static SSDataBlock* doTagScanFromCtbIdx(SOperatorInfo* pOperator) {
info
.
pTagVal
=
taosMemoryMalloc
(
pCur
->
vLen
);
memcpy
(
info
.
pTagVal
,
pCur
->
pVal
,
pCur
->
vLen
);
taosArrayPush
(
aUidTags
,
&
info
);
++
numTables
;
}
int32_t
numTables
=
taosArrayGetSize
(
aUidTags
);
if
(
numTables
==
0
)
{
break
;
}
tagScanFilterByTagCond
(
aUidTags
,
pInfo
->
pTagCond
,
pInfo
->
readHandle
.
vnode
,
aFilterIdxs
,
pAPI
);
if
(
pInfo
->
pTagCond
!=
NULL
)
{
tagScanFilterByTagCond
(
aUidTags
,
pInfo
->
pTagCond
,
pInfo
->
readHandle
.
vnode
,
aFilterIdxs
,
pAPI
);
}
else
{
for
(
int
i
=
0
;
i
<
numTables
;
++
i
)
{
taosArrayPush
(
aFilterIdxs
,
&
i
);
}
}
tagScanFillResultBlock
(
pOperator
,
pRes
,
aUidTags
,
aFilterIdxs
,
pAPI
);
count
=
taosArrayGetSize
(
aFilterIdxs
);
...
...
@@ -2955,6 +2961,7 @@ static SSDataBlock* doTagScanFromCtbIdx(SOperatorInfo* pOperator) {
taosArrayDestroy
(
aFilterIdxs
);
taosArrayDestroyEx
(
aUidTags
,
tagScanFreeUidTag
);
pRes
->
info
.
rows
=
count
;
pOperator
->
resultInfo
.
totalRows
+=
count
;
return
(
pRes
->
info
.
rows
==
0
)
?
NULL
:
pInfo
->
pRes
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录