diff --git a/src/common/inc/texpr.h b/src/common/inc/texpr.h index 60c1562a8ed0957e1aafa990a5edde3840bdd85e..df5dba3157b4025ac67b232386d7a855c330bcbc 100644 --- a/src/common/inc/texpr.h +++ b/src/common/inc/texpr.h @@ -71,7 +71,8 @@ struct SSchema; #define TSDB_FUNC_SCALAR_TO_ISO8601 (TSDB_FUNC_FLAG_SCALAR | 0x0015) #define TSDB_FUNC_SCALAR_TO_UNIXTIMESTAMP (TSDB_FUNC_FLAG_SCALAR | 0x0016) #define TSDB_FUNC_SCALAR_TIMETRUNCATE (TSDB_FUNC_FLAG_SCALAR | 0x0017) -#define TSDB_FUNC_SCALAR_MAX_NUM 24 +#define TSDB_FUNC_SCALAR_TIMEDIFF (TSDB_FUNC_FLAG_SCALAR | 0x0018) +#define TSDB_FUNC_SCALAR_MAX_NUM 25 #define TSDB_FUNC_SCALAR_NAME_MAX_LEN 16 diff --git a/src/common/src/texpr.c b/src/common/src/texpr.c index cdb13edb08962eed700258f10aa2d476dac75c9d..8593da960b83946271aa9c359cd8ae252155fbde 100644 --- a/src/common/src/texpr.c +++ b/src/common/src/texpr.c @@ -84,7 +84,8 @@ int32_t exprTreeValidateFunctionNode(char* msgbuf, tExprNode *pExpr) { case TSDB_FUNC_SCALAR_TIMEZONE: case TSDB_FUNC_SCALAR_TO_ISO8601: case TSDB_FUNC_SCALAR_TO_UNIXTIMESTAMP: - case TSDB_FUNC_SCALAR_TIMETRUNCATE: { + case TSDB_FUNC_SCALAR_TIMETRUNCATE: + case TSDB_FUNC_SCALAR_TIMEDIFF: { return exprValidateTimeNode(msgbuf, pExpr); } @@ -1424,6 +1425,9 @@ int32_t exprValidateTimeNode(char *msgbuf, tExprNode *pExpr) { pExpr->resultBytes = (int16_t)tDataTypes[TSDB_DATA_TYPE_TIMESTAMP].bytes; break; } + case TSDB_FUNC_SCALAR_TIMEDIFF: { + break; + } default: { assert(false); break; @@ -2124,6 +2128,9 @@ void vectorTimeFunc(int16_t functionId, tExprOperandInfo *pInputs, int32_t numIn break; } + case TSDB_FUNC_SCALAR_TIMEDIFF: { + break; + } default: { assert(false); break; @@ -2262,4 +2269,9 @@ tScalarFunctionInfo aScalarFunctions[] = { "timetruncate", vectorTimeFunc }, + { + TSDB_FUNC_SCALAR_TIMEDIFF, + "timediff", + vectorTimeFunc + }, };