diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index 4d63438c9a5582981b86e41599b6b3a30314c9c9..60aea2dc56a3d3f91dfb63f944ee76ff944b82f1 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -6090,7 +6090,7 @@ int32_t getTimeRange(STimeWindow* win, tSqlExpr* pRight, int32_t optr, int16_t t // todo error !!!! int32_t tsRewriteFieldNameIfNecessary(SSqlCmd* pCmd, SQueryInfo* pQueryInfo) { - const char rep[] = {'(', ')', '*', ',', '.', '/', '\\', '+', '-', '%', ' '}; + const char rep[] = {'(', ')', '*', ',', '.', '/', '\\', '+', '-', '%', ' ', '`'}; for (int32_t i = 0; i < pQueryInfo->fieldsInfo.numOfOutput; ++i) { char* fieldName = tscFieldInfoGetField(&pQueryInfo->fieldsInfo, i)->name; diff --git a/src/util/src/tlosertree.c b/src/util/src/tlosertree.c index 0f104c4b63a36880a79ad564a0f837f9b09e7819..da078f353a720aaf24bf38190f147c0c6c6e3b06 100644 --- a/src/util/src/tlosertree.c +++ b/src/util/src/tlosertree.c @@ -96,7 +96,12 @@ void tLoserTreeAdjust(SLoserTreeInfo* pTree, int32_t idx) { return; } - int32_t ret = pTree->comparFn(pCur, &kLeaf, pTree->param); + /* there is a risk + * there should be pTree->comparFn(&pCur->index, &kLeaf.index, pTree->param) + * but the first element in SLoserTreeNode is int32_t + * and the comparFn get data as *(int32_t*)(void *), so it is just ok. + */ + int32_t ret = pTree->comparFn(&pCur, &kLeaf, pTree->param); if (ret < 0) { SLoserTreeNode t = pTree->pNode[parentId]; pTree->pNode[parentId] = kLeaf; diff --git a/tests/develop-test/0-others/TD-12435.py b/tests/develop-test/0-others/TD-12435.py new file mode 100644 index 0000000000000000000000000000000000000000..085566d51d43f074faefc71d3dddf258f35bb019 --- /dev/null +++ b/tests/develop-test/0-others/TD-12435.py @@ -0,0 +1,49 @@ +################################################################### +# Copyright (c) 2016 by TAOS Technologies, Inc. +# All rights reserved. +# +# This file is proprietary and confidential to TAOS Technologies. +# No part of this file may be reproduced, db_test.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 +import taos +from util.log import tdLog +from util.cases import tdCases +from util.sql import tdSql +import json + + +class TDTestCase: + def caseDescription(self): + ''' + case1: [TD-12435] fix ` identifier in table column name if using create table as subquery + ''' + return + + def init(self, conn, logSql): + tdLog.debug("start to execute %s" % __file__) + tdSql.init(conn.cursor(), logSql) + + def run(self): + tdSql.prepare() + + print("============== STEP 1 ===== prepare data & validate json string") + tdSql.execute("create table if not exists st(ts timestamp, dataInt int)") + tdSql.execute("create table st_from_sub as select avg(`dataInt`) from st interval(1m)") + tdSql.query("describe st_from_sub") + tdSql.checkData(1, 0, 'avg__dataInt__') + + 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-others.sh b/tests/develop-test/fulltest-others.sh index bb0bb585b5323b45d43b01404093b97babca3ab7..b9e056a67b455bbb4b2c6518f7b9b8665618713d 100755 --- a/tests/develop-test/fulltest-others.sh +++ b/tests/develop-test/fulltest-others.sh @@ -1 +1,2 @@ -python3 ./test.py -f 0-others/json_tag.py \ No newline at end of file +python3 ./test.py -f 0-others/json_tag.py +python3 ./test.py -f 0-others/TD-12435.py \ No newline at end of file