Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
2ab82ca4
T
TDengine
项目概览
慢慢CG
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
2ab82ca4
编写于
4月 22, 2021
作者:
D
dapan1121
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
filter timestamp
上级
7199b01f
变更
6
展开全部
显示空白变更内容
内联
并排
Showing
6 changed file
with
399 addition
and
364 deletion
+399
-364
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+12
-0
src/inc/ttokendef.h
src/inc/ttokendef.h
+2
-0
src/query/inc/qSqlparser.h
src/query/inc/qSqlparser.h
+3
-1
src/query/inc/sql.y
src/query/inc/sql.y
+2
-0
src/query/src/qSqlParser.c
src/query/src/qSqlParser.c
+9
-1
src/query/src/sql.c
src/query/src/sql.c
+371
-362
未找到文件。
src/client/src/tscSQLParser.c
浏览文件 @
2ab82ca4
...
...
@@ -3922,6 +3922,10 @@ int32_t getQueryCondExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSqlExpr** pExpr
const
char
*
msg1
=
"query condition between different columns must use 'AND'"
;
if
((
*
pExpr
)
->
flags
&
(
1
<<
EXPR_FLAG_TS_ERROR
))
{
return
TSDB_CODE_TSC_INVALID_SQL
;
}
tSqlExpr
*
pLeft
=
(
*
pExpr
)
->
pLeft
;
tSqlExpr
*
pRight
=
(
*
pExpr
)
->
pRight
;
...
...
@@ -3959,6 +3963,14 @@ int32_t getQueryCondExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSqlExpr** pExpr
exchangeExpr
(
*
pExpr
);
if
(
pLeft
->
tokenId
==
TK_ID
&&
pRight
->
tokenId
==
TK_TIMESTAMP
&&
(
pRight
->
flags
&
(
1
<<
EXPR_FLAG_TIMESTAMP_VAR
)))
{
return
TSDB_CODE_TSC_INVALID_SQL
;
}
if
((
pLeft
->
flags
&
(
1
<<
EXPR_FLAG_TS_ERROR
))
||
(
pRight
->
flags
&
(
1
<<
EXPR_FLAG_TS_ERROR
)))
{
return
TSDB_CODE_TSC_INVALID_SQL
;
}
return
handleExprInQueryCond
(
pCmd
,
pQueryInfo
,
pExpr
,
pCondExpr
,
type
,
parentOptr
);
}
...
...
src/inc/ttokendef.h
浏览文件 @
2ab82ca4
...
...
@@ -210,6 +210,8 @@
#define TK_SPACE 300
#define TK_COMMENT 301
#define TK_ILLEGAL 302
...
...
src/query/inc/qSqlparser.h
浏览文件 @
2ab82ca4
...
...
@@ -45,7 +45,9 @@ enum SQL_NODE_FROM_TYPE {
};
enum
SQL_EXPR_FLAG
{
EXPR_FLAG_US_TIMESTAMP
=
1
EXPR_FLAG_TS_ERROR
=
1
,
EXPR_FLAG_US_TIMESTAMP
=
2
,
EXPR_FLAG_TIMESTAMP_VAR
=
3
,
};
extern
char
tTokenTypeSwitcher
[
13
];
...
...
src/query/inc/sql.y
浏览文件 @
2ab82ca4
...
...
@@ -674,6 +674,8 @@ expr(A) ::= PLUS(X) FLOAT(Y). { X.n += Y.n; X.type = TK_FLOAT; A = tSqlExprCr
expr(A) ::= STRING(X). { A = tSqlExprCreateIdValue(&X, TK_STRING);}
expr(A) ::= NOW(X). { A = tSqlExprCreateIdValue(&X, TK_NOW); }
expr(A) ::= VARIABLE(X). { A = tSqlExprCreateIdValue(&X, TK_VARIABLE);}
expr(A) ::= PLUS(X) VARIABLE(Y). { X.n += Y.n; X.type = TK_VARIABLE; A = tSqlExprCreateIdValue(&X, TK_VARIABLE);}
expr(A) ::= MINUS(X) VARIABLE(Y). { X.n += Y.n; X.type = TK_VARIABLE; A = tSqlExprCreateIdValue(&X, TK_VARIABLE);}
expr(A) ::= BOOL(X). { A = tSqlExprCreateIdValue(&X, TK_BOOL);}
expr(A) ::= NULL(X). { A = tSqlExprCreateIdValue(&X, TK_NULL);}
...
...
src/query/src/qSqlParser.c
浏览文件 @
2ab82ca4
...
...
@@ -152,6 +152,7 @@ tSqlExpr *tSqlExprCreateIdValue(SStrToken *pToken, int32_t optrType) {
}
pSqlExpr
->
flags
|=
1
<<
EXPR_FLAG_US_TIMESTAMP
;
pSqlExpr
->
flags
|=
1
<<
EXPR_FLAG_TIMESTAMP_VAR
;
pSqlExpr
->
value
.
nType
=
TSDB_DATA_TYPE_BIGINT
;
pSqlExpr
->
tokenId
=
TK_TIMESTAMP
;
pSqlExpr
->
type
=
SQL_NODE_VALUE
;
...
...
@@ -221,6 +222,14 @@ tSqlExpr *tSqlExprCreate(tSqlExpr *pLeft, tSqlExpr *pRight, int32_t optrType) {
pExpr
->
type
=
SQL_NODE_VALUE
;
pExpr
->
flags
=
pLeft
->
flags
|
pRight
->
flags
;
if
((
pLeft
->
flags
&
(
1
<<
EXPR_FLAG_TIMESTAMP_VAR
))
&&
(
pRight
->
flags
&
(
1
<<
EXPR_FLAG_TIMESTAMP_VAR
)))
{
pExpr
->
flags
|=
1
<<
EXPR_FLAG_TS_ERROR
;
}
else
{
pExpr
->
flags
&=
~
(
1
<<
EXPR_FLAG_TIMESTAMP_VAR
);
pExpr
->
flags
&=
~
(
1
<<
EXPR_FLAG_TS_ERROR
);
}
switch
(
optrType
)
{
case
TK_PLUS
:
{
pExpr
->
value
.
i64
=
pLeft
->
value
.
i64
+
pRight
->
value
.
i64
;
...
...
@@ -248,7 +257,6 @@ tSqlExpr *tSqlExprCreate(tSqlExpr *pLeft, tSqlExpr *pRight, int32_t optrType) {
tSqlExprDestroy
(
pLeft
);
tSqlExprDestroy
(
pRight
);
}
else
if
((
pLeft
->
tokenId
==
TK_FLOAT
&&
pRight
->
tokenId
==
TK_INTEGER
)
||
(
pLeft
->
tokenId
==
TK_INTEGER
&&
pRight
->
tokenId
==
TK_FLOAT
)
||
(
pLeft
->
tokenId
==
TK_FLOAT
&&
pRight
->
tokenId
==
TK_FLOAT
))
{
...
...
src/query/src/sql.c
浏览文件 @
2ab82ca4
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录