Fix TD-27939: error for sub query is empty when where 1=2
This commit is contained in:
parent
32f20308c7
commit
e79516ade3
|
@ -334,6 +334,13 @@ static int32_t calcConstSelectWithoutFrom(SCalcConstContext* pCxt, SSelectStmt*
|
||||||
|
|
||||||
static int32_t calcConstSelectFrom(SCalcConstContext* pCxt, SSelectStmt* pSelect, bool subquery) {
|
static int32_t calcConstSelectFrom(SCalcConstContext* pCxt, SSelectStmt* pSelect, bool subquery) {
|
||||||
int32_t code = calcConstFromTable(pCxt, pSelect->pFromTable);
|
int32_t code = calcConstFromTable(pCxt, pSelect->pFromTable);
|
||||||
|
if (TSDB_CODE_SUCCESS == code && QUERY_NODE_TEMP_TABLE == nodeType(pSelect->pFromTable) &&
|
||||||
|
((STempTableNode*)pSelect->pFromTable)->pSubquery != NULL &&
|
||||||
|
QUERY_NODE_SELECT_STMT == nodeType(((STempTableNode*)pSelect->pFromTable)->pSubquery) &&
|
||||||
|
((SSelectStmt*)((STempTableNode*)pSelect->pFromTable)->pSubquery)->isEmptyResult){
|
||||||
|
pSelect->isEmptyResult = true;
|
||||||
|
return code;
|
||||||
|
}
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
code = calcConstProjections(pCxt, pSelect, subquery);
|
code = calcConstProjections(pCxt, pSelect, subquery);
|
||||||
}
|
}
|
||||||
|
|
|
@ -402,6 +402,28 @@ class TDTestCase:
|
||||||
sql = "select * from %s.`12345` order by `567` desc limit 2;"%(database)
|
sql = "select * from %s.`12345` order by `567` desc limit 2;"%(database)
|
||||||
tdSql.error(sql)
|
tdSql.error(sql)
|
||||||
|
|
||||||
|
def td_27939(self,database):
|
||||||
|
sql = "create table %s.`test1eq2` (`ts` timestamp, id int);"%(database)
|
||||||
|
tdSql.execute(sql)
|
||||||
|
|
||||||
|
sql = "insert into %s.test1eq2 values (now,1);"%(database)
|
||||||
|
tdSql.execute(sql)
|
||||||
|
|
||||||
|
sql = "insert into %s.`test1eq2` values (now,2);"%(database)
|
||||||
|
tdSql.execute(sql)
|
||||||
|
|
||||||
|
sql = "select * from %s.`test1eq2` where 1=2;"%(database)
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(0)
|
||||||
|
|
||||||
|
sql = "select * from (select * from %s.`test1eq2` where 1=2);"%(database)
|
||||||
|
tdSql.query(sql)
|
||||||
|
tdSql.checkRows(0)
|
||||||
|
|
||||||
|
sql = "drop table %s.`test1eq2` ;"%(database)
|
||||||
|
tdSql.execute(sql)
|
||||||
|
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
startTime = time.time()
|
startTime = time.time()
|
||||||
|
|
||||||
|
@ -419,6 +441,8 @@ class TDTestCase:
|
||||||
self.ts_23505("%s" %self.db)
|
self.ts_23505("%s" %self.db)
|
||||||
self.ts_3036("%s" %self.db)
|
self.ts_3036("%s" %self.db)
|
||||||
|
|
||||||
|
self.td_27939("%s" %self.db)
|
||||||
|
|
||||||
tdSql.query("flush database %s" %self.db)
|
tdSql.query("flush database %s" %self.db)
|
||||||
|
|
||||||
self.ts_2974_max("%s" %self.db)
|
self.ts_2974_max("%s" %self.db)
|
||||||
|
@ -431,6 +455,7 @@ class TDTestCase:
|
||||||
self.ts_23505("%s" %self.db)
|
self.ts_23505("%s" %self.db)
|
||||||
self.ts_3036("%s" %self.db)
|
self.ts_3036("%s" %self.db)
|
||||||
|
|
||||||
|
self.td_27939("%s" %self.db)
|
||||||
|
|
||||||
self.test_select_as_chinese_characters();
|
self.test_select_as_chinese_characters();
|
||||||
endTime = time.time()
|
endTime = time.time()
|
||||||
|
|
Loading…
Reference in New Issue