From c71ccfc8e044363af3eb2293839357a48da1834a Mon Sep 17 00:00:00 2001 From: lihui Date: Mon, 30 Mar 2020 15:49:46 +0800 Subject: [PATCH] [merge master to develop] --- src/client/src/tscParseInsert.c | 10 ++++-- src/inc/sdb.h | 2 +- src/sdb/inc/sdbint.h | 2 +- src/sdb/src/sdbEngine.c | 2 +- src/system/detail/src/mgmtShell.c | 51 ++++++++++++++++--------------- src/util/src/tcompression.c | 4 +-- 6 files changed, 38 insertions(+), 33 deletions(-) diff --git a/src/client/src/tscParseInsert.c b/src/client/src/tscParseInsert.c index b0d5a58bcf..4b6cdde34f 100644 --- a/src/client/src/tscParseInsert.c +++ b/src/client/src/tscParseInsert.c @@ -254,7 +254,9 @@ int32_t tsParseOneColumnData(SSchema *pSchema, SSQLToken *pToken, char *payload, if (pToken->type == TK_NULL) { *((int32_t *)payload) = TSDB_DATA_FLOAT_NULL; } else if ((pToken->type == TK_STRING) && (pToken->n != 0) && - (strncasecmp(TSDB_DATA_NULL_STR_L, pToken->z, pToken->n) == 0)) { + ((strncasecmp(TSDB_DATA_NULL_STR_L, pToken->z, pToken->n) == 0) + || (strncasecmp("nan", pToken->z, pToken->n) == 0) + || (strncasecmp("-nan", pToken->z, pToken->n) == 0))) { *((int32_t *)payload) = TSDB_DATA_FLOAT_NULL; } else { double dv; @@ -278,8 +280,10 @@ int32_t tsParseOneColumnData(SSchema *pSchema, SSQLToken *pToken, char *payload, case TSDB_DATA_TYPE_DOUBLE: if (pToken->type == TK_NULL) { *((int64_t *)payload) = TSDB_DATA_DOUBLE_NULL; - } else if ((pToken->type == TK_STRING) && (pToken->n != 0) && - (strncasecmp(TSDB_DATA_NULL_STR_L, pToken->z, pToken->n) == 0)) { + } else if ((pToken->type == TK_STRING) && (pToken->n != 0) && + ((strncasecmp(TSDB_DATA_NULL_STR_L, pToken->z, pToken->n) == 0) + || (strncasecmp("nan", pToken->z, pToken->n) == 0) + || (strncasecmp("-nan", pToken->z, pToken->n) == 0))) { *((int64_t *)payload) = TSDB_DATA_DOUBLE_NULL; } else { double dv; diff --git a/src/inc/sdb.h b/src/inc/sdb.h index a0e0a1b2f2..389aecfb7b 100644 --- a/src/inc/sdb.h +++ b/src/inc/sdb.h @@ -105,7 +105,7 @@ extern SSdbPeer *sdbPeer[]; #endif -void *sdbOpenTable(int maxRows, int32_t maxRowSize, char *name, uint8_t keyType, char *directory, +void *sdbOpenTable(int maxRows, int32_t maxRowSize, char *name, char keyType, char *directory, void *(*appTool)(char, void *, char *, int, int *)); void *sdbGetRow(void *handle, void *key); diff --git a/src/sdb/inc/sdbint.h b/src/sdb/inc/sdbint.h index c5b4f4e4ae..3327c1f731 100644 --- a/src/sdb/inc/sdbint.h +++ b/src/sdb/inc/sdbint.h @@ -127,7 +127,7 @@ typedef struct { } SMnodeStatus; typedef struct { - uint8_t dbId; + char dbId; char type; uint64_t version; short dataLen; diff --git a/src/sdb/src/sdbEngine.c b/src/sdb/src/sdbEngine.c index b33031dfb5..09576ab687 100644 --- a/src/sdb/src/sdbEngine.c +++ b/src/sdb/src/sdbEngine.c @@ -289,7 +289,7 @@ sdb_exit1: return -1; } -void *sdbOpenTable(int maxRows, int32_t maxRowSize, char *name, uint8_t keyType, char *directory, +void *sdbOpenTable(int maxRows, int32_t maxRowSize, char *name, char keyType, char *directory, void *(*appTool)(char, void *, char *, int, int *)) { SSdbTable *pTable = (SSdbTable *)malloc(sizeof(SSdbTable)); if (pTable == NULL) return NULL; diff --git a/src/system/detail/src/mgmtShell.c b/src/system/detail/src/mgmtShell.c index e617b4b45c..2300cdaddc 100644 --- a/src/system/detail/src/mgmtShell.c +++ b/src/system/detail/src/mgmtShell.c @@ -1332,36 +1332,37 @@ _rsp: pRsp = (STaosRsp *)pMsg; pRsp->code = code; pMsg += sizeof(STaosRsp); - + pConnectRsp = (SConnectRsp *)pRsp->more; - sprintf(pConnectRsp->acctId, "%x", pConn->pAcct->acctId); - strcpy(pConnectRsp->version, version); - pConnectRsp->writeAuth = pConn->writeAuth; - pConnectRsp->superAuth = pConn->superAuth; - pMsg += sizeof(SConnectRsp); - - int size; - if (pSdbPublicIpList != NULL && pSdbIpList != NULL) { - size = pSdbPublicIpList->numOfIps * 4 + sizeof(SIpList); - if (pConn->usePublicIp) { - memcpy(pMsg, pSdbPublicIpList, size); + + if (code == 0) { + sprintf(pConnectRsp->acctId, "%x", pConn->pAcct->acctId); + strcpy(pConnectRsp->version, version); + pConnectRsp->writeAuth = pConn->writeAuth; + pConnectRsp->superAuth = pConn->superAuth; + pMsg += sizeof(SConnectRsp); + + int size; + if (pSdbPublicIpList != NULL && pSdbIpList != NULL) { + size = pSdbPublicIpList->numOfIps * 4 + sizeof(SIpList); + if (pConn->usePublicIp) { + memcpy(pMsg, pSdbPublicIpList, size); + } else { + memcpy(pMsg, pSdbIpList, size); + } } else { - memcpy(pMsg, pSdbIpList, size); + SIpList tmpIpList; + tmpIpList.numOfIps = 0; + size = tmpIpList.numOfIps * 4 + sizeof(SIpList); + memcpy(pMsg, &tmpIpList, size); } - } else { - SIpList tmpIpList; - tmpIpList.numOfIps = 0; - size = tmpIpList.numOfIps * 4 + sizeof(SIpList); - memcpy(pMsg, &tmpIpList, size); - } - - pMsg += size; - // set the time resolution: millisecond or microsecond - *((uint32_t *)pMsg) = tsTimePrecision; - pMsg += sizeof(uint32_t); + pMsg += size; - if (code != 0) { + // set the time resolution: millisecond or microsecond + *((uint32_t *)pMsg) = tsTimePrecision; + pMsg += sizeof(uint32_t); + } else { pConnectRsp->writeAuth = 0; pConnectRsp->superAuth = 0; pConn->pAcct = NULL; diff --git a/src/util/src/tcompression.c b/src/util/src/tcompression.c index 0f0c7bed34..3037d1bba7 100644 --- a/src/util/src/tcompression.c +++ b/src/util/src/tcompression.c @@ -769,7 +769,7 @@ int tsDecompressTimestampImp(const char *const input, const int nelements, char delta_of_delta = 0; } else { if (is_bigendian()) { - memcpy(&dd1 + LONG_BYTES - nbytes, input + ipos, nbytes); + memcpy(((char *)(&dd1)) + LONG_BYTES - nbytes, input + ipos, nbytes); } else { memcpy(&dd1, input + ipos, nbytes); } @@ -794,7 +794,7 @@ int tsDecompressTimestampImp(const char *const input, const int nelements, char delta_of_delta = 0; } else { if (is_bigendian()) { - memcpy(&dd2 + LONG_BYTES - nbytes, input + ipos, nbytes); + memcpy(((char *)(&dd2)) + LONG_BYTES - nbytes, input + ipos, nbytes); } else { memcpy(&dd2, input + ipos, nbytes); } -- GitLab