Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
37f6d119
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看板
提交
37f6d119
编写于
8月 12, 2022
作者:
wmmhello
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix:error in get table list
上级
4f97d725
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
63 addition
and
25 deletion
+63
-25
source/dnode/vnode/src/meta/metaTable.c
source/dnode/vnode/src/meta/metaTable.c
+1
-0
source/libs/executor/src/executil.c
source/libs/executor/src/executil.c
+62
-25
未找到文件。
source/dnode/vnode/src/meta/metaTable.c
浏览文件 @
37f6d119
...
...
@@ -1065,6 +1065,7 @@ static int metaUpdateTtlIdx(SMeta *pMeta, const SMetaEntry *pME) {
static
int
metaUpdateCtbIdx
(
SMeta
*
pMeta
,
const
SMetaEntry
*
pME
)
{
SCtbIdxKey
ctbIdxKey
=
{.
suid
=
pME
->
ctbEntry
.
suid
,
.
uid
=
pME
->
uid
};
return
tdbTbInsert
(
pMeta
->
pCtbIdx
,
&
ctbIdxKey
,
sizeof
(
ctbIdxKey
),
pME
->
ctbEntry
.
pTags
,
((
STag
*
)(
pME
->
ctbEntry
.
pTags
))
->
len
,
&
pMeta
->
txn
);
}
...
...
source/libs/executor/src/executil.c
浏览文件 @
37f6d119
...
...
@@ -304,18 +304,37 @@ typedef struct tagFilterAssist{
SArray
*
cInfoList
;
}
tagFilterAssist
;
static
EDealRes
getColumn
(
SNode
*
pNode
,
void
*
pContext
)
{
if
(
QUERY_NODE_COLUMN
==
nodeType
(
pNode
))
{
tagFilterAssist
*
pData
=
(
tagFilterAssist
*
)
pContext
;
SColumnNode
*
pSColumnNode
=
(
SColumnNode
*
)
pNode
;
void
*
data
=
taosHashGet
(
pData
->
colHash
,
&
pSColumnNode
->
colId
,
sizeof
(
pSColumnNode
->
colId
));
if
(
!
data
){
taosHashPut
(
pData
->
colHash
,
&
pSColumnNode
->
colId
,
sizeof
(
pSColumnNode
->
colId
),
&
pNode
,
sizeof
(
pNode
));
pSColumnNode
->
slotId
=
pData
->
index
++
;
SColumnInfo
cInfo
=
{.
colId
=
pSColumnNode
->
colId
,
.
type
=
pSColumnNode
->
node
.
resType
.
type
,
.
bytes
=
pSColumnNode
->
node
.
resType
.
bytes
};
taosArrayPush
(
pData
->
cInfoList
,
&
cInfo
);
static
EDealRes
getColumn
(
SNode
**
pNode
,
void
*
pContext
)
{
SColumnNode
*
pSColumnNode
=
NULL
;
if
(
QUERY_NODE_COLUMN
==
nodeType
((
*
pNode
)))
{
pSColumnNode
=
*
(
SColumnNode
**
)
pNode
;
}
else
if
(
QUERY_NODE_FUNCTION
==
nodeType
((
*
pNode
))){
SFunctionNode
*
pFuncNode
=
*
(
SFunctionNode
**
)(
pNode
);
if
(
pFuncNode
->
funcType
==
FUNCTION_TYPE_TBNAME
)
{
pSColumnNode
=
(
SColumnNode
*
)
nodesMakeNode
(
QUERY_NODE_COLUMN
);
if
(
NULL
==
pSColumnNode
)
{
return
DEAL_RES_ERROR
;
}
pSColumnNode
->
colId
=
-
1
;
pSColumnNode
->
colType
=
COLUMN_TYPE_TBNAME
;
pSColumnNode
->
node
.
resType
.
type
=
TSDB_DATA_TYPE_VARCHAR
;
pSColumnNode
->
node
.
resType
.
bytes
=
TSDB_TABLE_FNAME_LEN
-
1
+
VARSTR_HEADER_SIZE
;
nodesDestroyNode
(
*
pNode
);
*
pNode
=
(
SNode
*
)
pSColumnNode
;
}
}
else
{
return
DEAL_RES_CONTINUE
;
}
tagFilterAssist
*
pData
=
(
tagFilterAssist
*
)
pContext
;
void
*
data
=
taosHashGet
(
pData
->
colHash
,
&
pSColumnNode
->
colId
,
sizeof
(
pSColumnNode
->
colId
));
if
(
!
data
){
taosHashPut
(
pData
->
colHash
,
&
pSColumnNode
->
colId
,
sizeof
(
pSColumnNode
->
colId
),
pNode
,
sizeof
((
*
pNode
)));
pSColumnNode
->
slotId
=
pData
->
index
++
;
SColumnInfo
cInfo
=
{.
colId
=
pSColumnNode
->
colId
,
.
type
=
pSColumnNode
->
node
.
resType
.
type
,
.
bytes
=
pSColumnNode
->
node
.
resType
.
bytes
};
taosArrayPush
(
pData
->
cInfoList
,
&
cInfo
);
}
return
DEAL_RES_CONTINUE
;
}
...
...
@@ -362,7 +381,8 @@ static SColumnInfoData* getColInfoResult(void* metaHandle, uint64_t suid, SArray
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
end
;
}
nodesWalkExprPostOrder
(
pTagCond
,
getColumn
,
(
void
*
)
&
ctx
);
nodesRewriteExprPostOrder
(
&
pTagCond
,
getColumn
,
(
void
*
)
&
ctx
);
pResBlock
=
createDataBlock
();
if
(
pResBlock
==
NULL
)
{
...
...
@@ -400,20 +420,30 @@ static SColumnInfoData* getColInfoResult(void* metaHandle, uint64_t suid, SArray
int64_t
st
=
taosGetTimestampUs
();
for
(
int32_t
i
=
0
;
i
<
rows
;
i
++
)
{
void
*
tag
=
taosArrayGetP
(
tags
,
i
);
int64_t
*
uid
=
taosArrayGet
(
uidList
,
i
);
for
(
int32_t
j
=
0
;
j
<
taosArrayGetSize
(
pResBlock
->
pDataBlock
);
j
++
){
SColumnInfoData
*
pColInfo
=
(
SColumnInfoData
*
)
taosArrayGet
(
pResBlock
->
pDataBlock
,
j
);
STagVal
tagVal
=
{
0
};
tagVal
.
cid
=
pColInfo
->
info
.
colId
;
const
char
*
p
=
metaGetTableTagVal
(
tag
,
pColInfo
->
info
.
type
,
&
tagVal
);
if
(
p
==
NULL
){
colDataAppend
(
pColInfo
,
i
,
p
,
true
);
}
else
if
(
IS_VAR_DATA_TYPE
(
pColInfo
->
info
.
type
))
{
char
*
tmp
=
(
char
*
)(
tagVal
.
pData
-
VARSTR_HEADER_SIZE
);
varDataSetLen
(
tmp
,
tagVal
.
nData
);
colDataAppend
(
pColInfo
,
i
,
tmp
,
p
==
NULL
);
}
else
{
colDataAppend
(
pColInfo
,
i
,
p
,
false
);
if
(
pColInfo
->
info
.
colId
==
-
1
){
// tbname
char
str
[
TSDB_TABLE_FNAME_LEN
+
VARSTR_HEADER_SIZE
]
=
{
0
};
metaGetTableNameByUid
(
metaHandle
,
*
uid
,
str
);
colDataAppend
(
pColInfo
,
i
,
str
,
false
);
qDebug
(
"tbnameget uid:%ld, tbname:%s"
,
*
uid
,
str
+
2
);
}
else
{
STagVal
tagVal
=
{
0
};
tagVal
.
cid
=
pColInfo
->
info
.
colId
;
const
char
*
p
=
metaGetTableTagVal
(
tag
,
pColInfo
->
info
.
type
,
&
tagVal
);
if
(
p
==
NULL
){
colDataAppend
(
pColInfo
,
i
,
p
,
true
);
}
else
if
(
IS_VAR_DATA_TYPE
(
pColInfo
->
info
.
type
))
{
char
*
tmp
=
taosMemoryMalloc
(
tagVal
.
nData
+
VARSTR_HEADER_SIZE
);
varDataSetLen
(
tmp
,
tagVal
.
nData
);
memcpy
(
tmp
+
VARSTR_HEADER_SIZE
,
tagVal
.
pData
,
tagVal
.
nData
);
colDataAppend
(
pColInfo
,
i
,
tmp
,
false
);
taosMemoryFree
(
tmp
);
}
else
{
colDataAppend
(
pColInfo
,
i
,
(
const
char
*
)
&
tagVal
.
i64
,
false
);
}
}
}
}
...
...
@@ -491,14 +521,20 @@ int32_t getTableList(void* metaHandle, void* pVnode, SScanPhysiNode* pScanNode,
}
int32_t
i
=
0
;
while
(
i
<
taosArrayGetSize
(
res
)
&&
pColInfoData
)
{
void
*
var
=
POINTER_SHIFT
(
pColInfoData
->
pData
,
i
*
pColInfoData
->
info
.
bytes
);
int32_t
j
=
0
;
int32_t
len
=
taosArrayGetSize
(
res
);
while
(
i
<
taosArrayGetSize
(
res
)
&&
j
<
len
&&
pColInfoData
)
{
void
*
var
=
POINTER_SHIFT
(
pColInfoData
->
pData
,
j
*
pColInfoData
->
info
.
bytes
);
int64_t
*
uid
=
taosArrayGet
(
res
,
i
);
qDebug
(
"tbnameget get uid:%ld, res:%d"
,
*
uid
,
*
(
bool
*
)
var
);
if
(
*
(
bool
*
)
var
==
false
)
{
taosArrayRemove
(
res
,
i
);
j
++
;
continue
;
}
i
++
;
j
++
;
}
colDataDestroy
(
pColInfoData
);
taosMemoryFreeClear
(
pColInfoData
);
...
...
@@ -507,6 +543,7 @@ int32_t getTableList(void* metaHandle, void* pVnode, SScanPhysiNode* pScanNode,
for
(
int
i
=
0
;
i
<
taosArrayGetSize
(
res
);
i
++
)
{
STableKeyInfo
info
=
{.
uid
=
*
(
uint64_t
*
)
taosArrayGet
(
res
,
i
),
.
groupId
=
0
};
taosArrayPush
(
pListInfo
->
pTableList
,
&
info
);
qDebug
(
"tbnameget get uid:%ld"
,
info
.
uid
);
}
taosArrayDestroy
(
res
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录