Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
e83a46b8
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看板
提交
e83a46b8
编写于
7月 26, 2023
作者:
D
dapan1121
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
enh: cache necessary file for seq mode
上级
4e5fbb52
变更
11
展开全部
隐藏空白更改
内联
并排
Showing
11 changed file
with
270 addition
and
207 deletion
+270
-207
include/libs/nodes/plannodes.h
include/libs/nodes/plannodes.h
+2
-2
source/libs/executor/inc/dynqueryctrl.h
source/libs/executor/inc/dynqueryctrl.h
+7
-5
source/libs/executor/inc/executorInt.h
source/libs/executor/inc/executorInt.h
+1
-0
source/libs/executor/inc/groupcache.h
source/libs/executor/inc/groupcache.h
+1
-0
source/libs/executor/src/dynqueryctrloperator.c
source/libs/executor/src/dynqueryctrloperator.c
+197
-159
source/libs/executor/src/groupcacheoperator.c
source/libs/executor/src/groupcacheoperator.c
+49
-28
source/libs/nodes/src/nodesCloneFuncs.c
source/libs/nodes/src/nodesCloneFuncs.c
+1
-1
source/libs/nodes/src/nodesCodeFuncs.c
source/libs/nodes/src/nodesCodeFuncs.c
+6
-6
source/libs/nodes/src/nodesMsgFuncs.c
source/libs/nodes/src/nodesMsgFuncs.c
+4
-4
source/libs/planner/src/planOptimizer.c
source/libs/planner/src/planOptimizer.c
+1
-1
source/libs/planner/src/planPhysiCreater.c
source/libs/planner/src/planPhysiCreater.c
+1
-1
未找到文件。
include/libs/nodes/plannodes.h
浏览文件 @
e83a46b8
...
@@ -169,7 +169,7 @@ typedef struct SGroupCacheLogicNode {
...
@@ -169,7 +169,7 @@ typedef struct SGroupCacheLogicNode {
}
SGroupCacheLogicNode
;
}
SGroupCacheLogicNode
;
typedef
struct
SDynQueryCtrlStbJoin
{
typedef
struct
SDynQueryCtrlStbJoin
{
bool
batch
Join
;
bool
batch
Fetch
;
SNodeList
*
pVgList
;
SNodeList
*
pVgList
;
SNodeList
*
pUidList
;
SNodeList
*
pUidList
;
}
SDynQueryCtrlStbJoin
;
}
SDynQueryCtrlStbJoin
;
...
@@ -460,7 +460,7 @@ typedef struct SGroupCachePhysiNode {
...
@@ -460,7 +460,7 @@ typedef struct SGroupCachePhysiNode {
}
SGroupCachePhysiNode
;
}
SGroupCachePhysiNode
;
typedef
struct
SStbJoinDynCtrlBasic
{
typedef
struct
SStbJoinDynCtrlBasic
{
bool
batch
Join
;
bool
batch
Fetch
;
int32_t
vgSlot
[
2
];
int32_t
vgSlot
[
2
];
int32_t
uidSlot
[
2
];
int32_t
uidSlot
[
2
];
}
SStbJoinDynCtrlBasic
;
}
SStbJoinDynCtrlBasic
;
...
...
source/libs/executor/inc/dynqueryctrl.h
浏览文件 @
e83a46b8
...
@@ -37,17 +37,19 @@ typedef struct SStbJoinTableList {
...
@@ -37,17 +37,19 @@ typedef struct SStbJoinTableList {
}
SStbJoinTableList
;
}
SStbJoinTableList
;
typedef
struct
SStbJoinPrevJoinCtx
{
typedef
struct
SStbJoinPrevJoinCtx
{
SSDataBlock
*
pLastBlk
;
int32_t
lastRow
;
bool
joinBuild
;
bool
joinBuild
;
SSHashObj
*
leftVg
;
SSHashObj
*
leftHash
;
SSHashObj
*
rightVg
;
SSHashObj
*
rightHash
;
SSHashObj
*
tableTimes
;
SSHashObj
*
onceTable
;
int64_t
tableNum
;
int64_t
tableNum
;
SStbJoinTableList
*
pListHead
;
SStbJoinTableList
*
pListHead
;
}
SStbJoinPrevJoinCtx
;
}
SStbJoinPrevJoinCtx
;
typedef
struct
SStbJoinPostJoinCtx
{
typedef
struct
SStbJoinPostJoinCtx
{
bool
isStarted
;
bool
isStarted
;
int64_t
rightCurrUid
;
int64_t
rightNextUid
;
}
SStbJoinPostJoinCtx
;
}
SStbJoinPostJoinCtx
;
typedef
struct
SStbJoinDynCtrlCtx
{
typedef
struct
SStbJoinDynCtrlCtx
{
...
...
source/libs/executor/inc/executorInt.h
浏览文件 @
e83a46b8
...
@@ -110,6 +110,7 @@ typedef struct SGcOperatorParam {
...
@@ -110,6 +110,7 @@ typedef struct SGcOperatorParam {
int32_t
downstreamIdx
;
int32_t
downstreamIdx
;
int32_t
vgId
;
int32_t
vgId
;
int64_t
tbUid
;
int64_t
tbUid
;
bool
needCache
;
}
SGcOperatorParam
;
}
SGcOperatorParam
;
typedef
struct
SExprSupp
{
typedef
struct
SExprSupp
{
...
...
source/libs/executor/inc/groupcache.h
浏览文件 @
e83a46b8
...
@@ -75,6 +75,7 @@ typedef struct SGroupCacheData {
...
@@ -75,6 +75,7 @@ typedef struct SGroupCacheData {
TdThreadMutex
mutex
;
TdThreadMutex
mutex
;
SArray
*
waitQueue
;
SArray
*
waitQueue
;
bool
fetchDone
;
bool
fetchDone
;
bool
needCache
;
SSDataBlock
*
pBlock
;
SSDataBlock
*
pBlock
;
SGcVgroupCtx
*
pVgCtx
;
SGcVgroupCtx
*
pVgCtx
;
int32_t
downstreamIdx
;
int32_t
downstreamIdx
;
...
...
source/libs/executor/src/dynqueryctrloperator.c
浏览文件 @
e83a46b8
此差异已折叠。
点击以展开。
source/libs/executor/src/groupcacheoperator.c
浏览文件 @
e83a46b8
...
@@ -556,22 +556,25 @@ static int32_t handleVgroupTableFetchDone(SGcDownstreamCtx* pCtx, SGroupCacheDat
...
@@ -556,22 +556,25 @@ static int32_t handleVgroupTableFetchDone(SGcDownstreamCtx* pCtx, SGroupCacheDat
}
}
static
FORCE_INLINE
void
initNewGroupData
(
SGcDownstreamCtx
*
pCtx
,
SGroupCacheData
*
pGroup
,
int32_t
downstreamIdx
,
int32_t
vgId
,
bool
batchFetch
)
{
static
FORCE_INLINE
void
initNewGroupData
(
SGcDownstreamCtx
*
pCtx
,
SGroupCacheData
*
pGroup
,
int32_t
downstreamIdx
,
int32_t
vgId
,
bool
batchFetch
,
bool
needCache
)
{
taosThreadMutexInit
(
&
pGroup
->
mutex
,
NULL
);
taosThreadMutexInit
(
&
pGroup
->
mutex
,
NULL
);
pGroup
->
downstreamIdx
=
downstreamIdx
;
pGroup
->
downstreamIdx
=
downstreamIdx
;
pGroup
->
vgId
=
vgId
;
pGroup
->
vgId
=
vgId
;
pGroup
->
fileId
=
-
1
;
pGroup
->
fileId
=
-
1
;
pGroup
->
blkList
.
pList
=
taosArrayInit
(
10
,
sizeof
(
SGcBlkBufBasic
));
pGroup
->
blkList
.
pList
=
taosArrayInit
(
10
,
sizeof
(
SGcBlkBufBasic
));
pGroup
->
startOffset
=
-
1
;
pGroup
->
startOffset
=
-
1
;
pGroup
->
needCache
=
needCache
;
pGroup
->
pVgCtx
=
tSimpleHashGet
(
pCtx
->
pVgTbHash
,
&
pGroup
->
vgId
,
sizeof
(
pGroup
->
vgId
));
pGroup
->
pVgCtx
=
tSimpleHashGet
(
pCtx
->
pVgTbHash
,
&
pGroup
->
vgId
,
sizeof
(
pGroup
->
vgId
));
}
}
static
int32_t
addNewGroupData
(
struct
SOperatorInfo
*
pOperator
,
SOperatorParam
*
pParam
,
SGroupCacheData
**
ppGrp
,
int32_t
vgId
,
int64_t
uid
)
{
static
int32_t
addNewGroupData
(
struct
SOperatorInfo
*
pOperator
,
SOperatorParam
*
pParam
,
SGroupCacheData
**
ppGrp
,
int32_t
vgId
,
int64_t
uid
)
{
SGroupCacheOperatorInfo
*
pGCache
=
pOperator
->
info
;
SGroupCacheOperatorInfo
*
pGCache
=
pOperator
->
info
;
SGcDownstreamCtx
*
pCtx
=
&
pGCache
->
pDownstreams
[
pParam
->
downstreamIdx
];
SGcDownstreamCtx
*
pCtx
=
&
pGCache
->
pDownstreams
[
pParam
->
downstreamIdx
];
SGcOperatorParam
*
pGcParam
=
pParam
->
value
;
SHashObj
*
pGrpHash
=
pGCache
->
globalGrp
?
pGCache
->
pGrpHash
:
pCtx
->
pGrpHash
;
SHashObj
*
pGrpHash
=
pGCache
->
globalGrp
?
pGCache
->
pGrpHash
:
pCtx
->
pGrpHash
;
SGroupCacheData
grpData
=
{
0
};
SGroupCacheData
grpData
=
{
0
};
initNewGroupData
(
pCtx
,
&
grpData
,
pParam
->
downstreamIdx
,
vgId
,
pGCache
->
batchFetch
);
initNewGroupData
(
pCtx
,
&
grpData
,
pParam
->
downstreamIdx
,
vgId
,
pGCache
->
batchFetch
,
pGcParam
->
needCache
);
while
(
true
)
{
while
(
true
)
{
if
(
0
!=
taosHashPut
(
pGrpHash
,
&
uid
,
sizeof
(
uid
),
&
grpData
,
sizeof
(
grpData
)))
{
if
(
0
!=
taosHashPut
(
pGrpHash
,
&
uid
,
sizeof
(
uid
),
&
grpData
,
sizeof
(
grpData
)))
{
...
@@ -623,12 +626,16 @@ static int32_t handleGroupCacheRetrievedBlk(struct SOperatorInfo* pOperator, SSD
...
@@ -623,12 +626,16 @@ static int32_t handleGroupCacheRetrievedBlk(struct SOperatorInfo* pOperator, SSD
SGroupCacheOperatorInfo
*
pGCache
=
pOperator
->
info
;
SGroupCacheOperatorInfo
*
pGCache
=
pOperator
->
info
;
SGcDownstreamCtx
*
pCtx
=
&
pGCache
->
pDownstreams
[
pSession
->
downstreamIdx
];
SGcDownstreamCtx
*
pCtx
=
&
pGCache
->
pDownstreams
[
pSession
->
downstreamIdx
];
SHashObj
*
pGrpHash
=
pGCache
->
globalGrp
?
pGCache
->
pGrpHash
:
pCtx
->
pGrpHash
;
SHashObj
*
pGrpHash
=
pGCache
->
globalGrp
?
pGCache
->
pGrpHash
:
pCtx
->
pGrpHash
;
int64_t
newBlkIdx
=
0
;
SGroupCacheData
*
pGroup
=
taosHashGet
(
pGrpHash
,
&
pBlock
->
info
.
id
.
groupId
,
sizeof
(
pBlock
->
info
.
id
.
groupId
));
SGroupCacheData
*
pGroup
=
taosHashGet
(
pGrpHash
,
&
pBlock
->
info
.
id
.
groupId
,
sizeof
(
pBlock
->
info
.
id
.
groupId
));
if
(
NULL
==
pGroup
)
{
if
(
NULL
==
pGroup
)
{
if
(
pGCache
->
batchFetch
)
{
if
(
pGCache
->
batchFetch
)
{
SGcOperatorParam
fakeGcParam
=
{
0
};
SOperatorParam
fakeParam
=
{
0
};
SOperatorParam
fakeParam
=
{
0
};
fakeGcParam
.
needCache
=
true
;
fakeParam
.
downstreamIdx
=
pSession
->
downstreamIdx
;
fakeParam
.
downstreamIdx
=
pSession
->
downstreamIdx
;
fakeParam
.
value
=
&
fakeGcParam
;
code
=
addNewGroupData
(
pOperator
,
&
fakeParam
,
&
pGroup
,
-
1
,
pBlock
->
info
.
id
.
groupId
);
code
=
addNewGroupData
(
pOperator
,
&
fakeParam
,
&
pGroup
,
-
1
,
pBlock
->
info
.
id
.
groupId
);
if
(
TSDB_CODE_SUCCESS
!=
code
)
{
if
(
TSDB_CODE_SUCCESS
!=
code
)
{
return
code
;
return
code
;
...
@@ -645,22 +652,31 @@ static int32_t handleGroupCacheRetrievedBlk(struct SOperatorInfo* pOperator, SSD
...
@@ -645,22 +652,31 @@ static int32_t handleGroupCacheRetrievedBlk(struct SOperatorInfo* pOperator, SSD
return
code
;
return
code
;
}
}
}
}
SGcBlkBufInfo
newBlkBuf
;
code
=
addBlkToBufCache
(
pOperator
,
pBlock
,
pCtx
,
pGroup
,
&
newBlkBuf
);
if
(
code
)
{
return
code
;
}
int64_t
blkIdx
=
0
;
if
(
pGroup
->
needCache
)
{
code
=
addBlkToGroupCache
(
pGCache
->
batchFetch
,
pGroup
,
&
newBlkBuf
,
&
blkIdx
);
qError
(
"add block to group cache"
);
if
(
code
)
{
return
code
;
SGcBlkBufInfo
newBlkBuf
;
code
=
addBlkToBufCache
(
pOperator
,
pBlock
,
pCtx
,
pGroup
,
&
newBlkBuf
);
if
(
code
)
{
return
code
;
}
code
=
addBlkToGroupCache
(
pGCache
->
batchFetch
,
pGroup
,
&
newBlkBuf
,
&
newBlkIdx
);
if
(
code
)
{
return
code
;
}
}
else
{
qError
(
"no need to add block to group cache"
);
pGroup
->
pBlock
=
pBlock
;
}
}
notifyWaitingSessions
(
pGroup
->
waitQueue
);
notifyWaitingSessions
(
pGroup
->
waitQueue
);
if
(
pGroup
==
pSession
->
pGroupData
)
{
if
(
pGroup
==
pSession
->
pGroupData
)
{
pSession
->
lastBlkId
=
blkIdx
;
if
(
pGroup
->
needCache
)
{
pSession
->
lastBlkId
=
newBlkIdx
;
}
*
continueFetch
=
false
;
*
continueFetch
=
false
;
}
}
...
@@ -746,26 +762,31 @@ static int32_t getBlkFromSessionCacheImpl(struct SOperatorInfo* pOperator, int64
...
@@ -746,26 +762,31 @@ static int32_t getBlkFromSessionCacheImpl(struct SOperatorInfo* pOperator, int64
int32_t
code
=
TSDB_CODE_SUCCESS
;
int32_t
code
=
TSDB_CODE_SUCCESS
;
SGroupCacheOperatorInfo
*
pGCache
=
pOperator
->
info
;
SGroupCacheOperatorInfo
*
pGCache
=
pOperator
->
info
;
*
got
=
true
;
*
got
=
true
;
SGcBlkList
*
pBlkList
=
&
pSession
->
pGroupData
->
blkList
;
if
(
pSession
->
pGroupData
->
needCache
)
{
taosRLockLatch
(
&
pBlkList
->
lock
);
SGcBlkList
*
pBlkList
=
&
pSession
->
pGroupData
->
blkList
;
int64_t
blkNum
=
taosArrayGetSize
(
pBlkList
->
pList
);
taosRLockLatch
(
&
pBlkList
->
lock
);
if
(
pSession
->
lastBlkId
<
0
)
{
int64_t
blkNum
=
taosArrayGetSize
(
pBlkList
->
pList
);
if
(
blkNum
>
0
)
{
if
(
pSession
->
lastBlkId
<
0
)
{
SGcBlkBufBasic
*
pBasic
=
taosArrayGet
(
pBlkList
->
pList
,
0
);
if
(
blkNum
>
0
)
{
SGcBlkBufBasic
*
pBasic
=
taosArrayGet
(
pBlkList
->
pList
,
0
);
taosRUnLockLatch
(
&
pBlkList
->
lock
);
code
=
retrieveBlkFromBufCache
(
pGCache
,
pSession
->
pGroupData
,
sessionId
,
pBasic
,
ppRes
);
pSession
->
lastBlkId
=
0
;
return
code
;
}
}
else
if
((
pSession
->
lastBlkId
+
1
)
<
blkNum
)
{
SGcBlkBufBasic
*
pBasic
=
taosArrayGet
(
pBlkList
->
pList
,
pSession
->
lastBlkId
+
1
);
taosRUnLockLatch
(
&
pBlkList
->
lock
);
taosRUnLockLatch
(
&
pBlkList
->
lock
);
code
=
retrieveBlkFromBufCache
(
pGCache
,
pSession
->
pGroupData
,
sessionId
,
pBasic
,
ppRes
);
code
=
retrieveBlkFromBufCache
(
pGCache
,
pSession
->
pGroupData
,
sessionId
,
pBasic
,
ppRes
);
pSession
->
lastBlkId
=
0
;
pSession
->
lastBlkId
++
;
return
code
;
return
code
;
}
}
}
else
if
((
pSession
->
lastBlkId
+
1
)
<
blkNum
)
{
SGcBlkBufBasic
*
pBasic
=
taosArrayGet
(
pBlkList
->
pList
,
pSession
->
lastBlkId
+
1
);
taosRUnLockLatch
(
&
pBlkList
->
lock
);
taosRUnLockLatch
(
&
pBlkList
->
lock
);
code
=
retrieveBlkFromBufCache
(
pGCache
,
pSession
->
pGroupData
,
sessionId
,
pBasic
,
ppRes
);
}
else
if
(
pSession
->
pGroupData
->
pBlock
)
{
pSession
->
lastBlkId
++
;
*
ppRes
=
pSession
->
pGroupData
->
pBlock
;
return
code
;
pSession
->
pGroupData
->
pBlock
=
NULL
;
}
}
taosRUnLockLatch
(
&
pBlkList
->
lock
);
if
(
atomic_load_8
((
int8_t
*
)
&
pSession
->
pGroupData
->
fetchDone
))
{
if
(
atomic_load_8
((
int8_t
*
)
&
pSession
->
pGroupData
->
fetchDone
))
{
*
ppRes
=
NULL
;
*
ppRes
=
NULL
;
...
@@ -929,7 +950,7 @@ static int32_t getBlkFromGroupCache(struct SOperatorInfo* pOperator, SSDataBlock
...
@@ -929,7 +950,7 @@ static int32_t getBlkFromGroupCache(struct SOperatorInfo* pOperator, SSDataBlock
if
(
TSDB_CODE_SUCCESS
!=
code
)
{
if
(
TSDB_CODE_SUCCESS
!=
code
)
{
return
code
;
return
code
;
}
}
}
else
{
}
else
if
(
pSession
->
pGroupData
->
needCache
)
{
SSDataBlock
**
ppBlock
=
taosHashGet
(
pGCache
->
blkCache
.
pReadBlk
,
&
pGcParam
->
sessionId
,
sizeof
(
pGcParam
->
sessionId
));
SSDataBlock
**
ppBlock
=
taosHashGet
(
pGCache
->
blkCache
.
pReadBlk
,
&
pGcParam
->
sessionId
,
sizeof
(
pGcParam
->
sessionId
));
if
(
ppBlock
)
{
if
(
ppBlock
)
{
releaseBaseBlockToList
(
pCtx
,
*
ppBlock
);
releaseBaseBlockToList
(
pCtx
,
*
ppBlock
);
...
...
source/libs/nodes/src/nodesCloneFuncs.c
浏览文件 @
e83a46b8
...
@@ -550,7 +550,7 @@ static int32_t logicGroupCacheCopy(const SGroupCacheLogicNode* pSrc, SGroupCache
...
@@ -550,7 +550,7 @@ static int32_t logicGroupCacheCopy(const SGroupCacheLogicNode* pSrc, SGroupCache
static
int32_t
logicDynQueryCtrlCopy
(
const
SDynQueryCtrlLogicNode
*
pSrc
,
SDynQueryCtrlLogicNode
*
pDst
)
{
static
int32_t
logicDynQueryCtrlCopy
(
const
SDynQueryCtrlLogicNode
*
pSrc
,
SDynQueryCtrlLogicNode
*
pDst
)
{
COPY_BASE_OBJECT_FIELD
(
node
,
logicNodeCopy
);
COPY_BASE_OBJECT_FIELD
(
node
,
logicNodeCopy
);
COPY_SCALAR_FIELD
(
qType
);
COPY_SCALAR_FIELD
(
qType
);
COPY_SCALAR_FIELD
(
stbJoin
.
batch
Join
);
COPY_SCALAR_FIELD
(
stbJoin
.
batch
Fetch
);
CLONE_NODE_LIST_FIELD
(
stbJoin
.
pVgList
);
CLONE_NODE_LIST_FIELD
(
stbJoin
.
pVgList
);
CLONE_NODE_LIST_FIELD
(
stbJoin
.
pUidList
);
CLONE_NODE_LIST_FIELD
(
stbJoin
.
pUidList
);
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
...
...
source/libs/nodes/src/nodesCodeFuncs.c
浏览文件 @
e83a46b8
...
@@ -1228,7 +1228,7 @@ static int32_t jsonToLogicGroupCacheNode(const SJson* pJson, void* pObj) {
...
@@ -1228,7 +1228,7 @@ static int32_t jsonToLogicGroupCacheNode(const SJson* pJson, void* pObj) {
}
}
static
const
char
*
jkDynQueryCtrlLogicPlanQueryType
=
"QueryType"
;
static
const
char
*
jkDynQueryCtrlLogicPlanQueryType
=
"QueryType"
;
static
const
char
*
jkDynQueryCtrlLogicPlanStbJoinBatch
Join
=
"BatchJoin
"
;
static
const
char
*
jkDynQueryCtrlLogicPlanStbJoinBatch
Fetch
=
"BatchFetch
"
;
static
const
char
*
jkDynQueryCtrlLogicPlanStbJoinVgList
=
"VgroupList"
;
static
const
char
*
jkDynQueryCtrlLogicPlanStbJoinVgList
=
"VgroupList"
;
static
const
char
*
jkDynQueryCtrlLogicPlanStbJoinUidList
=
"UidList"
;
static
const
char
*
jkDynQueryCtrlLogicPlanStbJoinUidList
=
"UidList"
;
...
@@ -1240,7 +1240,7 @@ static int32_t logicDynQueryCtrlNodeToJson(const void* pObj, SJson* pJson) {
...
@@ -1240,7 +1240,7 @@ static int32_t logicDynQueryCtrlNodeToJson(const void* pObj, SJson* pJson) {
code
=
tjsonAddIntegerToObject
(
pJson
,
jkDynQueryCtrlLogicPlanQueryType
,
pNode
->
qType
);
code
=
tjsonAddIntegerToObject
(
pJson
,
jkDynQueryCtrlLogicPlanQueryType
,
pNode
->
qType
);
}
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonAddBoolToObject
(
pJson
,
jkDynQueryCtrlLogicPlanStbJoinBatch
Join
,
pNode
->
stbJoin
.
batchJoin
);
code
=
tjsonAddBoolToObject
(
pJson
,
jkDynQueryCtrlLogicPlanStbJoinBatch
Fetch
,
pNode
->
stbJoin
.
batchFetch
);
}
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
nodeListToJson
(
pJson
,
jkDynQueryCtrlLogicPlanStbJoinVgList
,
pNode
->
stbJoin
.
pVgList
);
code
=
nodeListToJson
(
pJson
,
jkDynQueryCtrlLogicPlanStbJoinVgList
,
pNode
->
stbJoin
.
pVgList
);
...
@@ -1260,7 +1260,7 @@ static int32_t jsonToLogicDynQueryCtrlNode(const SJson* pJson, void* pObj) {
...
@@ -1260,7 +1260,7 @@ static int32_t jsonToLogicDynQueryCtrlNode(const SJson* pJson, void* pObj) {
tjsonGetNumberValue
(
pJson
,
jkDynQueryCtrlLogicPlanQueryType
,
pNode
->
qType
,
code
);
tjsonGetNumberValue
(
pJson
,
jkDynQueryCtrlLogicPlanQueryType
,
pNode
->
qType
,
code
);
}
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
tjsonGetBoolValue
(
pJson
,
jkDynQueryCtrlLogicPlanStbJoinBatch
Join
,
&
pNode
->
stbJoin
.
batchJoin
);
tjsonGetBoolValue
(
pJson
,
jkDynQueryCtrlLogicPlanStbJoinBatch
Fetch
,
&
pNode
->
stbJoin
.
batchFetch
);
}
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
jsonToNodeList
(
pJson
,
jkDynQueryCtrlLogicPlanStbJoinVgList
,
&
pNode
->
stbJoin
.
pVgList
);
code
=
jsonToNodeList
(
pJson
,
jkDynQueryCtrlLogicPlanStbJoinVgList
,
&
pNode
->
stbJoin
.
pVgList
);
...
@@ -3005,7 +3005,7 @@ static int32_t jsonToPhysiGroupCacheNode(const SJson* pJson, void* pObj) {
...
@@ -3005,7 +3005,7 @@ static int32_t jsonToPhysiGroupCacheNode(const SJson* pJson, void* pObj) {
}
}
static
const
char
*
jkDynQueryCtrlPhysiPlanQueryType
=
"QueryType"
;
static
const
char
*
jkDynQueryCtrlPhysiPlanQueryType
=
"QueryType"
;
static
const
char
*
jkDynQueryCtrlPhysiPlanBatch
Join
=
"BatchJoin
"
;
static
const
char
*
jkDynQueryCtrlPhysiPlanBatch
Fetch
=
"BatchFetch
"
;
static
const
char
*
jkDynQueryCtrlPhysiPlanVgSlot0
=
"VgSlot[0]"
;
static
const
char
*
jkDynQueryCtrlPhysiPlanVgSlot0
=
"VgSlot[0]"
;
static
const
char
*
jkDynQueryCtrlPhysiPlanVgSlot1
=
"VgSlot[1]"
;
static
const
char
*
jkDynQueryCtrlPhysiPlanVgSlot1
=
"VgSlot[1]"
;
static
const
char
*
jkDynQueryCtrlPhysiPlanUidSlot0
=
"UidSlot[0]"
;
static
const
char
*
jkDynQueryCtrlPhysiPlanUidSlot0
=
"UidSlot[0]"
;
...
@@ -3021,7 +3021,7 @@ static int32_t physiDynQueryCtrlNodeToJson(const void* pObj, SJson* pJson) {
...
@@ -3021,7 +3021,7 @@ static int32_t physiDynQueryCtrlNodeToJson(const void* pObj, SJson* pJson) {
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
switch
(
pNode
->
qType
)
{
switch
(
pNode
->
qType
)
{
case
DYN_QTYPE_STB_HASH
:
{
case
DYN_QTYPE_STB_HASH
:
{
code
=
tjsonAddBoolToObject
(
pJson
,
jkDynQueryCtrlPhysiPlanBatch
Join
,
pNode
->
stbJoin
.
batchJoin
);
code
=
tjsonAddBoolToObject
(
pJson
,
jkDynQueryCtrlPhysiPlanBatch
Fetch
,
pNode
->
stbJoin
.
batchFetch
);
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonAddIntegerToObject
(
pJson
,
jkDynQueryCtrlPhysiPlanVgSlot0
,
pNode
->
stbJoin
.
vgSlot
[
0
]);
code
=
tjsonAddIntegerToObject
(
pJson
,
jkDynQueryCtrlPhysiPlanVgSlot0
,
pNode
->
stbJoin
.
vgSlot
[
0
]);
}
}
...
@@ -3055,7 +3055,7 @@ static int32_t jsonToPhysiDynQueryCtrlNode(const SJson* pJson, void* pObj) {
...
@@ -3055,7 +3055,7 @@ static int32_t jsonToPhysiDynQueryCtrlNode(const SJson* pJson, void* pObj) {
case
DYN_QTYPE_STB_HASH
:
{
case
DYN_QTYPE_STB_HASH
:
{
tjsonGetNumberValue
(
pJson
,
jkDynQueryCtrlPhysiPlanQueryType
,
pNode
->
qType
,
code
);
tjsonGetNumberValue
(
pJson
,
jkDynQueryCtrlPhysiPlanQueryType
,
pNode
->
qType
,
code
);
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonGetBoolValue
(
pJson
,
jkDynQueryCtrlPhysiPlanBatch
Join
,
&
pNode
->
stbJoin
.
batchJoin
);
code
=
tjsonGetBoolValue
(
pJson
,
jkDynQueryCtrlPhysiPlanBatch
Fetch
,
&
pNode
->
stbJoin
.
batchFetch
);
}
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
tjsonGetNumberValue
(
pJson
,
jkDynQueryCtrlPhysiPlanVgSlot0
,
pNode
->
stbJoin
.
vgSlot
[
0
],
code
);
tjsonGetNumberValue
(
pJson
,
jkDynQueryCtrlPhysiPlanVgSlot0
,
pNode
->
stbJoin
.
vgSlot
[
0
],
code
);
...
...
source/libs/nodes/src/nodesMsgFuncs.c
浏览文件 @
e83a46b8
...
@@ -3608,7 +3608,7 @@ static int32_t msgToPhysiGroupCacheNode(STlvDecoder* pDecoder, void* pObj) {
...
@@ -3608,7 +3608,7 @@ static int32_t msgToPhysiGroupCacheNode(STlvDecoder* pDecoder, void* pObj) {
enum
{
enum
{
PHY_DYN_QUERY_CTRL_CODE_BASE_NODE
=
1
,
PHY_DYN_QUERY_CTRL_CODE_BASE_NODE
=
1
,
PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE
,
PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE
,
PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_
JOIN
,
PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_
FETCH
,
PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0
,
PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0
,
PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1
,
PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1
,
PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0
,
PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0
,
...
@@ -3625,7 +3625,7 @@ static int32_t physiDynQueryCtrlNodeToMsg(const void* pObj, STlvEncoder* pEncode
...
@@ -3625,7 +3625,7 @@ static int32_t physiDynQueryCtrlNodeToMsg(const void* pObj, STlvEncoder* pEncode
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
switch
(
pNode
->
qType
)
{
switch
(
pNode
->
qType
)
{
case
DYN_QTYPE_STB_HASH
:
{
case
DYN_QTYPE_STB_HASH
:
{
code
=
tlvEncodeBool
(
pEncoder
,
PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_
JOIN
,
pNode
->
stbJoin
.
batchJoin
);
code
=
tlvEncodeBool
(
pEncoder
,
PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_
FETCH
,
pNode
->
stbJoin
.
batchFetch
);
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tlvEncodeEnum
(
pEncoder
,
PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0
,
pNode
->
stbJoin
.
vgSlot
[
0
]);
code
=
tlvEncodeEnum
(
pEncoder
,
PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0
,
pNode
->
stbJoin
.
vgSlot
[
0
]);
}
}
...
@@ -3660,8 +3660,8 @@ static int32_t msgToPhysiDynQueryCtrlNode(STlvDecoder* pDecoder, void* pObj) {
...
@@ -3660,8 +3660,8 @@ static int32_t msgToPhysiDynQueryCtrlNode(STlvDecoder* pDecoder, void* pObj) {
case
PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE
:
case
PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE
:
code
=
tlvDecodeEnum
(
pTlv
,
&
pNode
->
qType
,
sizeof
(
pNode
->
qType
));
code
=
tlvDecodeEnum
(
pTlv
,
&
pNode
->
qType
,
sizeof
(
pNode
->
qType
));
break
;
break
;
case
PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_
JOIN
:
case
PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_
FETCH
:
code
=
tlvDecodeBool
(
pTlv
,
&
pNode
->
stbJoin
.
batch
Join
);
code
=
tlvDecodeBool
(
pTlv
,
&
pNode
->
stbJoin
.
batch
Fetch
);
break
;
break
;
case
PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0
:
case
PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0
:
code
=
tlvDecodeEnum
(
pTlv
,
&
pNode
->
stbJoin
.
vgSlot
[
0
],
sizeof
(
pNode
->
stbJoin
.
vgSlot
[
0
]));
code
=
tlvDecodeEnum
(
pTlv
,
&
pNode
->
stbJoin
.
vgSlot
[
0
],
sizeof
(
pNode
->
stbJoin
.
vgSlot
[
0
]));
...
...
source/libs/planner/src/planOptimizer.c
浏览文件 @
e83a46b8
...
@@ -3352,7 +3352,7 @@ static int32_t stbJoinOptCreateDynQueryCtrlNode(SLogicNode* pPrev, SLogicNode* p
...
@@ -3352,7 +3352,7 @@ static int32_t stbJoinOptCreateDynQueryCtrlNode(SLogicNode* pPrev, SLogicNode* p
}
}
pDynCtrl
->
qType
=
DYN_QTYPE_STB_HASH
;
pDynCtrl
->
qType
=
DYN_QTYPE_STB_HASH
;
pDynCtrl
->
stbJoin
.
batch
Join
=
true
;
pDynCtrl
->
stbJoin
.
batch
Fetch
=
true
;
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
pDynCtrl
->
node
.
pChildren
=
nodesMakeList
();
pDynCtrl
->
node
.
pChildren
=
nodesMakeList
();
...
...
source/libs/planner/src/planPhysiCreater.c
浏览文件 @
e83a46b8
...
@@ -1026,7 +1026,7 @@ static int32_t updateDynQueryCtrlStbJoinInfo(SPhysiPlanContext* pCxt, SNodeList*
...
@@ -1026,7 +1026,7 @@ static int32_t updateDynQueryCtrlStbJoinInfo(SPhysiPlanContext* pCxt, SNodeList*
pDynCtrl
->
stbJoin
.
uidSlot
[
i
]
=
((
SColumnNode
*
)
pNode
)
->
slotId
;
pDynCtrl
->
stbJoin
.
uidSlot
[
i
]
=
((
SColumnNode
*
)
pNode
)
->
slotId
;
++
i
;
++
i
;
}
}
pDynCtrl
->
stbJoin
.
batch
Join
=
pLogicNode
->
stbJoin
.
batchJoin
;
pDynCtrl
->
stbJoin
.
batch
Fetch
=
pLogicNode
->
stbJoin
.
batchFetch
;
}
}
return
code
;
return
code
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录