diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index fe4b462d80..effad91546 100755 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -3222,24 +3222,24 @@ static bool selectCommonType(SDataType* commonType, const SDataType* newType) { // type 6, float >= float, bool, tinyint, smallint, utinyint, usmallint if ((commonType->type == TSDB_DATA_TYPE_FLOAT && - ((newType->type >= TSDB_DATA_TYPE_BOOL && newType->type < TSDB_DATA_TYPE_INT) || - newType->type == TSDB_DATA_TYPE_UTINYINT || newType->type == TSDB_DATA_TYPE_USMALLINT))|| + ((newType->type >= TSDB_DATA_TYPE_BOOL && newType->type <= TSDB_DATA_TYPE_INT) || + (newType->type >= TSDB_DATA_TYPE_UTINYINT || newType->type <= TSDB_DATA_TYPE_UINT)))|| (newType->type == TSDB_DATA_TYPE_FLOAT && - ((commonType->type >= TSDB_DATA_TYPE_BOOL && commonType->type < TSDB_DATA_TYPE_INT) || - commonType->type == TSDB_DATA_TYPE_UTINYINT || commonType->type == TSDB_DATA_TYPE_USMALLINT))) { + ((commonType->type >= TSDB_DATA_TYPE_BOOL && commonType->type <= TSDB_DATA_TYPE_INT) || + (newType->type >= TSDB_DATA_TYPE_UTINYINT || newType->type <= TSDB_DATA_TYPE_UINT)))) { *commonType = (commonType->type == TSDB_DATA_TYPE_FLOAT) ? *commonType : *newType; return true; } //type 7, double >= double bool, tinyint, smallint, int, utinyint, usmallint, uint, if ((commonType->type == TSDB_DATA_TYPE_DOUBLE && - ((newType->type >= TSDB_DATA_TYPE_BOOL && newType->type < TSDB_DATA_TYPE_BIGINT) || + ((newType->type >= TSDB_DATA_TYPE_BOOL && newType->type <= TSDB_DATA_TYPE_BIGINT) || newType->type == TSDB_DATA_TYPE_FLOAT || - (newType->type >= TSDB_DATA_TYPE_UTINYINT && newType->type < TSDB_DATA_TYPE_UBIGINT) || + (newType->type >= TSDB_DATA_TYPE_UTINYINT && newType->type <= TSDB_DATA_TYPE_UBIGINT) || newType->type == TSDB_DATA_TYPE_DOUBLE)) || (newType->type == TSDB_DATA_TYPE_DOUBLE && - ((commonType->type >= TSDB_DATA_TYPE_BOOL && commonType->type < TSDB_DATA_TYPE_BIGINT) || + ((commonType->type >= TSDB_DATA_TYPE_BOOL && commonType->type <= TSDB_DATA_TYPE_BIGINT) || commonType->type == TSDB_DATA_TYPE_FLOAT || - (commonType->type >= TSDB_DATA_TYPE_UTINYINT && commonType->type < TSDB_DATA_TYPE_UBIGINT) || + (commonType->type >= TSDB_DATA_TYPE_UTINYINT && commonType->type <= TSDB_DATA_TYPE_UBIGINT) || commonType->type == TSDB_DATA_TYPE_DOUBLE))) { *commonType = (commonType->type == TSDB_DATA_TYPE_DOUBLE) ? *commonType : *newType; return true; diff --git a/tests/script/tsim/scalar/caseWhen.sim b/tests/script/tsim/scalar/caseWhen.sim index 8ab8912081..8a3707e021 100644 --- a/tests/script/tsim/scalar/caseWhen.sim +++ b/tests/script/tsim/scalar/caseWhen.sim @@ -423,7 +423,7 @@ endi if $data20 != @1970-01-01 08:00:00.003@ then return -1 endi -if $data30 != @2022-09-26 15:15:04.0@ then +if $data30 != @2022-09-26 15:15:04.000@ then return -1 endi