Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
b445e9c4
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看板
提交
b445e9c4
编写于
1月 31, 2020
作者:
H
hjxilinx
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix bugs. [tbase-266]
上级
c303ff2a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
46 addition
and
49 deletion
+46
-49
src/client/src/tscFunctionImpl.c
src/client/src/tscFunctionImpl.c
+46
-49
未找到文件。
src/client/src/tscFunctionImpl.c
浏览文件 @
b445e9c4
...
...
@@ -2020,15 +2020,8 @@ static void copyTopBotRes(SQLFunctionCtx *pCtx, int32_t type) {
STopBotInfo
*
pRes
=
pResInfo
->
interResultBuf
;
tValuePair
**
tvp
=
pRes
->
res
;
int32_t
step
=
0
;
// in case of second stage merge, always use incremental output.
// if (pCtx->currentStage == SECONDARY_STAGE_MERGE) {
step
=
QUERY_ASC_FORWARD_STEP
;
// } else {
// step = GET_FORWARD_DIRECTION_FACTOR(pCtx->order);
// }
int32_t
step
=
QUERY_ASC_FORWARD_STEP
;
int32_t
len
=
GET_RES_INFO
(
pCtx
)
->
numOfRes
;
switch
(
type
)
{
...
...
@@ -2988,10 +2981,9 @@ static void diff_function(SQLFunctionCtx *pCtx) {
int32_t
notNullElems
=
0
;
int32_t
step
=
1
/*GET_FORWARD_DIRECTION_FACTOR(pCtx->order)*/
;
// int32_t i = (pCtx->order == TSQL_SO_ASC) ? 0 : pCtx->size - 1;
int32_t
i
=
0
;
int32_t
step
=
GET_FORWARD_DIRECTION_FACTOR
(
pCtx
->
order
);
int32_t
i
=
(
pCtx
->
order
==
TSQL_SO_ASC
)
?
0
:
pCtx
->
size
-
1
;
TSKEY
*
pTimestamp
=
pCtx
->
ptsOutputBuf
;
switch
(
pCtx
->
inputType
)
{
...
...
@@ -3011,14 +3003,14 @@ static void diff_function(SQLFunctionCtx *pCtx) {
*
pOutput
=
pData
[
i
]
-
pCtx
->
param
[
1
].
i64Key
;
*
pTimestamp
=
pCtx
->
ptsList
[
i
];
pOutput
+=
step
;
pTimestamp
+=
step
;
pOutput
+=
1
;
pTimestamp
+=
1
;
}
else
{
*
pOutput
=
pData
[
i
]
-
pData
[
i
-
step
];
*
pTimestamp
=
pCtx
->
ptsList
[
i
];
pOutput
+=
step
;
pTimestamp
+=
step
;
pOutput
+=
1
;
pTimestamp
+=
1
;
}
pCtx
->
param
[
1
].
i64Key
=
pData
[
i
];
...
...
@@ -3039,18 +3031,18 @@ static void diff_function(SQLFunctionCtx *pCtx) {
if
(
pCtx
->
param
[
1
].
nType
==
INITIAL_VALUE_NOT_ASSIGNED
)
{
// initial value is not set yet
pCtx
->
param
[
1
].
i64Key
=
pData
[
i
];
pCtx
->
param
[
1
].
nType
=
pCtx
->
inputType
;
}
else
if
(
i
==
0
)
{
}
else
if
(
(
i
==
0
&&
pCtx
->
order
==
TSQL_SO_ASC
)
||
(
i
==
pCtx
->
size
-
1
&&
pCtx
->
order
==
TSQL_SO_DESC
)
)
{
*
pOutput
=
pData
[
i
]
-
pCtx
->
param
[
1
].
i64Key
;
*
pTimestamp
=
pCtx
->
ptsList
[
i
];
pOutput
+=
step
;
pTimestamp
+=
step
;
pOutput
+=
1
;
pTimestamp
+=
1
;
}
else
{
*
pOutput
=
pData
[
i
]
-
pData
[
i
-
1
];
*
pOutput
=
pData
[
i
]
-
pData
[
i
-
step
];
*
pTimestamp
=
pCtx
->
ptsList
[
i
];
pOutput
+=
step
;
pTimestamp
+=
step
;
pOutput
+=
1
;
pTimestamp
+=
1
;
}
pCtx
->
param
[
1
].
i64Key
=
pData
[
i
];
...
...
@@ -3071,16 +3063,16 @@ static void diff_function(SQLFunctionCtx *pCtx) {
if
(
pCtx
->
param
[
1
].
nType
==
INITIAL_VALUE_NOT_ASSIGNED
)
{
// initial value is not set yet
pCtx
->
param
[
1
].
dKey
=
pData
[
i
];
pCtx
->
param
[
1
].
nType
=
pCtx
->
inputType
;
}
else
if
(
i
==
0
)
{
}
else
if
(
(
i
==
0
&&
pCtx
->
order
==
TSQL_SO_ASC
)
||
(
i
==
pCtx
->
size
-
1
&&
pCtx
->
order
==
TSQL_SO_DESC
)
)
{
*
pOutput
=
pData
[
i
]
-
pCtx
->
param
[
1
].
dKey
;
*
pTimestamp
=
pCtx
->
ptsList
[
i
];
pOutput
+=
step
;
pTimestamp
+=
step
;
pOutput
+=
1
;
pTimestamp
+=
1
;
}
else
{
*
pOutput
=
pData
[
i
]
-
pData
[
i
-
1
];
*
pOutput
=
pData
[
i
]
-
pData
[
i
-
step
];
*
pTimestamp
=
pCtx
->
ptsList
[
i
];
pOutput
+=
step
;
pTimestamp
+=
step
;
pOutput
+=
1
;
pTimestamp
+=
1
;
}
pCtx
->
param
[
1
].
dKey
=
pData
[
i
];
...
...
@@ -3101,16 +3093,18 @@ static void diff_function(SQLFunctionCtx *pCtx) {
if
(
pCtx
->
param
[
1
].
nType
==
INITIAL_VALUE_NOT_ASSIGNED
)
{
// initial value is not set yet
pCtx
->
param
[
1
].
dKey
=
pData
[
i
];
pCtx
->
param
[
1
].
nType
=
pCtx
->
inputType
;
}
else
if
(
i
==
0
)
{
}
else
if
(
(
i
==
0
&&
pCtx
->
order
==
TSQL_SO_ASC
)
||
(
i
==
pCtx
->
size
-
1
&&
pCtx
->
order
==
TSQL_SO_DESC
)
)
{
*
pOutput
=
pData
[
i
]
-
pCtx
->
param
[
1
].
dKey
;
*
pTimestamp
=
pCtx
->
ptsList
[
i
];
pOutput
+=
step
;
pTimestamp
+=
step
;
pOutput
+=
1
;
pTimestamp
+=
1
;
}
else
{
*
pOutput
=
pData
[
i
]
-
pData
[
i
-
1
];
*
pOutput
=
pData
[
i
]
-
pData
[
i
-
step
];
*
pTimestamp
=
pCtx
->
ptsList
[
i
];
pOutput
+=
step
;
pTimestamp
+=
step
;
pOutput
+=
1
;
pTimestamp
+=
1
;
}
// keep the last value, the remain may be all null
...
...
@@ -3132,16 +3126,17 @@ static void diff_function(SQLFunctionCtx *pCtx) {
if
(
pCtx
->
param
[
1
].
nType
==
INITIAL_VALUE_NOT_ASSIGNED
)
{
// initial value is not set yet
pCtx
->
param
[
1
].
i64Key
=
pData
[
i
];
pCtx
->
param
[
1
].
nType
=
pCtx
->
inputType
;
}
else
if
(
i
==
0
)
{
}
else
if
(
(
i
==
0
&&
pCtx
->
order
==
TSQL_SO_ASC
)
||
(
i
==
pCtx
->
size
-
1
&&
pCtx
->
order
==
TSQL_SO_DESC
)
)
{
*
pOutput
=
pData
[
i
]
-
pCtx
->
param
[
1
].
i64Key
;
*
pTimestamp
=
pCtx
->
ptsList
[
i
];
pOutput
+=
step
;
pTimestamp
+=
step
;
pOutput
+=
1
;
pTimestamp
+=
1
;
}
else
{
*
pOutput
=
pData
[
i
]
-
pData
[
i
-
1
];
*
pOutput
=
pData
[
i
]
-
pData
[
i
-
step
];
*
pTimestamp
=
pCtx
->
ptsList
[
i
];
pOutput
+=
step
;
pTimestamp
+=
step
;
pOutput
+=
1
;
pTimestamp
+=
1
;
}
pCtx
->
param
[
1
].
i64Key
=
pData
[
i
];
...
...
@@ -3162,16 +3157,18 @@ static void diff_function(SQLFunctionCtx *pCtx) {
if
(
pCtx
->
param
[
1
].
nType
==
INITIAL_VALUE_NOT_ASSIGNED
)
{
// initial value is not set yet
pCtx
->
param
[
1
].
i64Key
=
pData
[
i
];
pCtx
->
param
[
1
].
nType
=
pCtx
->
inputType
;
}
else
if
(
i
==
0
)
{
}
else
if
(
(
i
==
0
&&
pCtx
->
order
==
TSQL_SO_ASC
)
||
(
i
==
pCtx
->
size
-
1
&&
pCtx
->
order
==
TSQL_SO_DESC
)
)
{
*
pOutput
=
pData
[
i
]
-
pCtx
->
param
[
1
].
i64Key
;
*
pTimestamp
=
pCtx
->
ptsList
[
i
];
pOutput
+=
step
;
pTimestamp
+=
step
;
pOutput
+=
1
;
pTimestamp
+=
1
;
}
else
{
*
pOutput
=
pData
[
i
]
-
pData
[
i
-
1
];
*
pOutput
=
pData
[
i
]
-
pData
[
i
-
step
];
*
pTimestamp
=
pCtx
->
ptsList
[
i
];
pOutput
+=
step
;
pTimestamp
+=
step
;
pOutput
+=
1
;
pTimestamp
+=
1
;
}
pCtx
->
param
[
1
].
i64Key
=
pData
[
i
];
...
...
@@ -3196,8 +3193,8 @@ static void diff_function(SQLFunctionCtx *pCtx) {
GET_RES_INFO
(
pCtx
)
->
numOfRes
+=
forwardStep
;
pCtx
->
aOutputBuf
=
pCtx
->
aOutputBuf
+
forwardStep
*
pCtx
->
outputBytes
*
step
;
pCtx
->
ptsOutputBuf
=
(
char
*
)
pCtx
->
ptsOutputBuf
+
forwardStep
*
TSDB_KEYSIZE
*
step
;
pCtx
->
aOutputBuf
+=
forwardStep
*
pCtx
->
outputBytes
;
pCtx
->
ptsOutputBuf
+=
forwardStep
*
TSDB_KEYSIZE
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录