Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
9ee2e032
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看板
提交
9ee2e032
编写于
10月 29, 2021
作者:
S
shenglian zhou
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
select min(c1) from d.st. but result data type error
上级
a7b0e5f9
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
28 addition
and
20 deletion
+28
-20
src/client/src/tscGlobalmerge.c
src/client/src/tscGlobalmerge.c
+1
-1
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+7
-14
src/common/inc/texpr.h
src/common/inc/texpr.h
+1
-1
src/common/src/texpr.c
src/common/src/texpr.c
+16
-0
src/plugins/blm3
src/plugins/blm3
+1
-1
src/query/src/qAggMain.c
src/query/src/qAggMain.c
+2
-2
src/query/src/qPlan.c
src/query/src/qPlan.c
+0
-1
未找到文件。
src/client/src/tscGlobalmerge.c
浏览文件 @
9ee2e032
...
@@ -734,7 +734,7 @@ int32_t doArithmeticCalculate(SQueryInfo* pQueryInfo, tFilePage* pOutput, int32_
...
@@ -734,7 +734,7 @@ int32_t doArithmeticCalculate(SQueryInfo* pQueryInfo, tFilePage* pOutput, int32_
// calculate the result from several other columns
// calculate the result from several other columns
if
(
pSup
->
pExpr
->
pExpr
!=
NULL
)
{
if
(
pSup
->
pExpr
->
pExpr
!=
NULL
)
{
arithSup
.
pExprInfo
=
pSup
->
pExpr
;
arithSup
.
pExprInfo
=
pSup
->
pExpr
;
exprTree
Internal
NodeTraverse
(
arithSup
.
pExprInfo
->
pExpr
,
(
int32_t
)
pOutput
->
num
,
pbuf
+
pOutput
->
num
*
offset
,
&
arithSup
,
TSDB_ORDER_ASC
,
getArithmeticInputSrc
);
exprTreeNodeTraverse
(
arithSup
.
pExprInfo
->
pExpr
,
(
int32_t
)
pOutput
->
num
,
pbuf
+
pOutput
->
num
*
offset
,
&
arithSup
,
TSDB_ORDER_ASC
,
getArithmeticInputSrc
);
}
else
{
}
else
{
SExprInfo
*
pExpr
=
pSup
->
pExpr
;
SExprInfo
*
pExpr
=
pSup
->
pExpr
;
memcpy
(
pbuf
+
pOutput
->
num
*
offset
,
pExpr
->
base
.
offset
*
pOutput
->
num
+
pOutput
->
data
,
(
size_t
)(
pExpr
->
base
.
resBytes
*
pOutput
->
num
));
memcpy
(
pbuf
+
pOutput
->
num
*
offset
,
pExpr
->
base
.
offset
*
pOutput
->
num
+
pOutput
->
data
,
(
size_t
)(
pExpr
->
base
.
resBytes
*
pOutput
->
num
));
...
...
src/client/src/tscSQLParser.c
浏览文件 @
9ee2e032
...
@@ -4341,6 +4341,13 @@ static int32_t validateArithmeticSQLFunc(SSqlCmd* pCmd, tSqlExpr* pExpr,
...
@@ -4341,6 +4341,13 @@ static int32_t validateArithmeticSQLFunc(SSqlCmd* pCmd, tSqlExpr* pExpr,
}
}
}
}
pExpr
->
functionId
=
functionId
;
size_t
numChilds
=
taosArrayGetSize
(
pExpr
->
Expr
.
paramList
);
for
(
int
i
=
0
;
i
<
numChilds
;
++
i
)
{
tSqlExprItem
*
pParamElem
=
taosArrayGet
(
pExpr
->
Expr
.
paramList
,
i
);
validateSQLExprTerm
(
pCmd
,
pParamElem
->
pNode
,
pQueryInfo
,
pList
,
type
,
uid
);
}
if
(
*
type
==
AGG_ARIGHTMEIC
)
{
if
(
*
type
==
AGG_ARIGHTMEIC
)
{
int32_t
outputIndex
=
(
int32_t
)
tscNumOfExprs
(
pQueryInfo
);
int32_t
outputIndex
=
(
int32_t
)
tscNumOfExprs
(
pQueryInfo
);
...
@@ -4348,7 +4355,6 @@ static int32_t validateArithmeticSQLFunc(SSqlCmd* pCmd, tSqlExpr* pExpr,
...
@@ -4348,7 +4355,6 @@ static int32_t validateArithmeticSQLFunc(SSqlCmd* pCmd, tSqlExpr* pExpr,
// sql function list in selection clause.
// sql function list in selection clause.
// Append the sqlExpr into exprList of pQueryInfo structure sequentially
// Append the sqlExpr into exprList of pQueryInfo structure sequentially
pExpr
->
functionId
=
functionId
;
if
(
pExpr
->
functionId
<
0
)
{
if
(
pExpr
->
functionId
<
0
)
{
SUdfInfo
*
pUdfInfo
=
NULL
;
SUdfInfo
*
pUdfInfo
=
NULL
;
pUdfInfo
=
isValidUdf
(
pQueryInfo
->
pUdfInfo
,
pExpr
->
Expr
.
operand
.
z
,
pExpr
->
Expr
.
operand
.
n
);
pUdfInfo
=
isValidUdf
(
pQueryInfo
->
pUdfInfo
,
pExpr
->
Expr
.
operand
.
z
,
pExpr
->
Expr
.
operand
.
n
);
...
@@ -4389,13 +4395,6 @@ static int32_t validateArithmeticSQLFunc(SSqlCmd* pCmd, tSqlExpr* pExpr,
...
@@ -4389,13 +4395,6 @@ static int32_t validateArithmeticSQLFunc(SSqlCmd* pCmd, tSqlExpr* pExpr,
}
}
*
uid
=
id
;
*
uid
=
id
;
}
else
{
pExpr
->
functionId
=
functionId
;
size_t
numChilds
=
taosArrayGetSize
(
pExpr
->
Expr
.
paramList
);
for
(
int
i
=
0
;
i
<
numChilds
;
++
i
)
{
tSqlExprItem
*
pParamElem
=
taosArrayGet
(
pExpr
->
Expr
.
paramList
,
i
);
validateSQLExprTerm
(
pCmd
,
pParamElem
->
pNode
,
pQueryInfo
,
pList
,
type
,
uid
);
}
}
}
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
...
@@ -4426,12 +4425,6 @@ static int32_t validateSQLExprTerm(SSqlCmd* pCmd, tSqlExpr* pExpr,
...
@@ -4426,12 +4425,6 @@ static int32_t validateSQLExprTerm(SSqlCmd* pCmd, tSqlExpr* pExpr,
}
else
if
(
pExpr
->
type
==
SQL_NODE_SQLFUNCTION
)
{
}
else
if
(
pExpr
->
type
==
SQL_NODE_SQLFUNCTION
)
{
validateArithmeticSQLFunc
(
pCmd
,
pExpr
,
pQueryInfo
,
pList
,
type
,
uid
);
validateArithmeticSQLFunc
(
pCmd
,
pExpr
,
pQueryInfo
,
pList
,
type
,
uid
);
}
else
if
(
pExpr
->
type
==
SQL_NODE_TABLE_COLUMN
)
{
}
else
if
(
pExpr
->
type
==
SQL_NODE_TABLE_COLUMN
)
{
if
(
*
type
==
NON_ARITHMEIC_EXPR
)
{
*
type
=
NORMAL_ARITHMETIC
;
}
else
if
(
*
type
==
AGG_ARIGHTMEIC
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
SColumnIndex
index
=
COLUMN_INDEX_INITIALIZER
;
SColumnIndex
index
=
COLUMN_INDEX_INITIALIZER
;
if
(
getColumnIndexByName
(
&
pExpr
->
columnName
,
pQueryInfo
,
&
index
,
tscGetErrorMsgPayload
(
pCmd
))
!=
if
(
getColumnIndexByName
(
&
pExpr
->
columnName
,
pQueryInfo
,
&
index
,
tscGetErrorMsgPayload
(
pCmd
))
!=
TSDB_CODE_SUCCESS
)
{
TSDB_CODE_SUCCESS
)
{
...
...
src/common/inc/texpr.h
浏览文件 @
9ee2e032
...
@@ -110,7 +110,7 @@ void exprTreeToBinary(SBufferWriter* bw, tExprNode* pExprTree);
...
@@ -110,7 +110,7 @@ void exprTreeToBinary(SBufferWriter* bw, tExprNode* pExprTree);
bool
exprTreeApplyFilter
(
tExprNode
*
pExpr
,
const
void
*
pItem
,
SExprTraverseSupp
*
param
);
bool
exprTreeApplyFilter
(
tExprNode
*
pExpr
,
const
void
*
pItem
,
SExprTraverseSupp
*
param
);
void
exprTree
Internal
NodeTraverse
(
tExprNode
*
pExpr
,
int32_t
numOfRows
,
char
*
pOutput
,
void
*
param
,
int32_t
order
,
void
exprTreeNodeTraverse
(
tExprNode
*
pExpr
,
int32_t
numOfRows
,
char
*
pOutput
,
void
*
param
,
int32_t
order
,
char
*
(
*
getSourceDataBlock
)(
void
*
,
const
char
*
,
int32_t
));
char
*
(
*
getSourceDataBlock
)(
void
*
,
const
char
*
,
int32_t
));
void
buildFilterSetFromBinary
(
void
**
q
,
const
char
*
buf
,
int32_t
len
);
void
buildFilterSetFromBinary
(
void
**
q
,
const
char
*
buf
,
int32_t
len
);
...
...
src/common/src/texpr.c
浏览文件 @
9ee2e032
...
@@ -188,6 +188,22 @@ void exprTreeFunctionNodeTraverse(tExprNode *pExprs, int32_t numOfRows, char *pO
...
@@ -188,6 +188,22 @@ void exprTreeFunctionNodeTraverse(tExprNode *pExprs, int32_t numOfRows, char *pO
void
exprTreeInternalNodeTraverse
(
tExprNode
*
pExpr
,
int32_t
numOfRows
,
char
*
pOutput
,
void
*
param
,
int32_t
order
,
void
exprTreeInternalNodeTraverse
(
tExprNode
*
pExpr
,
int32_t
numOfRows
,
char
*
pOutput
,
void
*
param
,
int32_t
order
,
char
*
(
*
getSourceDataBlock
)(
void
*
,
const
char
*
,
int32_t
));
char
*
(
*
getSourceDataBlock
)(
void
*
,
const
char
*
,
int32_t
));
void
exprTreeNodeTraverse
(
tExprNode
*
pExpr
,
int32_t
numOfRows
,
char
*
pOutput
,
void
*
param
,
int32_t
order
,
char
*
(
*
getSourceDataBlock
)(
void
*
,
const
char
*
,
int32_t
))
{
if
(
pExpr
->
nodeType
==
TSQL_NODE_FUNC
||
pExpr
->
nodeType
==
TSQL_NODE_EXPR
)
{
exprTreeInternalNodeTraverse
(
pExpr
,
numOfRows
,
pOutput
,
param
,
order
,
getSourceDataBlock
);
}
else
if
(
pExpr
->
nodeType
==
TSQL_NODE_COL
)
{
char
*
pInputData
=
getSourceDataBlock
(
param
,
pExpr
->
pSchema
->
name
,
pExpr
->
pSchema
->
colId
);
if
(
order
==
TSDB_ORDER_DESC
)
{
reverseCopy
(
pOutput
,
pInputData
,
pExpr
->
pSchema
->
type
,
numOfRows
);
}
else
{
memcpy
(
pOutput
,
pInputData
,
pExpr
->
pSchema
->
bytes
*
numOfRows
);
}
}
else
if
(
pExpr
->
nodeType
==
TSQL_NODE_VALUE
)
{
tVariantDump
(
pExpr
->
pVal
,
pOutput
,
pExpr
->
pVal
->
nType
,
true
);
}
}
void
exprTreeInternalNodeTraverse
(
tExprNode
*
pExpr
,
int32_t
numOfRows
,
char
*
pOutput
,
void
*
param
,
int32_t
order
,
void
exprTreeInternalNodeTraverse
(
tExprNode
*
pExpr
,
int32_t
numOfRows
,
char
*
pOutput
,
void
*
param
,
int32_t
order
,
char
*
(
*
getSourceDataBlock
)(
void
*
,
const
char
*
,
int32_t
))
{
char
*
(
*
getSourceDataBlock
)(
void
*
,
const
char
*
,
int32_t
))
{
if
(
pExpr
->
nodeType
==
TSQL_NODE_FUNC
)
{
if
(
pExpr
->
nodeType
==
TSQL_NODE_FUNC
)
{
...
...
blm3
@
4bfae86d
比较
f56aa0f4
...
4bfae86d
Subproject commit
f56aa0f485d7bb6aebbcefc2007eeecdccb767c8
Subproject commit
4bfae86dcabea0d5a40ff81a72be7c822737269b
src/query/src/qAggMain.c
浏览文件 @
9ee2e032
...
@@ -3404,8 +3404,8 @@ char *getArithColumnData(void *param, const char* name, int32_t colId) {
...
@@ -3404,8 +3404,8 @@ char *getArithColumnData(void *param, const char* name, int32_t colId) {
static
void
arithmetic_function
(
SQLFunctionCtx
*
pCtx
)
{
static
void
arithmetic_function
(
SQLFunctionCtx
*
pCtx
)
{
GET_RES_INFO
(
pCtx
)
->
numOfRes
+=
pCtx
->
size
;
GET_RES_INFO
(
pCtx
)
->
numOfRes
+=
pCtx
->
size
;
SArithmeticSupport
*
sas
=
(
SArithmeticSupport
*
)
pCtx
->
param
[
1
].
pz
;
SArithmeticSupport
*
sas
=
(
SArithmeticSupport
*
)
pCtx
->
param
[
1
].
pz
;
exprTree
Internal
NodeTraverse
(
sas
->
pExprInfo
->
pExpr
,
pCtx
->
size
,
pCtx
->
pOutput
,
sas
,
pCtx
->
order
,
getArithColumnData
);
exprTreeNodeTraverse
(
sas
->
pExprInfo
->
pExpr
,
pCtx
->
size
,
pCtx
->
pOutput
,
sas
,
pCtx
->
order
,
getArithColumnData
);
}
}
#define LIST_MINMAX_N(ctx, minOutput, maxOutput, elemCnt, data, type, tsdbType, numOfNotNullElem) \
#define LIST_MINMAX_N(ctx, minOutput, maxOutput, elemCnt, data, type, tsdbType, numOfNotNullElem) \
...
...
src/query/src/qPlan.c
浏览文件 @
9ee2e032
...
@@ -696,7 +696,6 @@ SArray* createGlobalMergePlan(SQueryAttr* pQueryAttr) {
...
@@ -696,7 +696,6 @@ SArray* createGlobalMergePlan(SQueryAttr* pQueryAttr) {
op
=
OP_Filter
;
op
=
OP_Filter
;
taosArrayPush
(
plan
,
&
op
);
taosArrayPush
(
plan
,
&
op
);
}
}
}
else
{
if
(
pQueryAttr
->
pExpr2
!=
NULL
)
{
if
(
pQueryAttr
->
pExpr2
!=
NULL
)
{
op
=
OP_Project
;
op
=
OP_Project
;
taosArrayPush
(
plan
,
&
op
);
taosArrayPush
(
plan
,
&
op
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录