Skip to content

Commit

Permalink
Merge pull request #11402 from philippmd/bind-create-index-on-binder
Browse files Browse the repository at this point in the history
Move BindCreateIndex from Catalog to Binder
  • Loading branch information
Mytherin committed Apr 2, 2024
2 parents 13f2724 + e6a3be3 commit acc5e79
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 26 deletions.
11 changes: 6 additions & 5 deletions src/include/duckdb/catalog/catalog.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,16 @@
#pragma once

#include "duckdb/catalog/catalog_entry.hpp"
#include "duckdb/common/mutex.hpp"
#include "duckdb/parser/query_error_context.hpp"
#include "duckdb/catalog/catalog_transaction.hpp"
#include "duckdb/common/reference_map.hpp"
#include "duckdb/common/atomic.hpp"
#include "duckdb/common/optional_ptr.hpp"
#include "duckdb/common/enums/catalog_lookup_behavior.hpp"
#include "duckdb/common/enums/on_entry_not_found.hpp"
#include "duckdb/common/exception/catalog_exception.hpp"
#include "duckdb/common/enums/catalog_lookup_behavior.hpp"
#include "duckdb/common/mutex.hpp"
#include "duckdb/common/optional_ptr.hpp"
#include "duckdb/common/reference_map.hpp"
#include "duckdb/parser/query_error_context.hpp"

#include <functional>

