diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index 1f1e329cd1660cc06c790de76e511bcb2c1fa06a..c72a7a772f3f7fb49b5d0249ed927fff32fb6f9b 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -7061,6 +7061,7 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { const char* msg24 = "invalid binary/nchar column length"; const char* msg25 = "json type error, should be string"; + const char* msg26 = "illegal value or data overflow"; int32_t code = TSDB_CODE_SUCCESS; @@ -7225,7 +7226,19 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { if (IS_VAR_DATA_TYPE(pTagsSchema->type) && (pItem->pVar.nLen > pTagsSchema->bytes)) { return invalidOperationMsg(pMsg, msg14); + } else if (pTagsSchema->type == TSDB_DATA_TYPE_TIMESTAMP) { + STableComInfo tinfo = tscGetTableInfo(pTableMeta); + + if (pItem->pVar.nType == TSDB_DATA_TYPE_BINARY) { + code = convertTimestampStrToInt64(&(pItem->pVar), tinfo.precision); + if (code != TSDB_CODE_SUCCESS) { + return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg26); + } + } else if (pItem->pVar.nType == TSDB_DATA_TYPE_TIMESTAMP) { + pItem->pVar.i64 = convertTimePrecision(pItem->pVar.i64, TSDB_TIME_PRECISION_NANO, tinfo.precision); + } } + SKVRowBuilder kvRowBuilder = {0}; if (pTagsSchema->type == TSDB_DATA_TYPE_JSON) { if (pItem->pVar.nType != TSDB_DATA_TYPE_BINARY && pItem->pVar.nType != TSDB_DATA_TYPE_NULL) {