diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index 15bfc114b8dac5ec05c8ec5f613142ac18eb5cef..2bbabbf8a58d75d4ee13824ea88b18d3190cfe4c 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -1837,19 +1837,30 @@ static int32_t handleAggTypeExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t char aliasName[TSDB_COL_NAME_LEN] = {0}; getColumnName(pItem, aliasName, rawName, TSDB_COL_NAME_LEN); + tExprNode *pExpr = NULL; + uint64_t uid = 0; + int32_t ret = exprTreeFromSqlExpr(pCmd, &pExpr, pItem->pNode, pQueryInfo, NULL, &uid); + if (ret != TSDB_CODE_SUCCESS) { + tExprTreeDestroy(pExpr, NULL); + return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), "invalid expression in select clause"); + } + + ret = exprTreeValidateTree(pExpr); + if (ret != TSDB_CODE_SUCCESS) { + tExprTreeDestroy(pExpr, NULL); + return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2); + } // the expr associated with the result field will become exprList1 in SQueryInfo, then pExpr2 in SQueryAttr - insertResultField(pQueryInfo, exprIndex, columnList, sizeof(double), TSDB_DATA_TYPE_DOUBLE, aliasName, NULL); + insertResultField(pQueryInfo, exprIndex, columnList, pExpr->resultBytes, (int8_t)pExpr->resultType, aliasName, NULL); int32_t slot = tscNumOfFields(pQueryInfo) - 1; SInternalField* pInfo = tscFieldInfoGetInternalField(&pQueryInfo->fieldsInfo, slot); assert(pInfo->pExpr == NULL); - SExprInfo* pExprInfo = calloc(1, sizeof(SExprInfo)); - // arithmetic expression always return result in the format of double float - pExprInfo->base.resBytes = sizeof(double); + pExprInfo->base.resBytes = pExpr->resultBytes; pExprInfo->base.interBytes = 0; - pExprInfo->base.resType = TSDB_DATA_TYPE_DOUBLE; + pExprInfo->base.resType = pExpr->resultType; pExprInfo->base.functionId = TSDB_FUNC_SCALAR_EXPR; pExprInfo->base.numOfParams = 1; @@ -1857,19 +1868,9 @@ static int32_t handleAggTypeExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t strncpy(pExprInfo->base.aliasName, aliasName, tListLen(pExprInfo->base.aliasName)); strncpy(pExprInfo->base.token, rawName, tListLen(pExprInfo->base.token)); - int32_t ret = exprTreeFromSqlExpr(pCmd, &pExprInfo->pExpr, pItem->pNode, pQueryInfo, NULL, &(pExprInfo->base.uid)); - if (ret != TSDB_CODE_SUCCESS) { - tExprTreeDestroy(pExprInfo->pExpr, NULL); - return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), "invalid expression in select clause"); - } - + pExprInfo->pExpr = pExpr; + pExprInfo->base.uid = uid; pInfo->pExpr = pExprInfo; - ret = exprTreeValidateTree(pExprInfo->pExpr); - if (ret != TSDB_CODE_SUCCESS) { - tExprTreeDestroy(pExprInfo->pExpr, NULL); - pExprInfo->pExpr = NULL; - return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2); - } SBufferWriter bw = tbufInitWriter(NULL, false); @@ -2608,9 +2609,6 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col case TSDB_FUNC_DIFF: case TSDB_FUNC_DERIVATIVE: case TSDB_FUNC_CSUM: - case TSDB_FUNC_CEIL: - case TSDB_FUNC_FLOOR: - case TSDB_FUNC_ROUND: case TSDB_FUNC_STDDEV: case TSDB_FUNC_LEASTSQR: { // 1. valid the number of parameters @@ -3685,10 +3683,6 @@ static bool functionCompatibleCheck(SQueryInfo* pQueryInfo, bool joinQuery, bool ++prjNum; } - if (functionId == TSDB_FUNC_CEIL || functionId == TSDB_FUNC_FLOOR || functionId == TSDB_FUNC_ROUND) { - ++scalarFuncNum; - } - if (TSDB_FUNC_IS_SCALAR(functionId)) { ++scalarFuncNum; } @@ -6662,8 +6656,7 @@ int32_t validateFunctionsInIntervalOrGroupbyQuery(SSqlCmd* pCmd, SQueryInfo* pQu int32_t f = pExpr->base.functionId; if ((f == TSDB_FUNC_PRJ && pExpr->base.numOfParams == 0) || f == TSDB_FUNC_DIFF || f == TSDB_FUNC_SCALAR_EXPR || f == TSDB_FUNC_DERIVATIVE || - f == TSDB_FUNC_CSUM || f == TSDB_FUNC_MAVG || - f == TSDB_FUNC_CEIL || f == TSDB_FUNC_FLOOR || f == TSDB_FUNC_ROUND) + f == TSDB_FUNC_CSUM || f == TSDB_FUNC_MAVG) { isProjectionFunction = true; break; diff --git a/src/client/src/tscUtil.c b/src/client/src/tscUtil.c index 06fdc904f66db535028d7bfe920278815b16dd9a..6741b37b1ce6ef45725a7342680cd8441ff6accc 100644 --- a/src/client/src/tscUtil.c +++ b/src/client/src/tscUtil.c @@ -274,9 +274,6 @@ bool tscIsProjectionQueryOnSTable(SQueryInfo* pQueryInfo, int32_t tableIndex) { functionId != TSDB_FUNC_CSUM && functionId != TSDB_FUNC_TS_DUMMY && functionId != TSDB_FUNC_TID_TAG && - functionId != TSDB_FUNC_CEIL && - functionId != TSDB_FUNC_FLOOR && - functionId != TSDB_FUNC_ROUND && !TSDB_FUNC_IS_SCALAR(functionId)) { return false; } diff --git a/src/common/inc/texpr.h b/src/common/inc/texpr.h index 4e33285e44b10db3f102acd5809cba6b6ee2cfba..d7debbeecd3faf6247ac034575f39fcc2c483a69 100644 --- a/src/common/inc/texpr.h +++ b/src/common/inc/texpr.h @@ -63,6 +63,7 @@ struct SSchema; #define TSDB_FUNC_SCALAR_CONCAT (TSDB_FUNC_FLAG_SCALAR | 0x000D) #define TSDB_FUNC_SCALAR_LENGTH (TSDB_FUNC_FLAG_SCALAR | 0x000E) #define TSDB_FUNC_SCALAR_MAX_NUM 15 + #define TSDB_FUNC_SCALAR_NAME_MAX_LEN 16 typedef struct { diff --git a/src/common/src/texpr.c b/src/common/src/texpr.c index c84ebd474b4f50ffdb3bb6889faa9c250e1a594f..5a301dbbeafca8bd83ea51513ee7ffc4f5d43886 100644 --- a/src/common/src/texpr.c +++ b/src/common/src/texpr.c @@ -1258,7 +1258,7 @@ void vectorMathFunc(int16_t functionId, tExprOperandInfo *pInputs, uint8_t numIn SET_TYPED_DATA(outputData, pOutput->type, result); } else if (pInputs[0].type == TSDB_DATA_TYPE_DOUBLE) { double v = 0; - GET_TYPED_DATA(v, float, pInputs[0].type, inputData[0]); + GET_TYPED_DATA(v, double, pInputs[0].type, inputData[0]); double result = ceil(v); SET_TYPED_DATA(outputData, pOutput->type, result); } @@ -1278,7 +1278,7 @@ void vectorMathFunc(int16_t functionId, tExprOperandInfo *pInputs, uint8_t numIn SET_TYPED_DATA(outputData, pOutput->type, result); } else if (pInputs[0].type == TSDB_DATA_TYPE_DOUBLE) { double v = 0; - GET_TYPED_DATA(v, float, pInputs[0].type, inputData[0]); + GET_TYPED_DATA(v, double, pInputs[0].type, inputData[0]); double result = floor(v); SET_TYPED_DATA(outputData, pOutput->type, result); } @@ -1299,7 +1299,7 @@ void vectorMathFunc(int16_t functionId, tExprOperandInfo *pInputs, uint8_t numIn SET_TYPED_DATA(outputData, pOutput->type, result); } else if (pInputs[0].type == TSDB_DATA_TYPE_DOUBLE) { double v = 0; - GET_TYPED_DATA(v, float, pInputs[0].type, inputData[0]); + GET_TYPED_DATA(v, double, pInputs[0].type, inputData[0]); double result = round(v); SET_TYPED_DATA(outputData, pOutput->type, result); } @@ -1310,9 +1310,9 @@ void vectorMathFunc(int16_t functionId, tExprOperandInfo *pInputs, uint8_t numIn assert(false); break; } - } - } - } + } // end switch function(id) + } // end can produce value, all child has value + } // end for each row free(inputData); } @@ -1381,7 +1381,7 @@ tScalarFunctionInfo aScalarFunctions[] = { }, { TSDB_FUNC_SCALAR_FLOOR, - "flooor", + "floor", vectorMathFunc, }, { diff --git a/src/query/inc/qAggMain.h b/src/query/inc/qAggMain.h index 903092e021571e71e940342dfbe9e8abf3a86ee4..9a8ff62be7438eb9336eda9338be4853d5e2661e 100644 --- a/src/query/inc/qAggMain.h +++ b/src/query/inc/qAggMain.h @@ -70,15 +70,11 @@ extern "C" { #define TSDB_FUNC_TID_TAG 31 #define TSDB_FUNC_DERIVATIVE 32 -#define TSDB_FUNC_CEIL 33 -#define TSDB_FUNC_FLOOR 34 -#define TSDB_FUNC_ROUND 35 +#define TSDB_FUNC_CSUM 33 +#define TSDB_FUNC_MAVG 34 +#define TSDB_FUNC_SAMPLE 35 -#define TSDB_FUNC_CSUM 36 -#define TSDB_FUNC_MAVG 37 -#define TSDB_FUNC_SAMPLE 38 - -#define TSDB_FUNC_BLKINFO 39 +#define TSDB_FUNC_BLKINFO 36 /////////////////////////////////////////// // the following functions is not implemented. diff --git a/src/query/src/qAggMain.c b/src/query/src/qAggMain.c index 7a4d1a7dc4eab0e486e1c92292c412bc1ceda23a..67eaf65c5a2821717e23ddbc4bc16333b9a92b7a 100644 --- a/src/query/src/qAggMain.c +++ b/src/query/src/qAggMain.c @@ -206,8 +206,7 @@ int32_t getResultDataInfo(int32_t dataType, int32_t dataBytes, int32_t functionI if (functionId == TSDB_FUNC_TS || functionId == TSDB_FUNC_TS_DUMMY || functionId == TSDB_FUNC_TAG_DUMMY || functionId == TSDB_FUNC_DIFF || functionId == TSDB_FUNC_PRJ || functionId == TSDB_FUNC_TAGPRJ || - functionId == TSDB_FUNC_TAG || functionId == TSDB_FUNC_INTERP || functionId == TSDB_FUNC_CEIL || - functionId == TSDB_FUNC_FLOOR || functionId == TSDB_FUNC_ROUND) + functionId == TSDB_FUNC_TAG || functionId == TSDB_FUNC_INTERP) { *type = (int16_t)dataType; *bytes = (int16_t)dataBytes; @@ -4502,233 +4501,6 @@ void blockinfo_func_finalizer(SQLFunctionCtx* pCtx) { doFinalizer(pCtx); } -///////////////////////////////////////////////////////////////////////////////////////////////////////////// - -#define CFR_SET_VAL(type, data, pCtx, func, i, step, notNullElems) \ - do { \ - type *pData = (type *) data; \ - type *pOutput = (type *) pCtx->pOutput; \ - \ - for (; i < pCtx->size && i >= 0; i += step) { \ - if (pCtx->hasNull && isNull((const char*) &pData[i], pCtx->inputType)) { \ - continue; \ - } \ - \ - *pOutput++ = (type) func((double) pData[i]); \ - \ - notNullElems++; \ - } \ - } while (0) - -#define CFR_SET_VAL_DOUBLE(data, pCtx, func, i, step, notNullElems) \ - do { \ - double *pData = (double *) data; \ - double *pOutput = (double *) pCtx->pOutput; \ - \ - for (; i < pCtx->size && i >= 0; i += step) { \ - if (pCtx->hasNull && isNull((const char*) &pData[i], pCtx->inputType)) { \ - continue; \ - } \ - \ - SET_DOUBLE_VAL(pOutput, func(pData[i])); \ - pOutput++; \ - \ - notNullElems++; \ - } \ - } while (0) - -static void ceil_function(SQLFunctionCtx *pCtx) { - void *data = GET_INPUT_DATA_LIST(pCtx); - - int32_t notNullElems = 0; - - int32_t step = GET_FORWARD_DIRECTION_FACTOR(pCtx->order); - int32_t i = (pCtx->order == TSDB_ORDER_ASC) ? 0 : pCtx->size - 1; - - switch (pCtx->inputType) { - case TSDB_DATA_TYPE_INT: { - CFR_SET_VAL(int32_t, data, pCtx, ceil, i, step, notNullElems); - break; - }; - case TSDB_DATA_TYPE_UINT: { - CFR_SET_VAL(uint32_t, data, pCtx, ceil, i, step, notNullElems); - break; - }; - case TSDB_DATA_TYPE_BIGINT: { - CFR_SET_VAL(int64_t, data, pCtx, ceil, i, step, notNullElems); - break; - } - case TSDB_DATA_TYPE_UBIGINT: { - CFR_SET_VAL(uint64_t, data, pCtx, ceil, i, step, notNullElems); - break; - } - case TSDB_DATA_TYPE_DOUBLE: { - CFR_SET_VAL_DOUBLE(data, pCtx, ceil, i, step, notNullElems); - break; - } - case TSDB_DATA_TYPE_FLOAT: { - CFR_SET_VAL(float, data, pCtx, ceil, i, step, notNullElems); - break; - } - case TSDB_DATA_TYPE_SMALLINT: { - CFR_SET_VAL(int16_t, data, pCtx, ceil, i, step, notNullElems); - break; - } - case TSDB_DATA_TYPE_USMALLINT: { - CFR_SET_VAL(uint16_t, data, pCtx, ceil, i, step, notNullElems); - break; - } - case TSDB_DATA_TYPE_TINYINT: { - CFR_SET_VAL(int8_t, data, pCtx, ceil, i, step, notNullElems); - break; - } - case TSDB_DATA_TYPE_UTINYINT: { - CFR_SET_VAL(uint8_t, data, pCtx, ceil, i, step, notNullElems); - break; - } - default: - qError("error input type"); - } - - if (notNullElems <= 0) { - /* - * current block may be null value - */ - assert(pCtx->hasNull); - } else { - GET_RES_INFO(pCtx)->numOfRes += notNullElems; - } -} - -static void floor_function(SQLFunctionCtx *pCtx) { - void *data = GET_INPUT_DATA_LIST(pCtx); - - int32_t notNullElems = 0; - - int32_t step = GET_FORWARD_DIRECTION_FACTOR(pCtx->order); - int32_t i = (pCtx->order == TSDB_ORDER_ASC) ? 0 : pCtx->size - 1; - - switch (pCtx->inputType) { - case TSDB_DATA_TYPE_INT: { - CFR_SET_VAL(int32_t, data, pCtx, floor, i, step, notNullElems); - break; - }; - case TSDB_DATA_TYPE_UINT: { - CFR_SET_VAL(uint32_t, data, pCtx, floor, i, step, notNullElems); - break; - }; - case TSDB_DATA_TYPE_BIGINT: { - CFR_SET_VAL(int64_t, data, pCtx, floor, i, step, notNullElems); - break; - } - case TSDB_DATA_TYPE_UBIGINT: { - CFR_SET_VAL(uint64_t, data, pCtx, floor, i, step, notNullElems); - break; - } - case TSDB_DATA_TYPE_DOUBLE: { - CFR_SET_VAL_DOUBLE(data, pCtx, floor, i, step, notNullElems); - break; - } - case TSDB_DATA_TYPE_FLOAT: { - CFR_SET_VAL(float, data, pCtx, floor, i, step, notNullElems); - break; - } - case TSDB_DATA_TYPE_SMALLINT: { - CFR_SET_VAL(int16_t, data, pCtx, floor, i, step, notNullElems); - break; - } - case TSDB_DATA_TYPE_USMALLINT: { - CFR_SET_VAL(uint16_t, data, pCtx, floor, i, step, notNullElems); - break; - } - case TSDB_DATA_TYPE_TINYINT: { - CFR_SET_VAL(int8_t, data, pCtx, floor, i, step, notNullElems); - break; - } - case TSDB_DATA_TYPE_UTINYINT: { - CFR_SET_VAL(uint8_t, data, pCtx, floor, i, step, notNullElems); - break; - } - default: - qError("error input type"); - } - - if (notNullElems <= 0) { - /* - * current block may be null value - */ - assert(pCtx->hasNull); - } else { - GET_RES_INFO(pCtx)->numOfRes += notNullElems; - } -} - -static void round_function(SQLFunctionCtx *pCtx) { - void *data = GET_INPUT_DATA_LIST(pCtx); - - int32_t notNullElems = 0; - - int32_t step = GET_FORWARD_DIRECTION_FACTOR(pCtx->order); - int32_t i = (pCtx->order == TSDB_ORDER_ASC) ? 0 : pCtx->size - 1; - - switch (pCtx->inputType) { - case TSDB_DATA_TYPE_INT: { - CFR_SET_VAL(int32_t, data, pCtx, round, i, step, notNullElems); - break; - }; - case TSDB_DATA_TYPE_UINT: { - CFR_SET_VAL(uint32_t, data, pCtx, round, i, step, notNullElems); - break; - }; - case TSDB_DATA_TYPE_BIGINT: { - CFR_SET_VAL(int64_t, data, pCtx, round, i, step, notNullElems); - break; - } - case TSDB_DATA_TYPE_UBIGINT: { - CFR_SET_VAL(uint64_t, data, pCtx, round, i, step, notNullElems); - break; - } - case TSDB_DATA_TYPE_DOUBLE: { - CFR_SET_VAL_DOUBLE(data, pCtx, round, i, step, notNullElems); - break; - } - case TSDB_DATA_TYPE_FLOAT: { - CFR_SET_VAL(float, data, pCtx, round, i, step, notNullElems); - break; - } - case TSDB_DATA_TYPE_SMALLINT: { - CFR_SET_VAL(int16_t, data, pCtx, round, i, step, notNullElems); - break; - } - case TSDB_DATA_TYPE_USMALLINT: { - CFR_SET_VAL(uint16_t, data, pCtx, round, i, step, notNullElems); - break; - } - case TSDB_DATA_TYPE_TINYINT: { - CFR_SET_VAL(int8_t, data, pCtx, round, i, step, notNullElems); - break; - } - case TSDB_DATA_TYPE_UTINYINT: { - CFR_SET_VAL(uint8_t, data, pCtx, round, i, step, notNullElems); - break; - } - default: - qError("error input type"); - } - - if (notNullElems <= 0) { - /* - * current block may be null value - */ - assert(pCtx->hasNull); - } else { - GET_RES_INFO(pCtx)->numOfRes += notNullElems; - } -} - -#undef CFR_SET_VAL -#undef CFR_SET_VAL_DOUBLE - ////////////////////////////////////////////////////////////////////////////////// //cumulative_sum function @@ -5074,8 +4846,8 @@ int32_t functionCompatList[] = { 4, -1, -1, 1, 1, 1, 1, 1, 1, -1, // tag, colprj, tagprj, arithm, diff, first_dist, last_dist, stddev_dst, interp rate, irate 1, 1, 1, 1, -1, 1, 1, 1, 5, 1, 1, - // tid_tag, deriv, ceil, floor, round, csum, mavg, sample, - 6, 8, 1, 1, 1, -1, -1, -1, + // tid_tag, deriv, csum, mavg, sample, + 6, 8, -1, -1, -1, // block_info 7 }; @@ -5479,39 +5251,6 @@ SAggFunctionInfo aAggs[] = {{ noop1, dataBlockRequired, }, - {// 33 - "ceil", - TSDB_FUNC_CEIL, - TSDB_FUNC_CEIL, - TSDB_FUNCSTATE_MO | TSDB_FUNCSTATE_STABLE | TSDB_FUNCSTATE_NEED_TS | TSDB_FUNCSTATE_SCALAR, - function_setup, - ceil_function, - doFinalizer, - noop1, - dataBlockRequired - }, - {// 34 - "floor", - TSDB_FUNC_FLOOR, - TSDB_FUNC_FLOOR, - TSDB_FUNCSTATE_MO | TSDB_FUNCSTATE_STABLE | TSDB_FUNCSTATE_NEED_TS | TSDB_FUNCSTATE_SCALAR, - function_setup, - floor_function, - doFinalizer, - noop1, - dataBlockRequired - }, - {// 35 - "round", - TSDB_FUNC_ROUND, - TSDB_FUNC_ROUND, - TSDB_FUNCSTATE_MO | TSDB_FUNCSTATE_STABLE | TSDB_FUNCSTATE_NEED_TS | TSDB_FUNCSTATE_SCALAR, - function_setup, - round_function, - doFinalizer, - noop1, - dataBlockRequired - }, { // 36 "csum", diff --git a/tests/pytest/functions/function_ceil.py b/tests/pytest/functions/function_ceil.py index 9197b0eec45a2154c2345a5b2fc469e54b1e41f9..dcc3eafa5d0ec6f7a6c236f55da106a79fb927b9 100644 --- a/tests/pytest/functions/function_ceil.py +++ b/tests/pytest/functions/function_ceil.py @@ -1294,21 +1294,21 @@ class TDTestCase: double_col double, binary_col binary(8), smallint_col smallint, tinyint_col tinyint, bool_col bool, nchar_col nchar(8), \ uint_col int unsigned, ubigint_col bigint unsigned, usmallint_col smallint unsigned, utinyint_col tinyint unsigned) tags (int_tag int, bigint_tag bigint, \ float_tag float, double_tag double, binary_tag binary(8), smallint_tag smallint, tinyint_tag tinyint, bool_tag bool, nchar_tag nchar(8),\ - uint_tag int unsigned, ubigint_tag bigint unsigned, usmallint_tag smallint unsigned, utinyint_tag tinyint unsigned)" + uint_tag int unsigned, ubigint_tag bigint unsigned, usmallint_tag smallint unsigned, utinyint_tag tinyint unsigned, timestamp_tag timestamp)" ) tdSql.execute( "create stable superb (ts timestamp, timestamp_col timestamp, int_col int, bigint_col bigint, float_col float,\ double_col double, binary_col binary(8), smallint_col smallint, tinyint_col tinyint, bool_col bool, nchar_col nchar(8), \ uint_col int unsigned, ubigint_col bigint unsigned, usmallint_col smallint unsigned, utinyint_col tinyint unsigned) tags (int_tag int, bigint_tag bigint, \ float_tag float, double_tag double, binary_tag binary(8), smallint_tag smallint, tinyint_tag tinyint, bool_tag bool, nchar_tag nchar(8),\ - uint_tag int unsigned, ubigint_tag bigint unsigned, usmallint_tag smallint unsigned, utinyint_tag tinyint unsigned)" + uint_tag int unsigned, ubigint_tag bigint unsigned, usmallint_tag smallint unsigned, utinyint_tag tinyint unsigned, timestamp_tag timestamp)" ) tdSql.execute( - "create table t1 using super tags (1, %d, %f, %f, '%s', %d, %d, 1, '%s', %d, %d, %d, %d)" + "create table t1 using super tags (1, %d, %f, %f, '%s', %d, %d, 1, '%s', %d, %d, %d, %d, %s)" % (self.randomBigint(), self.randomDouble(), self.randomDouble(), self.randomNchar(), self.randomSmallint(), self.randomTinyint(), self.randomNchar(), self.randomUInt(), self.randomUBigint(), - self.randomUSmallint(), self.randomUTinyint())) + self.randomUSmallint(), self.randomUTinyint(), 'now')) tdSql.execute( "insert into t1 values (1629796215891, 1629796215891, %d, %d, %f, %f, '%s', %d, %d, 1, '%s', %d, %d, %d, %d)" % (self.randomInt(), self.randomBigint(), self.randomDouble(), @@ -1338,11 +1338,11 @@ class TDTestCase: self.randomUBigint(), self.randomUSmallint(), self.randomUTinyint())) tdSql.execute( - "create table t2 using superb tags (1, %d, %f, %f, '%s', %d, %d, 1, '%s', %d, %d, %d, %d)" + "create table t2 using superb tags (1, %d, %f, %f, '%s', %d, %d, 1, '%s', %d, %d, %d, %d, %s)" % (self.randomBigint(), self.randomDouble(), self.randomDouble(), self.randomNchar(), self.randomSmallint(), self.randomTinyint(), self.randomNchar(), self.randomUInt(), self.randomUBigint(), - self.randomUSmallint(), self.randomUTinyint())) + self.randomUSmallint(), self.randomUTinyint(), 'now')) tdSql.execute( "insert into t2 values (1629796215891, 1629796215891, %d, %d, %f, %f, '%s', %d, %d, 1, '%s', %d, %d, %d, %d)" % (self.randomInt(), self.randomBigint(), self.randomDouble(), @@ -1372,139 +1372,562 @@ class TDTestCase: self.randomUBigint(), self.randomUSmallint(), self.randomUTinyint())) + shouldPass = ['select ceil(int_col) from super', + 'select ceil(int_col) from t1', + 'select ceil(bigint_col) from super', + 'select ceil(bigint_col) from t1', + 'select ceil(float_col) from super', + 'select ceil(float_col) from t1', + 'select ceil(double_col) from super', + 'select ceil(double_col) from t1', + 'select ceil(smallint_col) from super', + 'select ceil(smallint_col) from t1', + 'select ceil(tinyint_col) from super', + 'select ceil(tinyint_col) from t1', + 'select ceil(uint_col) from super', + 'select ceil(uint_col) from t1', + 'select ceil(ubigint_col) from super', + 'select ceil(ubigint_col) from t1', + 'select ceil(usmallint_col) from super', + 'select ceil(usmallint_col) from t1', + 'select ceil(utinyint_col) from super', + 'select ceil(utinyint_col) from t1', + 'select ceil(int_col) - ceil(int_col) from super', + 'select ceil(int_col) - ceil(int_col) from t1', + 'select ceil(bigint_col) - ceil(bigint_col) from super', + 'select ceil(bigint_col) - ceil(bigint_col) from t1', + 'select ceil(float_col) - ceil(float_col) from super', + 'select ceil(float_col) - ceil(float_col) from t1', + 'select ceil(double_col) - ceil(double_col) from super', + 'select ceil(double_col) - ceil(double_col) from t1', + 'select ceil(smallint_col) - ceil(smallint_col) from super', + 'select ceil(smallint_col) - ceil(smallint_col) from t1', + 'select ceil(tinyint_col) - ceil(tinyint_col) from super', + 'select ceil(tinyint_col) - ceil(tinyint_col) from t1', + 'select ceil(uint_col) - ceil(uint_col) from super', + 'select ceil(uint_col) - ceil(uint_col) from t1', + 'select ceil(ubigint_col) - ceil(ubigint_col) from super', + 'select ceil(ubigint_col) - ceil(ubigint_col) from t1', + 'select ceil(usmallint_col) - ceil(usmallint_col) from super', + 'select ceil(usmallint_col) - ceil(usmallint_col) from t1', + 'select ceil(utinyint_col) - ceil(utinyint_col) from super', + 'select ceil(utinyint_col) - ceil(utinyint_col) from t1', + 'select ceil(int_col) / ceil(int_col) from super', + 'select ceil(int_col) / ceil(int_col) from t1', + 'select ceil(bigint_col) / ceil(bigint_col) from super', + 'select ceil(bigint_col) / ceil(bigint_col) from t1', + 'select ceil(float_col) / ceil(float_col) from super', + 'select ceil(float_col) / ceil(float_col) from t1', + 'select ceil(double_col) / ceil(double_col) from super', + 'select ceil(double_col) / ceil(double_col) from t1', + 'select ceil(smallint_col) / ceil(smallint_col) from super', + 'select ceil(smallint_col) / ceil(smallint_col) from t1', + 'select ceil(tinyint_col) / ceil(tinyint_col) from super', + 'select ceil(tinyint_col) / ceil(tinyint_col) from t1', + 'select ceil(uint_col) / ceil(uint_col) from super', + 'select ceil(uint_col) / ceil(uint_col) from t1', + 'select ceil(ubigint_col) / ceil(ubigint_col) from super', + 'select ceil(ubigint_col) / ceil(ubigint_col) from t1', + 'select ceil(usmallint_col) / ceil(usmallint_col) from super', + 'select ceil(usmallint_col) / ceil(usmallint_col) from t1', + 'select ceil(utinyint_col) / ceil(utinyint_col) from super', + 'select ceil(utinyint_col) / ceil(utinyint_col) from t1', + 'select ceil(int_col) * ceil(int_col) from super', + 'select ceil(int_col) * ceil(int_col) from t1', + 'select ceil(bigint_col) * ceil(bigint_col) from super', + 'select ceil(bigint_col) * ceil(bigint_col) from t1', + 'select ceil(float_col) * ceil(float_col) from super', + 'select ceil(float_col) * ceil(float_col) from t1', + 'select ceil(double_col) * ceil(double_col) from super', + 'select ceil(double_col) * ceil(double_col) from t1', + 'select ceil(smallint_col) * ceil(smallint_col) from super', + 'select ceil(smallint_col) * ceil(smallint_col) from t1', + 'select ceil(tinyint_col) * ceil(tinyint_col) from super', + 'select ceil(tinyint_col) * ceil(tinyint_col) from t1', + 'select ceil(uint_col) * ceil(uint_col) from super', + 'select ceil(uint_col) * ceil(uint_col) from t1', + 'select ceil(ubigint_col) * ceil(ubigint_col) from super', + 'select ceil(ubigint_col) * ceil(ubigint_col) from t1', + 'select ceil(usmallint_col) * ceil(usmallint_col) from super', + 'select ceil(usmallint_col) * ceil(usmallint_col) from t1', + 'select ceil(utinyint_col) * ceil(utinyint_col) from super', + 'select ceil(utinyint_col) * ceil(utinyint_col) from t1', + 'select ceil(count(ts)) from super', + 'select ceil(count(ts)) from t1', + 'select ceil(count(timestamp_col)) from super', + 'select ceil(count(timestamp_col)) from t1', + 'select ceil(count(int_col)) from super', + 'select ceil(count(int_col)) from t1', + 'select ceil(count(bigint_col)) from super', + 'select ceil(count(bigint_col)) from t1', + 'select ceil(count(float_col)) from super', + 'select ceil(count(float_col)) from t1', + 'select ceil(count(double_col)) from super', + 'select ceil(count(double_col)) from t1', + 'select ceil(count(binary_col)) from super', + 'select ceil(count(binary_col)) from t1', + 'select ceil(count(smallint_col)) from super', + 'select ceil(count(smallint_col)) from t1', + 'select ceil(count(tinyint_col)) from super', + 'select ceil(count(tinyint_col)) from t1', + 'select ceil(count(bool_col)) from super', + 'select ceil(count(bool_col)) from t1', + 'select ceil(count(nchar_col)) from super', + 'select ceil(count(nchar_col)) from t1', + 'select ceil(count(uint_col)) from super', + 'select ceil(count(uint_col)) from t1', + 'select ceil(count(ubigint_col)) from super', + 'select ceil(count(ubigint_col)) from t1', + 'select ceil(count(usmallint_col)) from super', + 'select ceil(count(usmallint_col)) from t1', + 'select ceil(count(utinyint_col)) from super', + 'select ceil(count(utinyint_col)) from t1', + 'select ceil(count(timestamp_tag)) from super', + 'select ceil(count(timestamp_tag)) from t1', + 'select ceil(count(int_tag)) from super', + 'select ceil(count(int_tag)) from t1', + 'select ceil(count(bigint_tag)) from super', + 'select ceil(count(bigint_tag)) from t1', + 'select ceil(count(float_tag)) from super', + 'select ceil(count(float_tag)) from t1', + 'select ceil(count(double_tag)) from super', + 'select ceil(count(double_tag)) from t1', + 'select ceil(count(binary_tag)) from super', + 'select ceil(count(binary_tag)) from t1', + 'select ceil(count(smallint_tag)) from super', + 'select ceil(count(smallint_tag)) from t1', + 'select ceil(count(tinyint_tag)) from super', + 'select ceil(count(tinyint_tag)) from t1', + 'select ceil(count(bool_tag)) from super', + 'select ceil(count(bool_tag)) from t1', + 'select ceil(count(nchar_tag)) from super', + 'select ceil(count(nchar_tag)) from t1', + 'select ceil(count(uint_tag)) from super', + 'select ceil(count(uint_tag)) from t1', + 'select ceil(count(ubigint_tag)) from super', + 'select ceil(count(ubigint_tag)) from t1', + 'select ceil(count(usmallint_tag)) from super', + 'select ceil(count(usmallint_tag)) from t1', + 'select ceil(count(utinyint_tag)) from super', + 'select ceil(count(utinyint_tag)) from t1', + 'select ceil(avg(int_col)) from super', + 'select ceil(avg(int_col)) from t1', + 'select ceil(avg(bigint_col)) from super', + 'select ceil(avg(bigint_col)) from t1', + 'select ceil(avg(float_col)) from super', + 'select ceil(avg(float_col)) from t1', + 'select ceil(avg(double_col)) from super', + 'select ceil(avg(double_col)) from t1', + 'select ceil(avg(smallint_col)) from super', + 'select ceil(avg(smallint_col)) from t1', + 'select ceil(avg(tinyint_col)) from super', + 'select ceil(avg(tinyint_col)) from t1', + 'select ceil(avg(uint_col)) from super', + 'select ceil(avg(uint_col)) from t1', + 'select ceil(avg(ubigint_col)) from super', + 'select ceil(avg(ubigint_col)) from t1', + 'select ceil(avg(usmallint_col)) from super', + 'select ceil(avg(usmallint_col)) from t1', + 'select ceil(avg(utinyint_col)) from super', + 'select ceil(avg(utinyint_col)) from t1', + 'select ceil(twa(int_col)) from t1', + 'select ceil(twa(bigint_col)) from t1', + 'select ceil(twa(float_col)) from t1', + 'select ceil(twa(double_col)) from t1', + 'select ceil(twa(smallint_col)) from t1', + 'select ceil(twa(tinyint_col)) from t1', + 'select ceil(twa(uint_col)) from t1', + 'select ceil(twa(ubigint_col)) from t1', + 'select ceil(twa(usmallint_col)) from t1', + 'select ceil(twa(utinyint_col)) from t1', + 'select ceil(sum(int_col)) from super', + 'select ceil(sum(int_col)) from t1', + 'select ceil(sum(bigint_col)) from super', + 'select ceil(sum(bigint_col)) from t1', + 'select ceil(sum(float_col)) from super', + 'select ceil(sum(float_col)) from t1', + 'select ceil(sum(double_col)) from super', + 'select ceil(sum(double_col)) from t1', + 'select ceil(sum(smallint_col)) from super', + 'select ceil(sum(smallint_col)) from t1', + 'select ceil(sum(tinyint_col)) from super', + 'select ceil(sum(tinyint_col)) from t1', + 'select ceil(sum(uint_col)) from super', + 'select ceil(sum(uint_col)) from t1', + 'select ceil(sum(ubigint_col)) from super', + 'select ceil(sum(ubigint_col)) from t1', + 'select ceil(sum(usmallint_col)) from super', + 'select ceil(sum(usmallint_col)) from t1', + 'select ceil(sum(utinyint_col)) from super', + 'select ceil(sum(utinyint_col)) from t1', + 'select ceil(stddev(int_col)) from super', + 'select ceil(stddev(int_col)) from t1', + 'select ceil(stddev(bigint_col)) from super', + 'select ceil(stddev(bigint_col)) from t1', + 'select ceil(stddev(float_col)) from super', + 'select ceil(stddev(float_col)) from t1', + 'select ceil(stddev(double_col)) from super', + 'select ceil(stddev(double_col)) from t1', + 'select ceil(stddev(smallint_col)) from super', + 'select ceil(stddev(smallint_col)) from t1', + 'select ceil(stddev(tinyint_col)) from super', + 'select ceil(stddev(tinyint_col)) from t1', + 'select ceil(stddev(uint_col)) from super', + 'select ceil(stddev(uint_col)) from t1', + 'select ceil(stddev(ubigint_col)) from super', + 'select ceil(stddev(ubigint_col)) from t1', + 'select ceil(stddev(usmallint_col)) from super', + 'select ceil(stddev(usmallint_col)) from t1', + 'select ceil(stddev(utinyint_col)) from super', + 'select ceil(stddev(utinyint_col)) from t1', + 'select ceil(irate(int_col)) from t1', + 'select ceil(irate(bigint_col)) from t1', + 'select ceil(irate(float_col)) from t1', + 'select ceil(irate(double_col)) from t1', + 'select ceil(irate(smallint_col)) from t1', + 'select ceil(irate(tinyint_col)) from t1', + 'select ceil(irate(uint_col)) from t1', + 'select ceil(irate(ubigint_col)) from t1', + 'select ceil(irate(usmallint_col)) from t1', + 'select ceil(irate(utinyint_col)) from t1', + 'select ceil(min(int_col)) from super', + 'select ceil(min(int_col)) from t1', + 'select ceil(min(bigint_col)) from super', + 'select ceil(min(bigint_col)) from t1', + 'select ceil(min(float_col)) from super', + 'select ceil(min(float_col)) from t1', + 'select ceil(min(double_col)) from super', + 'select ceil(min(double_col)) from t1', + 'select ceil(min(smallint_col)) from super', + 'select ceil(min(smallint_col)) from t1', + 'select ceil(min(tinyint_col)) from super', + 'select ceil(min(tinyint_col)) from t1', + 'select ceil(min(uint_col)) from super', + 'select ceil(min(uint_col)) from t1', + 'select ceil(min(ubigint_col)) from super', + 'select ceil(min(ubigint_col)) from t1', + 'select ceil(min(usmallint_col)) from super', + 'select ceil(min(usmallint_col)) from t1', + 'select ceil(min(utinyint_col)) from super', + 'select ceil(min(utinyint_col)) from t1', + 'select ceil(max(int_col)) from super', + 'select ceil(max(int_col)) from t1', + 'select ceil(max(bigint_col)) from super', + 'select ceil(max(bigint_col)) from t1', + 'select ceil(max(float_col)) from super', + 'select ceil(max(float_col)) from t1', + 'select ceil(max(double_col)) from super', + 'select ceil(max(double_col)) from t1', + 'select ceil(max(smallint_col)) from super', + 'select ceil(max(smallint_col)) from t1', + 'select ceil(max(tinyint_col)) from super', + 'select ceil(max(tinyint_col)) from t1', + 'select ceil(max(uint_col)) from super', + 'select ceil(max(uint_col)) from t1', + 'select ceil(max(ubigint_col)) from super', + 'select ceil(max(ubigint_col)) from t1', + 'select ceil(max(usmallint_col)) from super', + 'select ceil(max(usmallint_col)) from t1', + 'select ceil(max(utinyint_col)) from super', + 'select ceil(max(utinyint_col)) from t1', + 'select ceil(first(int_col)) from super', + 'select ceil(first(int_col)) from t1', + 'select ceil(first(bigint_col)) from super', + 'select ceil(first(bigint_col)) from t1', + 'select ceil(first(float_col)) from super', + 'select ceil(first(float_col)) from t1', + 'select ceil(first(double_col)) from super', + 'select ceil(first(double_col)) from t1', + 'select ceil(first(smallint_col)) from super', + 'select ceil(first(smallint_col)) from t1', + 'select ceil(first(tinyint_col)) from super', + 'select ceil(first(tinyint_col)) from t1', + 'select ceil(first(uint_col)) from super', + 'select ceil(first(uint_col)) from t1', + 'select ceil(first(ubigint_col)) from super', + 'select ceil(first(ubigint_col)) from t1', + 'select ceil(first(usmallint_col)) from super', + 'select ceil(first(usmallint_col)) from t1', + 'select ceil(first(utinyint_col)) from super', + 'select ceil(first(utinyint_col)) from t1', + 'select ceil(last(int_col)) from super', + 'select ceil(last(int_col)) from t1', + 'select ceil(last(bigint_col)) from super', + 'select ceil(last(bigint_col)) from t1', + 'select ceil(last(float_col)) from super', + 'select ceil(last(float_col)) from t1', + 'select ceil(last(double_col)) from super', + 'select ceil(last(double_col)) from t1', + 'select ceil(last(smallint_col)) from super', + 'select ceil(last(smallint_col)) from t1', + 'select ceil(last(tinyint_col)) from super', + 'select ceil(last(tinyint_col)) from t1', + 'select ceil(last(uint_col)) from super', + 'select ceil(last(uint_col)) from t1', + 'select ceil(last(ubigint_col)) from super', + 'select ceil(last(ubigint_col)) from t1', + 'select ceil(last(usmallint_col)) from super', + 'select ceil(last(usmallint_col)) from t1', + 'select ceil(last(utinyint_col)) from super', + 'select ceil(last(utinyint_col)) from t1', + 'select ceil(percentile(int_col, 1)) from t1', + 'select ceil(percentile(bigint_col, 1)) from t1', + 'select ceil(percentile(float_col, 1)) from t1', + 'select ceil(percentile(double_col, 1)) from t1', + 'select ceil(percentile(smallint_col, 1)) from t1', + 'select ceil(percentile(tinyint_col, 1)) from t1', + 'select ceil(percentile(uint_col, 1)) from t1', + 'select ceil(percentile(ubigint_col, 1)) from t1', + 'select ceil(percentile(usmallint_col, 1)) from t1', + 'select ceil(percentile(utinyint_col, 1)) from t1', + 'select ceil(apercentile(int_col, 1)) from super', + 'select ceil(apercentile(int_col, 1)) from t1', + 'select ceil(apercentile(bigint_col, 1)) from super', + 'select ceil(apercentile(bigint_col, 1)) from t1', + 'select ceil(apercentile(float_col, 1)) from super', + 'select ceil(apercentile(float_col, 1)) from t1', + 'select ceil(apercentile(double_col, 1)) from super', + 'select ceil(apercentile(double_col, 1)) from t1', + 'select ceil(apercentile(smallint_col, 1)) from super', + 'select ceil(apercentile(smallint_col, 1)) from t1', + 'select ceil(apercentile(tinyint_col, 1)) from super', + 'select ceil(apercentile(tinyint_col, 1)) from t1', + 'select ceil(apercentile(uint_col, 1)) from super', + 'select ceil(apercentile(uint_col, 1)) from t1', + 'select ceil(apercentile(ubigint_col, 1)) from super', + 'select ceil(apercentile(ubigint_col, 1)) from t1', + 'select ceil(apercentile(usmallint_col, 1)) from super', + 'select ceil(apercentile(usmallint_col, 1)) from t1', + 'select ceil(apercentile(utinyint_col, 1)) from super', + 'select ceil(apercentile(utinyint_col, 1)) from t1', + 'select ceil(last_row(int_col)) from super', + 'select ceil(last_row(int_col)) from t1', + 'select ceil(last_row(bigint_col)) from super', + 'select ceil(last_row(bigint_col)) from t1', + 'select ceil(last_row(float_col)) from super', + 'select ceil(last_row(float_col)) from t1', + 'select ceil(last_row(double_col)) from super', + 'select ceil(last_row(double_col)) from t1', + 'select ceil(last_row(smallint_col)) from super', + 'select ceil(last_row(smallint_col)) from t1', + 'select ceil(last_row(tinyint_col)) from super', + 'select ceil(last_row(tinyint_col)) from t1', + 'select ceil(last_row(uint_col)) from super', + 'select ceil(last_row(uint_col)) from t1', + 'select ceil(last_row(ubigint_col)) from super', + 'select ceil(last_row(ubigint_col)) from t1', + 'select ceil(last_row(usmallint_col)) from super', + 'select ceil(last_row(usmallint_col)) from t1', + 'select ceil(last_row(utinyint_col)) from super', + 'select ceil(last_row(utinyint_col)) from t1', + 'select ceil(spread(ts)) from super', + 'select ceil(spread(ts)) from t1', + 'select ceil(spread(timestamp_col)) from super', + 'select ceil(spread(timestamp_col)) from t1', + 'select ceil(spread(int_col)) from super', + 'select ceil(spread(int_col)) from t1', + 'select ceil(spread(bigint_col)) from super', + 'select ceil(spread(bigint_col)) from t1', + 'select ceil(spread(float_col)) from super', + 'select ceil(spread(float_col)) from t1', + 'select ceil(spread(double_col)) from super', + 'select ceil(spread(double_col)) from t1', + 'select ceil(spread(smallint_col)) from super', + 'select ceil(spread(smallint_col)) from t1', + 'select ceil(spread(tinyint_col)) from super', + 'select ceil(spread(tinyint_col)) from t1', + 'select ceil(spread(uint_col)) from super', + 'select ceil(spread(uint_col)) from t1', + 'select ceil(spread(ubigint_col)) from super', + 'select ceil(spread(ubigint_col)) from t1', + 'select ceil(spread(usmallint_col)) from super', + 'select ceil(spread(usmallint_col)) from t1', + 'select ceil(spread(utinyint_col)) from super', + 'select ceil(spread(utinyint_col)) from t1', + 'select ceil(int_col + int_col) from super', + 'select ceil(int_col + int_col) from t1', + 'select ceil(bigint_col + bigint_col) from super', + 'select ceil(bigint_col + bigint_col) from t1', + 'select ceil(float_col + float_col) from super', + 'select ceil(float_col + float_col) from t1', + 'select ceil(double_col + double_col) from super', + 'select ceil(double_col + double_col) from t1', + 'select ceil(smallint_col + smallint_col) from super', + 'select ceil(smallint_col + smallint_col) from t1', + 'select ceil(tinyint_col + tinyint_col) from super', + 'select ceil(tinyint_col + tinyint_col) from t1', + 'select ceil(uint_col + uint_col) from super', + 'select ceil(uint_col + uint_col) from t1', + 'select ceil(ubigint_col + ubigint_col) from super', + 'select ceil(ubigint_col + ubigint_col) from t1', + 'select ceil(usmallint_col + usmallint_col) from super', + 'select ceil(usmallint_col + usmallint_col) from t1', + 'select ceil(utinyint_col + utinyint_col) from super', + 'select ceil(utinyint_col + utinyint_col) from t1', + 'select ceil(int_col - int_col) from super', + 'select ceil(int_col - int_col) from t1', + 'select ceil(bigint_col - bigint_col) from super', + 'select ceil(bigint_col - bigint_col) from t1', + 'select ceil(float_col - float_col) from super', + 'select ceil(float_col - float_col) from t1', + 'select ceil(double_col - double_col) from super', + 'select ceil(double_col - double_col) from t1', + 'select ceil(smallint_col - smallint_col) from super', + 'select ceil(smallint_col - smallint_col) from t1', + 'select ceil(tinyint_col - tinyint_col) from super', + 'select ceil(tinyint_col - tinyint_col) from t1', + 'select ceil(uint_col - uint_col) from super', + 'select ceil(uint_col - uint_col) from t1', + 'select ceil(ubigint_col - ubigint_col) from super', + 'select ceil(ubigint_col - ubigint_col) from t1', + 'select ceil(usmallint_col - usmallint_col) from super', + 'select ceil(usmallint_col - usmallint_col) from t1', + 'select ceil(utinyint_col - utinyint_col) from super', + 'select ceil(utinyint_col - utinyint_col) from t1', + 'select ceil(int_col * int_col) from super', + 'select ceil(int_col * int_col) from t1', + 'select ceil(bigint_col * bigint_col) from super', + 'select ceil(bigint_col * bigint_col) from t1', + 'select ceil(float_col * float_col) from super', + 'select ceil(float_col * float_col) from t1', + 'select ceil(double_col * double_col) from super', + 'select ceil(double_col * double_col) from t1', + 'select ceil(smallint_col * smallint_col) from super', + 'select ceil(smallint_col * smallint_col) from t1', + 'select ceil(tinyint_col * tinyint_col) from super', + 'select ceil(tinyint_col * tinyint_col) from t1', + 'select ceil(uint_col * uint_col) from super', + 'select ceil(uint_col * uint_col) from t1', + 'select ceil(ubigint_col * ubigint_col) from super', + 'select ceil(ubigint_col * ubigint_col) from t1', + 'select ceil(usmallint_col * usmallint_col) from super', + 'select ceil(usmallint_col * usmallint_col) from t1', + 'select ceil(utinyint_col * utinyint_col) from super', + 'select ceil(utinyint_col * utinyint_col) from t1', + 'select ceil(int_col / int_col) from super', + 'select ceil(int_col / int_col) from t1', + 'select ceil(bigint_col / bigint_col) from super', + 'select ceil(bigint_col / bigint_col) from t1', + 'select ceil(float_col / float_col) from super', + 'select ceil(float_col / float_col) from t1', + 'select ceil(double_col / double_col) from super', + 'select ceil(double_col / double_col) from t1', + 'select ceil(smallint_col / smallint_col) from super', + 'select ceil(smallint_col / smallint_col) from t1', + 'select ceil(tinyint_col / tinyint_col) from super', + 'select ceil(tinyint_col / tinyint_col) from t1', + 'select ceil(uint_col / uint_col) from super', + 'select ceil(uint_col / uint_col) from t1', + 'select ceil(ubigint_col / ubigint_col) from super', + 'select ceil(ubigint_col / ubigint_col) from t1', + 'select ceil(usmallint_col / usmallint_col) from super', + 'select ceil(usmallint_col / usmallint_col) from t1', + 'select ceil(utinyint_col / utinyint_col) from super', + 'select ceil(utinyint_col / utinyint_col) from t1', + 'select int_col, ceil(int_col), int_col from super', + 'select int_col, ceil(int_col), int_col from t1', + 'select bigint_col, ceil(bigint_col), bigint_col from super', + 'select bigint_col, ceil(bigint_col), bigint_col from t1', + 'select float_col, ceil(float_col), float_col from super', + 'select float_col, ceil(float_col), float_col from t1', + 'select double_col, ceil(double_col), double_col from super', + 'select double_col, ceil(double_col), double_col from t1', + 'select smallint_col, ceil(smallint_col), smallint_col from super', + 'select smallint_col, ceil(smallint_col), smallint_col from t1', + 'select tinyint_col, ceil(tinyint_col), tinyint_col from super', + 'select tinyint_col, ceil(tinyint_col), tinyint_col from t1', + 'select uint_col, ceil(uint_col), uint_col from super', + 'select uint_col, ceil(uint_col), uint_col from t1', + 'select ubigint_col, ceil(ubigint_col), ubigint_col from super', + 'select ubigint_col, ceil(ubigint_col), ubigint_col from t1', + 'select usmallint_col, ceil(usmallint_col), usmallint_col from super', + 'select usmallint_col, ceil(usmallint_col), usmallint_col from t1', + 'select utinyint_col, ceil(utinyint_col), utinyint_col from super', + 'select utinyint_col, ceil(utinyint_col), utinyint_col from t1', + 'select 1, ceil(int_col), 1 from super', + 'select 1, ceil(int_col), 1 from t1', + 'select 1, ceil(bigint_col), 1 from super', + 'select 1, ceil(bigint_col), 1 from t1', + 'select 1, ceil(float_col), 1 from super', + 'select 1, ceil(float_col), 1 from t1', + 'select 1, ceil(double_col), 1 from super', + 'select 1, ceil(double_col), 1 from t1', + 'select 1, ceil(smallint_col), 1 from super', + 'select 1, ceil(smallint_col), 1 from t1', + 'select 1, ceil(tinyint_col), 1 from super', + 'select 1, ceil(tinyint_col), 1 from t1', + 'select 1, ceil(uint_col), 1 from super', + 'select 1, ceil(uint_col), 1 from t1', + 'select 1, ceil(ubigint_col), 1 from super', + 'select 1, ceil(ubigint_col), 1 from t1', + 'select 1, ceil(usmallint_col), 1 from super', + 'select 1, ceil(usmallint_col), 1 from t1', + 'select 1, ceil(utinyint_col), 1 from super', + 'select 1, ceil(utinyint_col), 1 from t1', + 'select ceil(int_col) as anyName from super', + 'select ceil(int_col) as anyName from t1', + 'select ceil(bigint_col) as anyName from super', + 'select ceil(bigint_col) as anyName from t1', + 'select ceil(float_col) as anyName from super', + 'select ceil(float_col) as anyName from t1', + 'select ceil(double_col) as anyName from super', + 'select ceil(double_col) as anyName from t1', + 'select ceil(smallint_col) as anyName from super', + 'select ceil(smallint_col) as anyName from t1', + 'select ceil(tinyint_col) as anyName from super', + 'select ceil(tinyint_col) as anyName from t1', + 'select ceil(uint_col) as anyName from super', + 'select ceil(uint_col) as anyName from t1', + 'select ceil(ubigint_col) as anyName from super', + 'select ceil(ubigint_col) as anyName from t1', + 'select ceil(usmallint_col) as anyName from super', + 'select ceil(usmallint_col) as anyName from t1', + 'select ceil(utinyint_col) as anyName from super', + 'select ceil(utinyint_col) as anyName from t1'] for s in range(len(select_command)): for f in range(len(from_command)): sql = "select " + select_command[s] + from_command[f] - if (select_command[s] == "ceil(int_col)"\ - or select_command[s] == "ceil(bigint_col)"\ - or select_command[s] == "ceil(smallint_col)" \ - or select_command[s] == "ceil(float_col)"\ - or select_command[s] == "ceil(double_col)"\ - or select_command[s] == "ceil(tinyint_col)"\ - or select_command[s] == "ceil(uint_col)"\ - or select_command[s] == "ceil(ubigint_col)"\ - or select_command[s] == "ceil(usmallint_col)"\ - or select_command[s] == "ceil(utinyint_col)"\ - or select_command[s] == "1, ceil(int_col), 1"\ - or select_command[s] == "1, ceil(bigint_col), 1"\ - or select_command[s] == "1, ceil(float_col), 1"\ - or select_command[s] == "1, ceil(double_col), 1"\ - or select_command[s] == "1, ceil(smallint_col), 1"\ - or select_command[s] == "1, ceil(tinyint_col), 1"\ - or select_command[s] == "1, ceil(uint_col), 1"\ - or select_command[s] == "1, ceil(ubigint_col), 1"\ - or select_command[s] == "1, ceil(usmallint_col), 1"\ - or select_command[s] == "1, ceil(utinyint_col), 1"\ - or select_command[s] == "int_col, ceil(int_col), int_col"\ - or select_command[s] == "bigint_col, ceil(bigint_col), bigint_col"\ - or select_command[s] == "float_col, ceil(float_col), float_col"\ - or select_command[s] == "double_col, ceil(double_col), double_col"\ - or select_command[s] == "smallint_col, ceil(smallint_col), smallint_col"\ - or select_command[s] == "tinyint_col, ceil(tinyint_col), tinyint_col"\ - or select_command[s] == "uint_col, ceil(uint_col), uint_col"\ - or select_command[s] == "ubigint_col, ceil(ubigint_col), ubigint_col"\ - or select_command[s] == "usmallint_col, ceil(usmallint_col), usmallint_col"\ - or select_command[s] == "utinyint_col, ceil(utinyint_col), utinyint_col"\ - or select_command[s] == "ceil(int_col) as anyName"\ - or select_command[s] == "ceil(bigint_col) as anyName"\ - or select_command[s] == "ceil(float_col) as anyName"\ - or select_command[s] == "ceil(double_col) as anyName"\ - or select_command[s] == "ceil(smallint_col) as anyName"\ - or select_command[s] == "ceil(tinyint_col) as anyName"\ - or select_command[s] == "ceil(uint_col) as anyName"\ - or select_command[s] == "ceil(ubigint_col) as anyName"\ - or select_command[s] == "ceil(usmallint_col) as anyName"\ - or select_command[s] == "ceil(utinyint_col) as anyName"\ - or select_command[s] == "ceil(int_col) + ceil(int_col)"\ - or select_command[s] == "ceil(bigint_col) + ceil(bigint_col)"\ - or select_command[s] == "ceil(float_col) + ceil(float_col)"\ - or select_command[s] == "ceil(double_col) + ceil(double_col)"\ - or select_command[s] == "ceil(smallint_col) + ceil(smallint_col)"\ - or select_command[s] == "ceil(tinyint_col) + ceil(tinyint_col)"\ - or select_command[s] == "ceil(uint_col) + ceil(uint_col)"\ - or select_command[s] == "ceil(ubigint_col) + ceil(ubigint_col)"\ - or select_command[s] == "ceil(usmallint_col) + ceil(usmallint_col)"\ - or select_command[s] == "ceil(utinyint_col) + ceil(utinyint_col)"\ - or select_command[s] == "ceil(int_col) + ceil(int_col)"\ - or select_command[s] == "ceil(bigint_col) + ceil(bigint_col)"\ - or select_command[s] == "ceil(float_col) + ceil(float_col)"\ - or select_command[s] == "ceil(double_col) + ceil(double_col)"\ - or select_command[s] == "ceil(smallint_col) + ceil(smallint_col)"\ - or select_command[s] == "ceil(tinyint_col) + ceil(tinyint_col)"\ - or select_command[s] == "ceil(uint_col) + ceil(uint_col)"\ - or select_command[s] == "ceil(ubigint_col) + ceil(ubigint_col)"\ - or select_command[s] == "ceil(usmallint_col) + ceil(usmallint_col)"\ - or select_command[s] == "ceil(utinyint_col) + cei(utinyint_col)"\ - or select_command[s] == "ceil(int_col) - ceil(int_col)"\ - or select_command[s] == "ceil(bigint_col) - ceil(bigint_col)"\ - or select_command[s] == "ceil(float_col) - ceil(float_col)"\ - or select_command[s] == "ceil(double_col) - ceil(double_col)"\ - or select_command[s] == "ceil(smallint_col) - ceil(smallint_col)"\ - or select_command[s] == "ceil(tinyint_col) - ceil(tinyint_col)"\ - or select_command[s] == "ceil(uint_col) - ceil(uint_col)"\ - or select_command[s] == "ceil(ubigint_col) - ceil(ubigint_col)"\ - or select_command[s] == "ceil(usmallint_col) - ceil(usmallint_col)"\ - or select_command[s] == "ceil(utinyint_col) - ceil(utinyint_col)"\ - or select_command[s] == "ceil(int_col) * ceil(int_col)"\ - or select_command[s] == "ceil(bigint_col) * ceil(bigint_col)"\ - or select_command[s] == "ceil(float_col) * ceil(float_col)"\ - or select_command[s] == "ceil(double_col) * ceil(double_col)"\ - or select_command[s] == "ceil(smallint_col) * ceil(smallint_col)"\ - or select_command[s] == "ceil(tinyint_col) * ceil(tinyint_col)"\ - or select_command[s] == "ceil(uint_col) * ceil(uint_col)"\ - or select_command[s] == "ceil(ubigint_col) * ceil(ubigint_col)"\ - or select_command[s] == "ceil(usmallint_col) * ceil(usmallint_col)"\ - or select_command[s] == "ceil(utinyint_col) * ceil(utinyint_col)"\ - or select_command[s] == "ceil(int_col) / ceil(int_col)"\ - or select_command[s] == "ceil(bigint_col) / ceil(bigint_col)"\ - or select_command[s] == "ceil(float_col) / ceil(float_col)"\ - or select_command[s] == "ceil(double_col) / ceil(double_col)"\ - or select_command[s] == "ceil(smallint_col) / ceil(smallint_col)"\ - or select_command[s] == "ceil(tinyint_col) / ceil(tinyint_col)"\ - or select_command[s] == "ceil(uint_col) / ceil(uint_col)"\ - or select_command[s] == "ceil(ubigint_col) / ceil(ubigint_col)"\ - or select_command[s] == "ceil(usmallint_col) / ceil(usmallint_col)"\ - or select_command[s] == "ceil(utinyint_col) / ceil(utinyint_col)"): + if sql in shouldPass: tdSql.query(sql) else: tdSql.error(sql) + + shouldPass2 = ['select ceil(super.int_col) from super', + 'select ceil(super.int_col) from super, superb where super.ts = superb.ts and super.int_tag = superb.int_tag', + 'select ceil(super.bigint_col) from super', + 'select ceil(super.bigint_col) from super, superb where super.ts = superb.ts and super.int_tag = superb.int_tag', + 'select ceil(super.float_col) from super', + 'select ceil(super.float_col) from super, superb where super.ts = superb.ts and super.int_tag = superb.int_tag', + 'select ceil(super.double_col) from super', + 'select ceil(super.double_col) from super, superb where super.ts = superb.ts and super.int_tag = superb.int_tag', + 'select ceil(super.smallint_col) from super', + 'select ceil(super.smallint_col) from super, superb where super.ts = superb.ts and super.int_tag = superb.int_tag', + 'select ceil(super.tinyint_col) from super', + 'select ceil(super.tinyint_col) from super, superb where super.ts = superb.ts and super.int_tag = superb.int_tag', + 'select ceil(super.uint_col) from super', + 'select ceil(super.uint_col) from super, superb where super.ts = superb.ts and super.int_tag = superb.int_tag', + 'select ceil(super.ubigint_col) from super', + 'select ceil(super.ubigint_col) from super, superb where super.ts = superb.ts and super.int_tag = superb.int_tag', + 'select ceil(super.usmallint_col) from super', + 'select ceil(super.usmallint_col) from super, superb where super.ts = superb.ts and super.int_tag = superb.int_tag', + 'select ceil(super.utinyint_col) from super', + 'select ceil(super.utinyint_col) from super, superb where super.ts = superb.ts and super.int_tag = superb.int_tag', + 'select ceil(t1.int_col) from t1', + 'select ceil(t1.bigint_col) from t1', + 'select ceil(t1.float_col) from t1', + 'select ceil(t1.double_col) from t1', + 'select ceil(t1.smallint_col) from t1', + 'select ceil(t1.tinyint_col) from t1', + 'select ceil(t1.uint_col) from t1', + 'select ceil(t1.ubigint_col) from t1', + 'select ceil(t1.usmallint_col) from t1', + 'select ceil(t1.utinyint_col) from t1'] for sim in range(len(simple_select_command)): for fr in range(len(advance_from_command)): - for filter in range(len(filter_command)): + for groupby in range(len(filter_command)): for fill in range(len(fill_command)): - sql = "select " + simple_select_command[ - sim] + advance_from_command[fr] + filter_command[ - filter] + fill_command[fill] - if sql == "select ceil(t1.int_col) from t1"\ - or sql == "select ceil(super.int_col) from super"\ - or sql == "select ceil(t1.bigint_col) from t1"\ - or sql == "select ceil(super.bigint_col) from super"\ - or sql == "select ceil(t1.smallint_col) from t1"\ - or sql == "select ceil(super.smallint_col) from super"\ - or sql == "select ceil(t1.tinyint_col) from t1"\ - or sql == "select ceil(super.tinyint_col) from super"\ - or sql == "select ceil(t1.float_col) from t1"\ - or sql == "select ceil(super.float_col) from super"\ - or sql == "select ceil(t1.double_col) from t1"\ - or sql == "select ceil(super.double_col) from super"\ - or sql == "select ceil(t1.uint_col) from t1"\ - or sql == "select ceil(super.uint_col) from super"\ - or sql == "select ceil(t1.ubigint_col) from t1"\ - or sql == "select ceil(super.ubigint_col) from super"\ - or sql == "select ceil(t1.usmallint_col) from t1"\ - or sql == "select ceil(super.usmallint_col) from super"\ - or sql == "select ceil(t1.utinyint_col) from t1"\ - or sql == "select ceil(super.utinyint_col) from super"\ - or sql == "select ceil(super.int_col) from super, superb where super.ts = superb.ts and super.int_tag = superb.int_tag"\ - or sql == "select ceil(super.bigint_col) from super, superb where super.ts = superb.ts and super.int_tag = superb.int_tag"\ - or sql == "select ceil(super.smallint_col) from super, superb where super.ts = superb.ts and super.int_tag = superb.int_tag"\ - or sql == "select ceil(super.tinyint_col) from super, superb where super.ts = superb.ts and super.int_tag = superb.int_tag"\ - or sql == "select ceil(super.float_col) from super, superb where super.ts = superb.ts and super.int_tag = superb.int_tag"\ - or sql == "select ceil(super.double_col) from super, superb where super.ts = superb.ts and super.int_tag = superb.int_tag"\ - or sql == "select ceil(super.uint_col) from super, superb where super.ts = superb.ts and super.int_tag = superb.int_tag"\ - or sql == "select ceil(super.ubigint_col) from super, superb where super.ts = superb.ts and super.int_tag = superb.int_tag"\ - or sql == "select ceil(super.usmallint_col) from super, superb where super.ts = superb.ts and super.int_tag = superb.int_tag"\ - or sql == "select ceil(super.utinyint_col) from super, superb where super.ts = superb.ts and super.int_tag = superb.int_tag": + sql = "select " + simple_select_command[sim] + advance_from_command[fr] + filter_command[groupby] + fill_command[fill] + if sql in shouldPass2: tdSql.query(sql) else: tdSql.error(sql)