fix error in sort logic

This commit is contained in:
wangmm0220 2022-04-06 16:46:26 +08:00
parent 78acaed84e
commit 865a13c1c2
3 changed files with 9 additions and 5 deletions

View File

@ -411,7 +411,7 @@ int32_t blockDataSplitRows(SSDataBlock* pBlock, bool hasVarCol, int32_t startInd
if (size > pageSize) {
*stopIndex = j - 1;
ASSERT(*stopIndex > startIndex);
ASSERT(*stopIndex >= startIndex);
return TSDB_CODE_SUCCESS;
}

View File

@ -132,9 +132,9 @@ void tsortDestroySortHandle(SSortHandle* pSortHandle) {
taosMemoryFreeClear(pSortHandle->idStr);
blockDataDestroy(pSortHandle->pDataBlock);
for (size_t i = 0; i < taosArrayGetSize(pSortHandle->pOrderedSource); i++){
SExternalMemSource* pSource = taosArrayGet(pSortHandle->pOrderedSource, i);
blockDataDestroy(pSource->src.pBlock);
taosMemoryFreeClear(pSource);
SExternalMemSource** pSource = taosArrayGet(pSortHandle->pOrderedSource, i);
blockDataDestroy((*pSource)->src.pBlock);
taosMemoryFreeClear(*pSource);
}
taosArrayDestroy(pSortHandle->pOrderedSource);
taosMemoryFreeClear(pSortHandle);

View File

@ -91,7 +91,7 @@ SSDataBlock* getSingleColDummyBlock(void* param) {
char strOri[128] = {0};
taosRandStr(strOri, size);
int32_t len = 0;
bool ret = taosMbsToUcs4(strOri, size, (TdUcs4*)varDataVal(str), 128, &len);
bool ret = taosMbsToUcs4(strOri, size, (TdUcs4*)varDataVal(str), size * TSDB_NCHAR_SIZE, &len);
if (!ret){
printf("error\n");
return NULL;
@ -321,6 +321,10 @@ TEST(testCase, external_mem_sort_Test) {
char buf[128] = {0};
memcpy(buf, varDataVal(v), varDataLen(v));
printf("%d: %s\n", row++, buf);
}else if(pInfo[i].type == TSDB_DATA_TYPE_DOUBLE) {
printf("double: %lf\n", *(double*)v);
}else if (pInfo[i].type == TSDB_DATA_TYPE_FLOAT) {
printf("float: %f\n", *(float*)v);
}else{
int64_t result = 0;
if (!bigendian()){