diff --git a/source/libs/executor/src/executorimpl.c b/source/libs/executor/src/executorimpl.c index c1465023c0..6b4c8fb574 100644 --- a/source/libs/executor/src/executorimpl.c +++ b/source/libs/executor/src/executorimpl.c @@ -5835,6 +5835,8 @@ static SSDataBlock* doSort(void* param, bool* newgroup) { addToDiskbasedBuf(pInfo, pTaskInfo->env); } + blockDataEnsureCapacity(pInfo->pDataBlock, pInfo->capacity); + int32_t code = sortComparInit(&pInfo->cmpParam, pInfo); if (code != TSDB_CODE_SUCCESS) { longjmp(pTaskInfo->env, code); @@ -5883,7 +5885,7 @@ SOperatorInfo *createOrderOperatorInfo(SOperatorInfo* downstream, SArray* pExprI } pInfo->sortBufSize = 1024 * 1024 * 5; // 1MB - pInfo->capacity = 4096; + pInfo->capacity = 64*1024; pInfo->pDataBlock = createOutputBuf_rv(pExprInfo, pInfo->capacity); pInfo->pSources = taosArrayInit(4, POINTER_BYTES); pInfo->cmpParam.orderInfo = createBlockOrder(pExprInfo, pOrderVal); @@ -5896,7 +5898,7 @@ SOperatorInfo *createOrderOperatorInfo(SOperatorInfo* downstream, SArray* pExprI } } - int32_t code = createDiskbasedBuffer(&pInfo->pSortInternalBuf, 4096, 4096*1000, 1, "/tmp/"); + int32_t code = createDiskbasedBuffer(&pInfo->pSortInternalBuf, pInfo->capacity, pInfo->capacity*1000, 1, "/tmp/"); if (pInfo->pSources == NULL || code != 0 || pInfo->cmpParam.orderInfo == NULL || pInfo->pDataBlock == NULL) { tfree(pOperator); destroyOrderOperatorInfo(pInfo, taosArrayGetSize(pExprInfo)); diff --git a/source/libs/executor/test/executorTests.cpp b/source/libs/executor/test/executorTests.cpp index c154bb0fbb..2dd26ab534 100644 --- a/source/libs/executor/test/executorTests.cpp +++ b/source/libs/executor/test/executorTests.cpp @@ -262,7 +262,7 @@ TEST(testCase, external_sort_Test) { exp1->base.resSchema = createSchema(TSDB_DATA_TYPE_BINARY, 40, 2, "res1"); taosArrayPush(pExprInfo, &exp1); - SOperatorInfo* pOperator = createOrderOperatorInfo(createDummyOperator(5000), pExprInfo, pOrderVal); + SOperatorInfo* pOperator = createOrderOperatorInfo(createDummyOperator(50000), pExprInfo, pOrderVal); bool newgroup = false; SSDataBlock* pRes = NULL;