Merge remote-tracking branch 'origin/3.0' into feature/qnode5
This commit is contained in:
commit
d61da4450c
|
@ -1410,30 +1410,33 @@ static int32_t doCopyRowsFromFileBlock(STsdbReadHandle* pTsdbReadHandle, int32_t
|
||||||
if (!isAllRowsNull(src) && pColInfo->info.colId == src->colId) {
|
if (!isAllRowsNull(src) && pColInfo->info.colId == src->colId) {
|
||||||
if (!IS_VAR_DATA_TYPE(pColInfo->info.type)) { // todo opt performance
|
if (!IS_VAR_DATA_TYPE(pColInfo->info.type)) { // todo opt performance
|
||||||
// memmove(pData, (char*)src->pData + bytes * start, bytes * num);
|
// memmove(pData, (char*)src->pData + bytes * start, bytes * num);
|
||||||
for (int32_t k = start; k < num + start; ++k) {
|
int32_t rowIndex = numOfRows;
|
||||||
|
for (int32_t k = start; k <= end; ++k, ++rowIndex) {
|
||||||
SCellVal sVal = {0};
|
SCellVal sVal = {0};
|
||||||
if (tdGetColDataOfRow(&sVal, src, k, pCols->bitmapMode) < 0) {
|
if (tdGetColDataOfRow(&sVal, src, k, pCols->bitmapMode) < 0) {
|
||||||
TASSERT(0);
|
TASSERT(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sVal.valType == TD_VTYPE_NULL) {
|
if (sVal.valType == TD_VTYPE_NULL) {
|
||||||
colDataAppendNULL(pColInfo, k);
|
colDataAppendNULL(pColInfo, rowIndex);
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pColInfo, k, sVal.val, false);
|
colDataAppend(pColInfo, rowIndex, sVal.val, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else { // handle the var-string
|
} else { // handle the var-string
|
||||||
|
int32_t rowIndex = numOfRows;
|
||||||
|
|
||||||
// todo refactor, only copy one-by-one
|
// todo refactor, only copy one-by-one
|
||||||
for (int32_t k = start; k < num + start; ++k) {
|
for (int32_t k = start; k < num + start; ++k, ++rowIndex) {
|
||||||
SCellVal sVal = {0};
|
SCellVal sVal = {0};
|
||||||
if (tdGetColDataOfRow(&sVal, src, k, pCols->bitmapMode) < 0) {
|
if (tdGetColDataOfRow(&sVal, src, k, pCols->bitmapMode) < 0) {
|
||||||
TASSERT(0);
|
TASSERT(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sVal.valType == TD_VTYPE_NULL) {
|
if (sVal.valType == TD_VTYPE_NULL) {
|
||||||
colDataAppendNULL(pColInfo, k);
|
colDataAppendNULL(pColInfo, rowIndex);
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pColInfo, k, sVal.val, false);
|
colDataAppend(pColInfo, rowIndex, sVal.val, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1441,8 +1444,9 @@ static int32_t doCopyRowsFromFileBlock(STsdbReadHandle* pTsdbReadHandle, int32_t
|
||||||
j++;
|
j++;
|
||||||
i++;
|
i++;
|
||||||
} else { // pColInfo->info.colId < src->colId, it is a NULL data
|
} else { // pColInfo->info.colId < src->colId, it is a NULL data
|
||||||
for (int32_t k = start; k < num + start; ++k) { // TODO opt performance
|
int32_t rowIndex = numOfRows;
|
||||||
colDataAppend(pColInfo, k, NULL, true);
|
for (int32_t k = start; k < num + start; ++k, ++rowIndex) { // TODO opt performance
|
||||||
|
colDataAppend(pColInfo, rowIndex, NULL, true);
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
@ -1450,8 +1454,10 @@ static int32_t doCopyRowsFromFileBlock(STsdbReadHandle* pTsdbReadHandle, int32_t
|
||||||
|
|
||||||
while (i < requiredNumOfCols) { // the remain columns are all null data
|
while (i < requiredNumOfCols) { // the remain columns are all null data
|
||||||
SColumnInfoData* pColInfo = taosArrayGet(pTsdbReadHandle->pColumns, i);
|
SColumnInfoData* pColInfo = taosArrayGet(pTsdbReadHandle->pColumns, i);
|
||||||
for (int32_t k = start; k < num + start; ++k) {
|
int32_t rowIndex = numOfRows;
|
||||||
colDataAppend(pColInfo, k, NULL, true); // TODO add a fast version to set a number of consecutive NULL value.
|
|
||||||
|
for (int32_t k = start; k < num + start; ++k, ++rowIndex) {
|
||||||
|
colDataAppend(pColInfo, rowIndex, NULL, true); // TODO add a fast version to set a number of consecutive NULL value.
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
@ -1749,7 +1755,7 @@ int32_t getEndPosInDataBlock(STsdbReadHandle* pTsdbReadHandle, SDataBlockInfo* p
|
||||||
// be included in the query time window will be discarded
|
// be included in the query time window will be discarded
|
||||||
static void doMergeTwoLevelData(STsdbReadHandle* pTsdbReadHandle, STableCheckInfo* pCheckInfo, SBlock* pBlock) {
|
static void doMergeTwoLevelData(STsdbReadHandle* pTsdbReadHandle, STableCheckInfo* pCheckInfo, SBlock* pBlock) {
|
||||||
SQueryFilePos* cur = &pTsdbReadHandle->cur;
|
SQueryFilePos* cur = &pTsdbReadHandle->cur;
|
||||||
SDataBlockInfo blockInfo = {0}; // GET_FILE_DATA_BLOCK_INFO(pCheckInfo, pBlock);
|
SDataBlockInfo blockInfo = GET_FILE_DATA_BLOCK_INFO(pCheckInfo, pBlock);
|
||||||
STsdbCfg* pCfg = &pTsdbReadHandle->pTsdb->config;
|
STsdbCfg* pCfg = &pTsdbReadHandle->pTsdb->config;
|
||||||
|
|
||||||
initTableMemIterator(pTsdbReadHandle, pCheckInfo);
|
initTableMemIterator(pTsdbReadHandle, pCheckInfo);
|
||||||
|
@ -1771,9 +1777,7 @@ static void doMergeTwoLevelData(STsdbReadHandle* pTsdbReadHandle, STableCheckInf
|
||||||
STable* pTable = NULL;
|
STable* pTable = NULL;
|
||||||
int32_t endPos = getEndPosInDataBlock(pTsdbReadHandle, &blockInfo);
|
int32_t endPos = getEndPosInDataBlock(pTsdbReadHandle, &blockInfo);
|
||||||
|
|
||||||
tsdbDebug("%p uid:%" PRIu64 " start merge data block, file block range:%" PRIu64 "-%" PRIu64
|
tsdbDebug("%p uid:%" PRIu64 " start merge data block, file block range:%" PRIu64 "-%" PRIu64 " rows:%d, start:%d, end:%d, %s",
|
||||||
" rows:%d, start:%d,"
|
|
||||||
"end:%d, %s",
|
|
||||||
pTsdbReadHandle, pCheckInfo->tableId, blockInfo.window.skey, blockInfo.window.ekey, blockInfo.rows,
|
pTsdbReadHandle, pCheckInfo->tableId, blockInfo.window.skey, blockInfo.window.ekey, blockInfo.rows,
|
||||||
cur->pos, endPos, pTsdbReadHandle->idStr);
|
cur->pos, endPos, pTsdbReadHandle->idStr);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue