sort
This commit is contained in:
parent
e2b61a55fc
commit
7e1d59c565
|
@ -271,6 +271,7 @@ typedef struct STableScanInfo {
|
||||||
SSampleExecInfo sample; // sample execution info
|
SSampleExecInfo sample; // sample execution info
|
||||||
int32_t tableStartIndex; // current group scan start
|
int32_t tableStartIndex; // current group scan start
|
||||||
int32_t tableEndIndex; // current group scan end
|
int32_t tableEndIndex; // current group scan end
|
||||||
|
int32_t currentGroupIndex; // current group index of groupOffset
|
||||||
int8_t scanMode;
|
int8_t scanMode;
|
||||||
int8_t assignBlockUid;
|
int8_t assignBlockUid;
|
||||||
uint8_t countState; // empty table count state
|
uint8_t countState; // empty table count state
|
||||||
|
|
|
@ -2122,6 +2122,9 @@ int32_t buildGroupIdMapForAllTables(STableListInfo* pTableListInfo, SReadHandle*
|
||||||
|
|
||||||
bool groupByTbname = groupbyTbname(group);
|
bool groupByTbname = groupbyTbname(group);
|
||||||
size_t numOfTables = taosArrayGetSize(pTableListInfo->pTableList);
|
size_t numOfTables = taosArrayGetSize(pTableListInfo->pTableList);
|
||||||
|
if (!numOfTables) {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
if (group == NULL || groupByTbname) {
|
if (group == NULL || groupByTbname) {
|
||||||
for (int32_t i = 0; i < numOfTables; i++) {
|
for (int32_t i = 0; i < numOfTables; i++) {
|
||||||
STableKeyInfo* info = taosArrayGet(pTableListInfo->pTableList, i);
|
STableKeyInfo* info = taosArrayGet(pTableListInfo->pTableList, i);
|
||||||
|
@ -2143,7 +2146,6 @@ int32_t buildGroupIdMapForAllTables(STableListInfo* pTableListInfo, SReadHandle*
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
if (pScanNode->groupOrderScan) pTableListInfo->numOfOuputGroups = taosArrayGetSize(pTableListInfo->pTableList);
|
|
||||||
|
|
||||||
if (groupSort || pScanNode->groupOrderScan) {
|
if (groupSort || pScanNode->groupOrderScan) {
|
||||||
code = sortTableGroup(pTableListInfo);
|
code = sortTableGroup(pTableListInfo);
|
||||||
|
|
|
@ -302,7 +302,7 @@ SOperatorInfo* createOperator(SPhysiNode* pPhyNode, SExecTaskInfo* pTaskInfo, SR
|
||||||
pTableListInfo->idInfo.suid = pTableScanNode->scan.suid;
|
pTableListInfo->idInfo.suid = pTableScanNode->scan.suid;
|
||||||
pTableListInfo->idInfo.tableType = pTableScanNode->scan.tableType;
|
pTableListInfo->idInfo.tableType = pTableScanNode->scan.tableType;
|
||||||
} else {
|
} else {
|
||||||
code = createScanTableListInfo(&pTableScanNode->scan, pTableScanNode->pGroupTags, pTableScanNode->groupSort, pHandle,
|
code = createScanTableListInfo(&pTableScanNode->scan, pTableScanNode->pGroupTags, true, pHandle,
|
||||||
pTableListInfo, pTagCond, pTagIndexCond, pTaskInfo);
|
pTableListInfo, pTagCond, pTagIndexCond, pTaskInfo);
|
||||||
if (code) {
|
if (code) {
|
||||||
pTaskInfo->code = code;
|
pTaskInfo->code = code;
|
||||||
|
|
|
@ -659,17 +659,30 @@ void setTbNameColData(const SSDataBlock* pBlock, SColumnInfoData* pColInfoData,
|
||||||
static void initNextGroupScan(STableScanInfo* pInfo, STableKeyInfo** pKeyInfo, int32_t* size) {
|
static void initNextGroupScan(STableScanInfo* pInfo, STableKeyInfo** pKeyInfo, int32_t* size) {
|
||||||
pInfo->tableStartIndex = pInfo->tableEndIndex + 1;
|
pInfo->tableStartIndex = pInfo->tableEndIndex + 1;
|
||||||
|
|
||||||
int32_t numOfTables = tableListGetSize(pInfo->base.pTableListInfo);
|
STableListInfo* pTableListInfo = pInfo->base.pTableListInfo;
|
||||||
STableKeyInfo* pStart = (STableKeyInfo*)tableListGetInfo(pInfo->base.pTableListInfo, pInfo->tableStartIndex);
|
int32_t numOfTables = tableListGetSize(pTableListInfo);
|
||||||
|
STableKeyInfo* pStart = (STableKeyInfo*)tableListGetInfo(pTableListInfo, pInfo->tableStartIndex);
|
||||||
|
|
||||||
|
if (pTableListInfo->oneTableForEachGroup) {
|
||||||
|
pInfo->tableEndIndex = pInfo->tableStartIndex;
|
||||||
|
} else if (pTableListInfo->groupOffset) {
|
||||||
|
pInfo->currentGroupIndex++;
|
||||||
|
if (pInfo->currentGroupIndex + 1 < pTableListInfo->numOfOuputGroups) {
|
||||||
|
pInfo->tableEndIndex = pTableListInfo->groupOffset[pInfo->currentGroupIndex + 1] - 1;
|
||||||
|
} else {
|
||||||
|
pInfo->tableEndIndex = numOfTables - 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
int32_t i = pInfo->tableStartIndex + 1;
|
int32_t i = pInfo->tableStartIndex + 1;
|
||||||
for (; i < numOfTables; ++i) {
|
for (; i < numOfTables; ++i) {
|
||||||
STableKeyInfo* pCur = tableListGetInfo(pInfo->base.pTableListInfo, i);
|
STableKeyInfo* pCur = tableListGetInfo(pTableListInfo, i);
|
||||||
if (pCur->groupId != pStart->groupId) {
|
if (pCur->groupId != pStart->groupId) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pInfo->tableEndIndex = i - 1;
|
pInfo->tableEndIndex = i - 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (!pInfo->needCountEmptyTable) {
|
if (!pInfo->needCountEmptyTable) {
|
||||||
pInfo->countState = TABLE_COUNT_STATE_END;
|
pInfo->countState = TABLE_COUNT_STATE_END;
|
||||||
} else {
|
} else {
|
||||||
|
@ -677,7 +690,7 @@ static void initNextGroupScan(STableScanInfo* pInfo, STableKeyInfo** pKeyInfo, i
|
||||||
}
|
}
|
||||||
|
|
||||||
*pKeyInfo = pStart;
|
*pKeyInfo = pStart;
|
||||||
*size = i - pInfo->tableStartIndex;
|
*size = pInfo->tableEndIndex - pInfo->tableStartIndex + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static SSDataBlock* getOneRowResultBlock(SExecTaskInfo* pTaskInfo, STableScanBase* pBase, SSDataBlock* pBlock,
|
static SSDataBlock* getOneRowResultBlock(SExecTaskInfo* pTaskInfo, STableScanBase* pBase, SSDataBlock* pBlock,
|
||||||
|
@ -1133,6 +1146,7 @@ SOperatorInfo* createTableScanOperatorInfo(STableScanPhysiNode* pTableScanNode,
|
||||||
}
|
}
|
||||||
|
|
||||||
pInfo->tableEndIndex = -1;
|
pInfo->tableEndIndex = -1;
|
||||||
|
pInfo->currentGroupIndex = -1;
|
||||||
pInfo->assignBlockUid = pTableScanNode->assignBlockUid;
|
pInfo->assignBlockUid = pTableScanNode->assignBlockUid;
|
||||||
pInfo->hasGroupByTag = pTableScanNode->pGroupTags ? true : false;
|
pInfo->hasGroupByTag = pTableScanNode->pGroupTags ? true : false;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue