1//===----------------------------------------------------------------------===//
2// DuckDB
3//
4// duckdb/planner/constraints/bound_unique_constraint.hpp
5//
6//
7//===----------------------------------------------------------------------===//
8
9#pragma once
10
11#include "duckdb/common/unordered_set.hpp"
12#include "duckdb/planner/bound_constraint.hpp"
13#include "duckdb/common/index_map.hpp"
14
15namespace duckdb {
16
17class BoundUniqueConstraint : public BoundConstraint {
18public:
19 static constexpr const ConstraintType TYPE = ConstraintType::UNIQUE;
20
21public:
22 BoundUniqueConstraint(vector<LogicalIndex> keys, logical_index_set_t key_set, bool is_primary_key)
23 : BoundConstraint(ConstraintType::UNIQUE), keys(std::move(keys)), key_set(std::move(key_set)),
24 is_primary_key(is_primary_key) {
25#ifdef DEBUG
26 D_ASSERT(keys.size() == key_set.size());
27 for (auto &key : keys) {
28 D_ASSERT(key_set.find(key) != key_set.end());
29 }
30#endif
31 }
32
33 //! The keys that define the unique constraint
34 vector<LogicalIndex> keys;
35 //! The same keys but stored as an unordered set
36 logical_index_set_t key_set;
37 //! Whether or not the unique constraint is a primary key
38 bool is_primary_key;
39};
40
41} // namespace duckdb
42