1//===----------------------------------------------------------------------===//
2// DuckDB
3//
4// duckdb/planner/expression_binder/alter_binder.hpp
5//
6//
7//===----------------------------------------------------------------------===//
8
9#pragma once
10
11#include "duckdb/parser/column_definition.hpp"
12#include "duckdb/planner/expression_binder.hpp"
13
14namespace duckdb {
15class TableCatalogEntry;
16
17//! The ALTER binder is responsible for binding an expression within alter statements
18class AlterBinder : public ExpressionBinder {
19public:
20 AlterBinder(Binder &binder, ClientContext &context, TableCatalogEntry &table, vector<LogicalIndex> &bound_columns,
21 LogicalType target_type);
22
23 TableCatalogEntry &table;
24 vector<LogicalIndex> &bound_columns;
25
26protected:
27 BindResult BindExpression(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth,
28 bool root_expression = false) override;
29
30 BindResult BindColumn(ColumnRefExpression &expr);
31
32 string UnsupportedAggregateMessage() override;
33};
34
35} // namespace duckdb
36