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

Method PayloadScanner

src/processor/operator/order_by/sort_state.cpp:90–114  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

88}
89
90PayloadScanner::PayloadScanner(MergedKeyBlocks* keyBlockToScan,
91 std::vector<FactorizedTable*> payloadTables, uint64_t skipNumber, uint64_t limitNumber)
92 : keyBlockToScan{keyBlockToScan}, payloadTables{std::move(payloadTables)},
93 limitNumber{limitNumber} {
94 if (this->keyBlockToScan == nullptr || this->keyBlockToScan->getNumTuples() == 0) {
95 nextTupleIdxToReadInMergedKeyBlock = 0;
96 endTuplesIdxToReadInMergedKeyBlock = 0;
97 return;
98 }
99 payloadIdxOffset =
100 this->keyBlockToScan->getNumBytesPerTuple() - OrderByConstants::NUM_BYTES_FOR_PAYLOAD_IDX;
101 colsToScan = std::vector<uint32_t>(this->payloadTables[0]->getTableSchema()->getNumColumns());
102 iota(colsToScan.begin(), colsToScan.end(), 0);
103 hasUnflatColInPayload = this->payloadTables[0]->hasUnflatCol();
104 if (!hasUnflatColInPayload) {
105 tuplesToRead = std::make_unique<uint8_t*[]>(DEFAULT_VECTOR_CAPACITY);
106 }
107 nextTupleIdxToReadInMergedKeyBlock = skipNumber == UINT64_MAX ? 0 : skipNumber;
108 endTuplesIdxToReadInMergedKeyBlock =
109 limitNumber == UINT64_MAX ? this->keyBlockToScan->getNumTuples() :
110 std::min(nextTupleIdxToReadInMergedKeyBlock + limitNumber,
111 this->keyBlockToScan->getNumTuples());
112 blockPtrInfo = std::make_unique<BlockPtrInfo>(nextTupleIdxToReadInMergedKeyBlock,
113 endTuplesIdxToReadInMergedKeyBlock, this->keyBlockToScan);
114}
115
116uint64_t PayloadScanner::scan(std::vector<common::ValueVector*> vectorsToRead) {
117 if (limitNumber <= 0 ||

Callers

nothing calls this directly

Calls 7

hasUnflatColMethod · 0.80
getNumTuplesMethod · 0.45
getNumBytesPerTupleMethod · 0.45
getNumColumnsMethod · 0.45
getTableSchemaMethod · 0.45
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected