diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index 87af5fb5f7363eb741ccc9d9ed2f0dffe5492c5e..f241e317cdc83b432a1a1d964dff80ea84b663bb 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -5755,6 +5755,7 @@ int32_t doCheckForQuery(SSqlObj* pSql, SQuerySQL* pQuerySql, int32_t index) { const char* msg7 = "illegal number of tables in from clause"; const char* msg8 = "too many columns in selection clause"; const char* msg9 = "TWA query requires both the start and end time"; + const char* msg10= "too many tables in from clause"; int32_t code = TSDB_CODE_SUCCESS; @@ -5790,6 +5791,10 @@ int32_t doCheckForQuery(SSqlObj* pSql, SQuerySQL* pQuerySql, int32_t index) { pQueryInfo->command = TSDB_SQL_SELECT; + if (pQuerySql->from->nExpr > 2) { + return invalidSqlErrMsg(tscGetErrorMsgPayload(pCmd), msg10); + } + // set all query tables, which are maybe more than one. for (int32_t i = 0; i < pQuerySql->from->nExpr; ++i) { tVariant* pTableItem = &pQuerySql->from->a[i].pVar;