Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
9dd96c10
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看板
未验证
提交
9dd96c10
编写于
6月 22, 2021
作者:
H
Haojun Liao
提交者:
GitHub
6月 22, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #6547 from taosdata/feature/td-4735
[TD-4735]<feature>:support select last_row from subquery
上级
f690127a
998c5f18
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
23 addition
and
3 deletion
+23
-3
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+9
-2
tests/script/general/parser/lastrow.sim
tests/script/general/parser/lastrow.sim
+14
-1
未找到文件。
src/client/src/tscSQLParser.c
浏览文件 @
9dd96c10
...
...
@@ -2150,7 +2150,10 @@ void setResultColName(char* name, tSqlExprItem* pItem, int32_t functionId, SStrT
}
static
void
updateLastScanOrderIfNeeded
(
SQueryInfo
*
pQueryInfo
)
{
if
(
pQueryInfo
->
sessionWindow
.
gap
>
0
||
tscGroupbyColumn
(
pQueryInfo
))
{
if
(
pQueryInfo
->
sessionWindow
.
gap
>
0
||
pQueryInfo
->
stateWindow
||
taosArrayGetSize
(
pQueryInfo
->
pUpstream
)
>
0
||
tscGroupbyColumn
(
pQueryInfo
))
{
size_t
numOfExpr
=
tscNumOfExprs
(
pQueryInfo
);
for
(
int32_t
i
=
0
;
i
<
numOfExpr
;
++
i
)
{
SExprInfo
*
pExpr
=
tscExprGet
(
pQueryInfo
,
i
);
...
...
@@ -2410,7 +2413,9 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
// NOTE: has time range condition or normal column filter condition, the last_row query will be transferred to last query
SConvertFunc
cvtFunc
=
{.
originFuncId
=
functionId
,
.
execFuncId
=
functionId
};
if
(
functionId
==
TSDB_FUNC_LAST_ROW
&&
((
!
TSWINDOW_IS_EQUAL
(
pQueryInfo
->
window
,
TSWINDOW_INITIALIZER
))
||
(
hasNormalColumnFilter
(
pQueryInfo
))))
{
if
(
functionId
==
TSDB_FUNC_LAST_ROW
&&
((
!
TSWINDOW_IS_EQUAL
(
pQueryInfo
->
window
,
TSWINDOW_INITIALIZER
))
||
(
hasNormalColumnFilter
(
pQueryInfo
))
||
taosArrayGetSize
(
pQueryInfo
->
pUpstream
)
>
0
))
{
cvtFunc
.
execFuncId
=
TSDB_FUNC_LAST
;
}
...
...
@@ -7899,6 +7904,8 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf
if
((
code
=
doFunctionsCompatibleCheck
(
pCmd
,
pQueryInfo
,
tscGetErrorMsgPayload
(
pCmd
)))
!=
TSDB_CODE_SUCCESS
)
{
return
code
;
}
updateLastScanOrderIfNeeded
(
pQueryInfo
);
}
else
{
pQueryInfo
->
command
=
TSDB_SQL_SELECT
;
...
...
tests/script/general/parser/lastrow.sim
浏览文件 @
9dd96c10
...
...
@@ -70,4 +70,17 @@ sleep 100
run general/parser/lastrow_query.sim
system sh/exec.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
print =================== last_row + nested query
sql use $db
sql create table lr_nested(ts timestamp, f int)
sql insert into lr_nested values(now, 1)
sql insert into lr_nested values(now+1s, null)
sql select last_row(*) from (select * from lr_nested)
if $rows != 1 then
return -1
endi
if $data01 != NULL then
return -1
endi
system sh/exec.sh -n dnode1 -s stop -x SIGINT
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录