namespace duckdb {
Expand Down
9 changes: 6 additions & 3 deletions src/include/duckdb/planner/binder.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@
#include "duckdb/common/case_insensitive_map.hpp"
#include "duckdb/common/enums/join_type.hpp"
#include "duckdb/common/enums/statement_type.hpp"
#include "duckdb/common/unordered_map.hpp"
#include "duckdb/common/exception/binder_exception.hpp"
#include "duckdb/common/reference_map.hpp"
#include "duckdb/common/unordered_map.hpp"
#include "duckdb/parser/column_definition.hpp"
#include "duckdb/parser/query_node.hpp"
#include "duckdb/parser/result_modifier.hpp"
Expand All @@ -21,9 +22,8 @@
#include "duckdb/planner/bound_statement.hpp"
#include "duckdb/planner/bound_tokens.hpp"
#include "duckdb/planner/expression/bound_columnref_expression.hpp"
#include "duckdb/planner/logical_operator.hpp"
#include "duckdb/planner/joinside.hpp"
#include "duckdb/common/reference_map.hpp"
#include "duckdb/planner/logical_operator.hpp"

namespace duckdb {
class BoundResultModifier;
Expand Down Expand Up @@ -123,6 +123,9 @@ class Binder : public std::enable_shared_from_this<Binder> {
SchemaCatalogEntry &BindSchema(CreateInfo &info);
SchemaCatalogEntry &BindCreateFunctionInfo(CreateInfo &info);

unique_ptr<LogicalOperator> BindCreateIndex(CreateStatement &stmt, TableCatalogEntry &table,
unique_ptr<LogicalOperator> plan);

//! Check usage, and cast named parameters to their types
static void BindNamedParameters(named_parameter_type_map_t &types, named_parameter_map_t &values,
QueryErrorContext &error_context, string &func_name);
Expand Down
41 changes: 23 additions & 18 deletions src/planner/binder/statement/bind_create.cpp
Original file line number Diff line number Diff line change
@@ -1,25 +1,35 @@
#include "duckdb/catalog/catalog.hpp"
#include "duckdb/catalog/catalog_search_path.hpp"
#include "duckdb/catalog/catalog_entry/duck_table_entry.hpp"
#include "duckdb/catalog/catalog_entry/schema_catalog_entry.hpp"
#include "duckdb/catalog/catalog_entry/type_catalog_entry.hpp"
#include "duckdb/main/secret/secret_manager.hpp"
#include "duckdb/catalog/catalog_search_path.hpp"
#include "duckdb/catalog/duck_catalog.hpp"
#include "duckdb/function/scalar_macro_function.hpp"
#include "duckdb/function/table/table_scan.hpp"
#include "duckdb/main/attached_database.hpp"
#include "duckdb/main/client_context.hpp"
#include "duckdb/main/client_data.hpp"
#include "duckdb/main/database.hpp"
#include "duckdb/main/database_manager.hpp"
#include "duckdb/main/secret/secret_manager.hpp"
#include "duckdb/parser/constraints/foreign_key_constraint.hpp"
#include "duckdb/parser/constraints/list.hpp"
#include "duckdb/parser/constraints/unique_constraint.hpp"
#include "duckdb/parser/expression/constant_expression.hpp"
#include "duckdb/parser/expression/function_expression.hpp"
#include "duckdb/parser/expression/subquery_expression.hpp"
#include "duckdb/planner/expression/bound_cast_expression.hpp"
#include "duckdb/planner/expression/bound_columnref_expression.hpp"
#include "duckdb/parser/parsed_data/create_index_info.hpp"
#include "duckdb/parser/parsed_data/create_macro_info.hpp"
#include "duckdb/parser/parsed_data/create_view_info.hpp"
#include "duckdb/parser/tableref/table_function_ref.hpp"
#include "duckdb/parser/parsed_data/create_secret_info.hpp"
#include "duckdb/parser/parsed_data/create_view_info.hpp"
#include "duckdb/parser/parsed_expression_iterator.hpp"
#include "duckdb/parser/statement/create_statement.hpp"
#include "duckdb/parser/tableref/basetableref.hpp"
#include "duckdb/parser/tableref/table_function_ref.hpp"
#include "duckdb/planner/binder.hpp"
#include "duckdb/planner/bound_query_node.hpp"
#include "duckdb/planner/expression/bound_cast_expression.hpp"
#include "duckdb/planner/expression/bound_columnref_expression.hpp"
#include "duckdb/planner/expression_binder/index_binder.hpp"
#include "duckdb/planner/expression_binder/select_binder.hpp"
#include "duckdb/planner/operator/logical_create.hpp"
Expand All @@ -30,18 +40,8 @@
#include "duckdb/planner/parsed_data/bound_create_table_info.hpp"
#include "duckdb/planner/query_node/bound_select_node.hpp"
#include "duckdb/planner/tableref/bound_basetableref.hpp"
#include "duckdb/parser/constraints/foreign_key_constraint.hpp"
#include "duckdb/function/scalar_macro_function.hpp"
#include "duckdb/storage/data_table.hpp"
#include "duckdb/storage/storage_extension.hpp"
#include "duckdb/main/client_data.hpp"
#include "duckdb/parser/constraints/unique_constraint.hpp"
#include "duckdb/parser/constraints/list.hpp"
#include "duckdb/main/database_manager.hpp"
#include "duckdb/main/attached_database.hpp"
#include "duckdb/catalog/duck_catalog.hpp"
#include "duckdb/function/table/table_scan.hpp"
#include "duckdb/parser/tableref/basetableref.hpp"

namespace duckdb {

Expand Down Expand Up @@ -441,12 +441,17 @@ static bool AnyConstraintReferencesGeneratedColumn(CreateTableInfo &table_info)

unique_ptr<LogicalOperator> DuckCatalog::BindCreateIndex(Binder &binder, CreateStatement &stmt,
TableCatalogEntry &table, unique_ptr<LogicalOperator> plan) {
return binder.BindCreateIndex(stmt, table, std::move(plan));
}

unique_ptr<LogicalOperator> Binder::BindCreateIndex(CreateStatement &stmt, TableCatalogEntry &table,
unique_ptr<LogicalOperator> plan) {
D_ASSERT(plan->type == LogicalOperatorType::LOGICAL_GET);
auto &base = stmt.info->Cast<CreateIndexInfo>();

auto &get = plan->Cast<LogicalGet>();
// bind the index expressions
IndexBinder index_binder(binder, binder.context);
IndexBinder index_binder(*this, context);
vector<unique_ptr<Expression>> expressions;
expressions.reserve(base.expressions.size());
for (auto &expr : base.expressions) {
Expand Down Expand Up @@ -539,7 +544,7 @@ BoundStatement Binder::Bind(CreateStatement &stmt) {
if (plan->type != LogicalOperatorType::LOGICAL_GET) {
throw BinderException("Cannot create index on a view!");
}
result.plan = table.catalog.BindCreateIndex(*this, stmt, table, std::move(plan));
result.plan = BindCreateIndex(stmt, table, std::move(plan));
break;
}
case CatalogType::TABLE_ENTRY: {
Expand Down

0 comments on commit acc5e79

Please sign in to comment.