Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
84e472ad
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
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看板
提交
84e472ad
编写于
8月 15, 2023
作者:
S
shenglian zhou
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
enhance: tag cond col list only once and tag scan derive from scan
上级
012248b6
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
41 addition
and
143 deletion
+41
-143
include/libs/nodes/plannodes.h
include/libs/nodes/plannodes.h
+1
-9
source/libs/command/src/explain.c
source/libs/command/src/explain.c
+8
-8
source/libs/executor/inc/executorInt.h
source/libs/executor/inc/executorInt.h
+7
-0
source/libs/executor/src/scanoperator.c
source/libs/executor/src/scanoperator.c
+15
-21
source/libs/nodes/src/nodesCloneFuncs.c
source/libs/nodes/src/nodesCloneFuncs.c
+1
-8
source/libs/nodes/src/nodesCodeFuncs.c
source/libs/nodes/src/nodesCodeFuncs.c
+4
-44
source/libs/nodes/src/nodesMsgFuncs.c
source/libs/nodes/src/nodesMsgFuncs.c
+5
-53
未找到文件。
include/libs/nodes/plannodes.h
浏览文件 @
84e472ad
...
@@ -336,15 +336,7 @@ typedef struct SScanPhysiNode {
...
@@ -336,15 +336,7 @@ typedef struct SScanPhysiNode {
}
SScanPhysiNode
;
}
SScanPhysiNode
;
typedef
struct
STagScanPhysiNode
{
typedef
struct
STagScanPhysiNode
{
// SScanPhysiNode scan; //TODO?
SScanPhysiNode
scan
;
SPhysiNode
node
;
SNodeList
*
pScanCols
;
SNodeList
*
pScanPseudoCols
;
uint64_t
uid
;
// unique id of the table
uint64_t
suid
;
int8_t
tableType
;
SName
tableName
;
bool
groupOrderScan
;
bool
onlyMetaCtbIdx
;
//no tbname, tag index not used.
bool
onlyMetaCtbIdx
;
//no tbname, tag index not used.
}
STagScanPhysiNode
;
}
STagScanPhysiNode
;
...
...
source/libs/command/src/explain.c
浏览文件 @
84e472ad
...
@@ -291,17 +291,17 @@ int32_t qExplainResNodeToRowsImpl(SExplainResNode *pResNode, SExplainCtx *ctx, i
...
@@ -291,17 +291,17 @@ int32_t qExplainResNodeToRowsImpl(SExplainResNode *pResNode, SExplainCtx *ctx, i
switch
(
pNode
->
type
)
{
switch
(
pNode
->
type
)
{
case
QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN
:
{
case
QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN
:
{
STagScanPhysiNode
*
pTagScanNode
=
(
STagScanPhysiNode
*
)
pNode
;
STagScanPhysiNode
*
pTagScanNode
=
(
STagScanPhysiNode
*
)
pNode
;
EXPLAIN_ROW_NEW
(
level
,
EXPLAIN_TAG_SCAN_FORMAT
,
pTagScanNode
->
tableName
.
tname
);
EXPLAIN_ROW_NEW
(
level
,
EXPLAIN_TAG_SCAN_FORMAT
,
pTagScanNode
->
scan
.
tableName
.
tname
);
EXPLAIN_ROW_APPEND
(
EXPLAIN_LEFT_PARENTHESIS_FORMAT
);
EXPLAIN_ROW_APPEND
(
EXPLAIN_LEFT_PARENTHESIS_FORMAT
);
if
(
pResNode
->
pExecInfo
)
{
if
(
pResNode
->
pExecInfo
)
{
QRY_ERR_RET
(
qExplainBufAppendExecInfo
(
pResNode
->
pExecInfo
,
tbuf
,
&
tlen
));
QRY_ERR_RET
(
qExplainBufAppendExecInfo
(
pResNode
->
pExecInfo
,
tbuf
,
&
tlen
));
EXPLAIN_ROW_APPEND
(
EXPLAIN_BLANK_FORMAT
);
EXPLAIN_ROW_APPEND
(
EXPLAIN_BLANK_FORMAT
);
}
}
if
(
pTagScanNode
->
pScanPseudoCols
)
{
if
(
pTagScanNode
->
scan
.
pScanPseudoCols
)
{
EXPLAIN_ROW_APPEND
(
EXPLAIN_PSEUDO_COLUMNS_FORMAT
,
pTagScanNode
->
pScanPseudoCols
->
length
);
EXPLAIN_ROW_APPEND
(
EXPLAIN_PSEUDO_COLUMNS_FORMAT
,
pTagScanNode
->
scan
.
pScanPseudoCols
->
length
);
EXPLAIN_ROW_APPEND
(
EXPLAIN_BLANK_FORMAT
);
EXPLAIN_ROW_APPEND
(
EXPLAIN_BLANK_FORMAT
);
}
}
EXPLAIN_ROW_APPEND
(
EXPLAIN_WIDTH_FORMAT
,
pTagScanNode
->
node
.
pOutputDataBlockDesc
->
totalRowSize
);
EXPLAIN_ROW_APPEND
(
EXPLAIN_WIDTH_FORMAT
,
pTagScanNode
->
scan
.
node
.
pOutputDataBlockDesc
->
totalRowSize
);
EXPLAIN_ROW_APPEND
(
EXPLAIN_RIGHT_PARENTHESIS_FORMAT
);
EXPLAIN_ROW_APPEND
(
EXPLAIN_RIGHT_PARENTHESIS_FORMAT
);
EXPLAIN_ROW_END
();
EXPLAIN_ROW_END
();
QRY_ERR_RET
(
qExplainResAppendRow
(
ctx
,
tbuf
,
tlen
,
level
));
QRY_ERR_RET
(
qExplainResAppendRow
(
ctx
,
tbuf
,
tlen
,
level
));
...
@@ -309,11 +309,11 @@ int32_t qExplainResNodeToRowsImpl(SExplainResNode *pResNode, SExplainCtx *ctx, i
...
@@ -309,11 +309,11 @@ int32_t qExplainResNodeToRowsImpl(SExplainResNode *pResNode, SExplainCtx *ctx, i
if
(
verbose
)
{
if
(
verbose
)
{
EXPLAIN_ROW_NEW
(
level
+
1
,
EXPLAIN_OUTPUT_FORMAT
);
EXPLAIN_ROW_NEW
(
level
+
1
,
EXPLAIN_OUTPUT_FORMAT
);
EXPLAIN_ROW_APPEND
(
EXPLAIN_COLUMNS_FORMAT
,
EXPLAIN_ROW_APPEND
(
EXPLAIN_COLUMNS_FORMAT
,
nodesGetOutputNumFromSlotList
(
pTagScanNode
->
node
.
pOutputDataBlockDesc
->
pSlots
));
nodesGetOutputNumFromSlotList
(
pTagScanNode
->
scan
.
node
.
pOutputDataBlockDesc
->
pSlots
));
EXPLAIN_ROW_APPEND
(
EXPLAIN_BLANK_FORMAT
);
EXPLAIN_ROW_APPEND
(
EXPLAIN_BLANK_FORMAT
);
EXPLAIN_ROW_APPEND
(
EXPLAIN_WIDTH_FORMAT
,
pTagScanNode
->
node
.
pOutputDataBlockDesc
->
outputRowSize
);
EXPLAIN_ROW_APPEND
(
EXPLAIN_WIDTH_FORMAT
,
pTagScanNode
->
scan
.
node
.
pOutputDataBlockDesc
->
outputRowSize
);
EXPLAIN_ROW_APPEND_LIMIT
(
pTagScanNode
->
node
.
pLimit
);
EXPLAIN_ROW_APPEND_LIMIT
(
pTagScanNode
->
scan
.
node
.
pLimit
);
EXPLAIN_ROW_APPEND_SLIMIT
(
pTagScanNode
->
node
.
pSlimit
);
EXPLAIN_ROW_APPEND_SLIMIT
(
pTagScanNode
->
scan
.
node
.
pSlimit
);
EXPLAIN_ROW_END
();
EXPLAIN_ROW_END
();
QRY_ERR_RET
(
qExplainResAppendRow
(
ctx
,
tbuf
,
tlen
,
level
+
1
));
QRY_ERR_RET
(
qExplainResAppendRow
(
ctx
,
tbuf
,
tlen
,
level
+
1
));
...
...
source/libs/executor/inc/executorInt.h
浏览文件 @
84e472ad
...
@@ -251,6 +251,12 @@ typedef struct STableMergeScanInfo {
...
@@ -251,6 +251,12 @@ typedef struct STableMergeScanInfo {
SSortExecInfo
sortExecInfo
;
SSortExecInfo
sortExecInfo
;
}
STableMergeScanInfo
;
}
STableMergeScanInfo
;
typedef
struct
STagScanFilterContext
{
SHashObj
*
colHash
;
int32_t
index
;
SArray
*
cInfoList
;
}
STagScanFilterContext
;
typedef
struct
STagScanInfo
{
typedef
struct
STagScanInfo
{
SColumnInfo
*
pCols
;
SColumnInfo
*
pCols
;
SSDataBlock
*
pRes
;
SSDataBlock
*
pRes
;
...
@@ -263,6 +269,7 @@ typedef struct STagScanInfo {
...
@@ -263,6 +269,7 @@ typedef struct STagScanInfo {
void
*
pCtbCursor
;
void
*
pCtbCursor
;
SNode
*
pTagCond
;
SNode
*
pTagCond
;
SNode
*
pTagIndexCond
;
SNode
*
pTagIndexCond
;
STagScanFilterContext
filterCtx
;
SArray
*
aUidTags
;
// SArray<STUidTagInfo>
SArray
*
aUidTags
;
// SArray<STUidTagInfo>
SArray
*
aFilterIdxs
;
// SArray<int32_t>
SArray
*
aFilterIdxs
;
// SArray<int32_t>
SStorageAPI
*
pStorageAPI
;
SStorageAPI
*
pStorageAPI
;
...
...
source/libs/executor/src/scanoperator.c
浏览文件 @
84e472ad
...
@@ -2719,12 +2719,6 @@ static int32_t tagScanCreateResultData(SDataType* pType, int32_t numOfRows, SSca
...
@@ -2719,12 +2719,6 @@ static int32_t tagScanCreateResultData(SDataType* pType, int32_t numOfRows, SSca
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
typedef
struct
STagScanFilterContext
{
SHashObj
*
colHash
;
int32_t
index
;
SArray
*
cInfoList
;
}
STagScanFilterContext
;
static
EDealRes
tagScanRewriteTagColumn
(
SNode
**
pNode
,
void
*
pContext
)
{
static
EDealRes
tagScanRewriteTagColumn
(
SNode
**
pNode
,
void
*
pContext
)
{
SColumnNode
*
pSColumnNode
=
NULL
;
SColumnNode
*
pSColumnNode
=
NULL
;
if
(
QUERY_NODE_COLUMN
==
nodeType
((
*
pNode
)))
{
if
(
QUERY_NODE_COLUMN
==
nodeType
((
*
pNode
)))
{
...
@@ -2767,17 +2761,11 @@ static EDealRes tagScanRewriteTagColumn(SNode** pNode, void* pContext) {
...
@@ -2767,17 +2761,11 @@ static EDealRes tagScanRewriteTagColumn(SNode** pNode, void* pContext) {
}
}
static
void
tagScanFilterByTagCond
(
SArray
*
aUidTags
,
SNode
*
pTagCond
,
SArray
*
aFilterIdxs
,
void
*
pVnode
,
SStorageAPI
*
pAPI
)
{
static
void
tagScanFilterByTagCond
(
SArray
*
aUidTags
,
SNode
*
pTagCond
,
SArray
*
aFilterIdxs
,
void
*
pVnode
,
SStorageAPI
*
pAPI
,
STagScanInfo
*
pInfo
)
{
int32_t
code
=
0
;
int32_t
code
=
0
;
int32_t
numOfTables
=
taosArrayGetSize
(
aUidTags
);
int32_t
numOfTables
=
taosArrayGetSize
(
aUidTags
);
STagScanFilterContext
ctx
=
{
0
};
SSDataBlock
*
pResBlock
=
createTagValBlockForFilter
(
pInfo
->
filterCtx
.
cInfoList
,
numOfTables
,
aUidTags
,
pVnode
,
pAPI
);
ctx
.
colHash
=
taosHashInit
(
4
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_SMALLINT
),
false
,
HASH_NO_LOCK
);
ctx
.
cInfoList
=
taosArrayInit
(
4
,
sizeof
(
SColumnInfo
));
nodesRewriteExprPostOrder
(
&
pTagCond
,
tagScanRewriteTagColumn
,
(
void
*
)
&
ctx
);
SSDataBlock
*
pResBlock
=
createTagValBlockForFilter
(
ctx
.
cInfoList
,
numOfTables
,
aUidTags
,
pVnode
,
pAPI
);
SArray
*
pBlockList
=
taosArrayInit
(
1
,
POINTER_BYTES
);
SArray
*
pBlockList
=
taosArrayInit
(
1
,
POINTER_BYTES
);
taosArrayPush
(
pBlockList
,
&
pResBlock
);
taosArrayPush
(
pBlockList
,
&
pResBlock
);
...
@@ -2801,8 +2789,7 @@ static void tagScanFilterByTagCond(SArray* aUidTags, SNode* pTagCond, SArray* aF
...
@@ -2801,8 +2789,7 @@ static void tagScanFilterByTagCond(SArray* aUidTags, SNode* pTagCond, SArray* aF
blockDataDestroy
(
pResBlock
);
blockDataDestroy
(
pResBlock
);
taosArrayDestroy
(
pBlockList
);
taosArrayDestroy
(
pBlockList
);
taosHashCleanup
(
ctx
.
colHash
);
taosArrayDestroy
(
ctx
.
cInfoList
);
}
}
static
void
tagScanFillOneCellWithTag
(
const
STUidTagInfo
*
pUidTagInfo
,
SExprInfo
*
pExprInfo
,
SColumnInfoData
*
pColInfo
,
int
rowIndex
,
const
SStorageAPI
*
pAPI
,
void
*
pVnode
)
{
static
void
tagScanFillOneCellWithTag
(
const
STUidTagInfo
*
pUidTagInfo
,
SExprInfo
*
pExprInfo
,
SColumnInfoData
*
pColInfo
,
int
rowIndex
,
const
SStorageAPI
*
pAPI
,
void
*
pVnode
)
{
...
@@ -2911,7 +2898,7 @@ static SSDataBlock* doTagScanFromCtbIdx(SOperatorInfo* pOperator) {
...
@@ -2911,7 +2898,7 @@ static SSDataBlock* doTagScanFromCtbIdx(SOperatorInfo* pOperator) {
bool
ignoreFilterIdx
=
true
;
bool
ignoreFilterIdx
=
true
;
if
(
pInfo
->
pTagCond
!=
NULL
)
{
if
(
pInfo
->
pTagCond
!=
NULL
)
{
ignoreFilterIdx
=
false
;
ignoreFilterIdx
=
false
;
tagScanFilterByTagCond
(
aUidTags
,
pInfo
->
pTagCond
,
aFilterIdxs
,
pInfo
->
readHandle
.
vnode
,
pAPI
);
tagScanFilterByTagCond
(
aUidTags
,
pInfo
->
pTagCond
,
aFilterIdxs
,
pInfo
->
readHandle
.
vnode
,
pAPI
,
pInfo
);
}
else
{
}
else
{
ignoreFilterIdx
=
true
;
ignoreFilterIdx
=
true
;
}
}
...
@@ -2991,7 +2978,8 @@ static void destroyTagScanOperatorInfo(void* param) {
...
@@ -2991,7 +2978,8 @@ static void destroyTagScanOperatorInfo(void* param) {
if
(
pInfo
->
pCtbCursor
!=
NULL
)
{
if
(
pInfo
->
pCtbCursor
!=
NULL
)
{
pInfo
->
pStorageAPI
->
metaFn
.
closeCtbCursor
(
pInfo
->
pCtbCursor
,
1
);
pInfo
->
pStorageAPI
->
metaFn
.
closeCtbCursor
(
pInfo
->
pCtbCursor
,
1
);
}
}
taosHashCleanup
(
pInfo
->
filterCtx
.
colHash
);
taosArrayDestroy
(
pInfo
->
filterCtx
.
cInfoList
);
taosArrayDestroy
(
pInfo
->
aFilterIdxs
);
taosArrayDestroy
(
pInfo
->
aFilterIdxs
);
taosArrayDestroyEx
(
pInfo
->
aUidTags
,
tagScanFreeUidTag
);
taosArrayDestroyEx
(
pInfo
->
aUidTags
,
tagScanFreeUidTag
);
...
@@ -3001,8 +2989,9 @@ static void destroyTagScanOperatorInfo(void* param) {
...
@@ -3001,8 +2989,9 @@ static void destroyTagScanOperatorInfo(void* param) {
taosMemoryFreeClear
(
param
);
taosMemoryFreeClear
(
param
);
}
}
SOperatorInfo
*
createTagScanOperatorInfo
(
SReadHandle
*
pReadHandle
,
STagScanPhysiNode
*
p
Phy
Node
,
SOperatorInfo
*
createTagScanOperatorInfo
(
SReadHandle
*
pReadHandle
,
STagScanPhysiNode
*
p
TagScan
Node
,
STableListInfo
*
pTableListInfo
,
SNode
*
pTagCond
,
SNode
*
pTagIndexCond
,
SExecTaskInfo
*
pTaskInfo
)
{
STableListInfo
*
pTableListInfo
,
SNode
*
pTagCond
,
SNode
*
pTagIndexCond
,
SExecTaskInfo
*
pTaskInfo
)
{
SScanPhysiNode
*
pPhyNode
=
(
STagScanPhysiNode
*
)
pTagScanNode
;
STagScanInfo
*
pInfo
=
taosMemoryCalloc
(
1
,
sizeof
(
STagScanInfo
));
STagScanInfo
*
pInfo
=
taosMemoryCalloc
(
1
,
sizeof
(
STagScanInfo
));
SOperatorInfo
*
pOperator
=
taosMemoryCalloc
(
1
,
sizeof
(
SOperatorInfo
));
SOperatorInfo
*
pOperator
=
taosMemoryCalloc
(
1
,
sizeof
(
SOperatorInfo
));
if
(
pInfo
==
NULL
||
pOperator
==
NULL
)
{
if
(
pInfo
==
NULL
||
pOperator
==
NULL
)
{
...
@@ -3040,11 +3029,16 @@ SOperatorInfo* createTagScanOperatorInfo(SReadHandle* pReadHandle, STagScanPhysi
...
@@ -3040,11 +3029,16 @@ SOperatorInfo* createTagScanOperatorInfo(SReadHandle* pReadHandle, STagScanPhysi
initResultSizeInfo
(
&
pOperator
->
resultInfo
,
4096
);
initResultSizeInfo
(
&
pOperator
->
resultInfo
,
4096
);
blockDataEnsureCapacity
(
pInfo
->
pRes
,
pOperator
->
resultInfo
.
capacity
);
blockDataEnsureCapacity
(
pInfo
->
pRes
,
pOperator
->
resultInfo
.
capacity
);
if
(
p
Phy
Node
->
onlyMetaCtbIdx
)
{
if
(
p
TagScan
Node
->
onlyMetaCtbIdx
)
{
pInfo
->
aUidTags
=
taosArrayInit
(
pOperator
->
resultInfo
.
capacity
,
sizeof
(
STUidTagInfo
));
pInfo
->
aUidTags
=
taosArrayInit
(
pOperator
->
resultInfo
.
capacity
,
sizeof
(
STUidTagInfo
));
pInfo
->
aFilterIdxs
=
taosArrayInit
(
pOperator
->
resultInfo
.
capacity
,
sizeof
(
int32_t
));
pInfo
->
aFilterIdxs
=
taosArrayInit
(
pOperator
->
resultInfo
.
capacity
,
sizeof
(
int32_t
));
pInfo
->
filterCtx
.
colHash
=
taosHashInit
(
4
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_SMALLINT
),
false
,
HASH_NO_LOCK
);
pInfo
->
filterCtx
.
cInfoList
=
taosArrayInit
(
4
,
sizeof
(
SColumnInfo
));
if
(
pInfo
->
pTagCond
!=
NULL
)
{
nodesRewriteExprPostOrder
(
&
pTagCond
,
tagScanRewriteTagColumn
,
(
void
*
)
&
pInfo
->
filterCtx
);
}
}
}
__optr_fn_t
tagScanNextFn
=
(
p
Phy
Node
->
onlyMetaCtbIdx
)
?
doTagScanFromCtbIdx
:
doTagScanFromMetaEntry
;
__optr_fn_t
tagScanNextFn
=
(
p
TagScan
Node
->
onlyMetaCtbIdx
)
?
doTagScanFromCtbIdx
:
doTagScanFromMetaEntry
;
pOperator
->
fpSet
=
pOperator
->
fpSet
=
createOperatorFpSet
(
optrDummyOpenFn
,
tagScanNextFn
,
NULL
,
destroyTagScanOperatorInfo
,
optrDefaultBufFn
,
NULL
);
createOperatorFpSet
(
optrDummyOpenFn
,
tagScanNextFn
,
NULL
,
destroyTagScanOperatorInfo
,
optrDefaultBufFn
,
NULL
);
...
...
source/libs/nodes/src/nodesCloneFuncs.c
浏览文件 @
84e472ad
...
@@ -564,14 +564,7 @@ static int32_t physiScanCopy(const SScanPhysiNode* pSrc, SScanPhysiNode* pDst) {
...
@@ -564,14 +564,7 @@ static int32_t physiScanCopy(const SScanPhysiNode* pSrc, SScanPhysiNode* pDst) {
}
}
static
int32_t
physiTagScanCopy
(
const
STagScanPhysiNode
*
pSrc
,
STagScanPhysiNode
*
pDst
)
{
static
int32_t
physiTagScanCopy
(
const
STagScanPhysiNode
*
pSrc
,
STagScanPhysiNode
*
pDst
)
{
COPY_BASE_OBJECT_FIELD
(
node
,
physiNodeCopy
);
COPY_BASE_OBJECT_FIELD
(
scan
,
physiScanCopy
);
CLONE_NODE_LIST_FIELD
(
pScanCols
);
CLONE_NODE_LIST_FIELD
(
pScanPseudoCols
);
COPY_SCALAR_FIELD
(
uid
);
COPY_SCALAR_FIELD
(
suid
);
COPY_SCALAR_FIELD
(
tableType
);
COPY_OBJECT_FIELD
(
tableName
,
sizeof
(
SName
));
COPY_SCALAR_FIELD
(
groupOrderScan
);
COPY_SCALAR_FIELD
(
onlyMetaCtbIdx
);
COPY_SCALAR_FIELD
(
onlyMetaCtbIdx
);
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
...
...
source/libs/nodes/src/nodesCodeFuncs.c
浏览文件 @
84e472ad
...
@@ -1630,28 +1630,8 @@ static const char* jkTagScanPhysiOnlyMetaCtbIdx = "OnlyMetaCtbIdx";
...
@@ -1630,28 +1630,8 @@ static const char* jkTagScanPhysiOnlyMetaCtbIdx = "OnlyMetaCtbIdx";
static
int32_t
physiTagScanNodeToJson
(
const
void
*
pObj
,
SJson
*
pJson
)
{
static
int32_t
physiTagScanNodeToJson
(
const
void
*
pObj
,
SJson
*
pJson
)
{
const
STagScanPhysiNode
*
pNode
=
(
const
STagScanPhysiNode
*
)
pObj
;
const
STagScanPhysiNode
*
pNode
=
(
const
STagScanPhysiNode
*
)
pObj
;
int32_t
code
=
physicPlanNodeToJson
(
pObj
,
pJson
);
int32_t
code
=
physiScanNodeToJson
(
pObj
,
pJson
);
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
nodeListToJson
(
pJson
,
jkScanPhysiPlanScanCols
,
pNode
->
pScanCols
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
nodeListToJson
(
pJson
,
jkScanPhysiPlanScanPseudoCols
,
pNode
->
pScanPseudoCols
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonAddIntegerToObject
(
pJson
,
jkScanPhysiPlanTableId
,
pNode
->
uid
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonAddIntegerToObject
(
pJson
,
jkScanPhysiPlanSTableId
,
pNode
->
suid
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonAddIntegerToObject
(
pJson
,
jkScanPhysiPlanTableType
,
pNode
->
tableType
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonAddObject
(
pJson
,
jkScanPhysiPlanTableName
,
nameToJson
,
&
pNode
->
tableName
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonAddBoolToObject
(
pJson
,
jkScanPhysiPlanGroupOrderScan
,
pNode
->
groupOrderScan
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonAddBoolToObject
(
pJson
,
jkTagScanPhysiOnlyMetaCtbIdx
,
pNode
->
onlyMetaCtbIdx
);
code
=
tjsonAddBoolToObject
(
pJson
,
jkTagScanPhysiOnlyMetaCtbIdx
,
pNode
->
onlyMetaCtbIdx
);
}
}
...
@@ -1661,28 +1641,8 @@ static int32_t physiTagScanNodeToJson(const void* pObj, SJson* pJson) {
...
@@ -1661,28 +1641,8 @@ static int32_t physiTagScanNodeToJson(const void* pObj, SJson* pJson) {
static
int32_t
jsonToPhysiTagScanNode
(
const
SJson
*
pJson
,
void
*
pObj
)
{
static
int32_t
jsonToPhysiTagScanNode
(
const
SJson
*
pJson
,
void
*
pObj
)
{
STagScanPhysiNode
*
pNode
=
(
STagScanPhysiNode
*
)
pObj
;
STagScanPhysiNode
*
pNode
=
(
STagScanPhysiNode
*
)
pObj
;
int32_t
code
=
jsonToPhysicPlanNode
(
pJson
,
pObj
);
int32_t
code
=
jsonToPhysiScanNode
(
pObj
,
pJson
);
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
jsonToNodeList
(
pJson
,
jkScanPhysiPlanScanCols
,
&
pNode
->
pScanCols
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
jsonToNodeList
(
pJson
,
jkScanPhysiPlanScanPseudoCols
,
&
pNode
->
pScanPseudoCols
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonGetUBigIntValue
(
pJson
,
jkScanPhysiPlanTableId
,
&
pNode
->
uid
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonGetUBigIntValue
(
pJson
,
jkScanPhysiPlanSTableId
,
&
pNode
->
suid
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonGetTinyIntValue
(
pJson
,
jkScanPhysiPlanTableType
,
&
pNode
->
tableType
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonToObject
(
pJson
,
jkScanPhysiPlanTableName
,
jsonToName
,
&
pNode
->
tableName
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonGetBoolValue
(
pJson
,
jkScanPhysiPlanGroupOrderScan
,
&
pNode
->
groupOrderScan
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonGetBoolValue
(
pJson
,
jkTagScanPhysiOnlyMetaCtbIdx
,
&
pNode
->
onlyMetaCtbIdx
);
code
=
tjsonGetBoolValue
(
pJson
,
jkTagScanPhysiOnlyMetaCtbIdx
,
&
pNode
->
onlyMetaCtbIdx
);
}
}
...
...
source/libs/nodes/src/nodesMsgFuncs.c
浏览文件 @
84e472ad
...
@@ -2004,42 +2004,15 @@ static int32_t msgToPhysiScanNode(STlvDecoder* pDecoder, void* pObj) {
...
@@ -2004,42 +2004,15 @@ static int32_t msgToPhysiScanNode(STlvDecoder* pDecoder, void* pObj) {
}
}
enum
{
enum
{
PHY_TAG_SCAN_CODE_BASE_NODE
=
1
,
PHY_TAG_SCAN_CODE_SCAN
=
1
,
PHY_TAG_SCAN_CODE_SCAN_COLS
,
PHY_TAG_SCAN_CODE_SCAN_PSEUDO_COLS
,
PHY_TAG_SCAN_CODE_BASE_UID
,
PHY_TAG_SCAN_CODE_BASE_SUID
,
PHY_TAG_SCAN_CODE_BASE_TABLE_TYPE
,
PHY_TAG_SCAN_CODE_BASE_TABLE_NAME
,
PHY_TAG_SCAN_CODE_BASE_GROUP_ORDER_SCAN
,
PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX
PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX
};
};
static
int32_t
physiTagScanNodeToMsg
(
const
void
*
pObj
,
STlvEncoder
*
pEncoder
)
{
static
int32_t
physiTagScanNodeToMsg
(
const
void
*
pObj
,
STlvEncoder
*
pEncoder
)
{
const
STagScanPhysiNode
*
pNode
=
(
const
STagScanPhysiNode
*
)
pObj
;
const
STagScanPhysiNode
*
pNode
=
(
const
STagScanPhysiNode
*
)
pObj
;
int32_t
code
=
tlvEncodeObj
(
pEncoder
,
PHY_TAG_SCAN_CODE_BASE_NODE
,
physiNodeToMsg
,
&
pNode
->
node
);
int32_t
code
=
tlvEncodeObj
(
pEncoder
,
PHY_TAG_SCAN_CODE_SCAN
,
physiScanNodeToMsg
,
&
pNode
->
scan
);
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tlvEncodeObj
(
pEncoder
,
PHY_TAG_SCAN_CODE_SCAN_COLS
,
nodeListToMsg
,
pNode
->
pScanCols
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tlvEncodeObj
(
pEncoder
,
PHY_TAG_SCAN_CODE_SCAN_PSEUDO_COLS
,
nodeListToMsg
,
pNode
->
pScanPseudoCols
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tlvEncodeU64
(
pEncoder
,
PHY_TAG_SCAN_CODE_BASE_UID
,
pNode
->
uid
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tlvEncodeU64
(
pEncoder
,
PHY_TAG_SCAN_CODE_BASE_SUID
,
pNode
->
suid
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tlvEncodeI8
(
pEncoder
,
PHY_TAG_SCAN_CODE_BASE_TABLE_TYPE
,
pNode
->
tableType
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tlvEncodeObj
(
pEncoder
,
PHY_TAG_SCAN_CODE_BASE_TABLE_NAME
,
nameToMsg
,
&
pNode
->
tableName
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tlvEncodeBool
(
pEncoder
,
PHY_TAG_SCAN_CODE_BASE_GROUP_ORDER_SCAN
,
pNode
->
groupOrderScan
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tlvEncodeBool
(
pEncoder
,
PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX
,
pNode
->
onlyMetaCtbIdx
);
code
=
tlvEncodeBool
(
pEncoder
,
PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX
,
pNode
->
onlyMetaCtbIdx
);
}
}
...
@@ -2053,29 +2026,8 @@ static int32_t msgToPhysiTagScanNode(STlvDecoder* pDecoder, void* pObj) {
...
@@ -2053,29 +2026,8 @@ static int32_t msgToPhysiTagScanNode(STlvDecoder* pDecoder, void* pObj) {
STlv
*
pTlv
=
NULL
;
STlv
*
pTlv
=
NULL
;
tlvForEach
(
pDecoder
,
pTlv
,
code
)
{
tlvForEach
(
pDecoder
,
pTlv
,
code
)
{
switch
(
pTlv
->
type
)
{
switch
(
pTlv
->
type
)
{
case
PHY_TAG_SCAN_CODE_BASE_NODE
:
case
PHY_TAG_SCAN_CODE_SCAN
:
code
=
tlvDecodeObjFromTlv
(
pTlv
,
msgToPhysiNode
,
&
pNode
->
node
);
code
=
tlvDecodeObjFromTlv
(
pTlv
,
msgToPhysiScanNode
,
&
pNode
->
scan
);
break
;
case
PHY_TAG_SCAN_CODE_SCAN_COLS
:
code
=
msgToNodeListFromTlv
(
pTlv
,
(
void
**
)
&
pNode
->
pScanCols
);
break
;
case
PHY_TAG_SCAN_CODE_SCAN_PSEUDO_COLS
:
code
=
msgToNodeListFromTlv
(
pTlv
,
(
void
**
)
&
pNode
->
pScanPseudoCols
);
break
;
case
PHY_TAG_SCAN_CODE_BASE_UID
:
code
=
tlvDecodeU64
(
pTlv
,
&
pNode
->
uid
);
break
;
case
PHY_TAG_SCAN_CODE_BASE_SUID
:
code
=
tlvDecodeU64
(
pTlv
,
&
pNode
->
suid
);
break
;
case
PHY_TAG_SCAN_CODE_BASE_TABLE_TYPE
:
code
=
tlvDecodeI8
(
pTlv
,
&
pNode
->
tableType
);
break
;
case
PHY_TAG_SCAN_CODE_BASE_TABLE_NAME
:
code
=
tlvDecodeObjFromTlv
(
pTlv
,
msgToName
,
&
pNode
->
tableName
);
break
;
case
PHY_TAG_SCAN_CODE_BASE_GROUP_ORDER_SCAN
:
code
=
tlvDecodeBool
(
pTlv
,
&
pNode
->
groupOrderScan
);
break
;
break
;
case
PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX
:
case
PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX
:
code
=
tlvDecodeBool
(
pTlv
,
&
pNode
->
onlyMetaCtbIdx
);
code
=
tlvDecodeBool
(
pTlv
,
&
pNode
->
onlyMetaCtbIdx
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录