Merge pull request #6159 from taosdata/fix/query
[td-4231]<enhance>: report error if only tags of the table are retrie…
This commit is contained in:
commit
018ae449fe
|
@ -7119,6 +7119,7 @@ int32_t doValidateSqlNode(SSqlObj* pSql, SQuerySqlNode* pQuerySqlNode, int32_t i
|
||||||
const char* msg6 = "too many tables in from clause";
|
const char* msg6 = "too many tables in from clause";
|
||||||
const char* msg7 = "invalid table alias name";
|
const char* msg7 = "invalid table alias name";
|
||||||
const char* msg8 = "alias name too long";
|
const char* msg8 = "alias name too long";
|
||||||
|
const char* msg9 = "only tag query not compatible with normal column filter";
|
||||||
|
|
||||||
int32_t code = TSDB_CODE_SUCCESS;
|
int32_t code = TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
|
@ -7288,6 +7289,20 @@ int32_t doValidateSqlNode(SSqlObj* pSql, SQuerySqlNode* pQuerySqlNode, int32_t i
|
||||||
if (hasUnsupportFunctionsForSTableQuery(pCmd, pQueryInfo)) {
|
if (hasUnsupportFunctionsForSTableQuery(pCmd, pQueryInfo)) {
|
||||||
return TSDB_CODE_TSC_INVALID_SQL;
|
return TSDB_CODE_TSC_INVALID_SQL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(tscQueryTags(pQueryInfo)) {
|
||||||
|
SSqlExpr* pExpr1 = tscSqlExprGet(pQueryInfo, 0);
|
||||||
|
|
||||||
|
if (pExpr1->functionId != TSDB_FUNC_TID_TAG) {
|
||||||
|
int32_t numOfCols = (int32_t)taosArrayGetSize(pQueryInfo->colList);
|
||||||
|
for (int32_t i = 0; i < numOfCols; ++i) {
|
||||||
|
SColumn* pCols = taosArrayGetP(pQueryInfo->colList, i);
|
||||||
|
if (pCols->numOfFilters > 0) {
|
||||||
|
return invalidSqlErrMsg(tscGetErrorMsgPayload(pCmd), msg9);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parseSessionClause(pCmd, pQueryInfo, pQuerySqlNode) != TSDB_CODE_SUCCESS) {
|
if (parseSessionClause(pCmd, pQueryInfo, pQuerySqlNode) != TSDB_CODE_SUCCESS) {
|
||||||
|
|
|
@ -215,7 +215,7 @@ static void tscProcessSubscriptionTimer(void *handle, void *tmrId) {
|
||||||
taosTmrReset(tscProcessSubscriptionTimer, pSub->interval, pSub, tscTmr, &pSub->pTimer);
|
taosTmrReset(tscProcessSubscriptionTimer, pSub->interval, pSub, tscTmr, &pSub->pTimer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO refactor: extract table list name not simply from the sql
|
||||||
static SArray* getTableList( SSqlObj* pSql ) {
|
static SArray* getTableList( SSqlObj* pSql ) {
|
||||||
const char* p = strstr( pSql->sqlstr, " from " );
|
const char* p = strstr( pSql->sqlstr, " from " );
|
||||||
assert(p != NULL); // we are sure this is a 'select' statement
|
assert(p != NULL); // we are sure this is a 'select' statement
|
||||||
|
@ -224,11 +224,11 @@ static SArray* getTableList( SSqlObj* pSql ) {
|
||||||
|
|
||||||
SSqlObj* pNew = taos_query(pSql->pTscObj, sql);
|
SSqlObj* pNew = taos_query(pSql->pTscObj, sql);
|
||||||
if (pNew == NULL) {
|
if (pNew == NULL) {
|
||||||
tscError("0x%"PRIx64"failed to retrieve table id: cannot create new sql object.", pSql->self);
|
tscError("0x%"PRIx64" failed to retrieve table id: cannot create new sql object.", pSql->self);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
} else if (taos_errno(pNew) != TSDB_CODE_SUCCESS) {
|
} else if (taos_errno(pNew) != TSDB_CODE_SUCCESS) {
|
||||||
tscError("0x%"PRIx64"failed to retrieve table id,error: %s", pSql->self, tstrerror(taos_errno(pNew)));
|
tscError("0x%"PRIx64" failed to retrieve table id,error: %s", pSql->self, tstrerror(taos_errno(pNew)));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -847,10 +847,16 @@ sql_error select tbname, t1 from select_tags_mt0 interval(1y);
|
||||||
#valid sql: select first(c1), last(c2), count(*) from select_tags_mt0 group by tbname, t1;
|
#valid sql: select first(c1), last(c2), count(*) from select_tags_mt0 group by tbname, t1;
|
||||||
#valid sql: select first(c1), tbname, t1 from select_tags_mt0 group by t2;
|
#valid sql: select first(c1), tbname, t1 from select_tags_mt0 group by t2;
|
||||||
|
|
||||||
|
print ==================================>TD-4231
|
||||||
|
sql_error select t1,tbname from select_tags_mt0 where c1<0
|
||||||
|
sql_error select t1,tbname from select_tags_mt0 where c1<0 and tbname in ('select_tags_tb12')
|
||||||
|
|
||||||
|
sql select tbname from select_tags_mt0 where tbname in ('select_tags_tb12');
|
||||||
|
|
||||||
sql_error select first(c1), last(c2), t1 from select_tags_mt0 group by tbname;
|
sql_error select first(c1), last(c2), t1 from select_tags_mt0 group by tbname;
|
||||||
sql_error select first(c1), last(c2), tbname, t2 from select_tags_mt0 group by tbname;
|
sql_error select first(c1), last(c2), tbname, t2 from select_tags_mt0 group by tbname;
|
||||||
sql_error select first(c1), count(*), t2, t1, tbname from select_tags_mt0 group by tbname;
|
sql_error select first(c1), count(*), t2, t1, tbname from select_tags_mt0 group by tbname;
|
||||||
# this sql is valid: select first(c1), t2 from select_tags_mt0 group by tbname;
|
#valid sql: select first(c1), t2 from select_tags_mt0 group by tbname;
|
||||||
|
|
||||||
#sql select first(ts), tbname from select_tags_mt0 group by tbname;
|
#sql select first(ts), tbname from select_tags_mt0 group by tbname;
|
||||||
#sql select count(c1) from select_tags_mt0 where c1=99 group by tbname;
|
#sql select count(c1) from select_tags_mt0 where c1=99 group by tbname;
|
||||||
|
|
Loading…
Reference in New Issue