未验证 提交 f8ff7091 编写于 作者: S slguan 提交者: GitHub

Merge pull request #1175 from taosdata/beta/v1.6.5.3

Beta/v1.6.5.3
...@@ -3024,14 +3024,14 @@ static void diff_function(SQLFunctionCtx *pCtx) { ...@@ -3024,14 +3024,14 @@ static void diff_function(SQLFunctionCtx *pCtx) {
if (pCtx->param[1].nType == INITIAL_VALUE_NOT_ASSIGNED) { // initial value is not set yet if (pCtx->param[1].nType == INITIAL_VALUE_NOT_ASSIGNED) { // initial value is not set yet
pCtx->param[1].i64Key = pData[i]; pCtx->param[1].i64Key = pData[i];
pCtx->param[1].nType = pCtx->inputType; pCtx->param[1].nType = pCtx->inputType;
} else if (i == 0) { } else if ((i == 0 && pCtx->order == TSQL_SO_ASC) || (i == pCtx->size - 1 && pCtx->order == TSQL_SO_DESC)) {
*pOutput = pData[i] - pCtx->param[1].i64Key; *pOutput = pData[i] - pCtx->param[1].i64Key;
*pTimestamp = pCtx->ptsList[i]; *pTimestamp = pCtx->ptsList[i];
pOutput += step; pOutput += step;
pTimestamp += step; pTimestamp += step;
} else { } else {
*pOutput = pData[i] - pData[i - 1]; *pOutput = pData[i] - pData[i - step];
*pTimestamp = pCtx->ptsList[i]; *pTimestamp = pCtx->ptsList[i];
pOutput += step; pOutput += step;
...@@ -3056,13 +3056,13 @@ static void diff_function(SQLFunctionCtx *pCtx) { ...@@ -3056,13 +3056,13 @@ static void diff_function(SQLFunctionCtx *pCtx) {
if (pCtx->param[1].nType == INITIAL_VALUE_NOT_ASSIGNED) { // initial value is not set yet if (pCtx->param[1].nType == INITIAL_VALUE_NOT_ASSIGNED) { // initial value is not set yet
pCtx->param[1].dKey = pData[i]; pCtx->param[1].dKey = pData[i];
pCtx->param[1].nType = pCtx->inputType; pCtx->param[1].nType = pCtx->inputType;
} else if (i == 0) { } else if ((i == 0 && pCtx->order == TSQL_SO_ASC) || (i == pCtx->size - 1 && pCtx->order == TSQL_SO_DESC)) {
*pOutput = pData[i] - pCtx->param[1].dKey; *pOutput = pData[i] - pCtx->param[1].dKey;
*pTimestamp = pCtx->ptsList[i]; *pTimestamp = pCtx->ptsList[i];
pOutput += step; pOutput += step;
pTimestamp += step; pTimestamp += step;
} else { } else {
*pOutput = pData[i] - pData[i - 1]; *pOutput = pData[i] - pData[i - step];
*pTimestamp = pCtx->ptsList[i]; *pTimestamp = pCtx->ptsList[i];
pOutput += step; pOutput += step;
pTimestamp += step; pTimestamp += step;
...@@ -3086,13 +3086,13 @@ static void diff_function(SQLFunctionCtx *pCtx) { ...@@ -3086,13 +3086,13 @@ static void diff_function(SQLFunctionCtx *pCtx) {
if (pCtx->param[1].nType == INITIAL_VALUE_NOT_ASSIGNED) { // initial value is not set yet if (pCtx->param[1].nType == INITIAL_VALUE_NOT_ASSIGNED) { // initial value is not set yet
pCtx->param[1].dKey = pData[i]; pCtx->param[1].dKey = pData[i];
pCtx->param[1].nType = pCtx->inputType; pCtx->param[1].nType = pCtx->inputType;
} else if (i == 0) { } else if ((i == 0 && pCtx->order == TSQL_SO_ASC) || (i == pCtx->size - 1 && pCtx->order == TSQL_SO_DESC)) {
*pOutput = pData[i] - pCtx->param[1].dKey; *pOutput = pData[i] - pCtx->param[1].dKey;
*pTimestamp = pCtx->ptsList[i]; *pTimestamp = pCtx->ptsList[i];
pOutput += step; pOutput += step;
pTimestamp += step; pTimestamp += step;
} else { } else {
*pOutput = pData[i] - pData[i - 1]; *pOutput = pData[i] - pData[i - step];
*pTimestamp = pCtx->ptsList[i]; *pTimestamp = pCtx->ptsList[i];
pOutput += step; pOutput += step;
pTimestamp += step; pTimestamp += step;
...@@ -3117,13 +3117,13 @@ static void diff_function(SQLFunctionCtx *pCtx) { ...@@ -3117,13 +3117,13 @@ static void diff_function(SQLFunctionCtx *pCtx) {
if (pCtx->param[1].nType == INITIAL_VALUE_NOT_ASSIGNED) { // initial value is not set yet if (pCtx->param[1].nType == INITIAL_VALUE_NOT_ASSIGNED) { // initial value is not set yet
pCtx->param[1].i64Key = pData[i]; pCtx->param[1].i64Key = pData[i];
pCtx->param[1].nType = pCtx->inputType; pCtx->param[1].nType = pCtx->inputType;
} else if (i == 0) { } else if ((i == 0 && pCtx->order == TSQL_SO_ASC) || (i == pCtx->size - 1 && pCtx->order == TSQL_SO_DESC)) {
*pOutput = pData[i] - pCtx->param[1].i64Key; *pOutput = pData[i] - pCtx->param[1].i64Key;
*pTimestamp = pCtx->ptsList[i]; *pTimestamp = pCtx->ptsList[i];
pOutput += step; pOutput += step;
pTimestamp += step; pTimestamp += step;
} else { } else {
*pOutput = pData[i] - pData[i - 1]; *pOutput = pData[i] - pData[i - step];
*pTimestamp = pCtx->ptsList[i]; *pTimestamp = pCtx->ptsList[i];
pOutput += step; pOutput += step;
pTimestamp += step; pTimestamp += step;
...@@ -3147,13 +3147,13 @@ static void diff_function(SQLFunctionCtx *pCtx) { ...@@ -3147,13 +3147,13 @@ static void diff_function(SQLFunctionCtx *pCtx) {
if (pCtx->param[1].nType == INITIAL_VALUE_NOT_ASSIGNED) { // initial value is not set yet if (pCtx->param[1].nType == INITIAL_VALUE_NOT_ASSIGNED) { // initial value is not set yet
pCtx->param[1].i64Key = pData[i]; pCtx->param[1].i64Key = pData[i];
pCtx->param[1].nType = pCtx->inputType; pCtx->param[1].nType = pCtx->inputType;
} else if (i == 0) { } else if ((i == 0 && pCtx->order == TSQL_SO_ASC) || (i == pCtx->size - 1 && pCtx->order == TSQL_SO_DESC)) {
*pOutput = pData[i] - pCtx->param[1].i64Key; *pOutput = pData[i] - pCtx->param[1].i64Key;
*pTimestamp = pCtx->ptsList[i]; *pTimestamp = pCtx->ptsList[i];
pOutput += step; pOutput += step;
pTimestamp += step; pTimestamp += step;
} else { } else {
*pOutput = pData[i] - pData[i - 1]; *pOutput = pData[i] - pData[i - step];
*pTimestamp = pCtx->ptsList[i]; *pTimestamp = pCtx->ptsList[i];
pOutput += step; pOutput += step;
pTimestamp += step; pTimestamp += step;
......
...@@ -4525,10 +4525,11 @@ static void doSetTagValueInParam(tTagSchema *pTagSchema, int32_t tagColIdx, SMet ...@@ -4525,10 +4525,11 @@ static void doSetTagValueInParam(tTagSchema *pTagSchema, int32_t tagColIdx, SMet
SSchema *pCol = &pTagSchema->pSchema[tagColIdx]; SSchema *pCol = &pTagSchema->pSchema[tagColIdx];
tVariantDestroy(param); tVariantDestroy(param);
tVariantCreateFromBinary(param, pStr, pCol->bytes, pCol->type);
if (isNull(pStr, pCol->type)) { if (isNull(pStr, pCol->type)) {
param->nType = TSDB_DATA_TYPE_NULL; param->nType = TSDB_DATA_TYPE_NULL;
} else {
tVariantCreateFromBinary(param, pStr, pCol->bytes, pCol->type);
} }
} }
...@@ -5993,10 +5994,13 @@ int32_t getDataBlocksForMeters(SMeterQuerySupportObj *pSupporter, SQuery *pQuery ...@@ -5993,10 +5994,13 @@ int32_t getDataBlocksForMeters(SMeterQuerySupportObj *pSupporter, SQuery *pQuery
size_t bufferSize = size + sizeof(TSCKSUM); size_t bufferSize = size + sizeof(TSCKSUM);
pMeterDataInfo[j]->numOfBlocks = compInfo.numOfBlocks; pMeterDataInfo[j]->numOfBlocks = compInfo.numOfBlocks;
pMeterDataInfo[j]->pBlock = calloc(1, bufferSize); char* p = realloc(pMeterDataInfo[j]->pBlock, bufferSize);
if (pMeterDataInfo[j]->pBlock == NULL) { if (p == NULL) {
clearAllMeterDataBlockInfo(pMeterDataInfo, 0, numOfMeters); clearAllMeterDataBlockInfo(pMeterDataInfo, 0, numOfMeters);
return TSDB_CODE_SERV_OUT_OF_MEMORY; return TSDB_CODE_SERV_OUT_OF_MEMORY;
} else {
memset(p, 0, bufferSize);
pMeterDataInfo[j]->pBlock = (SCompBlock*) p;
} }
read(pVnodeFileInfo->headerFd, pMeterDataInfo[j]->pBlock, bufferSize); read(pVnodeFileInfo->headerFd, pMeterDataInfo[j]->pBlock, bufferSize);
......
...@@ -574,9 +574,9 @@ static void vnodeMultiMeterMultiOutputProcessor(SQInfo *pQInfo) { ...@@ -574,9 +574,9 @@ static void vnodeMultiMeterMultiOutputProcessor(SQInfo *pQInfo) {
SMeterObj *pOneMeter = getMeterObj(pSupporter->pMeterObj, pMeterSidExtInfo[0]->sid); SMeterObj *pOneMeter = getMeterObj(pSupporter->pMeterObj, pMeterSidExtInfo[0]->sid);
if (isPointInterpoQuery(pQuery)) {
resetCtxOutputBuf(pRuntimeEnv); resetCtxOutputBuf(pRuntimeEnv);
if (isPointInterpoQuery(pQuery)) {
assert(pQuery->limit.offset == 0 && pQuery->limit.limit != 0); assert(pQuery->limit.offset == 0 && pQuery->limit.limit != 0);
while (pSupporter->subgroupIdx < pSids->numOfSubSet) { while (pSupporter->subgroupIdx < pSids->numOfSubSet) {
...@@ -664,6 +664,8 @@ static void vnodeMultiMeterMultiOutputProcessor(SQInfo *pQInfo) { ...@@ -664,6 +664,8 @@ static void vnodeMultiMeterMultiOutputProcessor(SQInfo *pQInfo) {
return; return;
} }
resetCtxOutputBuf(pRuntimeEnv);
for (int32_t i = 0; i < pRuntimeEnv->usedIndex; ++i) { for (int32_t i = 0; i < pRuntimeEnv->usedIndex; ++i) {
SOutputRes *pOneRes = &pRuntimeEnv->pResult[i]; SOutputRes *pOneRes = &pRuntimeEnv->pResult[i];
clearGroupResultBuf(pOneRes, pQuery->numOfOutputCols); clearGroupResultBuf(pOneRes, pQuery->numOfOutputCols);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册