diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index 9db81054a9..8e5a439431 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -2013,6 +2013,7 @@ static int16_t doGetColumnIndex(SQueryInfo* pQueryInfo, int32_t index, SSQLToken if (strncasecmp(pSchema[i].name, pToken->z, pToken->n) == 0) { columnIndex = i; + break; } } @@ -2907,7 +2908,8 @@ static int32_t extractColumnFilterInfo(SQueryInfo* pQueryInfo, SColumnIndex* pIn SSchema* pSchema = tscGetTableColumnSchema(pTableMeta, pIndex->columnIndex); const char* msg1 = "non binary column not support like operator"; - const char* msg2 = "binary column not support this operator"; + const char* msg2 = "binary column not support this operator"; + const char* msg3 = "bool column not support this operator"; SColumn* pColumn = tscColumnListInsert(pQueryInfo->colList, pIndex); SColumnFilterInfo* pColFilter = NULL; @@ -2941,6 +2943,12 @@ static int32_t extractColumnFilterInfo(SQueryInfo* pQueryInfo, SColumnIndex* pIn if (pExpr->nSQLOptr == TK_LIKE) { return invalidSqlErrMsg(pQueryInfo->msg, msg1); } + + if (pSchema->type == TSDB_DATA_TYPE_BOOL) { + if (pExpr->nSQLOptr != TK_EQ && pExpr->nSQLOptr != TK_NE) { + return invalidSqlErrMsg(pQueryInfo->msg, msg3); + } + } } pColumn->colIndex = *pIndex; @@ -6073,6 +6081,16 @@ int32_t exprTreeFromSqlExpr(tExprNode **pExpr, const tSQLExpr* pSqlExpr, SArray* } } } + + if ((*pExpr)->_node.optr != TSDB_RELATION_EQUAL && (*pExpr)->_node.optr != TSDB_RELATION_NOT_EQUAL) { + if (pRight->nodeType == TSQL_NODE_VALUE) { + if ( pRight->pVal->nType == TSDB_DATA_TYPE_BOOL + || pRight->pVal->nType == TSDB_DATA_TYPE_BINARY + || pRight->pVal->nType == TSDB_DATA_TYPE_NCHAR) { + return TSDB_CODE_TSC_INVALID_SQL; + } + } + } } return TSDB_CODE_SUCCESS;