From c19535c24b8fe23712ac63f2c30ba554c627cb6f Mon Sep 17 00:00:00 2001 From: Ganlin Zhao Date: Wed, 29 Sep 2021 11:31:57 +0800 Subject: [PATCH] [TD-10445]: convert JSON timestamp use strtoll instead strtod in cJSON lib to prevent inaccurate presicion issue --- src/client/src/tscParseOpenTSDB.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/client/src/tscParseOpenTSDB.c b/src/client/src/tscParseOpenTSDB.c index 39301f1189..164e3affb2 100644 --- a/src/client/src/tscParseOpenTSDB.c +++ b/src/client/src/tscParseOpenTSDB.c @@ -492,7 +492,7 @@ static int32_t parseTimestampFromJSONObj(cJSON *root, int64_t *tsVal, SSmlLinesI return TSDB_CODE_TSC_INVALID_JSON; } - *tsVal = value->valueint; + *tsVal = strtoll(value->numberstring, NULL, 10); //if timestamp value is 0 use current system time if (*tsVal == 0) { *tsVal = taosGetTimestampNs(); @@ -540,7 +540,8 @@ static int32_t parseTimestampFromJSON(cJSON *root, TAOS_SML_KV **pTS, int *num_k if (timestamp->valueint == 0) { tsVal = taosGetTimestampNs(); } else { - tsVal = convertTimePrecision(timestamp->valueint, TSDB_TIME_PRECISION_MICRO, TSDB_TIME_PRECISION_NANO); + tsVal = strtoll(timestamp->numberstring, NULL, 10); + tsVal = convertTimePrecision(tsVal, TSDB_TIME_PRECISION_MICRO, TSDB_TIME_PRECISION_NANO); } } else if (cJSON_IsObject(timestamp)) { int32_t ret = parseTimestampFromJSONObj(timestamp, &tsVal, info); -- GitLab