diff --git a/src/client/src/tscAsync.c b/src/client/src/tscAsync.c index e7d678db26df965acdc0f8dbf4bdcf214c5c9130..b3c9ef5f217db81e9f63824d4c6c6787ce760a87 100644 --- a/src/client/src/tscAsync.c +++ b/src/client/src/tscAsync.c @@ -561,9 +561,14 @@ void tscMeterMetaCallBack(void *param, TAOS_RES *res, int code) { */ SQueryInfo* pQueryInfo = tscGetQueryInfoDetail(pCmd, pCmd->clauseIndex); - SMeterMetaInfo *pMeterMetaInfo = tscGetMeterMetaInfoFromQueryInfo(pQueryInfo, 0); - if (0 == pMeterMetaInfo->pMetricMeta->numOfVnodes || 0 == pMeterMetaInfo->pMetricMeta->numOfMeters) { - tscTrace("%p stream:%p meta is updated, but no table, clear meter meta ans set next launch new query, command:%d", pSql, pSql->pStream, pSql->cmd.command); + SMeterMetaInfo *pMeterMetaInfo = tscGetMeterMetaInfoFromQueryInfo(pQueryInfo, 0); + if ((UTIL_METER_IS_SUPERTABLE(pMeterMetaInfo) + && ( pMeterMetaInfo->pMeterMeta == NULL + || pMeterMetaInfo->pMetricMeta == NULL + || pMeterMetaInfo->pMetricMeta->numOfMeters == 0 + || pMeterMetaInfo->pMetricMeta->numOfVnodes == 0)) + || (!(UTIL_METER_IS_SUPERTABLE(pMeterMetaInfo)) && (pMeterMetaInfo->pMeterMeta == NULL))) { + tscTrace("%p stream:%p meta is updated, but no table, clear meter meta and set next launch new query, command:%d", pSql, pSql->pStream, pSql->cmd.command); tscClearMeterMetaInfo(pMeterMetaInfo, false); tscSetNextLaunchTimer(pSql->pStream, pSql); return; diff --git a/src/client/src/tscFunctionImpl.c b/src/client/src/tscFunctionImpl.c index 96aab7e2904cda1a42a83032207c282c2ba7c964..ee0f3dc6d0c94ac0fc5ad52d49f1dc7361d8dd77 100644 --- a/src/client/src/tscFunctionImpl.c +++ b/src/client/src/tscFunctionImpl.c @@ -3678,7 +3678,7 @@ int WCSPatternMatch(const wchar_t *patterStr, const wchar_t *str, size_t size, c str++; - int32_t ret = WCSPatternMatch(&patterStr[i], str, wcslen(str), pInfo); + int32_t ret = WCSPatternMatch(&patterStr[i], str, twcslen(str), pInfo); if (ret != TSDB_PATTERN_NOMATCH) { return ret; } diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index be698e374eddf3a4fd6a3336fecf30f6e572ac90..b5c07ba0f4ff977966ca0d89303711bc2d284b84 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -2595,7 +2595,7 @@ static int32_t doExtractColumnFilterInfo(SQueryInfo* pQueryInfo, SColumnFilterIn tVariantDump(&pRight->val, (char*)pColumnFilter->pz, colType); - size_t len = wcslen((wchar_t*)pColumnFilter->pz); + size_t len = twcslen((wchar_t*)pColumnFilter->pz); pColumnFilter->len = len * TSDB_NCHAR_SIZE; } else { tVariantDump(&pRight->val, (char*)&pColumnFilter->lowerBndd, colType); diff --git a/src/client/src/tscStream.c b/src/client/src/tscStream.c index a9b7512a376c7a1b7a68371424488be09db616f0..804fb99c864e8af98fbe5f6c9cba26bbce2752cd 100644 --- a/src/client/src/tscStream.c +++ b/src/client/src/tscStream.c @@ -97,7 +97,12 @@ static void tscProcessStreamLaunchQuery(SSchedMsg *pMsg) { return; } - if (0 == pMeterMetaInfo->pMetricMeta->numOfVnodes || 0 == pMeterMetaInfo->pMetricMeta->numOfMeters) { + if ((UTIL_METER_IS_SUPERTABLE(pMeterMetaInfo) + && ( pMeterMetaInfo->pMeterMeta == NULL + || pMeterMetaInfo->pMetricMeta == NULL + || pMeterMetaInfo->pMetricMeta->numOfMeters == 0 + || pMeterMetaInfo->pMetricMeta->numOfVnodes == 0)) + || (!(UTIL_METER_IS_SUPERTABLE(pMeterMetaInfo)) && (pMeterMetaInfo->pMeterMeta == NULL))) { tscTrace("%p no table in metricmeta, no launch query", pSql); tscClearMeterMetaInfo(pMeterMetaInfo, false); tscSetNextLaunchTimer(pStream, pSql); diff --git a/src/inc/tutil.h b/src/inc/tutil.h index b66da286973521c1e6cd29db2b2923cfc371be58..2333d8f6b310dc2f73f7ec51f2e801f7f391a91e 100644 --- a/src/inc/tutil.h +++ b/src/inc/tutil.h @@ -130,6 +130,7 @@ extern "C" { #define POW2(x) ((x) * (x)) +size_t twcslen(const wchar_t *wcs); int32_t strdequote(char *src); void strtrim(char *src); diff --git a/src/system/detail/src/mgmtSupertableQuery.c b/src/system/detail/src/mgmtSupertableQuery.c index b0b73d3a761cb304de96fd3495ec6dc390b1c1f8..b1caacd3a40e5b7a84e63eb83211747da7ac1fd9 100644 --- a/src/system/detail/src/mgmtSupertableQuery.c +++ b/src/system/detail/src/mgmtSupertableQuery.c @@ -577,7 +577,7 @@ static int32_t compareWStrPatternComp(const void* pLeft, const void* pRight) { const wchar_t* pattern = pRight; const wchar_t* str = pLeft; - int32_t ret = WCSPatternMatch(pattern, str, wcslen(str), &pInfo); + int32_t ret = WCSPatternMatch(pattern, str, twcslen(str), &pInfo); return (ret == TSDB_PATTERN_MATCH) ? 0 : 1; } diff --git a/src/system/detail/src/vnodeQueryImpl.c b/src/system/detail/src/vnodeQueryImpl.c index ad5d5c4b3a8d4d900843f7c0e6cda35afb0f500b..4adb9ed6c417cf416dab806a68a2b5d2bb1a297c 100644 --- a/src/system/detail/src/vnodeQueryImpl.c +++ b/src/system/detail/src/vnodeQueryImpl.c @@ -4648,7 +4648,7 @@ static void doSetInterpVal(SQLFunctionCtx *pCtx, TSKEY ts, int16_t type, int32_t len = t + 1 + TSDB_KEYSIZE; pCtx->param[index].pz = calloc(1, len); } else if (type == TSDB_DATA_TYPE_NCHAR) { - t = wcslen((const wchar_t *)data); + t = twcslen((const wchar_t *)data); len = (t + 1) * TSDB_NCHAR_SIZE + TSDB_KEYSIZE; pCtx->param[index].pz = calloc(1, len); diff --git a/src/util/src/ttypes.c b/src/util/src/ttypes.c index ae994cb77b7cdb27f3e857115d6d1db7df9bd9b0..f5b61481cb03daaab9aea49b780df12fefb41b8a 100644 --- a/src/util/src/ttypes.c +++ b/src/util/src/ttypes.c @@ -197,7 +197,7 @@ int32_t tVariantToString(tVariant *pVar, char *dst) { case TSDB_DATA_TYPE_NCHAR: { dst[0] = '\''; - taosUcs4ToMbs(pVar->wpz, (wcslen(pVar->wpz) + 1) * TSDB_NCHAR_SIZE, dst + 1); + taosUcs4ToMbs(pVar->wpz, (twcslen(pVar->wpz) + 1) * TSDB_NCHAR_SIZE, dst + 1); int32_t len = strlen(dst); dst[len] = '\''; dst[len + 1] = 0; @@ -430,7 +430,7 @@ static int32_t toNchar(tVariant *pVariant, char **pDest, int32_t *pDestSize) { } pVariant->wpz = pWStr; - *pDestSize = wcslen(pVariant->wpz); + *pDestSize = twcslen(pVariant->wpz); // shrink the allocate memory, no need to check here. char* tmp = realloc(pVariant->wpz, (*pDestSize + 1)*TSDB_NCHAR_SIZE); diff --git a/src/util/src/tutil.c b/src/util/src/tutil.c index 21d147d9473fb643df3bdc719aa19699619ea2d7..9236c2860d9e9f180f8c66340172a37b9d1e1cf9 100644 --- a/src/util/src/tutil.c +++ b/src/util/src/tutil.c @@ -27,6 +27,23 @@ #include "tlog.h" #include "taoserror.h" +size_t twcslen(const wchar_t *wcs) { + int *wstr = (int *)wcs; + if (NULL == wstr) { + return 0; + } + + size_t n = 0; + while (1) { + if (0 == *wstr++) { + break; + } + n++; + } + + return n; +} + int32_t strdequote(char *z) { if (z == NULL) { return 0; diff --git a/src/util/src/version.c b/src/util/src/version.c index 265fc7b7dc36ede8806b81eb3bfb1773f97d5840..ea41b3ace885b9d81a55577f5b6c71081269cffa 100644 --- a/src/util/src/version.c +++ b/src/util/src/version.c @@ -1,4 +1,4 @@ -char version[64] = "1.6.6.1"; +char version[64] = "1.6.5.9"; char compatible_version[64] = "1.6.0.0"; char gitinfo[128] = "0b5b412ef0ae2449ece538601a29b899b2b727b9"; char gitinfoOfInternal[128] = "8ae0d83a3610b9b4726373dd3073e4a8f444fb26";