fix: new group block to reset func input iter hasPrev
This commit is contained in:
parent
fe1a7e4b9c
commit
b504627830
|
@ -212,11 +212,8 @@ typedef struct SFuncInputRowIter {
|
|||
char* pPrevPk;
|
||||
SSDataBlock* pPrevRowBlock; // pre one row block
|
||||
|
||||
//TODO:
|
||||
// int32_t prevStartOffset; // for diff, derivative.
|
||||
// SPoint1 prevStartPoint; // for twa.
|
||||
// int32_t startOffset; // for diff, derivative.
|
||||
// SPoint1 startPoint; // for twa.
|
||||
uint64_t groupId;
|
||||
bool hasGroupId;
|
||||
|
||||
bool finalRow;
|
||||
} SFuncInputRowIter;
|
||||
|
|
|
@ -1306,6 +1306,7 @@ static void appendToRowIndexDataBlock(SSortHandle* pHandle, SSDataBlock* pSource
|
|||
static void initRowIdSort(SSortHandle* pHandle) {
|
||||
SBlockOrderInfo* pkOrder = (pHandle->bSortPk) ? taosArrayGet(pHandle->aExtRowsOrders, 1) : NULL;
|
||||
SColumnInfoData* extPkCol = (pHandle->bSortPk) ? taosArrayGet(pHandle->pDataBlock->pDataBlock, pkOrder->slotId) : NULL;
|
||||
SColumnInfoData pkCol = {0};
|
||||
|
||||
SSDataBlock* pSortInput = createDataBlock();
|
||||
SColumnInfoData tsCol = createColumnInfoData(TSDB_DATA_TYPE_TIMESTAMP, 8, 1);
|
||||
|
@ -1317,7 +1318,7 @@ static void initRowIdSort(SSortHandle* pHandle) {
|
|||
SColumnInfoData lengthCol = createColumnInfoData(TSDB_DATA_TYPE_INT, 4, 4);
|
||||
blockDataAppendColInfo(pSortInput, &lengthCol);
|
||||
if (pHandle->bSortPk) {
|
||||
SColumnInfoData pkCol = createColumnInfoData(extPkCol->info.type, extPkCol->info.bytes, 5);
|
||||
pkCol = createColumnInfoData(extPkCol->info.type, extPkCol->info.bytes, 5);
|
||||
blockDataAppendColInfo(pSortInput, &pkCol);
|
||||
}
|
||||
blockDataDestroy(pHandle->pDataBlock);
|
||||
|
@ -1343,7 +1344,7 @@ static void initRowIdSort(SSortHandle* pHandle) {
|
|||
biPk.order = pkOrder->order;
|
||||
biPk.slotId = 4;
|
||||
biPk.nullFirst = (biPk.order == TSDB_ORDER_ASC);
|
||||
biPk.compFn = getKeyComparFunc(extPkCol->info.type, biPk.order);
|
||||
biPk.compFn = getKeyComparFunc(pkCol.info.type, biPk.order);
|
||||
taosArrayPush(aOrder, &biPk);
|
||||
}
|
||||
taosArrayDestroy(pHandle->pSortInfo);
|
||||
|
|
|
@ -434,7 +434,12 @@ int32_t funcInputUpdate(SqlFunctionCtx* pCtx) {
|
|||
pIter->pPkCol = pIter->pInput->pPrimaryKey;
|
||||
pIter->rowIndex = pIter->pInput->startRowIndex;
|
||||
pIter->inputEndIndex = pIter->rowIndex + pIter->pInput->numOfRows - 1;
|
||||
pIter->pSrcBlock = pCtx->pSrcBlock;
|
||||
pIter->pSrcBlock = pCtx->pSrcBlock;
|
||||
if (!pIter->hasGroupId || pIter->groupId != pIter->pSrcBlock->info.id.groupId) {
|
||||
pIter->hasGroupId = true;
|
||||
pIter->groupId = pIter->pSrcBlock->info.id.groupId;
|
||||
pIter->hasPrev = false;
|
||||
}
|
||||
} else {
|
||||
pIter->finalRow = true;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue