forked from duckdb/duckdb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
row_operations.hpp
40 lines (34 loc) · 1.6 KB
/
row_operations.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//===----------------------------------------------------------------------===//
// DuckDB
//
// duckdb/common/row_operations/row_operations.hpp
//
//
//===----------------------------------------------------------------------===//
#pragma once
#include "duckdb/common/types/data_chunk.hpp"
#include "duckdb/common/types/vector.hpp"
namespace duckdb {
struct AggregateObject;
class RowLayout;
struct SelectionVector;
class Vector;
// RowOperations contains a set of operations that operate on data using a RowLayout
struct RowOperations {
//===--------------------------------------------------------------------===//
// Aggregation Operators
//===--------------------------------------------------------------------===//
//! initialize - unaligned addresses
static void InitializeStates(RowLayout &layout, Vector &addresses, const SelectionVector &sel, idx_t count);
//! destructor - unaligned addresses, updated
static void DestroyStates(RowLayout &layout, Vector &addresses, idx_t count);
//! update - aligned addresses
static void UpdateStates(AggregateObject &aggr, Vector &addresses, DataChunk &payload, idx_t arg_idx, idx_t count);
//! filtered update - aligned addresses
static void UpdateFilteredStates(AggregateObject &aggr, Vector &addresses, DataChunk &payload, idx_t arg_idx);
//! combine - unaligned addresses, updated
static void CombineStates(RowLayout &layout, Vector &sources, Vector &targets, idx_t count);
//! finalize - unaligned addresses, updated
static void FinalizeStates(RowLayout &layout, Vector &addresses, DataChunk &result, idx_t aggr_idx);
};
} // namespace duckdb