Kuzu C++ API
Loading...
Searching...
No Matches
result_set.h
Go to the documentation of this file.
1#pragma once
2
3#include <unordered_set>
4
5#include "data_chunk.h"
6#include "data_pos.h"
8
9namespace kuzu {
10namespace processor {
11
12class ResultSet {
13public:
15 explicit ResultSet(common::idx_t numDataChunks) : multiplicity{1}, dataChunks(numDataChunks) {}
16 ResultSet(ResultSetDescriptor* resultSetDescriptor, storage::MemoryManager* memoryManager);
17
18 void insert(common::idx_t pos, std::shared_ptr<common::DataChunk> dataChunk) {
19 KU_ASSERT(dataChunks.size() > pos);
20 dataChunks[pos] = std::move(dataChunk);
21 }
22
23 std::shared_ptr<common::DataChunk> getDataChunk(data_chunk_pos_t dataChunkPos) {
24 return dataChunks[dataChunkPos];
25 }
26 std::shared_ptr<common::ValueVector> getValueVector(const DataPos& dataPos) const {
27 return dataChunks[dataPos.dataChunkPos]->valueVectors[dataPos.valueVectorPos];
28 }
29
30 // Our projection does NOT explicitly remove dataChunk from resultSet. Therefore, caller should
31 // always provide a set of positions when reading from multiple dataChunks.
32 uint64_t getNumTuples(const std::unordered_set<uint32_t>& dataChunksPosInScope) {
33 return getNumTuplesWithoutMultiplicity(dataChunksPosInScope) * multiplicity;
34 }
35
37 const std::unordered_set<uint32_t>& dataChunksPosInScope);
38
39public:
40 uint64_t multiplicity;
41 std::vector<std::shared_ptr<common::DataChunk>> dataChunks;
42};
43
44} // namespace processor
45} // namespace kuzu
#define KU_ASSERT(condition)
Definition assert.h:19
uint64_t multiplicity
Definition result_set.h:40
void insert(common::idx_t pos, std::shared_ptr< common::DataChunk > dataChunk)
Definition result_set.h:18
std::vector< std::shared_ptr< common::DataChunk > > dataChunks
Definition result_set.h:41
ResultSet(ResultSetDescriptor *resultSetDescriptor, storage::MemoryManager *memoryManager)
ResultSet(common::idx_t numDataChunks)
Definition result_set.h:15
uint64_t getNumTuples(const std::unordered_set< uint32_t > &dataChunksPosInScope)
Definition result_set.h:32
uint64_t getNumTuplesWithoutMultiplicity(const std::unordered_set< uint32_t > &dataChunksPosInScope)
std::shared_ptr< common::DataChunk > getDataChunk(data_chunk_pos_t dataChunkPos)
Definition result_set.h:23
std::shared_ptr< common::ValueVector > getValueVector(const DataPos &dataPos) const
Definition result_set.h:26
ResultSet()
Definition result_set.h:14
uint32_t idx_t
Definition types.h:45
Definition client_context.h:38
common::idx_t data_chunk_pos_t
Definition data_pos.h:10
Definition array_utils.h:7
Definition data_pos.h:15
data_chunk_pos_t dataChunkPos
Definition data_pos.h:16
value_vector_pos_t valueVectorPos
Definition data_pos.h:17
Definition result_set_descriptor.h:26