Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
8b62c75c
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看板
提交
8b62c75c
编写于
7月 19, 2023
作者:
D
dapan1121
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: merge join ignore param issue
上级
38be8f2a
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
18 addition
and
6 deletion
+18
-6
source/libs/executor/inc/executorInt.h
source/libs/executor/inc/executorInt.h
+1
-0
source/libs/executor/src/dynqueryctrloperator.c
source/libs/executor/src/dynqueryctrloperator.c
+6
-4
source/libs/executor/src/mergejoinoperator.c
source/libs/executor/src/mergejoinoperator.c
+11
-2
未找到文件。
source/libs/executor/inc/executorInt.h
浏览文件 @
8b62c75c
...
...
@@ -147,6 +147,7 @@ typedef struct SLimitInfo {
}
SLimitInfo
;
typedef
struct
SSortMergeJoinOperatorParam
{
bool
initParam
;
}
SSortMergeJoinOperatorParam
;
typedef
struct
SExchangeOperatorBasicParam
{
...
...
source/libs/executor/src/dynqueryctrloperator.c
浏览文件 @
8b62c75c
...
...
@@ -36,7 +36,7 @@ void freeVgTableList(void* ptr) {
static
void
destroyDynQueryCtrlOperator
(
void
*
param
)
{
SDynQueryCtrlOperatorInfo
*
pDyn
=
(
SDynQueryCtrlOperatorInfo
*
)
param
;
q
Debug
(
"dynQueryCtrl exec info, prevBlk:%"
PRId64
", prevRows:%"
PRId64
", postBlk:%"
PRId64
", postRows:%"
PRId64
,
q
Error
(
"dynQueryCtrl exec info, prevBlk:%"
PRId64
", prevRows:%"
PRId64
", postBlk:%"
PRId64
", postRows:%"
PRId64
,
pDyn
->
execInfo
.
prevBlkNum
,
pDyn
->
execInfo
.
prevBlkRows
,
pDyn
->
execInfo
.
postBlkNum
,
pDyn
->
execInfo
.
postBlkRows
);
if
(
pDyn
->
stbJoin
.
ctx
.
prev
.
leftVg
)
{
...
...
@@ -158,7 +158,7 @@ static FORCE_INLINE int32_t buildBatchExchangeOperatorParam(SOperatorParam** ppR
}
static
FORCE_INLINE
int32_t
buildMergeJoinOperatorParam
(
SOperatorParam
**
ppRes
,
SOperatorParam
*
pChild0
,
SOperatorParam
*
pChild1
)
{
static
FORCE_INLINE
int32_t
buildMergeJoinOperatorParam
(
SOperatorParam
**
ppRes
,
bool
initParam
,
SOperatorParam
*
pChild0
,
SOperatorParam
*
pChild1
)
{
*
ppRes
=
taosMemoryMalloc
(
sizeof
(
SOperatorParam
));
if
(
NULL
==
*
ppRes
)
{
return
TSDB_CODE_OUT_OF_MEMORY
;
...
...
@@ -178,6 +178,8 @@ static FORCE_INLINE int32_t buildMergeJoinOperatorParam(SOperatorParam** ppRes,
if
(
NULL
==
pJoin
)
{
return
TSDB_CODE_OUT_OF_MEMORY
;
}
pJoin
->
initParam
=
initParam
;
(
*
ppRes
)
->
opType
=
QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN
;
(
*
ppRes
)
->
value
=
pJoin
;
...
...
@@ -214,7 +216,7 @@ static int32_t buildSeqStbJoinOperatorParam(SDynQueryCtrlOperatorInfo* pInfo, SS
code
=
buildGroupCacheOperatorParam
(
&
pGcParam1
,
1
,
*
rightVg
,
*
rightUid
,
pExcParam1
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
buildMergeJoinOperatorParam
(
ppParam
,
pGcParam0
,
pGcParam1
);
code
=
buildMergeJoinOperatorParam
(
ppParam
,
false
,
pGcParam0
,
pGcParam1
);
}
return
code
;
}
...
...
@@ -254,7 +256,7 @@ static int32_t buildSeqBatchStbJoinOperatorParam(SDynQueryCtrlOperatorInfo* pInf
code
=
buildGroupCacheOperatorParam
(
&
pGcParam1
,
1
,
*
rightVg
,
*
rightUid
,
pExcParam1
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
buildMergeJoinOperatorParam
(
ppParam
,
pGcParam0
,
pGcParam1
);
code
=
buildMergeJoinOperatorParam
(
ppParam
,
p
ExcParam0
?
true
:
false
,
p
GcParam0
,
pGcParam1
);
}
return
code
;
}
...
...
source/libs/executor/src/mergejoinoperator.c
浏览文件 @
8b62c75c
...
...
@@ -650,7 +650,8 @@ static void setMergeJoinDone(SOperatorInfo* pOperator) {
static
bool
mergeJoinGetNextTimestamp
(
SOperatorInfo
*
pOperator
,
int64_t
*
pLeftTs
,
int64_t
*
pRightTs
)
{
SMJoinOperatorInfo
*
pJoinInfo
=
pOperator
->
info
;
bool
leftEmpty
=
false
;
if
(
pJoinInfo
->
pLeft
==
NULL
||
pJoinInfo
->
leftPos
>=
pJoinInfo
->
pLeft
->
info
.
rows
)
{
pJoinInfo
->
pLeft
=
getNextBlockFromDownstream
(
pOperator
,
0
);
...
...
@@ -658,7 +659,11 @@ static bool mergeJoinGetNextTimestamp(SOperatorInfo* pOperator, int64_t* pLeftTs
if
(
pJoinInfo
->
pLeft
==
NULL
)
{
qError
(
"merge join left got empty block"
);
setMergeJoinDone
(
pOperator
);
return
false
;
if
(
pOperator
->
pOperatorParam
&&
((
SSortMergeJoinOperatorParam
*
)
pOperator
->
pOperatorParam
->
value
)
->
initParam
)
{
leftEmpty
=
true
;
}
else
{
return
false
;
}
}
else
{
qError
(
"merge join left got block"
);
}
...
...
@@ -674,8 +679,12 @@ static bool mergeJoinGetNextTimestamp(SOperatorInfo* pOperator, int64_t* pLeftTs
return
false
;
}
else
{
qError
(
"merge join right got block"
);
if
(
leftEmpty
)
{
return
false
;
}
}
}
// only the timestamp match support for ordinary table
SColumnInfoData
*
pLeftCol
=
taosArrayGet
(
pJoinInfo
->
pLeft
->
pDataBlock
,
pJoinInfo
->
leftCol
.
slotId
);
char
*
pLeftVal
=
colDataGetData
(
pLeftCol
,
pJoinInfo
->
leftPos
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录