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