| 106 | } |
| 107 | |
| 108 | DataBlockIterator *DataBlock_Scan(const DataBlock *dataBlock) { |
| 109 | ASSERT(dataBlock != NULL); |
| 110 | Block *startBlock = dataBlock->blocks[0]; |
| 111 | |
| 112 | // Deleted items are skipped, we're about to perform |
| 113 | // array_len(dataBlock->deletedIdx) skips during out scan. |
| 114 | int64_t endPos = dataBlock->itemCount + array_len(dataBlock->deletedIdx); |
| 115 | return DataBlockIterator_New(startBlock, dataBlock->blockCap, endPos); |
| 116 | } |
| 117 | |
| 118 | DataBlockIterator *DataBlock_FullScan(const DataBlock *dataBlock) { |
| 119 | ASSERT(dataBlock != NULL); |