Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
1c1061fe
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看板
提交
1c1061fe
编写于
6月 29, 2022
作者:
B
Benguang Zhao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: resolve arithmetic issues of first/last/last_row with keepColumnName enabled
上级
3dbaf255
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
9 addition
and
17 deletion
+9
-17
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+9
-17
未找到文件。
src/client/src/tscSQLParser.c
浏览文件 @
1c1061fe
...
@@ -2685,7 +2685,8 @@ static int32_t setExprInfoForFunctions(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SS
...
@@ -2685,7 +2685,8 @@ static int32_t setExprInfoForFunctions(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SS
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
void
setResultColName
(
char
*
name
,
tSqlExprItem
*
pItem
,
int32_t
functionId
,
SStrToken
*
pToken
,
bool
multiCols
)
{
void
setResultColName
(
char
*
name
,
bool
finalResult
,
tSqlExprItem
*
pItem
,
int32_t
functionId
,
SStrToken
*
pToken
,
bool
multiCols
)
{
if
(
pItem
->
aliasName
!=
NULL
)
{
if
(
pItem
->
aliasName
!=
NULL
)
{
tstrncpy
(
name
,
pItem
->
aliasName
,
TSDB_COL_NAME_LEN
);
tstrncpy
(
name
,
pItem
->
aliasName
,
TSDB_COL_NAME_LEN
);
}
else
{
}
else
{
...
@@ -2693,7 +2694,7 @@ void setResultColName(char* name, tSqlExprItem* pItem, int32_t functionId, SStrT
...
@@ -2693,7 +2694,7 @@ void setResultColName(char* name, tSqlExprItem* pItem, int32_t functionId, SStrT
int32_t
len
=
MIN
(
pToken
->
n
+
1
,
TSDB_COL_NAME_LEN
);
int32_t
len
=
MIN
(
pToken
->
n
+
1
,
TSDB_COL_NAME_LEN
);
tstrncpy
(
uname
,
pToken
->
z
,
len
);
tstrncpy
(
uname
,
pToken
->
z
,
len
);
if
(
tsKeepOriginalColumnName
)
{
// keep the original column name
if
(
finalResult
&&
tsKeepOriginalColumnName
)
{
// keep the original column name
tstrncpy
(
name
,
uname
,
TSDB_COL_NAME_LEN
);
tstrncpy
(
name
,
uname
,
TSDB_COL_NAME_LEN
);
}
else
if
(
multiCols
)
{
}
else
if
(
multiCols
)
{
if
(
!
TSDB_FUNC_IS_SCALAR
(
functionId
))
{
if
(
!
TSDB_FUNC_IS_SCALAR
(
functionId
))
{
...
@@ -2710,7 +2711,7 @@ void setResultColName(char* name, tSqlExprItem* pItem, int32_t functionId, SStrT
...
@@ -2710,7 +2711,7 @@ void setResultColName(char* name, tSqlExprItem* pItem, int32_t functionId, SStrT
tstrncpy
(
name
,
tmp
,
TSDB_COL_NAME_LEN
);
tstrncpy
(
name
,
tmp
,
TSDB_COL_NAME_LEN
);
}
}
}
else
{
// use the user-input result column name
}
else
{
// use the user-input result column name
len
=
MIN
(
pItem
->
pNode
->
exprToken
.
n
+
1
,
TSDB_COL_NAME_LEN
);
len
=
MIN
(
pItem
->
pNode
->
exprToken
.
n
+
1
,
TSDB_COL_NAME_LEN
);
tstrncpy
(
name
,
pItem
->
pNode
->
exprToken
.
z
,
len
);
tstrncpy
(
name
,
pItem
->
pNode
->
exprToken
.
z
,
len
);
}
}
...
@@ -3183,7 +3184,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
...
@@ -3183,7 +3184,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
for
(
int32_t
j
=
0
;
j
<
tscGetNumOfColumns
(
pTableMetaInfo
->
pTableMeta
);
++
j
)
{
for
(
int32_t
j
=
0
;
j
<
tscGetNumOfColumns
(
pTableMetaInfo
->
pTableMeta
);
++
j
)
{
index
.
columnIndex
=
j
;
index
.
columnIndex
=
j
;
SStrToken
t
=
{.
z
=
pSchema
[
j
].
name
,
.
n
=
(
uint32_t
)
strnlen
(
pSchema
[
j
].
name
,
TSDB_COL_NAME_LEN
)};
SStrToken
t
=
{.
z
=
pSchema
[
j
].
name
,
.
n
=
(
uint32_t
)
strnlen
(
pSchema
[
j
].
name
,
TSDB_COL_NAME_LEN
)};
setResultColName
(
name
,
pItem
,
cvtFunc
.
originFuncId
,
&
t
,
true
);
setResultColName
(
name
,
finalResult
,
pItem
,
cvtFunc
.
originFuncId
,
&
t
,
true
);
if
(
setExprInfoForFunctions
(
pCmd
,
pQueryInfo
,
&
pSchema
[
j
],
cvtFunc
,
name
,
colIndex
++
,
&
index
,
finalResult
,
if
(
setExprInfoForFunctions
(
pCmd
,
pQueryInfo
,
&
pSchema
[
j
],
cvtFunc
,
name
,
colIndex
++
,
&
index
,
finalResult
,
pUdfInfo
)
!=
0
)
{
pUdfInfo
)
!=
0
)
{
...
@@ -3212,7 +3213,8 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
...
@@ -3212,7 +3213,8 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
SSchema
*
pSchema
=
tscGetTableColumnSchema
(
pTableMetaInfo
->
pTableMeta
,
index
.
columnIndex
);
SSchema
*
pSchema
=
tscGetTableColumnSchema
(
pTableMetaInfo
->
pTableMeta
,
index
.
columnIndex
);
bool
multiColOutput
=
taosArrayGetSize
(
pItem
->
pNode
->
Expr
.
paramList
)
>
1
;
bool
multiColOutput
=
taosArrayGetSize
(
pItem
->
pNode
->
Expr
.
paramList
)
>
1
;
setResultColName
(
name
,
pItem
,
cvtFunc
.
originFuncId
,
&
pParamElem
->
pNode
->
columnName
,
multiColOutput
);
setResultColName
(
name
,
finalResult
,
pItem
,
cvtFunc
.
originFuncId
,
&
pParamElem
->
pNode
->
columnName
,
multiColOutput
);
if
(
setExprInfoForFunctions
(
pCmd
,
pQueryInfo
,
pSchema
,
cvtFunc
,
name
,
colIndex
++
,
&
index
,
finalResult
,
if
(
setExprInfoForFunctions
(
pCmd
,
pQueryInfo
,
pSchema
,
cvtFunc
,
name
,
colIndex
++
,
&
index
,
finalResult
,
pUdfInfo
)
!=
0
)
{
pUdfInfo
)
!=
0
)
{
...
@@ -3238,7 +3240,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
...
@@ -3238,7 +3240,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
char
name
[
TSDB_COL_NAME_LEN
]
=
{
0
};
char
name
[
TSDB_COL_NAME_LEN
]
=
{
0
};
SStrToken
t
=
{.
z
=
pSchema
[
i
].
name
,
.
n
=
(
uint32_t
)
strnlen
(
pSchema
[
i
].
name
,
TSDB_COL_NAME_LEN
)};
SStrToken
t
=
{.
z
=
pSchema
[
i
].
name
,
.
n
=
(
uint32_t
)
strnlen
(
pSchema
[
i
].
name
,
TSDB_COL_NAME_LEN
)};
setResultColName
(
name
,
pItem
,
cvtFunc
.
originFuncId
,
&
t
,
true
);
setResultColName
(
name
,
finalResult
,
pItem
,
cvtFunc
.
originFuncId
,
&
t
,
true
);
if
(
setExprInfoForFunctions
(
pCmd
,
pQueryInfo
,
&
pSchema
[
index
.
columnIndex
],
cvtFunc
,
name
,
colIndex
,
&
index
,
if
(
setExprInfoForFunctions
(
pCmd
,
pQueryInfo
,
&
pSchema
[
index
.
columnIndex
],
cvtFunc
,
name
,
colIndex
,
&
index
,
finalResult
,
pUdfInfo
)
!=
0
)
{
finalResult
,
pUdfInfo
)
!=
0
)
{
...
@@ -10950,17 +10952,7 @@ int32_t exprTreeFromSqlExpr(SSqlCmd* pCmd, tExprNode **pExpr, const tSqlExpr* pS
...
@@ -10950,17 +10952,7 @@ int32_t exprTreeFromSqlExpr(SSqlCmd* pCmd, tExprNode **pExpr, const tSqlExpr* pS
*
pExpr
=
calloc
(
1
,
sizeof
(
tExprNode
));
*
pExpr
=
calloc
(
1
,
sizeof
(
tExprNode
));
(
*
pExpr
)
->
nodeType
=
TSQL_NODE_COL
;
(
*
pExpr
)
->
nodeType
=
TSQL_NODE_COL
;
(
*
pExpr
)
->
pSchema
=
calloc
(
1
,
sizeof
(
SSchema
));
(
*
pExpr
)
->
pSchema
=
calloc
(
1
,
sizeof
(
SSchema
));
if
(
tsKeepOriginalColumnName
&&
// TD-14196, tsKeepOriginalColumnName params makes logic special
strncpy
((
*
pExpr
)
->
pSchema
->
name
,
pSqlExpr
->
exprToken
.
z
,
pSqlExpr
->
exprToken
.
n
);
(
pSqlExpr
->
functionId
==
TSDB_FUNC_FIRST
||
pSqlExpr
->
functionId
==
TSDB_FUNC_LAST
||
pSqlExpr
->
functionId
==
TSDB_FUNC_SPREAD
||
pSqlExpr
->
functionId
==
TSDB_FUNC_LAST_ROW
||
pSqlExpr
->
functionId
==
TSDB_FUNC_INTERP
))
{
tSqlExprItem
*
pParamElem
=
taosArrayGet
(
pSqlExpr
->
Expr
.
paramList
,
0
);
strncpy
((
*
pExpr
)
->
pSchema
->
name
,
pParamElem
->
pNode
->
columnName
.
z
,
pParamElem
->
pNode
->
columnName
.
n
);
}
else
{
strncpy
((
*
pExpr
)
->
pSchema
->
name
,
pSqlExpr
->
exprToken
.
z
,
pSqlExpr
->
exprToken
.
n
);
}
// set the input column data byte and type.
// set the input column data byte and type.
size_t
size
=
taosArrayGetSize
(
pQueryInfo
->
exprList
);
size_t
size
=
taosArrayGetSize
(
pQueryInfo
->
exprList
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录