/** * Below method will be used to check row got deleted * * @param rowId * @return is present in deleted row */ public boolean containsDeletedRow(int rowId) { if (null != currentDeleteDeltaVo) { return currentDeleteDeltaVo.containsRow(rowId); } return false; }
DeleteDeltaVo deleteDeltaVo = pageIdToBlockLetVo.get(blockletDetail.getBlockletKey()); if (null == deleteDeltaVo) { deleteDeltaVo = new DeleteDeltaVo(); pageIdToBlockLetVo.put(blockletDetail.getBlockletKey(), deleteDeltaVo); deleteDeltaVo.insertData(blockletDetail.getDeletedRows());
/** * Fill the vector during the page decoding. */ private void collectResultInColumnarBatchDirect(BlockletScannedResult scannedResult, CarbonColumnarBatch columnarBatch) { int numberOfPages = scannedResult.numberOfpages(); while (scannedResult.getCurrentPageCounter() < numberOfPages) { int currentPageRowCount = scannedResult.getCurrentPageRowCount(); if (currentPageRowCount == 0) { scannedResult.incrementPageCounter(null); continue; } DeleteDeltaVo deltaVo = scannedResult.getCurrentDeleteDeltaVo(); BitSet bitSet = null; int deletedRows = 0; if (deltaVo != null) { bitSet = deltaVo.getBitSet(); deletedRows = bitSet.cardinality(); } fillColumnVectorDetails(columnarBatch, bitSet); fillResultToColumnarBatch(scannedResult); columnarBatch.setActualSize(currentPageRowCount - deletedRows); scannedResult.setRowCounter(currentPageRowCount - deletedRows); scannedResult.incrementPageCounter(null); return; } }
/** * Mark the filtered rows in columnar batch. These rows will not be added to vector batches later. * @param columnarBatch * @param startRow * @param size * @param vectorOffset */ public int markFilteredRows(CarbonColumnarBatch columnarBatch, int startRow, int size, int vectorOffset) { int rowsFiltered = 0; if (currentDeleteDeltaVo != null) { int len = startRow + size; for (int i = startRow; i < len; i++) { int rowId = pageFilteredRowId != null ? pageFilteredRowId[pageCounter][i] : i; if (currentDeleteDeltaVo.containsRow(rowId)) { columnarBatch.markFiltered(vectorOffset); rowsFiltered++; } vectorOffset++; } } return rowsFiltered; }