From 186662aa7597b399e0e19cffe608c76d1274ec5f Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Mon, 10 May 2021 15:35:44 +0800 Subject: [PATCH] [td-225] --- src/client/src/tscSQLParser.c | 18 ++++++++++-------- src/query/inc/qSqlparser.h | 3 +-- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index 63768a41d7..c69d9a698a 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -7189,16 +7189,11 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf if (pSqlNode->from->type == SQL_NODE_FROM_SUBQUERY) { // parse the subquery in the first place - SArray* list = taosArrayGetP(pSqlNode->from->list, 0); - SSqlNode* p = taosArrayGetP(list, 0); + SRelElementPair* sub = taosArrayGet(pSqlNode->from->list, 0); + SSqlNode* p = taosArrayGetP(sub->pSubquery, 0); - SQueryInfo* pQueryInfo = tscGetQueryInfo(&pSql->cmd, 0); code = validateSqlNode(pSql, p, pQueryInfo); - if (code == TSDB_CODE_TSC_ACTION_IN_PROGRESS) { - return code; - } - - if (code != TSDB_CODE_SUCCESS) { + if (code == TSDB_CODE_TSC_ACTION_IN_PROGRESS || code != TSDB_CODE_SUCCESS) { return code; } @@ -7211,6 +7206,13 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf STableMetaInfo* pTableMetaInfo1 = calloc(1, sizeof(STableMetaInfo)); pTableMetaInfo1->pTableMeta = pTableMeta; + if (sub->aliasName.n > 0) { + if (sub->aliasName.n > TSDB_TABLE_FNAME_LEN) { + return invalidSqlErrMsg(tscGetErrorMsgPayload(pCmd), "subquery alias name too long"); + } + strncpy(pTableMetaInfo1->aliasName, sub->aliasName.z, sub->aliasName.n); + } + current->pTableMetaInfo = calloc(1, POINTER_BYTES); current->pTableMetaInfo[0] = pTableMetaInfo1; current->numOfTables = 1; diff --git a/src/query/inc/qSqlparser.h b/src/query/inc/qSqlparser.h index bbf391659b..d3a422b1f5 100644 --- a/src/query/inc/qSqlparser.h +++ b/src/query/inc/qSqlparser.h @@ -111,7 +111,6 @@ typedef struct SRelElementPair { union { SStrToken tableName; SArray *pSubquery; - //SSqlNode *pSubquery; }; SStrToken aliasName; @@ -119,7 +118,7 @@ typedef struct SRelElementPair { typedef struct SRelationInfo { int32_t type; // nested query|table name list - SArray *list; // SArray|SArray + SArray *list; // SArray } SRelationInfo; typedef struct SCreatedTableInfo { -- GitLab