MCPcopy Create free account
hub / github.com/LadybugDB/ladybug / getSelVectorForScan

Method getSelVectorForScan

src/storage/table/version_info.cpp:162–190  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

160}
161
162void VectorVersionInfo::getSelVectorForScan(const transaction_t startTS,
163 const transaction_t transactionID, SelectionVector& selVector, const row_idx_t startRow,
164 const row_idx_t numRows, sel_t startOutputPos) const {
165 auto numSelected = selVector.getSelSize();
166 if (deletionStatus == DeletionStatus::NO_DELETED &&
167 insertionStatus == InsertionStatus::ALWAYS_INSERTED) {
168 if (selVector.isUnfiltered()) {
169 selVector.setSelSize(selVector.getSelSize() + numRows);
170 } else {
171 for (auto i = 0u; i < numRows; i++) {
172 selVector.getMutableBuffer()[numSelected++] = startOutputPos + i;
173 }
174 selVector.setToFiltered(numSelected);
175 }
176 } else if (insertionStatus != InsertionStatus::NO_INSERTED) {
177 // If there were no deleted values up to this point the selVector may be unfiltered but have
178 // non-zero size, and the mutable buffer may have arbitrary contents
179 if (selVector.isUnfiltered()) {
180 selVector.makeDynamic();
181 }
182 for (auto i = 0u; i < numRows; i++) {
183 if (const auto rowIdx = startRow + i; isInserted(startTS, transactionID, rowIdx) &&
184 !isDeleted(startTS, transactionID, rowIdx)) {
185 selVector.getMutableBuffer()[numSelected++] = startOutputPos + i;
186 }
187 }
188 selVector.setToFiltered(numSelected);
189 }
190}
191
192bool VectorVersionInfo::isDeleted(const transaction_t startTS, const transaction_t transactionID,
193 const row_idx_t rowIdx) const {

Callers 1

getSelVectorToScanMethod · 0.80

Calls 7

isDeletedFunction · 0.85
getSelSizeMethod · 0.80
isUnfilteredMethod · 0.80
setSelSizeMethod · 0.80
getMutableBufferMethod · 0.80
setToFilteredMethod · 0.80
makeDynamicMethod · 0.80

Tested by

no test coverage detected