Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
5b3692db
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
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看板
提交
5b3692db
编写于
1月 14, 2022
作者:
G
Ganlin Zhao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[TD-12945]<fix>(query): taos shell crash when constant comparison cause crash
上级
dda66009
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
89 addition
and
1 deletion
+89
-1
src/query/src/qSqlParser.c
src/query/src/qSqlParser.c
+89
-1
未找到文件。
src/query/src/qSqlParser.c
浏览文件 @
5b3692db
...
...
@@ -18,6 +18,7 @@
#include "taosdef.h"
#include "taosmsg.h"
#include "tcmdtype.h"
#include "tcompare.h"
#include "tstrbuild.h"
#include "ttoken.h"
#include "ttokendef.h"
...
...
@@ -318,7 +319,8 @@ tSqlExpr *tSqlExprCreate(tSqlExpr *pLeft, tSqlExpr *pRight, int32_t optrType) {
}
if
((
pLeft
!=
NULL
&&
pRight
!=
NULL
)
&&
(
optrType
==
TK_PLUS
||
optrType
==
TK_MINUS
||
optrType
==
TK_STAR
||
optrType
==
TK_DIVIDE
||
optrType
==
TK_REM
))
{
(
optrType
==
TK_PLUS
||
optrType
==
TK_MINUS
||
optrType
==
TK_STAR
||
optrType
==
TK_DIVIDE
||
optrType
==
TK_REM
||
optrType
==
TK_EQ
||
optrType
==
TK_NE
||
optrType
==
TK_LT
||
optrType
==
TK_GT
||
optrType
==
TK_LE
||
optrType
==
TK_GE
))
{
/*
* if a exprToken is noted as the TK_TIMESTAMP, the time precision is microsecond
* Otherwise, the time precision is adaptive, determined by the time precision from databases.
...
...
@@ -360,6 +362,30 @@ tSqlExpr *tSqlExprCreate(tSqlExpr *pLeft, tSqlExpr *pRight, int32_t optrType) {
pExpr
->
value
.
i64
=
pLeft
->
value
.
i64
%
pRight
->
value
.
i64
;
break
;
}
case
TK_EQ
:
{
pExpr
->
value
.
i64
=
(
pLeft
->
value
.
i64
==
pRight
->
value
.
i64
)
?
1
:
0
;
break
;
}
case
TK_NE
:
{
pExpr
->
value
.
i64
=
(
pLeft
->
value
.
i64
!=
pRight
->
value
.
i64
)
?
1
:
0
;
break
;
}
case
TK_LT
:
{
pExpr
->
value
.
i64
=
(
pLeft
->
value
.
i64
<
pRight
->
value
.
i64
)
?
1
:
0
;
break
;
}
case
TK_GT
:
{
pExpr
->
value
.
i64
=
(
pLeft
->
value
.
i64
>
pRight
->
value
.
i64
)
?
1
:
0
;
break
;
}
case
TK_LE
:
{
pExpr
->
value
.
i64
=
(
pLeft
->
value
.
i64
<=
pRight
->
value
.
i64
)
?
1
:
0
;
break
;
}
case
TK_GE
:
{
pExpr
->
value
.
i64
=
(
pLeft
->
value
.
i64
>=
pRight
->
value
.
i64
)
?
1
:
0
;
break
;
}
}
tSqlExprDestroy
(
pLeft
);
...
...
@@ -395,6 +421,68 @@ tSqlExpr *tSqlExprCreate(tSqlExpr *pLeft, tSqlExpr *pRight, int32_t optrType) {
pExpr
->
value
.
dKey
=
left
-
((
int64_t
)(
left
/
right
))
*
right
;
break
;
}
case
TK_EQ
:
{
pExpr
->
tokenId
=
TK_INTEGER
;
pExpr
->
value
.
nType
=
TSDB_DATA_TYPE_BIGINT
;
if
(
compareDoubleVal
(
&
left
,
&
right
)
==
0
)
{
pExpr
->
value
.
i64
=
1
;
}
else
{
pExpr
->
value
.
i64
=
0
;
}
break
;
}
case
TK_NE
:
{
pExpr
->
tokenId
=
TK_INTEGER
;
pExpr
->
value
.
nType
=
TSDB_DATA_TYPE_BIGINT
;
if
(
compareDoubleVal
(
&
left
,
&
right
)
!=
0
)
{
pExpr
->
value
.
i64
=
1
;
}
else
{
pExpr
->
value
.
i64
=
0
;
}
break
;
}
case
TK_LT
:
{
pExpr
->
tokenId
=
TK_INTEGER
;
pExpr
->
value
.
nType
=
TSDB_DATA_TYPE_BIGINT
;
if
(
compareDoubleVal
(
&
left
,
&
right
)
==
-
1
)
{
pExpr
->
value
.
i64
=
1
;
}
else
{
pExpr
->
value
.
i64
=
0
;
}
break
;
}
case
TK_GT
:
{
pExpr
->
tokenId
=
TK_INTEGER
;
pExpr
->
value
.
nType
=
TSDB_DATA_TYPE_BIGINT
;
if
(
compareDoubleVal
(
&
left
,
&
right
)
==
1
)
{
pExpr
->
value
.
i64
=
1
;
}
else
{
pExpr
->
value
.
i64
=
0
;
}
break
;
}
case
TK_LE
:
{
int32_t
res
=
compareDoubleVal
(
&
left
,
&
right
);
pExpr
->
tokenId
=
TK_INTEGER
;
pExpr
->
value
.
nType
=
TSDB_DATA_TYPE_BIGINT
;
if
(
res
==
0
||
res
==
-
1
)
{
pExpr
->
value
.
i64
=
1
;
}
else
{
pExpr
->
value
.
i64
=
0
;
}
break
;
}
case
TK_GE
:
{
int32_t
res
=
compareDoubleVal
(
&
left
,
&
right
);
pExpr
->
tokenId
=
TK_INTEGER
;
pExpr
->
value
.
nType
=
TSDB_DATA_TYPE_BIGINT
;
if
(
res
==
0
||
res
==
1
)
{
pExpr
->
value
.
i64
=
1
;
}
else
{
pExpr
->
value
.
i64
=
0
;
}
break
;
}
}
tSqlExprDestroy
(
pLeft
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录