From 1b2fe38f75e51faa9a748b8f25975565245527d7 Mon Sep 17 00:00:00 2001 From: Benguang Zhao Date: Thu, 20 Apr 2023 16:22:16 +0800 Subject: [PATCH 01/14] enh: improve logging msg in metaSnapWrite --- include/util/tutil.h | 2 ++ source/dnode/vnode/src/meta/metaSnapshot.c | 7 +++-- source/dnode/vnode/src/meta/metaTable.c | 35 +++++++++++++++------- 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/include/util/tutil.h b/include/util/tutil.h index e0801e5295..c3eff5cde3 100644 --- a/include/util/tutil.h +++ b/include/util/tutil.h @@ -98,6 +98,8 @@ static FORCE_INLINE int32_t taosGetTbHashVal(const char *tbname, int32_t tblen, goto LABEL; \ } +#define VND_CHECK_CODE(CODE, LINO, LABEL) TSDB_CHECK_CODE(CODE, LINO, LABEL) + #ifdef __cplusplus } #endif diff --git a/source/dnode/vnode/src/meta/metaSnapshot.c b/source/dnode/vnode/src/meta/metaSnapshot.c index 0126d29cc9..56e802d4fb 100644 --- a/source/dnode/vnode/src/meta/metaSnapshot.c +++ b/source/dnode/vnode/src/meta/metaSnapshot.c @@ -187,23 +187,24 @@ _err: int32_t metaSnapWrite(SMetaSnapWriter* pWriter, uint8_t* pData, uint32_t nData) { int32_t code = 0; + int32_t line = 0; SMeta* pMeta = pWriter->pMeta; SMetaEntry metaEntry = {0}; SDecoder* pDecoder = &(SDecoder){0}; tDecoderInit(pDecoder, pData + sizeof(SSnapDataHdr), nData - sizeof(SSnapDataHdr)); code = metaDecodeEntry(pDecoder, &metaEntry); - if (code) goto _err; + VND_CHECK_CODE(code, line, _err); code = metaHandleEntry(pMeta, &metaEntry); - if (code) goto _err; + VND_CHECK_CODE(code, line, _err); tDecoderClear(pDecoder); return code; _err: tDecoderClear(pDecoder); - metaError("vgId:%d, vnode snapshot meta write failed since %s", TD_VID(pMeta->pVnode), tstrerror(code)); + metaError("vgId:%d, vnode snapshot meta write failed since %s at line:%d", TD_VID(pMeta->pVnode), terrstr(), line); return code; } diff --git a/source/dnode/vnode/src/meta/metaTable.c b/source/dnode/vnode/src/meta/metaTable.c index 3325f4055c..8a311b9b80 100644 --- a/source/dnode/vnode/src/meta/metaTable.c +++ b/source/dnode/vnode/src/meta/metaTable.c @@ -2065,40 +2065,52 @@ _exit: } int metaHandleEntry(SMeta *pMeta, const SMetaEntry *pME) { + int32_t code = 0; + int32_t line = 0; metaWLock(pMeta); // save to table.db - if (metaSaveToTbDb(pMeta, pME) < 0) goto _err; + code = metaSaveToTbDb(pMeta, pME); + VND_CHECK_CODE(code, line, _err); // update uid.idx - if (metaUpdateUidIdx(pMeta, pME) < 0) goto _err; + code = metaUpdateUidIdx(pMeta, pME); + VND_CHECK_CODE(code, line, _err); // update name.idx - if (metaUpdateNameIdx(pMeta, pME) < 0) goto _err; + code = metaUpdateNameIdx(pMeta, pME); + VND_CHECK_CODE(code, line, _err); if (pME->type == TSDB_CHILD_TABLE) { // update ctb.idx - if (metaUpdateCtbIdx(pMeta, pME) < 0) goto _err; + code = metaUpdateCtbIdx(pMeta, pME); + VND_CHECK_CODE(code, line, _err); // update tag.idx - if (metaUpdateTagIdx(pMeta, pME) < 0) goto _err; + code = metaUpdateTagIdx(pMeta, pME); + VND_CHECK_CODE(code, line, _err); } else { // update schema.db - if (metaSaveToSkmDb(pMeta, pME) < 0) goto _err; + code = metaSaveToSkmDb(pMeta, pME); + VND_CHECK_CODE(code, line, _err); if (pME->type == TSDB_SUPER_TABLE) { - if (metaUpdateSuidIdx(pMeta, pME) < 0) goto _err; + code = metaUpdateSuidIdx(pMeta, pME); + VND_CHECK_CODE(code, line, _err); } } - if (metaUpdateCtimeIdx(pMeta, pME) < 0) goto _err; + code = metaUpdateCtimeIdx(pMeta, pME); + VND_CHECK_CODE(code, line, _err); if (pME->type == TSDB_NORMAL_TABLE) { - if (metaUpdateNcolIdx(pMeta, pME) < 0) goto _err; + code = metaUpdateNcolIdx(pMeta, pME); + VND_CHECK_CODE(code, line, _err); } if (pME->type != TSDB_SUPER_TABLE) { - if (metaUpdateTtlIdx(pMeta, pME) < 0) goto _err; + code = metaUpdateTtlIdx(pMeta, pME); + VND_CHECK_CODE(code, line, _err); } metaULock(pMeta); @@ -2106,8 +2118,11 @@ int metaHandleEntry(SMeta *pMeta, const SMetaEntry *pME) { _err: metaULock(pMeta); + metaError("vgId:%d, failed to handle meta entry since %s at line:%d, ver:%" PRId64 ", uid:%" PRId64, + TD_VID(pMeta->pVnode), terrstr(), line, pME->version, pME->uid); return -1; } + // refactor later void *metaGetIdx(SMeta *pMeta) { return pMeta->pTagIdx; } void *metaGetIvtIdx(SMeta *pMeta) { return pMeta->pTagIvtIdx; } From 3c5351629939f2b49592686964e35387e4e82059 Mon Sep 17 00:00:00 2001 From: Benguang Zhao Date: Fri, 21 Apr 2023 19:23:46 +0800 Subject: [PATCH 02/14] fix: use tdbTbUpsert for metaUpdate functions --- source/dnode/vnode/src/meta/metaTable.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/source/dnode/vnode/src/meta/metaTable.c b/source/dnode/vnode/src/meta/metaTable.c index 8a311b9b80..2b5bc36acb 100644 --- a/source/dnode/vnode/src/meta/metaTable.c +++ b/source/dnode/vnode/src/meta/metaTable.c @@ -1029,7 +1029,7 @@ int metaUpdateCtimeIdx(SMeta *pMeta, const SMetaEntry *pME) { metaTrace("vgId:%d, start to save version:%" PRId64 " uid:%" PRId64 " ctime:%" PRId64, TD_VID(pMeta->pVnode), pME->version, pME->uid, ctimeKey.ctime); - return tdbTbInsert(pMeta->pCtimeIdx, &ctimeKey, sizeof(ctimeKey), NULL, 0, pMeta->txn); + return tdbTbUpsert(pMeta->pCtimeIdx, &ctimeKey, sizeof(ctimeKey), NULL, 0, pMeta->txn); } int metaDeleteCtimeIdx(SMeta *pMeta, const SMetaEntry *pME) { @@ -1044,7 +1044,7 @@ int metaUpdateNcolIdx(SMeta *pMeta, const SMetaEntry *pME) { if (metaBuildNColIdxKey(&ncolKey, pME) < 0) { return 0; } - return tdbTbInsert(pMeta->pNcolIdx, &ncolKey, sizeof(ncolKey), NULL, 0, pMeta->txn); + return tdbTbUpsert(pMeta->pNcolIdx, &ncolKey, sizeof(ncolKey), NULL, 0, pMeta->txn); } int metaDeleteNcolIdx(SMeta *pMeta, const SMetaEntry *pME) { @@ -1878,24 +1878,24 @@ static int metaUpdateUidIdx(SMeta *pMeta, const SMetaEntry *pME) { } static int metaUpdateSuidIdx(SMeta *pMeta, const SMetaEntry *pME) { - return tdbTbInsert(pMeta->pSuidIdx, &pME->uid, sizeof(tb_uid_t), NULL, 0, pMeta->txn); + return tdbTbUpsert(pMeta->pSuidIdx, &pME->uid, sizeof(tb_uid_t), NULL, 0, pMeta->txn); } static int metaUpdateNameIdx(SMeta *pMeta, const SMetaEntry *pME) { - return tdbTbInsert(pMeta->pNameIdx, pME->name, strlen(pME->name) + 1, &pME->uid, sizeof(tb_uid_t), pMeta->txn); + return tdbTbUpsert(pMeta->pNameIdx, pME->name, strlen(pME->name) + 1, &pME->uid, sizeof(tb_uid_t), pMeta->txn); } static int metaUpdateTtlIdx(SMeta *pMeta, const SMetaEntry *pME) { STtlIdxKey ttlKey = {0}; metaBuildTtlIdxKey(&ttlKey, pME); if (ttlKey.dtime == 0) return 0; - return tdbTbInsert(pMeta->pTtlIdx, &ttlKey, sizeof(ttlKey), NULL, 0, pMeta->txn); + return tdbTbUpsert(pMeta->pTtlIdx, &ttlKey, sizeof(ttlKey), NULL, 0, pMeta->txn); } static int metaUpdateCtbIdx(SMeta *pMeta, const SMetaEntry *pME) { SCtbIdxKey ctbIdxKey = {.suid = pME->ctbEntry.suid, .uid = pME->uid}; - return tdbTbInsert(pMeta->pCtbIdx, &ctbIdxKey, sizeof(ctbIdxKey), pME->ctbEntry.pTags, + return tdbTbUpsert(pMeta->pCtbIdx, &ctbIdxKey, sizeof(ctbIdxKey), pME->ctbEntry.pTags, ((STag *)(pME->ctbEntry.pTags))->len, pMeta->txn); } @@ -2114,12 +2114,14 @@ int metaHandleEntry(SMeta *pMeta, const SMetaEntry *pME) { } metaULock(pMeta); + metaDebug("vgId:%d, handle meta entry, ver:%" PRId64 ", uid:%" PRId64 ", name:%s", TD_VID(pMeta->pVnode), + pME->version, pME->uid, pME->name); return 0; _err: metaULock(pMeta); - metaError("vgId:%d, failed to handle meta entry since %s at line:%d, ver:%" PRId64 ", uid:%" PRId64, - TD_VID(pMeta->pVnode), terrstr(), line, pME->version, pME->uid); + metaError("vgId:%d, failed to handle meta entry since %s at line:%d, ver:%" PRId64 ", uid:%" PRId64 ", name:%s", + TD_VID(pMeta->pVnode), terrstr(), line, pME->version, pME->uid, pME->name); return -1; } From 5c9450856ec3ac70ed0d9a8789445e027c038c73 Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Sun, 23 Apr 2023 00:53:55 +0000 Subject: [PATCH 03/14] fix filter err --- source/libs/index/src/indexFilter.c | 72 ++++++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/source/libs/index/src/indexFilter.c b/source/libs/index/src/indexFilter.c index ec5fc5ad2a..bc86de5aeb 100644 --- a/source/libs/index/src/indexFilter.c +++ b/source/libs/index/src/indexFilter.c @@ -221,6 +221,71 @@ static FORCE_INLINE int32_t sifInitJsonParam(SNode *node, SIFParam *param, SIFCt param->status = SFLT_COARSE_INDEX; return 0; } +static int32_t sifNeedConvertCond(SNode *l, SNode *r) { + if (nodeType(l) != QUERY_NODE_COLUMN || nodeType(r) != QUERY_NODE_VALUE) { + return 0; + } + SColumnNode *c = (SColumnNode *)l; + SValueNode *v = (SValueNode *)r; + int32_t ctype = c->node.resType.type; + int32_t vtype = v->node.resType.type; + if (!IS_VAR_DATA_TYPE(ctype) && IS_VAR_DATA_TYPE(vtype)) { + return 1; + } + return 0; +} +static int32_t sifInitParamValByCol(SNode *r, SNode *l, SIFParam *param, SIFCtx *ctx) { + param->status = SFLT_COARSE_INDEX; + SColumnNode *cn = (SColumnNode *)r; + SValueNode *vn = (SValueNode *)l; + if (vn->typeData == TSDB_DATA_TYPE_NULL && (vn->literal == NULL || strlen(vn->literal) == 0)) { + param->status = SFLT_NOT_INDEX; + return 0; + } + SDataType *pType = &cn->node.resType; + int32_t type = pType->type; + + SDataType *pVType = &vn->node.resType; + int32_t vtype = pVType->type; + char *pData = nodesGetValueFromNode(vn); + int32_t valLen = 0; + char **value = ¶m->condValue; + + if (IS_VAR_DATA_TYPE(type)) { + int32_t dataLen = varDataTLen(pData); + if (type == TSDB_DATA_TYPE_JSON) { + if (*pData == TSDB_DATA_TYPE_NULL) { + dataLen = 0; + } else if (*pData == TSDB_DATA_TYPE_NCHAR) { + dataLen = varDataTLen(pData); + } else if (*pData == TSDB_DATA_TYPE_DOUBLE) { + dataLen = LONG_BYTES; + } else if (*pData == TSDB_DATA_TYPE_BOOL) { + dataLen = CHAR_BYTES; + } + dataLen += CHAR_BYTES; + } + valLen = dataLen; + } else { + valLen = pType->bytes; + } + char *tv = taosMemoryCalloc(1, valLen + 1); + if (tv == NULL) { + return TSDB_CODE_OUT_OF_MEMORY; + } + + memcpy(tv, pData, valLen); + *value = tv; + + param->colId = -1; + param->colValType = (uint8_t)(vn->node.resType.type); + if (vn->literal != NULL && strlen(vn->literal) <= sizeof(param->colName)) { + memcpy(param->colName, vn->literal, strlen(vn->literal)); + } else { + param->status = SFLT_NOT_INDEX; + } + return 0; +} static int32_t sifInitParam(SNode *node, SIFParam *param, SIFCtx *ctx) { param->status = SFLT_COARSE_INDEX; switch (nodeType(node)) { @@ -317,8 +382,13 @@ static int32_t sifInitOperParams(SIFParam **params, SOperatorNode *node, SIFCtx return TSDB_CODE_SUCCESS; } else { SIF_ERR_JRET(sifInitParam(node->pLeft, ¶mList[0], ctx)); + if (nParam > 1) { - SIF_ERR_JRET(sifInitParam(node->pRight, ¶mList[1], ctx)); + if (sifNeedConvertCond(node->pLeft, node->pRight)) { + SIF_ERR_JRET(sifInitParamValByCol(node->pLeft, node->pRight, ¶mList[1], ctx)); + } else { + SIF_ERR_JRET(sifInitParam(node->pRight, ¶mList[1], ctx)); + } // if (paramList[0].colValType == TSDB_DATA_TYPE_JSON && // ((SOperatorNode *)(node))->opType == OP_TYPE_JSON_CONTAINS) { // return TSDB_CODE_OUT_OF_MEMORY; From 3b89aa2085a15c090d10766474a02e1daeb88a4b Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Sun, 23 Apr 2023 02:10:45 +0000 Subject: [PATCH 04/14] fix filter err --- source/libs/index/src/indexFilter.c | 105 +++++++++++++++------------- 1 file changed, 55 insertions(+), 50 deletions(-) diff --git a/source/libs/index/src/indexFilter.c b/source/libs/index/src/indexFilter.c index bc86de5aeb..23751cf26b 100644 --- a/source/libs/index/src/indexFilter.c +++ b/source/libs/index/src/indexFilter.c @@ -477,56 +477,61 @@ static FORCE_INLINE FilterFunc sifGetFilterFunc(EIndexQueryType type, bool *reve static void sifSetFltParam(SIFParam *left, SIFParam *right, SDataTypeBuf *typedata, SMetaFltParam *param) { int8_t ltype = left->colValType, rtype = right->colValType; - if (ltype == TSDB_DATA_TYPE_FLOAT) { - float f = 0; - SIF_DATA_CONVERT(rtype, right->condValue, f); - typedata->f = f; - param->val = &typedata->f; - } else if (ltype == TSDB_DATA_TYPE_DOUBLE) { - double d = 0; - SIF_DATA_CONVERT(rtype, right->condValue, d); - typedata->d = d; - param->val = &typedata->d; - } else if (ltype == TSDB_DATA_TYPE_BIGINT) { - int64_t i64 = 0; - SIF_DATA_CONVERT(rtype, right->condValue, i64); - typedata->i64 = i64; - param->val = &typedata->i64; - } else if (ltype == TSDB_DATA_TYPE_INT) { - int32_t i32 = 0; - SIF_DATA_CONVERT(rtype, right->condValue, i32); - typedata->i32 = i32; - param->val = &typedata->i32; - } else if (ltype == TSDB_DATA_TYPE_SMALLINT) { - int16_t i16 = 0; - SIF_DATA_CONVERT(rtype, right->condValue, i16); - typedata->i16 = i16; - param->val = &typedata->i16; - } else if (ltype == TSDB_DATA_TYPE_TINYINT) { - int8_t i8 = 0; - SIF_DATA_CONVERT(rtype, right->condValue, i8) - typedata->i8 = i8; - param->val = &typedata->i8; - } else if (ltype == TSDB_DATA_TYPE_UBIGINT) { - uint64_t u64 = 0; - SIF_DATA_CONVERT(rtype, right->condValue, u64); - typedata->u64 = u64; - param->val = &typedata->u64; - } else if (ltype == TSDB_DATA_TYPE_UINT) { - uint32_t u32 = 0; - SIF_DATA_CONVERT(rtype, right->condValue, u32); - typedata->u32 = u32; - param->val = &typedata->u32; - } else if (ltype == TSDB_DATA_TYPE_USMALLINT) { - uint16_t u16 = 0; - SIF_DATA_CONVERT(rtype, right->condValue, u16); - typedata->u16 = u16; - param->val = &typedata->u16; - } else if (ltype == TSDB_DATA_TYPE_UTINYINT) { - uint8_t u8 = 0; - SIF_DATA_CONVERT(rtype, right->condValue, u8); - typedata->u8 = u8; - param->val = &typedata->u8; + if (!IS_VAR_DATA_TYPE(ltype) && IS_VAR_DATA_TYPE(rtype)) { + } else if (IS_VAR_DATA_TYPE(ltype) && !IS_VAR_DATA_TYPE(rtype)) { + return; + } else if (!IS_VAR_DATA_TYPE(ltype) && !IS_VAR_DATA_TYPE(rtype)) { + if (ltype == TSDB_DATA_TYPE_FLOAT) { + float f = 0; + SIF_DATA_CONVERT(rtype, right->condValue, f); + typedata->f = f; + param->val = &typedata->f; + } else if (ltype == TSDB_DATA_TYPE_DOUBLE) { + double d = 0; + SIF_DATA_CONVERT(rtype, right->condValue, d); + typedata->d = d; + param->val = &typedata->d; + } else if (ltype == TSDB_DATA_TYPE_BIGINT) { + int64_t i64 = 0; + SIF_DATA_CONVERT(rtype, right->condValue, i64); + typedata->i64 = i64; + param->val = &typedata->i64; + } else if (ltype == TSDB_DATA_TYPE_INT) { + int32_t i32 = 0; + SIF_DATA_CONVERT(rtype, right->condValue, i32); + typedata->i32 = i32; + param->val = &typedata->i32; + } else if (ltype == TSDB_DATA_TYPE_SMALLINT) { + int16_t i16 = 0; + SIF_DATA_CONVERT(rtype, right->condValue, i16); + typedata->i16 = i16; + param->val = &typedata->i16; + } else if (ltype == TSDB_DATA_TYPE_TINYINT) { + int8_t i8 = 0; + SIF_DATA_CONVERT(rtype, right->condValue, i8) + typedata->i8 = i8; + param->val = &typedata->i8; + } else if (ltype == TSDB_DATA_TYPE_UBIGINT) { + uint64_t u64 = 0; + SIF_DATA_CONVERT(rtype, right->condValue, u64); + typedata->u64 = u64; + param->val = &typedata->u64; + } else if (ltype == TSDB_DATA_TYPE_UINT) { + uint32_t u32 = 0; + SIF_DATA_CONVERT(rtype, right->condValue, u32); + typedata->u32 = u32; + param->val = &typedata->u32; + } else if (ltype == TSDB_DATA_TYPE_USMALLINT) { + uint16_t u16 = 0; + SIF_DATA_CONVERT(rtype, right->condValue, u16); + typedata->u16 = u16; + param->val = &typedata->u16; + } else if (ltype == TSDB_DATA_TYPE_UTINYINT) { + uint8_t u8 = 0; + SIF_DATA_CONVERT(rtype, right->condValue, u8); + typedata->u8 = u8; + param->val = &typedata->u8; + } } } static int32_t sifDoIndex(SIFParam *left, SIFParam *right, int8_t operType, SIFParam *output) { From c86f0a331ae2c60783b177ffb484e0469d8e419b Mon Sep 17 00:00:00 2001 From: cadem Date: Sun, 23 Apr 2023 10:23:54 +0800 Subject: [PATCH 05/14] fix:add log for locale setting --- source/os/src/osLocale.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/os/src/osLocale.c b/source/os/src/osLocale.c index 7008c38576..129faaacc8 100644 --- a/source/os/src/osLocale.c +++ b/source/os/src/osLocale.c @@ -171,7 +171,7 @@ void taosGetSystemLocale(char *outLocale, char *outCharset) { strcpy(outLocale, "en_US.UTF-8"); } else { tstrncpy(outLocale, locale, TD_LOCALE_LEN); - // printf("locale not configured, set to system default:%s", outLocale); + printf("locale not configured, set to system default:%s\n", outLocale); } // if user does not specify the charset, extract it from locale From 206887166c2a6698b87ade9c8474312a32345aab Mon Sep 17 00:00:00 2001 From: Xiaoyu Wang Date: Sun, 23 Apr 2023 10:53:28 +0800 Subject: [PATCH 06/14] fix: vnode errcode setting error --- source/dnode/vnode/src/vnd/vnodeSvr.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/dnode/vnode/src/vnd/vnodeSvr.c b/source/dnode/vnode/src/vnd/vnodeSvr.c index b62bf27def..0dfde8f579 100644 --- a/source/dnode/vnode/src/vnd/vnodeSvr.c +++ b/source/dnode/vnode/src/vnd/vnodeSvr.c @@ -1348,6 +1348,7 @@ static int32_t vnodeProcessSubmitReq(SVnode *pVnode, int64_t version, void *pReq code = terrno; goto _exit; } + terrno = 0; pSubmitTbData->uid = pSubmitTbData->pCreateTbReq->uid; // update uid if table exist for using below } } From da2ca889f28808569ef23b0c567b59416524741e Mon Sep 17 00:00:00 2001 From: kailixu Date: Sun, 23 Apr 2023 14:42:24 +0800 Subject: [PATCH 07/14] fix: release resources if node open/start failed --- source/dnode/mgmt/node_mgmt/src/dmNodes.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/dnode/mgmt/node_mgmt/src/dmNodes.c b/source/dnode/mgmt/node_mgmt/src/dmNodes.c index 16931ab6df..8c1e6e745c 100644 --- a/source/dnode/mgmt/node_mgmt/src/dmNodes.c +++ b/source/dnode/mgmt/node_mgmt/src/dmNodes.c @@ -107,6 +107,9 @@ static int32_t dmStartNodes(SDnode *pDnode) { dError("node:%s, failed to start since %s", pWrapper->name, terrstr()); return -1; } + if(ntype == VNODE) { + return -1; + } } dInfo("The daemon initialized successfully"); @@ -132,11 +135,14 @@ int32_t dmRunDnode(SDnode *pDnode) { int32_t count = 0; if (dmOpenNodes(pDnode) != 0) { dError("failed to open nodes since %s", terrstr()); + dmCloseNodes(pDnode); return -1; } if (dmStartNodes(pDnode) != 0) { dError("failed to start nodes since %s", terrstr()); + dmStopNodes(pDnode); + dmCloseNodes(pDnode); return -1; } From ebb1d83a3e21a7584fd09af37cd8773390075a66 Mon Sep 17 00:00:00 2001 From: kailixu Date: Sun, 23 Apr 2023 14:43:26 +0800 Subject: [PATCH 08/14] chore: remove ut code --- source/dnode/mgmt/node_mgmt/src/dmNodes.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/source/dnode/mgmt/node_mgmt/src/dmNodes.c b/source/dnode/mgmt/node_mgmt/src/dmNodes.c index 8c1e6e745c..df2a17a219 100644 --- a/source/dnode/mgmt/node_mgmt/src/dmNodes.c +++ b/source/dnode/mgmt/node_mgmt/src/dmNodes.c @@ -107,9 +107,6 @@ static int32_t dmStartNodes(SDnode *pDnode) { dError("node:%s, failed to start since %s", pWrapper->name, terrstr()); return -1; } - if(ntype == VNODE) { - return -1; - } } dInfo("The daemon initialized successfully"); From f31e2b9cb420723c7900e88a48b01fdba9433ebe Mon Sep 17 00:00:00 2001 From: kailixu Date: Sun, 23 Apr 2023 14:56:06 +0800 Subject: [PATCH 09/14] chore: more code --- source/dnode/mgmt/node_mgmt/src/dmNodes.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/dnode/mgmt/node_mgmt/src/dmNodes.c b/source/dnode/mgmt/node_mgmt/src/dmNodes.c index df2a17a219..19d5e06c5b 100644 --- a/source/dnode/mgmt/node_mgmt/src/dmNodes.c +++ b/source/dnode/mgmt/node_mgmt/src/dmNodes.c @@ -138,6 +138,7 @@ int32_t dmRunDnode(SDnode *pDnode) { if (dmStartNodes(pDnode) != 0) { dError("failed to start nodes since %s", terrstr()); + dmSetStatus(pDnode, DND_STAT_STOPPED); dmStopNodes(pDnode); dmCloseNodes(pDnode); return -1; From 072eb2e8188f21240819814ced823e1701c4ec1b Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Sun, 23 Apr 2023 15:04:19 +0800 Subject: [PATCH 10/14] fix: taosbenchmark rest socket in stb section for main (#21020) --- cmake/taostools_CMakeLists.txt.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/taostools_CMakeLists.txt.in b/cmake/taostools_CMakeLists.txt.in index 4838e97dd7..d9d2f12069 100644 --- a/cmake/taostools_CMakeLists.txt.in +++ b/cmake/taostools_CMakeLists.txt.in @@ -2,7 +2,7 @@ # taos-tools ExternalProject_Add(taos-tools GIT_REPOSITORY https://github.com/taosdata/taos-tools.git - GIT_TAG ffc2e6f + GIT_TAG 4378702 SOURCE_DIR "${TD_SOURCE_DIR}/tools/taos-tools" BINARY_DIR "" #BUILD_IN_SOURCE TRUE From 4291cfda21db3740bcb23faeaf7935734bc93a4e Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Sun, 23 Apr 2023 07:18:23 +0000 Subject: [PATCH 11/14] fix filter err --- source/libs/index/src/indexFilter.c | 207 +++++++++++++++++++--------- tests/script/tsim/tag/bigint.sim | 11 ++ tests/script/tsim/tag/double.sim | 9 ++ tests/script/tsim/tag/int.sim | 10 ++ tests/script/tsim/tag/int_float.sim | 12 ++ tests/script/tsim/tag/tinyint.sim | 22 +++ 6 files changed, 207 insertions(+), 64 deletions(-) diff --git a/source/libs/index/src/indexFilter.c b/source/libs/index/src/indexFilter.c index 23751cf26b..f1a32a578a 100644 --- a/source/libs/index/src/indexFilter.c +++ b/source/libs/index/src/indexFilter.c @@ -384,11 +384,11 @@ static int32_t sifInitOperParams(SIFParam **params, SOperatorNode *node, SIFCtx SIF_ERR_JRET(sifInitParam(node->pLeft, ¶mList[0], ctx)); if (nParam > 1) { - if (sifNeedConvertCond(node->pLeft, node->pRight)) { - SIF_ERR_JRET(sifInitParamValByCol(node->pLeft, node->pRight, ¶mList[1], ctx)); - } else { - SIF_ERR_JRET(sifInitParam(node->pRight, ¶mList[1], ctx)); - } + // if (sifNeedConvertCond(node->pLeft, node->pRight)) { + // SIF_ERR_JRET(sifInitParamValByCol(node->pLeft, node->pRight, ¶mList[1], ctx)); + // } else { + SIF_ERR_JRET(sifInitParam(node->pRight, ¶mList[1], ctx)); + // } // if (paramList[0].colValType == TSDB_DATA_TYPE_JSON && // ((SOperatorNode *)(node))->opType == OP_TYPE_JSON_CONTAINS) { // return TSDB_CODE_OUT_OF_MEMORY; @@ -474,65 +474,144 @@ static FORCE_INLINE FilterFunc sifGetFilterFunc(EIndexQueryType type, bool *reve } return NULL; } - -static void sifSetFltParam(SIFParam *left, SIFParam *right, SDataTypeBuf *typedata, SMetaFltParam *param) { - int8_t ltype = left->colValType, rtype = right->colValType; - if (!IS_VAR_DATA_TYPE(ltype) && IS_VAR_DATA_TYPE(rtype)) { - } else if (IS_VAR_DATA_TYPE(ltype) && !IS_VAR_DATA_TYPE(rtype)) { - return; - } else if (!IS_VAR_DATA_TYPE(ltype) && !IS_VAR_DATA_TYPE(rtype)) { - if (ltype == TSDB_DATA_TYPE_FLOAT) { - float f = 0; - SIF_DATA_CONVERT(rtype, right->condValue, f); - typedata->f = f; - param->val = &typedata->f; - } else if (ltype == TSDB_DATA_TYPE_DOUBLE) { - double d = 0; - SIF_DATA_CONVERT(rtype, right->condValue, d); - typedata->d = d; - param->val = &typedata->d; - } else if (ltype == TSDB_DATA_TYPE_BIGINT) { - int64_t i64 = 0; - SIF_DATA_CONVERT(rtype, right->condValue, i64); - typedata->i64 = i64; - param->val = &typedata->i64; - } else if (ltype == TSDB_DATA_TYPE_INT) { - int32_t i32 = 0; - SIF_DATA_CONVERT(rtype, right->condValue, i32); - typedata->i32 = i32; - param->val = &typedata->i32; - } else if (ltype == TSDB_DATA_TYPE_SMALLINT) { - int16_t i16 = 0; - SIF_DATA_CONVERT(rtype, right->condValue, i16); - typedata->i16 = i16; - param->val = &typedata->i16; - } else if (ltype == TSDB_DATA_TYPE_TINYINT) { - int8_t i8 = 0; - SIF_DATA_CONVERT(rtype, right->condValue, i8) - typedata->i8 = i8; - param->val = &typedata->i8; - } else if (ltype == TSDB_DATA_TYPE_UBIGINT) { - uint64_t u64 = 0; - SIF_DATA_CONVERT(rtype, right->condValue, u64); - typedata->u64 = u64; - param->val = &typedata->u64; - } else if (ltype == TSDB_DATA_TYPE_UINT) { - uint32_t u32 = 0; - SIF_DATA_CONVERT(rtype, right->condValue, u32); - typedata->u32 = u32; - param->val = &typedata->u32; - } else if (ltype == TSDB_DATA_TYPE_USMALLINT) { - uint16_t u16 = 0; - SIF_DATA_CONVERT(rtype, right->condValue, u16); - typedata->u16 = u16; - param->val = &typedata->u16; - } else if (ltype == TSDB_DATA_TYPE_UTINYINT) { - uint8_t u8 = 0; - SIF_DATA_CONVERT(rtype, right->condValue, u8); - typedata->u8 = u8; - param->val = &typedata->u8; - } +int32_t sifStr2num(char *buf, int8_t type, void *val) { + if (type == TSDB_DATA_TYPE_TINYINT) { + int8_t v = 0; + if (1 != sscanf(buf, "%hhd", &v)) return -1; + *(int8_t *)val = v; + } else if (type == TSDB_DATA_TYPE_SMALLINT) { + int16_t v = 0; + if (1 != sscanf(buf, "%hd", &v)) return -1; + *(int16_t *)val = v; + } else if (type == TSDB_DATA_TYPE_INT) { + int32_t v = 0; + if (1 != sscanf(buf, "%d", &v)) return -1; + *(int32_t *)val = v; + } else if (type == TSDB_DATA_TYPE_BIGINT) { + int64_t v = 0; + if (1 != sscanf(buf, "%" PRId64 "", &v)) return -1; + *(int64_t *)val = v; + } else if (type == TSDB_DATA_TYPE_FLOAT) { + float v = 0; + if (1 != sscanf(buf, "%f", &v)) return -1; + *(float *)val = v; + } else if (type == TSDB_DATA_TYPE_DOUBLE) { + double v = 0; + if (1 != sscanf(buf, "%lf", &v)) return -1; + *(double *)val = v; + } else if (type == TSDB_DATA_TYPE_UBIGINT) { + uint64_t v = 0; + if (1 != sscanf(buf, "%" PRIu64 "", &v)) return -1; + *(uint64_t *)val = v; + } else if (type == TSDB_DATA_TYPE_UINT || type == TSDB_DATA_TYPE_UTINYINT || type == TSDB_DATA_TYPE_USMALLINT) { + uint32_t v = 0; + if (1 != sscanf(buf, "%u", &v)) return -1; + *(uint32_t *)val = v; + } else { + return -1; } + return 0; +} + +static int32_t sifSetFltParam(SIFParam *left, SIFParam *right, SDataTypeBuf *typedata, SMetaFltParam *param) { + int32_t code = 0; + int8_t ltype = left->colValType, rtype = right->colValType; + if (!IS_NUMERIC_TYPE(ltype) || !((IS_NUMERIC_TYPE(rtype)) || rtype == TSDB_DATA_TYPE_VARCHAR)) { + return -1; + } + if (ltype == TSDB_DATA_TYPE_FLOAT) { + float f = 0; + if (IS_NUMERIC_TYPE(rtype)) { + SIF_DATA_CONVERT(rtype, right->condValue, f); + } else { + SIF_ERR_RET(sifStr2num(right->condValue + VARSTR_HEADER_SIZE, TSDB_DATA_TYPE_FLOAT, &f)); + } + typedata->f = f; + param->val = &typedata->f; + } else if (ltype == TSDB_DATA_TYPE_DOUBLE) { + double d = 0; + if (IS_NUMERIC_TYPE(rtype)) { + SIF_DATA_CONVERT(rtype, right->condValue, d); + } else { + SIF_ERR_RET(sifStr2num(right->condValue + VARSTR_HEADER_SIZE, TSDB_DATA_TYPE_DOUBLE, &d)); + } + typedata->d = d; + param->val = &typedata->d; + } else if (ltype == TSDB_DATA_TYPE_BIGINT) { + int64_t i64 = 0; + if (IS_NUMERIC_TYPE(rtype)) { + SIF_DATA_CONVERT(rtype, right->condValue, i64); + } else { + SIF_ERR_RET(sifStr2num(right->condValue + VARSTR_HEADER_SIZE, TSDB_DATA_TYPE_BIGINT, &i64)); + } + typedata->i64 = i64; + param->val = &typedata->i64; + } else if (ltype == TSDB_DATA_TYPE_INT) { + int32_t i32 = 0; + if (IS_NUMERIC_TYPE(rtype)) { + SIF_DATA_CONVERT(rtype, right->condValue, i32); + } else { + SIF_ERR_RET(sifStr2num(right->condValue + VARSTR_HEADER_SIZE, TSDB_DATA_TYPE_INT, &i32)); + } + typedata->i32 = i32; + param->val = &typedata->i32; + } else if (ltype == TSDB_DATA_TYPE_SMALLINT) { + int16_t i16 = 0; + if (IS_NUMERIC_TYPE(rtype)) { + SIF_DATA_CONVERT(rtype, right->condValue, i16); + } else { + SIF_ERR_RET(sifStr2num(right->condValue + VARSTR_HEADER_SIZE, TSDB_DATA_TYPE_SMALLINT, &i16)); + } + + typedata->i16 = i16; + param->val = &typedata->i16; + } else if (ltype == TSDB_DATA_TYPE_TINYINT) { + int8_t i8 = 0; + if (IS_NUMERIC_TYPE(rtype)) { + SIF_DATA_CONVERT(rtype, right->condValue, i8); + } else { + SIF_ERR_RET(sifStr2num(right->condValue + VARSTR_HEADER_SIZE, TSDB_DATA_TYPE_TINYINT, &i8)); + } + typedata->i8 = i8; + param->val = &typedata->i8; + } else if (ltype == TSDB_DATA_TYPE_UBIGINT) { + uint64_t u64 = 0; + if (IS_NUMERIC_TYPE(rtype)) { + SIF_DATA_CONVERT(rtype, right->condValue, u64); + } else { + SIF_ERR_RET(sifStr2num(right->condValue + VARSTR_HEADER_SIZE, TSDB_DATA_TYPE_UBIGINT, &u64)); + } + typedata->u64 = u64; + param->val = &typedata->u64; + } else if (ltype == TSDB_DATA_TYPE_UINT) { + uint32_t u32 = 0; + if (IS_NUMERIC_TYPE(rtype)) { + SIF_DATA_CONVERT(rtype, right->condValue, u32); + } else { + SIF_ERR_RET(sifStr2num(right->condValue + VARSTR_HEADER_SIZE, TSDB_DATA_TYPE_UINT, &u32)); + } + typedata->u32 = u32; + param->val = &typedata->u32; + } else if (ltype == TSDB_DATA_TYPE_USMALLINT) { + uint16_t u16 = 0; + if (IS_NUMERIC_TYPE(rtype)) { + SIF_DATA_CONVERT(rtype, right->condValue, u16); + } else { + SIF_ERR_RET(sifStr2num(right->condValue + VARSTR_HEADER_SIZE, TSDB_DATA_TYPE_USMALLINT, &u16)); + } + typedata->u16 = u16; + param->val = &typedata->u16; + } else if (ltype == TSDB_DATA_TYPE_UTINYINT) { + uint8_t u8 = 0; + if (IS_NUMERIC_TYPE(rtype)) { + SIF_DATA_CONVERT(rtype, right->condValue, u8); + } else { + SIF_ERR_RET(sifStr2num(right->condValue + VARSTR_HEADER_SIZE, TSDB_DATA_TYPE_UTINYINT, &u8)); + } + typedata->u8 = u8; + param->val = &typedata->u8; + } + return 0; } static int32_t sifDoIndex(SIFParam *left, SIFParam *right, int8_t operType, SIFParam *output) { int ret = 0; @@ -573,7 +652,7 @@ static int32_t sifDoIndex(SIFParam *left, SIFParam *right, int8_t operType, SIFP param.val = buf; } } else { - sifSetFltParam(left, right, &typedata, ¶m); + if (sifSetFltParam(left, right, &typedata, ¶m) != 0) return -1; } ret = metaFilterTableIds(arg->metaEx, ¶m, output->result); } diff --git a/tests/script/tsim/tag/bigint.sim b/tests/script/tsim/tag/bigint.sim index 26a5addf6a..34fcc09411 100644 --- a/tests/script/tsim/tag/bigint.sim +++ b/tests/script/tsim/tag/bigint.sim @@ -123,6 +123,17 @@ sql select * from $mt where tgcol = 1 if $rows != 100 then return -1 endi + +sql select * from $mt where tgcol = '1' +if $rows != 100 then + return -1 +endi + +sql select * from $mt where tgcol = "1" +if $rows != 100 then + return -1 +endi + sql select * from $mt where tgcol <> 1 if $rows != 100 then return -1 diff --git a/tests/script/tsim/tag/double.sim b/tests/script/tsim/tag/double.sim index fbdf973337..acc026c13d 100644 --- a/tests/script/tsim/tag/double.sim +++ b/tests/script/tsim/tag/double.sim @@ -123,6 +123,15 @@ sql select * from $mt where tgcol = 1 if $rows != 100 then return -1 endi + +sql select * from $mt where tgcol = '1'; +if $rows != 100 then + return -1 +endi +sql select * from $mt where tgcol = "1.0" +if $rows != 100 then + return -1 +endi sql select * from $mt where tgcol <> 1 if $rows != 100 then return -1 diff --git a/tests/script/tsim/tag/int.sim b/tests/script/tsim/tag/int.sim index ac8d31db3b..084b7e74d7 100644 --- a/tests/script/tsim/tag/int.sim +++ b/tests/script/tsim/tag/int.sim @@ -123,6 +123,16 @@ sql select * from $mt where tgcol = 1 if $rows != 100 then return -1 endi + +sql select * from $mt where tgcol = '1' +if $rows != 100 then + return -1 +endi + +sql select * from $mt where tgcol = "1"; +if $rows != 100 then + return -1 +endi sql select * from $mt where tgcol <> 1 if $rows != 100 then return -1 diff --git a/tests/script/tsim/tag/int_float.sim b/tests/script/tsim/tag/int_float.sim index 009629aac9..3034f8b64e 100644 --- a/tests/script/tsim/tag/int_float.sim +++ b/tests/script/tsim/tag/int_float.sim @@ -85,10 +85,22 @@ sql select * from $mt where tgcol <> 1 if $rows != 100 then return -1 endi + sql select * from $mt where tgcol = 1 if $rows != 100 then return -1 endi + +sql select * from $mt where tgcol = '1' +if $rows != 100 then + return -1 +endi + +sql select * from $mt where tgcol = "1" +if $rows != 100 then + return -1 +endi + sql select * from $mt where tgcol <> 1 if $rows != 100 then return -1 diff --git a/tests/script/tsim/tag/tinyint.sim b/tests/script/tsim/tag/tinyint.sim index 8560def34c..89b0134bb3 100644 --- a/tests/script/tsim/tag/tinyint.sim +++ b/tests/script/tsim/tag/tinyint.sim @@ -115,14 +115,36 @@ sql select * from $mt where tgcol = 0 if $rows != 100 then return -1 endi + +sql select * from $mt where tgcol = '0' +if $rows != 100 then + return -1 +endi + +sql select * from $mt where tgcol = "0" +if $rows != 100 then + return -1 +endi sql select * from $mt where tgcol <> 0 if $rows != 100 then return -1 endi + sql select * from $mt where tgcol = 1 if $rows != 100 then return -1 endi +sql select * from $mt where tgcol = "1" +if $rows != 100 then + return -1 +endi + +sql select * from $mt where tgcol = '1' +if $rows != 100 then + return -1 +endi + + sql select * from $mt where tgcol <> 1 if $rows != 100 then return -1 From 03b661061afff591a59ce5a503abe56f621ea2f0 Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Sun, 23 Apr 2023 08:12:36 +0000 Subject: [PATCH 12/14] fix filter err --- source/libs/index/src/indexFilter.c | 88 +++++++++++++++-------------- 1 file changed, 45 insertions(+), 43 deletions(-) diff --git a/source/libs/index/src/indexFilter.c b/source/libs/index/src/indexFilter.c index f1a32a578a..7b49153fab 100644 --- a/source/libs/index/src/indexFilter.c +++ b/source/libs/index/src/indexFilter.c @@ -474,41 +474,41 @@ static FORCE_INLINE FilterFunc sifGetFilterFunc(EIndexQueryType type, bool *reve } return NULL; } -int32_t sifStr2num(char *buf, int8_t type, void *val) { - if (type == TSDB_DATA_TYPE_TINYINT) { - int8_t v = 0; - if (1 != sscanf(buf, "%hhd", &v)) return -1; - *(int8_t *)val = v; - } else if (type == TSDB_DATA_TYPE_SMALLINT) { - int16_t v = 0; - if (1 != sscanf(buf, "%hd", &v)) return -1; - *(int16_t *)val = v; - } else if (type == TSDB_DATA_TYPE_INT) { - int32_t v = 0; - if (1 != sscanf(buf, "%d", &v)) return -1; - *(int32_t *)val = v; - } else if (type == TSDB_DATA_TYPE_BIGINT) { +int32_t sifStr2Num(char *buf, int32_t len, int8_t type, void *val) { + if (IS_SIGNED_NUMERIC_TYPE(type)) { int64_t v = 0; - if (1 != sscanf(buf, "%" PRId64 "", &v)) return -1; - *(int64_t *)val = v; - } else if (type == TSDB_DATA_TYPE_FLOAT) { - float v = 0; - if (1 != sscanf(buf, "%f", &v)) return -1; - *(float *)val = v; - } else if (type == TSDB_DATA_TYPE_DOUBLE) { - double v = 0; - if (1 != sscanf(buf, "%lf", &v)) return -1; - *(double *)val = v; - } else if (type == TSDB_DATA_TYPE_UBIGINT) { + if (0 != toInteger(buf, len, 10, &v)) { + return -1; + } + if (type == TSDB_DATA_TYPE_BIGINT) { + *(int64_t *)val = v; + } else if (type == TSDB_DATA_TYPE_INT) { + *(int32_t *)val = v; + } else if (type == TSDB_DATA_TYPE_TINYINT) { + *(int8_t *)val = v; + } else if (type == TSDB_DATA_TYPE_SMALLINT) { + *(int16_t *)val = v; + } + } else if (IS_FLOAT_TYPE(type)) { + if (type == TSDB_DATA_TYPE_FLOAT) { + *(float *)val = taosStr2Float(buf, NULL); + } else { + *(double *)val = taosStr2Double(buf, NULL); + } + } else if (IS_UNSIGNED_NUMERIC_TYPE(type)) { uint64_t v = 0; - if (1 != sscanf(buf, "%" PRIu64 "", &v)) return -1; - *(uint64_t *)val = v; - } else if (type == TSDB_DATA_TYPE_UINT || type == TSDB_DATA_TYPE_UTINYINT || type == TSDB_DATA_TYPE_USMALLINT) { - uint32_t v = 0; - if (1 != sscanf(buf, "%u", &v)) return -1; - *(uint32_t *)val = v; - } else { - return -1; + if (0 != toUInteger(buf, len, 10, &v)) { + return -1; + } + if (type == TSDB_DATA_TYPE_UBIGINT) { + *(uint64_t *)val = v; + } else if (type == TSDB_DATA_TYPE_UINT) { + *(uint32_t *)val = v; + } else if (type == TSDB_DATA_TYPE_UTINYINT) { + *(uint8_t *)val = v; + } else if (type == TSDB_DATA_TYPE_USMALLINT) { + *(uint16_t *)val = v; + } } return 0; } @@ -524,7 +524,7 @@ static int32_t sifSetFltParam(SIFParam *left, SIFParam *right, SDataTypeBuf *typ if (IS_NUMERIC_TYPE(rtype)) { SIF_DATA_CONVERT(rtype, right->condValue, f); } else { - SIF_ERR_RET(sifStr2num(right->condValue + VARSTR_HEADER_SIZE, TSDB_DATA_TYPE_FLOAT, &f)); + SIF_ERR_RET(sifStr2Num(varDataVal(right->condValue), varDataLen(right->condValue), TSDB_DATA_TYPE_FLOAT, &f)); } typedata->f = f; param->val = &typedata->f; @@ -533,7 +533,7 @@ static int32_t sifSetFltParam(SIFParam *left, SIFParam *right, SDataTypeBuf *typ if (IS_NUMERIC_TYPE(rtype)) { SIF_DATA_CONVERT(rtype, right->condValue, d); } else { - SIF_ERR_RET(sifStr2num(right->condValue + VARSTR_HEADER_SIZE, TSDB_DATA_TYPE_DOUBLE, &d)); + SIF_ERR_RET(sifStr2Num(varDataVal(right->condValue), varDataLen(right->condValue), TSDB_DATA_TYPE_DOUBLE, &d)); } typedata->d = d; param->val = &typedata->d; @@ -542,7 +542,7 @@ static int32_t sifSetFltParam(SIFParam *left, SIFParam *right, SDataTypeBuf *typ if (IS_NUMERIC_TYPE(rtype)) { SIF_DATA_CONVERT(rtype, right->condValue, i64); } else { - SIF_ERR_RET(sifStr2num(right->condValue + VARSTR_HEADER_SIZE, TSDB_DATA_TYPE_BIGINT, &i64)); + SIF_ERR_RET(sifStr2Num(varDataVal(right->condValue), varDataLen(right->condValue), TSDB_DATA_TYPE_BIGINT, &i64)); } typedata->i64 = i64; param->val = &typedata->i64; @@ -551,7 +551,7 @@ static int32_t sifSetFltParam(SIFParam *left, SIFParam *right, SDataTypeBuf *typ if (IS_NUMERIC_TYPE(rtype)) { SIF_DATA_CONVERT(rtype, right->condValue, i32); } else { - SIF_ERR_RET(sifStr2num(right->condValue + VARSTR_HEADER_SIZE, TSDB_DATA_TYPE_INT, &i32)); + SIF_ERR_RET(sifStr2Num(varDataVal(right->condValue), varDataLen(right->condValue), TSDB_DATA_TYPE_INT, &i32)); } typedata->i32 = i32; param->val = &typedata->i32; @@ -560,7 +560,8 @@ static int32_t sifSetFltParam(SIFParam *left, SIFParam *right, SDataTypeBuf *typ if (IS_NUMERIC_TYPE(rtype)) { SIF_DATA_CONVERT(rtype, right->condValue, i16); } else { - SIF_ERR_RET(sifStr2num(right->condValue + VARSTR_HEADER_SIZE, TSDB_DATA_TYPE_SMALLINT, &i16)); + SIF_ERR_RET( + sifStr2Num(varDataVal(right->condValue), varDataLen(right->condValue), TSDB_DATA_TYPE_SMALLINT, &i16)); } typedata->i16 = i16; @@ -570,7 +571,7 @@ static int32_t sifSetFltParam(SIFParam *left, SIFParam *right, SDataTypeBuf *typ if (IS_NUMERIC_TYPE(rtype)) { SIF_DATA_CONVERT(rtype, right->condValue, i8); } else { - SIF_ERR_RET(sifStr2num(right->condValue + VARSTR_HEADER_SIZE, TSDB_DATA_TYPE_TINYINT, &i8)); + SIF_ERR_RET(sifStr2Num(varDataVal(right->condValue), varDataLen(right->condValue), TSDB_DATA_TYPE_TINYINT, &i8)); } typedata->i8 = i8; param->val = &typedata->i8; @@ -579,7 +580,7 @@ static int32_t sifSetFltParam(SIFParam *left, SIFParam *right, SDataTypeBuf *typ if (IS_NUMERIC_TYPE(rtype)) { SIF_DATA_CONVERT(rtype, right->condValue, u64); } else { - SIF_ERR_RET(sifStr2num(right->condValue + VARSTR_HEADER_SIZE, TSDB_DATA_TYPE_UBIGINT, &u64)); + SIF_ERR_RET(sifStr2Num(varDataVal(right->condValue), varDataLen(right->condValue), TSDB_DATA_TYPE_UBIGINT, &u64)); } typedata->u64 = u64; param->val = &typedata->u64; @@ -588,7 +589,7 @@ static int32_t sifSetFltParam(SIFParam *left, SIFParam *right, SDataTypeBuf *typ if (IS_NUMERIC_TYPE(rtype)) { SIF_DATA_CONVERT(rtype, right->condValue, u32); } else { - SIF_ERR_RET(sifStr2num(right->condValue + VARSTR_HEADER_SIZE, TSDB_DATA_TYPE_UINT, &u32)); + SIF_ERR_RET(sifStr2Num(varDataVal(right->condValue), varDataLen(right->condValue), TSDB_DATA_TYPE_UINT, &u32)); } typedata->u32 = u32; param->val = &typedata->u32; @@ -597,7 +598,8 @@ static int32_t sifSetFltParam(SIFParam *left, SIFParam *right, SDataTypeBuf *typ if (IS_NUMERIC_TYPE(rtype)) { SIF_DATA_CONVERT(rtype, right->condValue, u16); } else { - SIF_ERR_RET(sifStr2num(right->condValue + VARSTR_HEADER_SIZE, TSDB_DATA_TYPE_USMALLINT, &u16)); + SIF_ERR_RET( + sifStr2Num(varDataVal(right->condValue), varDataLen(right->condValue), TSDB_DATA_TYPE_USMALLINT, &u16)); } typedata->u16 = u16; param->val = &typedata->u16; @@ -606,7 +608,7 @@ static int32_t sifSetFltParam(SIFParam *left, SIFParam *right, SDataTypeBuf *typ if (IS_NUMERIC_TYPE(rtype)) { SIF_DATA_CONVERT(rtype, right->condValue, u8); } else { - SIF_ERR_RET(sifStr2num(right->condValue + VARSTR_HEADER_SIZE, TSDB_DATA_TYPE_UTINYINT, &u8)); + SIF_ERR_RET(sifStr2Num(varDataVal(right->condValue), varDataLen(right->condValue), TSDB_DATA_TYPE_UTINYINT, &u8)); } typedata->u8 = u8; param->val = &typedata->u8; From 2699a0144462a616fe039fa5aa139a282757c373 Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Sun, 23 Apr 2023 08:13:27 +0000 Subject: [PATCH 13/14] fix filter err --- source/libs/index/src/indexFilter.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/libs/index/src/indexFilter.c b/source/libs/index/src/indexFilter.c index 7b49153fab..02ed0d2d05 100644 --- a/source/libs/index/src/indexFilter.c +++ b/source/libs/index/src/indexFilter.c @@ -475,6 +475,7 @@ static FORCE_INLINE FilterFunc sifGetFilterFunc(EIndexQueryType type, bool *reve return NULL; } int32_t sifStr2Num(char *buf, int32_t len, int8_t type, void *val) { + // signed/unsigned/float if (IS_SIGNED_NUMERIC_TYPE(type)) { int64_t v = 0; if (0 != toInteger(buf, len, 10, &v)) { @@ -509,6 +510,8 @@ int32_t sifStr2Num(char *buf, int32_t len, int8_t type, void *val) { } else if (type == TSDB_DATA_TYPE_USMALLINT) { *(uint16_t *)val = v; } + } else { + return -1; } return 0; } From acee9e1862db0f085ddb9feb056c48b9d4a1451d Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Sun, 23 Apr 2023 08:32:59 +0000 Subject: [PATCH 14/14] fix filter err --- tests/script/tsim/tag/float.sim | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/script/tsim/tag/float.sim b/tests/script/tsim/tag/float.sim index 10fac93d5d..f62feba057 100644 --- a/tests/script/tsim/tag/float.sim +++ b/tests/script/tsim/tag/float.sim @@ -123,6 +123,16 @@ sql select * from $mt where tgcol = 1 if $rows != 100 then return -1 endi + +sql select * from $mt where tgcol = "1.0" +if $rows != 100 then + return -1 +endi + +sql select * from $mt where tgcol = "1" +if $rows != 100 then + return -1 +endi sql select * from $mt where tgcol <> 1 if $rows != 100 then return -1