[td-14246] fix bug.
This commit is contained in:
parent
e5d7cd15ab
commit
a2d7ce3045
|
@ -1377,7 +1377,6 @@ static int doBinarySearchKey(char* pValue, int num, TSKEY key, int order) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t doCopyRowsFromFileBlock(STsdbReadHandle* pTsdbReadHandle, int32_t capacity, int32_t numOfRows, int32_t start, int32_t end) {
|
static int32_t doCopyRowsFromFileBlock(STsdbReadHandle* pTsdbReadHandle, int32_t capacity, int32_t numOfRows, int32_t start, int32_t end) {
|
||||||
char* pData = NULL;
|
|
||||||
int32_t step = ASCENDING_TRAVERSE(pTsdbReadHandle->order)? 1 : -1;
|
int32_t step = ASCENDING_TRAVERSE(pTsdbReadHandle->order)? 1 : -1;
|
||||||
|
|
||||||
SDataCols* pCols = pTsdbReadHandle->rhelper.pDCols[0];
|
SDataCols* pCols = pTsdbReadHandle->rhelper.pDCols[0];
|
||||||
|
@ -1454,14 +1453,12 @@ static int32_t doCopyRowsFromFileBlock(STsdbReadHandle* pTsdbReadHandle, int32_t
|
||||||
return numOfRows + num;
|
return numOfRows + num;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO fix bug for reverse copy data
|
// TODO fix bug for reverse copy data problem
|
||||||
// TODO handle the null data
|
|
||||||
// Note: row1 always has high priority
|
// Note: row1 always has high priority
|
||||||
static void mergeTwoRowFromMem(STsdbReadHandle* pTsdbReadHandle, int32_t capacity, int32_t numOfRows, STSRow* row1,
|
static void mergeTwoRowFromMem(STsdbReadHandle* pTsdbReadHandle, int32_t capacity, int32_t numOfRows, STSRow* row1,
|
||||||
STSRow* row2, int32_t numOfCols, uint64_t uid, STSchema* pSchema1, STSchema* pSchema2,
|
STSRow* row2, int32_t numOfCols, uint64_t uid, STSchema* pSchema1, STSchema* pSchema2,
|
||||||
bool forceSetNull) {
|
bool forceSetNull) {
|
||||||
#if 1
|
#if 1
|
||||||
char* pData = NULL;
|
|
||||||
STSchema* pSchema;
|
STSchema* pSchema;
|
||||||
STSRow* row;
|
STSRow* row;
|
||||||
int16_t colId;
|
int16_t colId;
|
||||||
|
@ -1503,12 +1500,6 @@ static void mergeTwoRowFromMem(STsdbReadHandle* pTsdbReadHandle, int32_t capacit
|
||||||
while(i < numOfCols && (j < numOfColsOfRow1 || k < numOfColsOfRow2)) {
|
while(i < numOfCols && (j < numOfColsOfRow1 || k < numOfColsOfRow2)) {
|
||||||
SColumnInfoData* pColInfo = taosArrayGet(pTsdbReadHandle->pColumns, i);
|
SColumnInfoData* pColInfo = taosArrayGet(pTsdbReadHandle->pColumns, i);
|
||||||
|
|
||||||
if (ASCENDING_TRAVERSE(pTsdbReadHandle->order)) {
|
|
||||||
pData = (char*)pColInfo->pData + numOfRows * pColInfo->info.bytes;
|
|
||||||
} else {
|
|
||||||
pData = (char*)pColInfo->pData + (capacity - numOfRows - 1) * pColInfo->info.bytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t colIdOfRow1;
|
int32_t colIdOfRow1;
|
||||||
if(j >= numOfColsOfRow1) {
|
if(j >= numOfColsOfRow1) {
|
||||||
colIdOfRow1 = INT32_MAX;
|
colIdOfRow1 = INT32_MAX;
|
||||||
|
@ -1571,43 +1562,11 @@ static void mergeTwoRowFromMem(STsdbReadHandle* pTsdbReadHandle, int32_t capacit
|
||||||
|
|
||||||
if (colId == pColInfo->info.colId) {
|
if (colId == pColInfo->info.colId) {
|
||||||
if (tdValTypeIsNorm(sVal.valType)) {
|
if (tdValTypeIsNorm(sVal.valType)) {
|
||||||
switch (pColInfo->info.type) {
|
colDataAppend(pColInfo, numOfRows, sVal.val, false);
|
||||||
case TSDB_DATA_TYPE_BINARY:
|
|
||||||
case TSDB_DATA_TYPE_NCHAR:
|
|
||||||
memcpy(pData, sVal.val, varDataTLen(sVal.val));
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_BOOL:
|
|
||||||
case TSDB_DATA_TYPE_TINYINT:
|
|
||||||
case TSDB_DATA_TYPE_UTINYINT:
|
|
||||||
*(uint8_t *)pData = *(uint8_t *)sVal.val;
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_SMALLINT:
|
|
||||||
case TSDB_DATA_TYPE_USMALLINT:
|
|
||||||
*(uint16_t *)pData = *(uint16_t *)sVal.val;
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_INT:
|
|
||||||
case TSDB_DATA_TYPE_UINT:
|
|
||||||
*(uint32_t *)pData = *(uint32_t *)sVal.val;
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_BIGINT:
|
|
||||||
case TSDB_DATA_TYPE_UBIGINT:
|
|
||||||
*(uint64_t *)pData = *(uint64_t *)sVal.val;
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_FLOAT:
|
|
||||||
SET_FLOAT_PTR(pData, sVal.val);
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_DOUBLE:
|
|
||||||
SET_DOUBLE_PTR(pData, sVal.val);
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_TIMESTAMP:
|
|
||||||
*(TSKEY*)pData = *(TSKEY*)sVal.val;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
memcpy(pData, sVal.val, pColInfo->info.bytes);
|
|
||||||
}
|
|
||||||
} else if (forceSetNull) {
|
} else if (forceSetNull) {
|
||||||
colDataAppend(pColInfo, numOfRows, NULL, true);
|
colDataAppend(pColInfo, numOfRows, NULL, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
|
|
||||||
if(row == row1) {
|
if(row == row1) {
|
||||||
|
|
|
@ -55,7 +55,8 @@ if $rows != 4 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
|
|
||||||
if $data01 != true then
|
if $data01 != 1 then
|
||||||
|
print expect 1, actual: $data01
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
|
|
||||||
|
@ -80,7 +81,7 @@ system sh/exec.sh -n dnode1 -s start
|
||||||
$loop_cnt = 0
|
$loop_cnt = 0
|
||||||
check_dnode_ready:
|
check_dnode_ready:
|
||||||
$loop_cnt = $loop_cnt + 1
|
$loop_cnt = $loop_cnt + 1
|
||||||
sleep 100
|
sleep 200
|
||||||
if $loop_cnt == 10 then
|
if $loop_cnt == 10 then
|
||||||
print ====> dnode not ready!
|
print ====> dnode not ready!
|
||||||
return -1
|
return -1
|
||||||
|
@ -105,7 +106,7 @@ if $rows != 4 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
|
|
||||||
if $data01 != true then
|
if $data01 != 1 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue