提交 a99b0376 编写于 作者: A Alex Duan

[TS-238-D]<fix>(tsdb): affected rows ok

上级 471d853f
...@@ -84,14 +84,13 @@ static int tsdbTruncateImplCommon(STsdbRepo *pRepo, SControlDataInfo* pCtlInfo ...@@ -84,14 +84,13 @@ static int tsdbTruncateImplCommon(STsdbRepo *pRepo, SControlDataInfo* pCtlInfo
// delete // delete
int tsdbControlDelete(STsdbRepo* pRepo, SControlDataInfo* pCtlInfo) { int tsdbControlDelete(STsdbRepo* pRepo, SControlDataInfo* pCtlInfo) {
int ret = TSDB_CODE_SUCCESS; int32_t ret = tsdbTruncateImplCommon(pRepo, pCtlInfo);
if(pCtlInfo->pRsp) { if(pCtlInfo->pRsp) {
pCtlInfo->pRsp->affectedRows = htonl(23); pCtlInfo->pRsp->affectedRows = htonl(pCtlInfo->pRsp->affectedRows);
pCtlInfo->pRsp->code = ret; pCtlInfo->pRsp->code = ret;
} }
return tsdbTruncateImplCommon(pRepo, pCtlInfo); return ret;
} }
static int tsdbTruncateImplCommon(STsdbRepo *pRepo, SControlDataInfo* pCtlInfo) { static int tsdbTruncateImplCommon(STsdbRepo *pRepo, SControlDataInfo* pCtlInfo) {
...@@ -518,6 +517,7 @@ static void tsdbTruncateFSetEnd(STruncateH *ptru) { tsdbCloseAndUnsetFSet(&(ptru ...@@ -518,6 +517,7 @@ static void tsdbTruncateFSetEnd(STruncateH *ptru) { tsdbCloseAndUnsetFSet(&(ptru
static int32_t tsdbFilterDataCols(STruncateH *ptru, SDataCols *pSrcDCols) { static int32_t tsdbFilterDataCols(STruncateH *ptru, SDataCols *pSrcDCols) {
SDataCols * pDstDCols = ptru->pDCols; SDataCols * pDstDCols = ptru->pDCols;
SControlData* pCtlData = &ptru->pCtlInfo->ctlData; SControlData* pCtlData = &ptru->pCtlInfo->ctlData;
int32_t delRows = 0;
tdResetDataCols(pDstDCols); tdResetDataCols(pDstDCols);
pDstDCols->maxCols = pSrcDCols->maxCols; pDstDCols->maxCols = pSrcDCols->maxCols;
...@@ -528,7 +528,8 @@ static int32_t tsdbFilterDataCols(STruncateH *ptru, SDataCols *pSrcDCols) { ...@@ -528,7 +528,8 @@ static int32_t tsdbFilterDataCols(STruncateH *ptru, SDataCols *pSrcDCols) {
for (int i = 0; i < pSrcDCols->numOfRows; ++i) { for (int i = 0; i < pSrcDCols->numOfRows; ++i) {
int64_t tsKey = *(int64_t *)tdGetColDataOfRow(pSrcDCols->cols, i); int64_t tsKey = *(int64_t *)tdGetColDataOfRow(pSrcDCols->cols, i);
if ((tsKey >= pCtlData->win.skey) && (tsKey <= pCtlData->win.ekey)) { if ((tsKey >= pCtlData->win.skey) && (tsKey <= pCtlData->win.ekey)) {
printf("tsKey %" PRId64 " is filtered\n", tsKey); // delete row
delRows ++;
continue; continue;
} }
for (int j = 0; j < pSrcDCols->numOfCols; ++j) { for (int j = 0; j < pSrcDCols->numOfCols; ++j) {
...@@ -540,6 +541,11 @@ static int32_t tsdbFilterDataCols(STruncateH *ptru, SDataCols *pSrcDCols) { ...@@ -540,6 +541,11 @@ static int32_t tsdbFilterDataCols(STruncateH *ptru, SDataCols *pSrcDCols) {
++ pDstDCols->numOfRows; ++ pDstDCols->numOfRows;
} }
// affectedRows
if (ptru->pCtlInfo->pRsp) {
ptru->pCtlInfo->pRsp->affectedRows += delRows;
}
return 0; return 0;
} }
...@@ -619,7 +625,7 @@ int tsdbRemoveDelBlocks(STruncateH *ptru, STableTruncateH * pItem) { ...@@ -619,7 +625,7 @@ int tsdbRemoveDelBlocks(STruncateH *ptru, STableTruncateH * pItem) {
// loop // loop
int numOfBlocks = pItem->pBlkIdx->numOfBlocks; int numOfBlocks = pItem->pBlkIdx->numOfBlocks;
int from = -1; int from = -1;
int delAll = 0; int delRows = 0;
for (int i = numOfBlocks - 1; i >= 0; --i) { for (int i = numOfBlocks - 1; i >= 0; --i) {
SBlock *pBlock = pItem->pInfo->blocks + i; SBlock *pBlock = pItem->pInfo->blocks + i;
...@@ -627,12 +633,12 @@ int tsdbRemoveDelBlocks(STruncateH *ptru, STableTruncateH * pItem) { ...@@ -627,12 +633,12 @@ int tsdbRemoveDelBlocks(STruncateH *ptru, STableTruncateH * pItem) {
if (solve == BLOCK_DELETE) { if (solve == BLOCK_DELETE) {
if (from == -1) if (from == -1)
from = i; from = i;
delRows += pBlock->numOfRows;
} else { } else {
if(from != -1) { if(from != -1) {
// do del // do del
int delCnt = from - i; int delCnt = from - i;
memmove(pItem->pInfo->blocks + i + 1, pItem->pInfo->blocks + i + 1 + delCnt, (numOfBlocks - (i+1) - delCnt) * sizeof(SBlock)); memmove(pItem->pInfo->blocks + i + 1, pItem->pInfo->blocks + i + 1 + delCnt, (numOfBlocks - (i+1) - delCnt) * sizeof(SBlock));
delAll += delCnt;
numOfBlocks -= delCnt; numOfBlocks -= delCnt;
from = -1; from = -1;
} }
...@@ -642,14 +648,16 @@ int tsdbRemoveDelBlocks(STruncateH *ptru, STableTruncateH * pItem) { ...@@ -642,14 +648,16 @@ int tsdbRemoveDelBlocks(STruncateH *ptru, STableTruncateH * pItem) {
if(from != -1) { if(from != -1) {
int delCnt = from + 1; int delCnt = from + 1;
memmove(pItem->pInfo->blocks, pItem->pInfo->blocks + delCnt, (numOfBlocks - delCnt) * sizeof(SBlock)); memmove(pItem->pInfo->blocks, pItem->pInfo->blocks + delCnt, (numOfBlocks - delCnt) * sizeof(SBlock));
delAll += delCnt;
numOfBlocks -= delCnt; numOfBlocks -= delCnt;
} }
// set value // set value
pItem->pBlkIdx->numOfBlocks = numOfBlocks; pItem->pBlkIdx->numOfBlocks = numOfBlocks;
if(ptru->pCtlInfo->pRsp) {
ptru->pCtlInfo->pRsp->affectedRows += delRows;
}
return delAll; return TSDB_CODE_SUCCESS;
} }
static void tsdbAddBlock(STruncateH *ptru, STableTruncateH *pItem, SBlock *pBlock) { static void tsdbAddBlock(STruncateH *ptru, STableTruncateH *pItem, SBlock *pBlock) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册