Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
5709b1aa
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看板
提交
5709b1aa
编写于
4月 14, 2020
作者:
L
lihui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[TD-140]
上级
4f3653ac
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
19 addition
and
20 deletion
+19
-20
src/client/src/tscFunctionImpl.c
src/client/src/tscFunctionImpl.c
+19
-20
未找到文件。
src/client/src/tscFunctionImpl.c
浏览文件 @
5709b1aa
...
@@ -4444,6 +4444,7 @@ static void rate_function(SQLFunctionCtx *pCtx) {
...
@@ -4444,6 +4444,7 @@ static void rate_function(SQLFunctionCtx *pCtx) {
pTrace
(
"%p rate_function() size:%d, hasNull:%d"
,
pCtx
,
pCtx
->
size
,
pCtx
->
hasNull
);
pTrace
(
"%p rate_function() size:%d, hasNull:%d"
,
pCtx
,
pCtx
->
size
,
pCtx
->
hasNull
);
if
(
pCtx
->
order
==
TSQL_SO_ASC
)
{
if
(
pCtx
->
order
==
TSQL_SO_ASC
)
{
/*
// prev interpolation exists
// prev interpolation exists
if (pCtx->prev.key != -1) {
if (pCtx->prev.key != -1) {
pRateInfo->firstValue = pCtx->prev.data;
pRateInfo->firstValue = pCtx->prev.data;
...
@@ -4463,7 +4464,7 @@ static void rate_function(SQLFunctionCtx *pCtx) {
...
@@ -4463,7 +4464,7 @@ static void rate_function(SQLFunctionCtx *pCtx) {
pTrace("lastValue:%f lastKey:%" PRId64, pRateInfo->lastValue, pRateInfo->lastKey);
pTrace("lastValue:%f lastKey:%" PRId64, pRateInfo->lastValue, pRateInfo->lastKey);
}
}
}
}
*/
for
(
int32_t
i
=
0
;
i
<
pCtx
->
size
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
pCtx
->
size
;
++
i
)
{
char
*
pData
=
GET_INPUT_CHAR_INDEX
(
pCtx
,
i
);
char
*
pData
=
GET_INPUT_CHAR_INDEX
(
pCtx
,
i
);
if
(
pCtx
->
hasNull
&&
isNull
(
pData
,
pCtx
->
inputType
))
{
if
(
pCtx
->
hasNull
&&
isNull
(
pData
,
pCtx
->
inputType
))
{
...
@@ -4519,7 +4520,7 @@ static void rate_function(SQLFunctionCtx *pCtx) {
...
@@ -4519,7 +4520,7 @@ static void rate_function(SQLFunctionCtx *pCtx) {
if
(
!
pCtx
->
hasNull
)
{
if
(
!
pCtx
->
hasNull
)
{
assert
(
pCtx
->
size
==
notNullElems
);
assert
(
pCtx
->
size
==
notNullElems
);
}
}
/*
if (pCtx->next.key != -1) {
if (pCtx->next.key != -1) {
if (pCtx->next.data < pRateInfo->lastValue) {
if (pCtx->next.data < pRateInfo->lastValue) {
pRateInfo->CorrectionValue += pRateInfo->lastValue;
pRateInfo->CorrectionValue += pRateInfo->lastValue;
...
@@ -4530,8 +4531,9 @@ static void rate_function(SQLFunctionCtx *pCtx) {
...
@@ -4530,8 +4531,9 @@ static void rate_function(SQLFunctionCtx *pCtx) {
pRateInfo->lastKey = pCtx->next.key;
pRateInfo->lastKey = pCtx->next.key;
pCtx->next.key = -1;
pCtx->next.key = -1;
pTrace("%p get next interpolation for lastValue:%f lastKey:%" PRId64, pCtx, pRateInfo->lastValue, pRateInfo->lastKey);
pTrace("%p get next interpolation for lastValue:%f lastKey:%" PRId64, pCtx, pRateInfo->lastValue, pRateInfo->lastKey);
}
}
*/
}
else
{
}
else
{
/*
if (pCtx->next.key != -1) {
if (pCtx->next.key != -1) {
pRateInfo->lastValue = pCtx->next.data;
pRateInfo->lastValue = pCtx->next.data;
pRateInfo->lastKey = pCtx->next.key;
pRateInfo->lastKey = pCtx->next.key;
...
@@ -4549,7 +4551,7 @@ static void rate_function(SQLFunctionCtx *pCtx) {
...
@@ -4549,7 +4551,7 @@ static void rate_function(SQLFunctionCtx *pCtx) {
pTrace("firstValue:%f firstKey:%" PRId64, pRateInfo->firstValue, pRateInfo->firstKey);
pTrace("firstValue:%f firstKey:%" PRId64, pRateInfo->firstValue, pRateInfo->firstKey);
}
}
}
}
*/
for
(
int32_t
i
=
pCtx
->
size
-
1
;
i
>=
0
;
--
i
)
{
for
(
int32_t
i
=
pCtx
->
size
-
1
;
i
>=
0
;
--
i
)
{
char
*
pData
=
GET_INPUT_CHAR_INDEX
(
pCtx
,
i
);
char
*
pData
=
GET_INPUT_CHAR_INDEX
(
pCtx
,
i
);
if
(
pCtx
->
hasNull
&&
isNull
(
pData
,
pCtx
->
inputType
))
{
if
(
pCtx
->
hasNull
&&
isNull
(
pData
,
pCtx
->
inputType
))
{
...
@@ -4605,7 +4607,7 @@ static void rate_function(SQLFunctionCtx *pCtx) {
...
@@ -4605,7 +4607,7 @@ static void rate_function(SQLFunctionCtx *pCtx) {
if
(
!
pCtx
->
hasNull
)
{
if
(
!
pCtx
->
hasNull
)
{
assert
(
pCtx
->
size
==
notNullElems
);
assert
(
pCtx
->
size
==
notNullElems
);
}
}
/*
if (pCtx->prev.key != -1) {
if (pCtx->prev.key != -1) {
if (pCtx->prev.data > pRateInfo->firstValue) {
if (pCtx->prev.data > pRateInfo->firstValue) {
pRateInfo->CorrectionValue += pCtx->prev.data;
pRateInfo->CorrectionValue += pCtx->prev.data;
...
@@ -4617,7 +4619,7 @@ static void rate_function(SQLFunctionCtx *pCtx) {
...
@@ -4617,7 +4619,7 @@ static void rate_function(SQLFunctionCtx *pCtx) {
pCtx->prev.key = -1;
pCtx->prev.key = -1;
pTrace("%p get prev interpolation for firstValue:%f firstKey:%" PRId64, pCtx, pRateInfo->firstValue, pRateInfo->firstKey);
pTrace("%p get prev interpolation for firstValue:%f firstKey:%" PRId64, pCtx, pRateInfo->firstValue, pRateInfo->firstKey);
}
}
*/
};
};
SET_VAL
(
pCtx
,
notNullElems
,
1
);
SET_VAL
(
pCtx
,
notNullElems
,
1
);
...
@@ -4784,7 +4786,7 @@ static void irate_function(SQLFunctionCtx *pCtx) {
...
@@ -4784,7 +4786,7 @@ static void irate_function(SQLFunctionCtx *pCtx) {
if
(
pCtx
->
size
<
1
)
{
if
(
pCtx
->
size
<
1
)
{
return
;
return
;
}
}
/*
// next interpolation exists
// next interpolation exists
if (pCtx->next.key != -1) {
if (pCtx->next.key != -1) {
pRateInfo->lastValue = pCtx->next.data;
pRateInfo->lastValue = pCtx->next.data;
...
@@ -4792,7 +4794,7 @@ static void irate_function(SQLFunctionCtx *pCtx) {
...
@@ -4792,7 +4794,7 @@ static void irate_function(SQLFunctionCtx *pCtx) {
pCtx->next.key = -1; // clear the flag
pCtx->next.key = -1; // clear the flag
pTrace("%p irate_function() get next interpolation for lastValue:%f lastKey:%" PRId64, pCtx, pRateInfo->lastValue, pRateInfo->lastKey);
pTrace("%p irate_function() get next interpolation for lastValue:%f lastKey:%" PRId64, pCtx, pRateInfo->lastValue, pRateInfo->lastKey);
}
}
*/
for
(
int32_t
i
=
pCtx
->
size
-
1
;
i
>=
0
;
--
i
)
{
for
(
int32_t
i
=
pCtx
->
size
-
1
;
i
>=
0
;
--
i
)
{
char
*
pData
=
GET_INPUT_CHAR_INDEX
(
pCtx
,
i
);
char
*
pData
=
GET_INPUT_CHAR_INDEX
(
pCtx
,
i
);
if
(
pCtx
->
hasNull
&&
isNull
(
pData
,
pCtx
->
inputType
))
{
if
(
pCtx
->
hasNull
&&
isNull
(
pData
,
pCtx
->
inputType
))
{
...
@@ -4826,24 +4828,21 @@ static void irate_function(SQLFunctionCtx *pCtx) {
...
@@ -4826,24 +4828,21 @@ static void irate_function(SQLFunctionCtx *pCtx) {
assert
(
0
);
assert
(
0
);
}
}
// TODO: calc once if only call this function once ????
if
(
1
==
notNullElems
)
{
if
((
INT64_MIN
==
pRateInfo
->
lastKey
)
||
(
-
DBL_MAX
==
pRateInfo
->
lastValue
))
{
pRateInfo
->
lastValue
=
v
;
pRateInfo
->
lastValue
=
v
;
pRateInfo
->
lastKey
=
primaryKey
[
i
];
pRateInfo
->
lastKey
=
primaryKey
[
i
];
pTrace
(
"%p irate_function() lastValue:%f lastKey:%"
PRId64
,
pCtx
,
pRateInfo
->
lastValue
,
pRateInfo
->
lastKey
);
pTrace
(
"%p irate_function() lastValue:%f lastKey:%"
PRId64
,
pCtx
,
pRateInfo
->
lastValue
,
pRateInfo
->
lastKey
);
continue
;
continue
;
}
}
if
((
INT64_MIN
==
pRateInfo
->
firstKey
)
||
(
-
DBL_MAX
==
pRateInfo
->
firstValue
))
{
pRateInfo
->
firstValue
=
v
;
pRateInfo
->
firstKey
=
primaryKey
[
i
];
pTrace
(
"%p irate_function() firstValue:%f firstKey:%"
PRId64
,
pCtx
,
pRateInfo
->
firstValue
,
pRateInfo
->
firstKey
);
pRateInfo
->
firstValue
=
v
;
break
;
pRateInfo
->
firstKey
=
primaryKey
[
i
];
}
pTrace
(
"%p irate_function() firstValue:%f firstKey:%"
PRId64
,
pCtx
,
pRateInfo
->
firstValue
,
pRateInfo
->
firstKey
);
break
;
}
}
/*
if (pCtx->prev.key != -1) {
if (pCtx->prev.key != -1) {
if ((INT64_MIN == pRateInfo->firstKey) || (-DBL_MAX == pRateInfo->firstValue)) {
if ((INT64_MIN == pRateInfo->firstKey) || (-DBL_MAX == pRateInfo->firstValue)) {
pRateInfo->firstValue = pCtx->prev.data;
pRateInfo->firstValue = pCtx->prev.data;
...
@@ -4852,7 +4851,7 @@ static void irate_function(SQLFunctionCtx *pCtx) {
...
@@ -4852,7 +4851,7 @@ static void irate_function(SQLFunctionCtx *pCtx) {
pTrace("%p irate_function() get prev interpolation for firstValue:%f firstKey:%" PRId64, pCtx, pRateInfo->firstValue, pRateInfo->firstKey);
pTrace("%p irate_function() get prev interpolation for firstValue:%f firstKey:%" PRId64, pCtx, pRateInfo->firstValue, pRateInfo->firstKey);
}
}
}
}
*/
SET_VAL
(
pCtx
,
notNullElems
,
1
);
SET_VAL
(
pCtx
,
notNullElems
,
1
);
if
(
notNullElems
>
0
)
{
if
(
notNullElems
>
0
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录