Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
adcd1a2d
T
TDengine
项目概览
taosdata
/
TDengine
9 个月 前同步成功
通知
1176
Star
22014
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看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
adcd1a2d
编写于
8月 17, 2023
作者:
D
dapan1121
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: join error msg
上级
1b038d2d
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
16 addition
and
5 deletion
+16
-5
include/util/taoserror.h
include/util/taoserror.h
+1
-0
source/libs/planner/src/planLogicCreater.c
source/libs/planner/src/planLogicCreater.c
+1
-1
source/libs/planner/src/planOptimizer.c
source/libs/planner/src/planOptimizer.c
+11
-4
source/libs/planner/src/planUtil.c
source/libs/planner/src/planUtil.c
+2
-0
source/util/src/terror.c
source/util/src/terror.c
+1
-0
未找到文件。
include/util/taoserror.h
浏览文件 @
adcd1a2d
...
@@ -715,6 +715,7 @@ int32_t* taosGetErrno();
...
@@ -715,6 +715,7 @@ int32_t* taosGetErrno();
#define TSDB_CODE_PLAN_INTERNAL_ERROR TAOS_DEF_ERROR_CODE(0, 0x2700)
#define TSDB_CODE_PLAN_INTERNAL_ERROR TAOS_DEF_ERROR_CODE(0, 0x2700)
#define TSDB_CODE_PLAN_EXPECTED_TS_EQUAL TAOS_DEF_ERROR_CODE(0, 0x2701)
#define TSDB_CODE_PLAN_EXPECTED_TS_EQUAL TAOS_DEF_ERROR_CODE(0, 0x2701)
#define TSDB_CODE_PLAN_NOT_SUPPORT_CROSS_JOIN TAOS_DEF_ERROR_CODE(0, 0x2702)
#define TSDB_CODE_PLAN_NOT_SUPPORT_CROSS_JOIN TAOS_DEF_ERROR_CODE(0, 0x2702)
#define TSDB_CODE_PLAN_NOT_SUPPORT_JOIN_COND TAOS_DEF_ERROR_CODE(0, 0x2703)
//function
//function
#define TSDB_CODE_FUNC_FUNTION_ERROR TAOS_DEF_ERROR_CODE(0, 0x2800)
#define TSDB_CODE_FUNC_FUNTION_ERROR TAOS_DEF_ERROR_CODE(0, 0x2800)
...
...
source/libs/planner/src/planLogicCreater.c
浏览文件 @
adcd1a2d
...
@@ -441,7 +441,7 @@ static int32_t createJoinLogicNode(SLogicPlanContext* pCxt, SSelectStmt* pSelect
...
@@ -441,7 +441,7 @@ static int32_t createJoinLogicNode(SLogicPlanContext* pCxt, SSelectStmt* pSelect
pJoin
->
node
.
inputTsOrder
=
ORDER_ASC
;
pJoin
->
node
.
inputTsOrder
=
ORDER_ASC
;
pJoin
->
node
.
groupAction
=
GROUP_ACTION_CLEAR
;
pJoin
->
node
.
groupAction
=
GROUP_ACTION_CLEAR
;
pJoin
->
node
.
requireDataOrder
=
DATA_ORDER_LEVEL_GLOBAL
;
pJoin
->
node
.
requireDataOrder
=
DATA_ORDER_LEVEL_GLOBAL
;
pJoin
->
node
.
resultDataOrder
=
DATA_ORDER_LEVEL_
GLOBAL
;
pJoin
->
node
.
resultDataOrder
=
DATA_ORDER_LEVEL_
NONE
;
pJoin
->
isLowLevelJoin
=
pJoinTable
->
isLowLevelJoin
;
pJoin
->
isLowLevelJoin
=
pJoinTable
->
isLowLevelJoin
;
int32_t
code
=
TSDB_CODE_SUCCESS
;
int32_t
code
=
TSDB_CODE_SUCCESS
;
...
...
source/libs/planner/src/planOptimizer.c
浏览文件 @
adcd1a2d
...
@@ -543,7 +543,7 @@ static int32_t pushDownCondOptPartLogicCond(SJoinLogicNode* pJoin, SNode** pOnCo
...
@@ -543,7 +543,7 @@ static int32_t pushDownCondOptPartLogicCond(SJoinLogicNode* pJoin, SNode** pOnCo
SNode
**
pRightChildCond
)
{
SNode
**
pRightChildCond
)
{
SLogicConditionNode
*
pLogicCond
=
(
SLogicConditionNode
*
)
pJoin
->
node
.
pConditions
;
SLogicConditionNode
*
pLogicCond
=
(
SLogicConditionNode
*
)
pJoin
->
node
.
pConditions
;
if
(
LOGIC_COND_TYPE_AND
!=
pLogicCond
->
condType
)
{
if
(
LOGIC_COND_TYPE_AND
!=
pLogicCond
->
condType
)
{
return
TSDB_CODE_
SUCCESS
;
return
TSDB_CODE_
PLAN_NOT_SUPPORT_JOIN_COND
;
}
}
int32_t
code
=
TSDB_CODE_SUCCESS
;
int32_t
code
=
TSDB_CODE_SUCCESS
;
...
@@ -695,16 +695,19 @@ static bool pushDownCondOptIsPriKeyEqualCond(SJoinLogicNode* pJoin, SNode* pCond
...
@@ -695,16 +695,19 @@ static bool pushDownCondOptIsPriKeyEqualCond(SJoinLogicNode* pJoin, SNode* pCond
return
res
;
return
res
;
}
}
static
bool
pushDownCondOptContainPriKeyEqualCond
(
SJoinLogicNode
*
pJoin
,
SNode
*
pCond
)
{
static
bool
pushDownCondOptContainPriKeyEqualCond
(
SJoinLogicNode
*
pJoin
,
SNode
*
pCond
,
bool
*
errCond
)
{
if
(
QUERY_NODE_LOGIC_CONDITION
==
nodeType
(
pCond
))
{
if
(
QUERY_NODE_LOGIC_CONDITION
==
nodeType
(
pCond
))
{
SLogicConditionNode
*
pLogicCond
=
(
SLogicConditionNode
*
)
pCond
;
SLogicConditionNode
*
pLogicCond
=
(
SLogicConditionNode
*
)
pCond
;
if
(
LOGIC_COND_TYPE_AND
!=
pLogicCond
->
condType
)
{
if
(
LOGIC_COND_TYPE_AND
!=
pLogicCond
->
condType
)
{
if
(
errCond
)
{
*
errCond
=
true
;
}
return
false
;
return
false
;
}
}
bool
hasPrimaryKeyEqualCond
=
false
;
bool
hasPrimaryKeyEqualCond
=
false
;
SNode
*
pCond
=
NULL
;
SNode
*
pCond
=
NULL
;
FOREACH
(
pCond
,
pLogicCond
->
pParameterList
)
{
FOREACH
(
pCond
,
pLogicCond
->
pParameterList
)
{
if
(
pushDownCondOptContainPriKeyEqualCond
(
pJoin
,
pCond
))
{
if
(
pushDownCondOptContainPriKeyEqualCond
(
pJoin
,
pCond
,
NULL
))
{
hasPrimaryKeyEqualCond
=
true
;
hasPrimaryKeyEqualCond
=
true
;
break
;
break
;
}
}
...
@@ -719,7 +722,11 @@ static int32_t pushDownCondOptCheckJoinOnCond(SOptimizeContext* pCxt, SJoinLogic
...
@@ -719,7 +722,11 @@ static int32_t pushDownCondOptCheckJoinOnCond(SOptimizeContext* pCxt, SJoinLogic
if
(
NULL
==
pJoin
->
pOtherOnCond
)
{
if
(
NULL
==
pJoin
->
pOtherOnCond
)
{
return
generateUsageErrMsg
(
pCxt
->
pPlanCxt
->
pMsg
,
pCxt
->
pPlanCxt
->
msgLen
,
TSDB_CODE_PLAN_NOT_SUPPORT_CROSS_JOIN
);
return
generateUsageErrMsg
(
pCxt
->
pPlanCxt
->
pMsg
,
pCxt
->
pPlanCxt
->
msgLen
,
TSDB_CODE_PLAN_NOT_SUPPORT_CROSS_JOIN
);
}
}
if
(
!
pushDownCondOptContainPriKeyEqualCond
(
pJoin
,
pJoin
->
pOtherOnCond
))
{
bool
errCond
=
false
;
if
(
!
pushDownCondOptContainPriKeyEqualCond
(
pJoin
,
pJoin
->
pOtherOnCond
,
&
errCond
))
{
if
(
errCond
)
{
return
generateUsageErrMsg
(
pCxt
->
pPlanCxt
->
pMsg
,
pCxt
->
pPlanCxt
->
msgLen
,
TSDB_CODE_PLAN_NOT_SUPPORT_JOIN_COND
);
}
return
generateUsageErrMsg
(
pCxt
->
pPlanCxt
->
pMsg
,
pCxt
->
pPlanCxt
->
msgLen
,
TSDB_CODE_PLAN_EXPECTED_TS_EQUAL
);
return
generateUsageErrMsg
(
pCxt
->
pPlanCxt
->
pMsg
,
pCxt
->
pPlanCxt
->
msgLen
,
TSDB_CODE_PLAN_EXPECTED_TS_EQUAL
);
}
}
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
...
...
source/libs/planner/src/planUtil.c
浏览文件 @
adcd1a2d
...
@@ -22,6 +22,8 @@ static char* getUsageErrFormat(int32_t errCode) {
...
@@ -22,6 +22,8 @@ static char* getUsageErrFormat(int32_t errCode) {
return
"left.ts = right.ts is expected in join expression"
;
return
"left.ts = right.ts is expected in join expression"
;
case
TSDB_CODE_PLAN_NOT_SUPPORT_CROSS_JOIN
:
case
TSDB_CODE_PLAN_NOT_SUPPORT_CROSS_JOIN
:
return
"not support cross join"
;
return
"not support cross join"
;
case
TSDB_CODE_PLAN_NOT_SUPPORT_JOIN_COND
:
return
"Not supported join conditions"
;
default:
default:
break
;
break
;
}
}
...
...
source/util/src/terror.c
浏览文件 @
adcd1a2d
...
@@ -578,6 +578,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INTERNAL_ERROR, "Parser internal err
...
@@ -578,6 +578,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INTERNAL_ERROR, "Parser internal err
TAOS_DEFINE_ERROR
(
TSDB_CODE_PLAN_INTERNAL_ERROR
,
"Planner internal error"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PLAN_INTERNAL_ERROR
,
"Planner internal error"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PLAN_EXPECTED_TS_EQUAL
,
"Expect ts equal"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PLAN_EXPECTED_TS_EQUAL
,
"Expect ts equal"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PLAN_NOT_SUPPORT_CROSS_JOIN
,
"Cross join not support"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PLAN_NOT_SUPPORT_CROSS_JOIN
,
"Cross join not support"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_PLAN_NOT_SUPPORT_JOIN_COND
,
"Not supported join conditions"
)
//function
//function
TAOS_DEFINE_ERROR
(
TSDB_CODE_FUNC_FUNTION_ERROR
,
"Function internal error"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_FUNC_FUNTION_ERROR
,
"Function internal error"
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录