From 44e6ca9a67336b605258d5168bd43b8c4cd8c987 Mon Sep 17 00:00:00 2001 From: shenglian zhou Date: Fri, 31 Dec 2021 16:22:38 +0800 Subject: [PATCH] [TS-2016](query,insert,other,connector,tools):fix app error of select from (select * from empty_stable) by set subquery command to retrieve empty results --- src/client/src/tscUtil.c | 6 ++- tests/develop-test/2-query/ts_2016.py | 62 +++++++++++++++++++++++++++ tests/develop-test/fulltest-query.sh | 1 + 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 tests/develop-test/2-query/ts_2016.py diff --git a/src/client/src/tscUtil.c b/src/client/src/tscUtil.c index 322413a3cd..2842f86ffd 100644 --- a/src/client/src/tscUtil.c +++ b/src/client/src/tscUtil.c @@ -4285,7 +4285,11 @@ void executeQuery(SSqlObj* pSql, SQueryInfo* pQueryInfo) { pSql->pSubs[i] = pNew; SSqlCmd* pCmd = &pNew->cmd; - pCmd->command = TSDB_SQL_SELECT; + if (pSub->command == TSDB_SQL_RETRIEVE_EMPTY_RESULT) { + pCmd->command = TSDB_SQL_RETRIEVE_EMPTY_RESULT; + } else { + pCmd->command = TSDB_SQL_SELECT; + } if ((code = tscAddQueryInfo(pCmd)) != TSDB_CODE_SUCCESS) { goto _error; } diff --git a/tests/develop-test/2-query/ts_2016.py b/tests/develop-test/2-query/ts_2016.py new file mode 100644 index 0000000000..ecebf53ed3 --- /dev/null +++ b/tests/develop-test/2-query/ts_2016.py @@ -0,0 +1,62 @@ +################################################################### +# Copyright (c) 2021 by TAOS Technologies, Inc. +# All rights reserved. +# +# This file is proprietary and confidential to TAOS Technologies. +# No part of this file may be reproduced, stored, transmitted, +# disclosed or used in any form or by any means other than as +# expressly provided by the written permission from Jianhui Tao +# +################################################################### + +# -*- coding: utf-8 -*- + +import sys +from util.log import * +from util.cases import * +from util.sql import * + + +class TDTestCase: + def caseDescription(self): + ''' + case1: [TS-2016]fix select * from (select * from empty_stable) + ''' + return + + def init(self, conn, logSql): + tdLog.debug("start to execute %s" % __file__) + tdSql.init(conn.cursor(), logSql) + self._conn = conn + + def run(self): + print("running {}".format(__file__)) + tdSql.execute("drop database if exists td12229") + tdSql.execute("create database if not exists td12229") + tdSql.execute('use td12229') + + tdSql.execute('create stable st(ts timestamp , value int ) tags (ind int)') + tdSql.execute('insert into tb1 using st tags(1) values(now ,1)') + tdSql.execute('insert into tb1 using st tags(1) values(now+1s ,2)') + tdSql.execute('insert into tb1 using st tags(1) values(now+2s ,3)') + tdSql.execute('create stable ste(ts timestamp , value int ) tags (ind int)') + tdSql.query('select * from st') + tdSql.checkRows(3) + tdSql.query('select * from (select * from ste)') + tdSql.checkRows(0) + tdSql.query('select * from st union all select * from ste') + tdSql.checkRows(3) + tdSql.query('select * from ste union all select * from st') + tdSql.checkRows(3) + tdSql.query('select elapsed(ts) from ste group by tbname union all select elapsed(ts) from st group by tbname;') + tdSql.checkRows(1) + tdSql.query('select elapsed(ts) from st group by tbname union all select elapsed(ts) from ste group by tbname;') + tdSql.checkRows(1) + tdSql.execute('drop database td12229') + def stop(self): + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) diff --git a/tests/develop-test/fulltest-query.sh b/tests/develop-test/fulltest-query.sh index b5147d20a3..fe9fe8ee20 100755 --- a/tests/develop-test/fulltest-query.sh +++ b/tests/develop-test/fulltest-query.sh @@ -1,3 +1,4 @@ python3 ./test.py -f 2-query/ts_hidden_column.py python3 ./test.py -f 2-query/union-order.py python3 ./test.py -f 2-query/session_two_stage.py +python3 ./test.py -f 2-query/ts_2016.py -- GitLab