duckdb 0.7.2-dev2507.0 → 0.7.2-dev2552.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/connection.cpp +1 -1
- package/src/duckdb/extension/icu/icu-dateadd.cpp +3 -3
- package/src/duckdb/extension/icu/icu-datepart.cpp +3 -3
- package/src/duckdb/extension/icu/icu-datesub.cpp +2 -2
- package/src/duckdb/extension/icu/icu-datetrunc.cpp +1 -1
- package/src/duckdb/extension/icu/icu-extension.cpp +3 -3
- package/src/duckdb/extension/icu/icu-list-range.cpp +2 -2
- package/src/duckdb/extension/icu/icu-makedate.cpp +1 -1
- package/src/duckdb/extension/icu/icu-strptime.cpp +4 -4
- package/src/duckdb/extension/icu/icu-table-range.cpp +2 -2
- package/src/duckdb/extension/icu/icu-timebucket.cpp +1 -1
- package/src/duckdb/extension/icu/icu-timezone.cpp +4 -4
- package/src/duckdb/extension/json/json-extension.cpp +6 -6
- package/src/duckdb/extension/parquet/parquet-extension.cpp +9 -8
- package/src/duckdb/src/catalog/catalog.cpp +166 -127
- package/src/duckdb/src/catalog/catalog_entry/copy_function_catalog_entry.cpp +3 -3
- package/src/duckdb/src/catalog/catalog_entry/duck_index_entry.cpp +1 -1
- package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +90 -82
- package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +65 -67
- package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +3 -3
- package/src/duckdb/src/catalog/catalog_entry/pragma_function_catalog_entry.cpp +4 -4
- package/src/duckdb/src/catalog/catalog_entry/scalar_function_catalog_entry.cpp +8 -8
- package/src/duckdb/src/catalog/catalog_entry/scalar_macro_catalog_entry.cpp +10 -10
- package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +6 -6
- package/src/duckdb/src/catalog/catalog_entry/sequence_catalog_entry.cpp +6 -6
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +4 -4
- package/src/duckdb/src/catalog/catalog_entry/table_function_catalog_entry.cpp +9 -9
- package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +5 -5
- package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +23 -23
- package/src/duckdb/src/catalog/catalog_entry.cpp +27 -6
- package/src/duckdb/src/catalog/catalog_search_path.cpp +2 -2
- package/src/duckdb/src/catalog/catalog_set.cpp +84 -87
- package/src/duckdb/src/catalog/catalog_transaction.cpp +1 -1
- package/src/duckdb/src/catalog/default/default_functions.cpp +1 -1
- package/src/duckdb/src/catalog/default/default_schemas.cpp +1 -1
- package/src/duckdb/src/catalog/default/default_types.cpp +1 -1
- package/src/duckdb/src/catalog/default/default_views.cpp +1 -1
- package/src/duckdb/src/catalog/dependency_list.cpp +2 -2
- package/src/duckdb/src/catalog/dependency_manager.cpp +9 -10
- package/src/duckdb/src/catalog/duck_catalog.cpp +30 -26
- package/src/duckdb/src/catalog/similar_catalog_entry.cpp +1 -1
- package/src/duckdb/src/common/types.cpp +15 -27
- package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +2 -2
- package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +4 -3
- package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +19 -18
- package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +5 -5
- package/src/duckdb/src/execution/operator/schema/physical_alter.cpp +1 -1
- package/src/duckdb/src/execution/operator/schema/physical_create_function.cpp +1 -1
- package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +6 -5
- package/src/duckdb/src/execution/operator/schema/physical_create_schema.cpp +1 -1
- package/src/duckdb/src/execution/operator/schema/physical_create_sequence.cpp +1 -1
- package/src/duckdb/src/execution/operator/schema/physical_create_table.cpp +2 -2
- package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +4 -3
- package/src/duckdb/src/execution/operator/schema/physical_create_view.cpp +1 -1
- package/src/duckdb/src/execution/operator/schema/physical_detach.cpp +1 -1
- package/src/duckdb/src/execution/operator/schema/physical_drop.cpp +2 -2
- package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +4 -4
- package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +4 -3
- package/src/duckdb/src/execution/physical_plan/plan_delete.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan/plan_update.cpp +1 -1
- package/src/duckdb/src/function/built_in_functions.cpp +10 -10
- package/src/duckdb/src/function/function_binder.cpp +3 -3
- package/src/duckdb/src/function/scalar/list/list_aggregates.cpp +5 -6
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -2
- package/src/duckdb/src/function/scalar/sequence/nextval.cpp +9 -8
- package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +6 -6
- package/src/duckdb/src/function/table/arrow.cpp +5 -5
- package/src/duckdb/src/function/table/system/duckdb_columns.cpp +8 -7
- package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +14 -14
- package/src/duckdb/src/function/table/system/duckdb_databases.cpp +2 -2
- package/src/duckdb/src/function/table/system/duckdb_functions.cpp +26 -25
- package/src/duckdb/src/function/table/system/duckdb_indexes.cpp +13 -12
- package/src/duckdb/src/function/table/system/duckdb_schemas.cpp +7 -7
- package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +8 -9
- package/src/duckdb/src/function/table/system/duckdb_tables.cpp +10 -9
- package/src/duckdb/src/function/table/system/duckdb_types.cpp +13 -13
- package/src/duckdb/src/function/table/system/duckdb_views.cpp +11 -10
- package/src/duckdb/src/function/table/system/pragma_collations.cpp +2 -2
- package/src/duckdb/src/function/table/system/pragma_database_size.cpp +5 -5
- package/src/duckdb/src/function/table/system/pragma_storage_info.cpp +3 -3
- package/src/duckdb/src/function/table/system/pragma_table_info.cpp +2 -2
- package/src/duckdb/src/function/table/table_scan.cpp +39 -37
- package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
- package/src/duckdb/src/function/udf_function.cpp +2 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +122 -81
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/aggregate_function_catalog_entry.hpp +2 -3
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/collate_catalog_entry.hpp +3 -3
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/copy_function_catalog_entry.hpp +1 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_index_entry.hpp +1 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_schema_entry.hpp +24 -20
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +3 -3
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/index_catalog_entry.hpp +1 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/macro_catalog_entry.hpp +2 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/pragma_function_catalog_entry.hpp +1 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/scalar_function_catalog_entry.hpp +2 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/scalar_macro_catalog_entry.hpp +1 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +22 -17
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +1 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +1 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_function_catalog_entry.hpp +2 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_macro_catalog_entry.hpp +1 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +1 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/view_catalog_entry.hpp +3 -3
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +28 -7
- package/src/duckdb/src/include/duckdb/catalog/catalog_set.hpp +20 -19
- package/src/duckdb/src/include/duckdb/catalog/duck_catalog.hpp +9 -9
- package/src/duckdb/src/include/duckdb/catalog/similar_catalog_entry.hpp +2 -1
- package/src/duckdb/src/include/duckdb/catalog/standard_entry.hpp +10 -4
- package/src/duckdb/src/include/duckdb/common/enums/on_entry_not_found.hpp +17 -0
- package/src/duckdb/src/include/duckdb/common/types.hpp +3 -4
- package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +4 -4
- package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +3 -2
- package/src/duckdb/src/include/duckdb/function/table/table_scan.hpp +5 -4
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +28 -15
- package/src/duckdb/src/include/duckdb/main/attached_database.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/client_context.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/database_manager.hpp +3 -2
- package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/keyword_helper.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +7 -5
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_info.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/detach_info.hpp +3 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +5 -5
- package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +13 -0
- package/src/duckdb/src/include/duckdb/parser/tableref.hpp +5 -2
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +2 -0
- package/src/duckdb/src/include/duckdb/planner/binder.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression_binder/base_select_binder.hpp +1 -2
- package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +4 -7
- package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +1 -1
- package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +12 -0
- package/src/duckdb/src/main/attached_database.cpp +12 -6
- package/src/duckdb/src/main/capi/table_function-c.cpp +17 -16
- package/src/duckdb/src/main/client_context.cpp +12 -11
- package/src/duckdb/src/main/database_manager.cpp +13 -12
- package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +1 -2
- package/src/duckdb/src/parser/parsed_data/alter_info.cpp +3 -3
- package/src/duckdb/src/parser/parsed_data/alter_scalar_function_info.cpp +2 -2
- package/src/duckdb/src/parser/parsed_data/alter_table_function_info.cpp +2 -2
- package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +9 -9
- package/src/duckdb/src/parser/parsed_data/create_scalar_function_info.cpp +2 -2
- package/src/duckdb/src/parser/parsed_data/create_table_function_info.cpp +2 -2
- package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +2 -2
- package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +2 -2
- package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +3 -2
- package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +5 -1
- package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +1 -1
- package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +1 -1
- package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +1 -1
- package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +26 -27
- package/src/duckdb/src/planner/binder/expression/bind_between_expression.cpp +17 -17
- package/src/duckdb/src/planner/binder/expression/bind_case_expression.cpp +9 -9
- package/src/duckdb/src/planner/binder/expression/bind_cast_expression.cpp +6 -6
- package/src/duckdb/src/planner/binder/expression/bind_collate_expression.cpp +6 -6
- package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +2 -2
- package/src/duckdb/src/planner/binder/expression/bind_comparison_expression.cpp +21 -21
- package/src/duckdb/src/planner/binder/expression/bind_conjunction_expression.cpp +2 -3
- package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +33 -36
- package/src/duckdb/src/planner/binder/expression/bind_macro_expression.cpp +5 -5
- package/src/duckdb/src/planner/binder/expression/bind_operator_expression.cpp +23 -23
- package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +4 -4
- package/src/duckdb/src/planner/binder/expression/bind_unnest_expression.cpp +7 -7
- package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +23 -23
- package/src/duckdb/src/planner/binder/query_node/bind_table_macro_node.cpp +4 -4
- package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +14 -13
- package/src/duckdb/src/planner/binder/statement/bind_create.cpp +36 -35
- package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +3 -3
- package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +1 -1
- package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +4 -4
- package/src/duckdb/src/planner/binder/statement/bind_export.cpp +10 -10
- package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
- package/src/duckdb/src/planner/binder/statement/bind_pragma.cpp +4 -4
- package/src/duckdb/src/planner/binder/statement/bind_simple.cpp +5 -4
- package/src/duckdb/src/planner/binder/statement/bind_update.cpp +1 -1
- package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +3 -3
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +10 -12
- package/src/duckdb/src/planner/binder.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_expression.cpp +11 -2
- package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +2 -5
- package/src/duckdb/src/planner/operator/logical_create.cpp +2 -1
- package/src/duckdb/src/planner/operator/logical_create_index.cpp +2 -2
- package/src/duckdb/src/planner/operator/logical_delete.cpp +2 -2
- package/src/duckdb/src/planner/operator/logical_get.cpp +1 -1
- package/src/duckdb/src/planner/operator/logical_insert.cpp +2 -7
- package/src/duckdb/src/planner/operator/logical_update.cpp +2 -6
- package/src/duckdb/src/planner/parsed_data/bound_create_table_info.cpp +2 -2
- package/src/duckdb/src/planner/pragma_handler.cpp +3 -4
- package/src/duckdb/src/storage/checkpoint_manager.cpp +46 -46
- package/src/duckdb/src/storage/data_table.cpp +3 -6
- package/src/duckdb/src/storage/table/update_segment.cpp +1 -1
- package/src/duckdb/src/storage/wal_replay.cpp +28 -30
- package/src/duckdb/src/storage/write_ahead_log.cpp +8 -8
- package/src/duckdb/src/transaction/cleanup_state.cpp +1 -1
- package/src/duckdb/src/transaction/commit_state.cpp +3 -4
- package/src/duckdb/src/transaction/transaction_context.cpp +1 -1
@@ -90,7 +90,7 @@ Catalog &Catalog::GetCatalog(ClientContext &context, const string &catalog_name)
|
|
90
90
|
//===--------------------------------------------------------------------===//
|
91
91
|
// Schema
|
92
92
|
//===--------------------------------------------------------------------===//
|
93
|
-
CatalogEntry
|
93
|
+
optional_ptr<CatalogEntry> Catalog::CreateSchema(ClientContext &context, CreateSchemaInfo &info) {
|
94
94
|
return CreateSchema(GetCatalogTransaction(context), info);
|
95
95
|
}
|
96
96
|
|
@@ -101,177 +101,185 @@ CatalogTransaction Catalog::GetCatalogTransaction(ClientContext &context) {
|
|
101
101
|
//===--------------------------------------------------------------------===//
|
102
102
|
// Table
|
103
103
|
//===--------------------------------------------------------------------===//
|
104
|
-
CatalogEntry
|
104
|
+
optional_ptr<CatalogEntry> Catalog::CreateTable(ClientContext &context, BoundCreateTableInfo &info) {
|
105
105
|
return CreateTable(GetCatalogTransaction(context), info);
|
106
106
|
}
|
107
107
|
|
108
|
-
CatalogEntry
|
108
|
+
optional_ptr<CatalogEntry> Catalog::CreateTable(ClientContext &context, unique_ptr<CreateTableInfo> info) {
|
109
109
|
auto binder = Binder::CreateBinder(context);
|
110
110
|
auto bound_info = binder->BindCreateTableInfo(std::move(info));
|
111
|
-
return CreateTable(context, bound_info
|
111
|
+
return CreateTable(context, *bound_info);
|
112
112
|
}
|
113
113
|
|
114
|
-
CatalogEntry
|
115
|
-
|
114
|
+
optional_ptr<CatalogEntry> Catalog::CreateTable(CatalogTransaction transaction, SchemaCatalogEntry &schema,
|
115
|
+
BoundCreateTableInfo &info) {
|
116
116
|
return schema.CreateTable(transaction, info);
|
117
117
|
}
|
118
118
|
|
119
|
-
CatalogEntry
|
120
|
-
auto schema = GetSchema(transaction, info
|
121
|
-
return CreateTable(transaction,
|
119
|
+
optional_ptr<CatalogEntry> Catalog::CreateTable(CatalogTransaction transaction, BoundCreateTableInfo &info) {
|
120
|
+
auto &schema = GetSchema(transaction, info.base->schema);
|
121
|
+
return CreateTable(transaction, schema, info);
|
122
122
|
}
|
123
123
|
|
124
124
|
//===--------------------------------------------------------------------===//
|
125
125
|
// View
|
126
126
|
//===--------------------------------------------------------------------===//
|
127
|
-
CatalogEntry
|
128
|
-
auto schema = GetSchema(transaction, info
|
129
|
-
return CreateView(transaction,
|
127
|
+
optional_ptr<CatalogEntry> Catalog::CreateView(CatalogTransaction transaction, CreateViewInfo &info) {
|
128
|
+
auto &schema = GetSchema(transaction, info.schema);
|
129
|
+
return CreateView(transaction, schema, info);
|
130
130
|
}
|
131
131
|
|
132
|
-
CatalogEntry
|
132
|
+
optional_ptr<CatalogEntry> Catalog::CreateView(ClientContext &context, CreateViewInfo &info) {
|
133
133
|
return CreateView(GetCatalogTransaction(context), info);
|
134
134
|
}
|
135
135
|
|
136
|
-
CatalogEntry
|
136
|
+
optional_ptr<CatalogEntry> Catalog::CreateView(CatalogTransaction transaction, SchemaCatalogEntry &schema,
|
137
|
+
CreateViewInfo &info) {
|
137
138
|
return schema.CreateView(transaction, info);
|
138
139
|
}
|
139
140
|
|
140
141
|
//===--------------------------------------------------------------------===//
|
141
142
|
// Sequence
|
142
143
|
//===--------------------------------------------------------------------===//
|
143
|
-
CatalogEntry
|
144
|
-
auto schema = GetSchema(transaction, info
|
145
|
-
return CreateSequence(transaction,
|
144
|
+
optional_ptr<CatalogEntry> Catalog::CreateSequence(CatalogTransaction transaction, CreateSequenceInfo &info) {
|
145
|
+
auto &schema = GetSchema(transaction, info.schema);
|
146
|
+
return CreateSequence(transaction, schema, info);
|
146
147
|
}
|
147
148
|
|
148
|
-
CatalogEntry
|
149
|
+
optional_ptr<CatalogEntry> Catalog::CreateSequence(ClientContext &context, CreateSequenceInfo &info) {
|
149
150
|
return CreateSequence(GetCatalogTransaction(context), info);
|
150
151
|
}
|
151
152
|
|
152
|
-
CatalogEntry
|
153
|
-
|
153
|
+
optional_ptr<CatalogEntry> Catalog::CreateSequence(CatalogTransaction transaction, SchemaCatalogEntry &schema,
|
154
|
+
CreateSequenceInfo &info) {
|
154
155
|
return schema.CreateSequence(transaction, info);
|
155
156
|
}
|
156
157
|
|
157
158
|
//===--------------------------------------------------------------------===//
|
158
159
|
// Type
|
159
160
|
//===--------------------------------------------------------------------===//
|
160
|
-
CatalogEntry
|
161
|
-
auto schema = GetSchema(transaction, info
|
162
|
-
return CreateType(transaction,
|
161
|
+
optional_ptr<CatalogEntry> Catalog::CreateType(CatalogTransaction transaction, CreateTypeInfo &info) {
|
162
|
+
auto &schema = GetSchema(transaction, info.schema);
|
163
|
+
return CreateType(transaction, schema, info);
|
163
164
|
}
|
164
165
|
|
165
|
-
CatalogEntry
|
166
|
+
optional_ptr<CatalogEntry> Catalog::CreateType(ClientContext &context, CreateTypeInfo &info) {
|
166
167
|
return CreateType(GetCatalogTransaction(context), info);
|
167
168
|
}
|
168
169
|
|
169
|
-
CatalogEntry
|
170
|
+
optional_ptr<CatalogEntry> Catalog::CreateType(CatalogTransaction transaction, SchemaCatalogEntry &schema,
|
171
|
+
CreateTypeInfo &info) {
|
170
172
|
return schema.CreateType(transaction, info);
|
171
173
|
}
|
172
174
|
|
173
175
|
//===--------------------------------------------------------------------===//
|
174
176
|
// Table Function
|
175
177
|
//===--------------------------------------------------------------------===//
|
176
|
-
CatalogEntry
|
177
|
-
auto schema = GetSchema(transaction, info
|
178
|
-
return CreateTableFunction(transaction,
|
178
|
+
optional_ptr<CatalogEntry> Catalog::CreateTableFunction(CatalogTransaction transaction, CreateTableFunctionInfo &info) {
|
179
|
+
auto &schema = GetSchema(transaction, info.schema);
|
180
|
+
return CreateTableFunction(transaction, schema, info);
|
179
181
|
}
|
180
182
|
|
181
|
-
CatalogEntry
|
183
|
+
optional_ptr<CatalogEntry> Catalog::CreateTableFunction(ClientContext &context, CreateTableFunctionInfo &info) {
|
182
184
|
return CreateTableFunction(GetCatalogTransaction(context), info);
|
183
185
|
}
|
184
186
|
|
185
|
-
CatalogEntry
|
186
|
-
|
187
|
+
optional_ptr<CatalogEntry> Catalog::CreateTableFunction(CatalogTransaction transaction, SchemaCatalogEntry &schema,
|
188
|
+
CreateTableFunctionInfo &info) {
|
187
189
|
return schema.CreateTableFunction(transaction, info);
|
188
190
|
}
|
189
191
|
|
192
|
+
optional_ptr<CatalogEntry> Catalog::CreateTableFunction(ClientContext &context,
|
193
|
+
optional_ptr<CreateTableFunctionInfo> info) {
|
194
|
+
return CreateTableFunction(context, *info);
|
195
|
+
}
|
196
|
+
|
190
197
|
//===--------------------------------------------------------------------===//
|
191
198
|
// Copy Function
|
192
199
|
//===--------------------------------------------------------------------===//
|
193
|
-
CatalogEntry
|
194
|
-
auto schema = GetSchema(transaction, info
|
195
|
-
return CreateCopyFunction(transaction,
|
200
|
+
optional_ptr<CatalogEntry> Catalog::CreateCopyFunction(CatalogTransaction transaction, CreateCopyFunctionInfo &info) {
|
201
|
+
auto &schema = GetSchema(transaction, info.schema);
|
202
|
+
return CreateCopyFunction(transaction, schema, info);
|
196
203
|
}
|
197
204
|
|
198
|
-
CatalogEntry
|
205
|
+
optional_ptr<CatalogEntry> Catalog::CreateCopyFunction(ClientContext &context, CreateCopyFunctionInfo &info) {
|
199
206
|
return CreateCopyFunction(GetCatalogTransaction(context), info);
|
200
207
|
}
|
201
208
|
|
202
|
-
CatalogEntry
|
203
|
-
|
209
|
+
optional_ptr<CatalogEntry> Catalog::CreateCopyFunction(CatalogTransaction transaction, SchemaCatalogEntry &schema,
|
210
|
+
CreateCopyFunctionInfo &info) {
|
204
211
|
return schema.CreateCopyFunction(transaction, info);
|
205
212
|
}
|
206
213
|
|
207
214
|
//===--------------------------------------------------------------------===//
|
208
215
|
// Pragma Function
|
209
216
|
//===--------------------------------------------------------------------===//
|
210
|
-
CatalogEntry
|
211
|
-
|
212
|
-
|
217
|
+
optional_ptr<CatalogEntry> Catalog::CreatePragmaFunction(CatalogTransaction transaction,
|
218
|
+
CreatePragmaFunctionInfo &info) {
|
219
|
+
auto &schema = GetSchema(transaction, info.schema);
|
220
|
+
return CreatePragmaFunction(transaction, schema, info);
|
213
221
|
}
|
214
222
|
|
215
|
-
CatalogEntry
|
223
|
+
optional_ptr<CatalogEntry> Catalog::CreatePragmaFunction(ClientContext &context, CreatePragmaFunctionInfo &info) {
|
216
224
|
return CreatePragmaFunction(GetCatalogTransaction(context), info);
|
217
225
|
}
|
218
226
|
|
219
|
-
CatalogEntry
|
220
|
-
|
227
|
+
optional_ptr<CatalogEntry> Catalog::CreatePragmaFunction(CatalogTransaction transaction, SchemaCatalogEntry &schema,
|
228
|
+
CreatePragmaFunctionInfo &info) {
|
221
229
|
return schema.CreatePragmaFunction(transaction, info);
|
222
230
|
}
|
223
231
|
|
224
232
|
//===--------------------------------------------------------------------===//
|
225
233
|
// Function
|
226
234
|
//===--------------------------------------------------------------------===//
|
227
|
-
CatalogEntry
|
228
|
-
auto schema = GetSchema(transaction, info
|
229
|
-
return CreateFunction(transaction,
|
235
|
+
optional_ptr<CatalogEntry> Catalog::CreateFunction(CatalogTransaction transaction, CreateFunctionInfo &info) {
|
236
|
+
auto &schema = GetSchema(transaction, info.schema);
|
237
|
+
return CreateFunction(transaction, schema, info);
|
230
238
|
}
|
231
239
|
|
232
|
-
CatalogEntry
|
240
|
+
optional_ptr<CatalogEntry> Catalog::CreateFunction(ClientContext &context, CreateFunctionInfo &info) {
|
233
241
|
return CreateFunction(GetCatalogTransaction(context), info);
|
234
242
|
}
|
235
243
|
|
236
|
-
CatalogEntry
|
237
|
-
|
244
|
+
optional_ptr<CatalogEntry> Catalog::CreateFunction(CatalogTransaction transaction, SchemaCatalogEntry &schema,
|
245
|
+
CreateFunctionInfo &info) {
|
238
246
|
return schema.CreateFunction(transaction, info);
|
239
247
|
}
|
240
248
|
|
241
|
-
CatalogEntry
|
242
|
-
info
|
249
|
+
optional_ptr<CatalogEntry> Catalog::AddFunction(ClientContext &context, CreateFunctionInfo &info) {
|
250
|
+
info.on_conflict = OnCreateConflict::ALTER_ON_CONFLICT;
|
243
251
|
return CreateFunction(context, info);
|
244
252
|
}
|
245
253
|
|
246
254
|
//===--------------------------------------------------------------------===//
|
247
255
|
// Collation
|
248
256
|
//===--------------------------------------------------------------------===//
|
249
|
-
CatalogEntry
|
250
|
-
auto schema = GetSchema(transaction, info
|
251
|
-
return CreateCollation(transaction,
|
257
|
+
optional_ptr<CatalogEntry> Catalog::CreateCollation(CatalogTransaction transaction, CreateCollationInfo &info) {
|
258
|
+
auto &schema = GetSchema(transaction, info.schema);
|
259
|
+
return CreateCollation(transaction, schema, info);
|
252
260
|
}
|
253
261
|
|
254
|
-
CatalogEntry
|
262
|
+
optional_ptr<CatalogEntry> Catalog::CreateCollation(ClientContext &context, CreateCollationInfo &info) {
|
255
263
|
return CreateCollation(GetCatalogTransaction(context), info);
|
256
264
|
}
|
257
265
|
|
258
|
-
CatalogEntry
|
259
|
-
|
266
|
+
optional_ptr<CatalogEntry> Catalog::CreateCollation(CatalogTransaction transaction, SchemaCatalogEntry &schema,
|
267
|
+
CreateCollationInfo &info) {
|
260
268
|
return schema.CreateCollation(transaction, info);
|
261
269
|
}
|
262
270
|
|
263
271
|
//===--------------------------------------------------------------------===//
|
264
272
|
// Index
|
265
273
|
//===--------------------------------------------------------------------===//
|
266
|
-
CatalogEntry
|
274
|
+
optional_ptr<CatalogEntry> Catalog::CreateIndex(CatalogTransaction transaction, CreateIndexInfo &info) {
|
267
275
|
auto &context = transaction.GetContext();
|
268
276
|
return CreateIndex(context, info);
|
269
277
|
}
|
270
278
|
|
271
|
-
CatalogEntry
|
272
|
-
auto schema = GetSchema(context, info
|
273
|
-
auto table = GetEntry<TableCatalogEntry>(context, schema
|
274
|
-
return schema
|
279
|
+
optional_ptr<CatalogEntry> Catalog::CreateIndex(ClientContext &context, CreateIndexInfo &info) {
|
280
|
+
auto &schema = GetSchema(context, info.schema);
|
281
|
+
auto &table = GetEntry<TableCatalogEntry>(context, schema.name, info.table->table_name);
|
282
|
+
return schema.CreateIndex(context, info, table);
|
275
283
|
}
|
276
284
|
|
277
285
|
//===--------------------------------------------------------------------===//
|
@@ -298,15 +306,15 @@ struct CatalogEntryLookup {
|
|
298
306
|
//===--------------------------------------------------------------------===//
|
299
307
|
// Generic
|
300
308
|
//===--------------------------------------------------------------------===//
|
301
|
-
void Catalog::DropEntry(ClientContext &context, DropInfo
|
309
|
+
void Catalog::DropEntry(ClientContext &context, DropInfo &info) {
|
302
310
|
ModifyCatalog();
|
303
|
-
if (info
|
311
|
+
if (info.type == CatalogType::SCHEMA_ENTRY) {
|
304
312
|
// DROP SCHEMA
|
305
313
|
DropSchema(context, info);
|
306
314
|
return;
|
307
315
|
}
|
308
316
|
|
309
|
-
auto lookup = LookupEntry(context, info
|
317
|
+
auto lookup = LookupEntry(context, info.type, info.schema, info.name, info.if_not_found);
|
310
318
|
if (!lookup.Found()) {
|
311
319
|
return;
|
312
320
|
}
|
@@ -314,9 +322,23 @@ void Catalog::DropEntry(ClientContext &context, DropInfo *info) {
|
|
314
322
|
lookup.schema->DropEntry(context, info);
|
315
323
|
}
|
316
324
|
|
317
|
-
SchemaCatalogEntry
|
325
|
+
SchemaCatalogEntry &Catalog::GetSchema(ClientContext &context, const string &name, QueryErrorContext error_context) {
|
326
|
+
return *Catalog::GetSchema(context, name, OnEntryNotFound::THROW_EXCEPTION, error_context);
|
327
|
+
}
|
328
|
+
|
329
|
+
optional_ptr<SchemaCatalogEntry> Catalog::GetSchema(ClientContext &context, const string &schema_name,
|
330
|
+
OnEntryNotFound if_not_found, QueryErrorContext error_context) {
|
331
|
+
return GetSchema(GetCatalogTransaction(context), schema_name, if_not_found, error_context);
|
332
|
+
}
|
333
|
+
|
334
|
+
SchemaCatalogEntry &Catalog::GetSchema(ClientContext &context, const string &catalog_name, const string &schema_name,
|
318
335
|
QueryErrorContext error_context) {
|
319
|
-
return GetSchema(
|
336
|
+
return *Catalog::GetSchema(context, catalog_name, schema_name, OnEntryNotFound::THROW_EXCEPTION, error_context);
|
337
|
+
}
|
338
|
+
|
339
|
+
SchemaCatalogEntry &Catalog::GetSchema(CatalogTransaction transaction, const string &name,
|
340
|
+
QueryErrorContext error_context) {
|
341
|
+
return *GetSchema(transaction, name, OnEntryNotFound::THROW_EXCEPTION, error_context);
|
320
342
|
}
|
321
343
|
|
322
344
|
//===--------------------------------------------------------------------===//
|
@@ -327,7 +349,7 @@ SimilarCatalogEntry Catalog::SimilarEntryInSchemas(ClientContext &context, const
|
|
327
349
|
SimilarCatalogEntry result;
|
328
350
|
for (auto schema_ref : schemas) {
|
329
351
|
auto &schema = schema_ref.get();
|
330
|
-
auto transaction = schema.catalog
|
352
|
+
auto transaction = schema.catalog.GetCatalogTransaction(context);
|
331
353
|
auto entry = schema.GetSimilarEntry(transaction, type, entry_name);
|
332
354
|
if (!entry.Found()) {
|
333
355
|
// no similar entry found
|
@@ -455,10 +477,10 @@ CatalogException Catalog::CreateMissingEntryException(ClientContext &context, co
|
|
455
477
|
auto &db_manager = DatabaseManager::Get(context);
|
456
478
|
auto databases = db_manager.GetDatabases(context);
|
457
479
|
for (auto database : databases) {
|
458
|
-
auto &catalog = database
|
480
|
+
auto &catalog = database.get().GetCatalog();
|
459
481
|
auto current_schemas = catalog.GetAllSchemas(context);
|
460
482
|
for (auto ¤t_schema : current_schemas) {
|
461
|
-
unseen_schemas.insert(
|
483
|
+
unseen_schemas.insert(current_schema.get());
|
462
484
|
}
|
463
485
|
}
|
464
486
|
// check if the entry exists in any extension
|
@@ -477,7 +499,7 @@ CatalogException Catalog::CreateMissingEntryException(ClientContext &context, co
|
|
477
499
|
if (unseen_entry.Found() && unseen_entry.distance < entry.distance) {
|
478
500
|
// the closest matching entry requires qualification as it is not in the default search path
|
479
501
|
// check how to minimally qualify this entry
|
480
|
-
auto catalog_name = unseen_entry.schema->catalog
|
502
|
+
auto catalog_name = unseen_entry.schema->catalog.GetName();
|
481
503
|
auto schema_name = unseen_entry.schema->name;
|
482
504
|
bool qualify_database;
|
483
505
|
bool qualify_schema;
|
@@ -493,8 +515,7 @@ CatalogException Catalog::CreateMissingEntryException(ClientContext &context, co
|
|
493
515
|
|
494
516
|
CatalogEntryLookup Catalog::LookupEntryInternal(CatalogTransaction transaction, CatalogType type, const string &schema,
|
495
517
|
const string &name) {
|
496
|
-
|
497
|
-
auto schema_entry = (SchemaCatalogEntry *)GetSchema(transaction, schema, true);
|
518
|
+
auto schema_entry = GetSchema(transaction, schema, OnEntryNotFound::RETURN_NULL);
|
498
519
|
if (!schema_entry) {
|
499
520
|
return {nullptr, nullptr};
|
500
521
|
}
|
@@ -506,7 +527,8 @@ CatalogEntryLookup Catalog::LookupEntryInternal(CatalogTransaction transaction,
|
|
506
527
|
}
|
507
528
|
|
508
529
|
CatalogEntryLookup Catalog::LookupEntry(ClientContext &context, CatalogType type, const string &schema,
|
509
|
-
const string &name,
|
530
|
+
const string &name, OnEntryNotFound if_not_found,
|
531
|
+
QueryErrorContext error_context) {
|
510
532
|
reference_set_t<SchemaCatalogEntry> schemas;
|
511
533
|
if (IsInvalidSchema(schema)) {
|
512
534
|
// try all schemas for this catalog
|
@@ -536,14 +558,15 @@ CatalogEntryLookup Catalog::LookupEntry(ClientContext &context, CatalogType type
|
|
536
558
|
schemas.insert(*result.schema);
|
537
559
|
}
|
538
560
|
}
|
539
|
-
if (
|
561
|
+
if (if_not_found == OnEntryNotFound::RETURN_NULL) {
|
540
562
|
return {nullptr, nullptr};
|
541
563
|
}
|
542
564
|
throw CreateMissingEntryException(context, name, type, schemas, error_context);
|
543
565
|
}
|
544
566
|
|
545
567
|
CatalogEntryLookup Catalog::LookupEntry(ClientContext &context, vector<CatalogLookup> &lookups, CatalogType type,
|
546
|
-
const string &name,
|
568
|
+
const string &name, OnEntryNotFound if_not_found,
|
569
|
+
QueryErrorContext error_context) {
|
547
570
|
reference_set_t<SchemaCatalogEntry> schemas;
|
548
571
|
for (auto &lookup : lookups) {
|
549
572
|
auto transaction = lookup.catalog.GetCatalogTransaction(context);
|
@@ -555,37 +578,44 @@ CatalogEntryLookup Catalog::LookupEntry(ClientContext &context, vector<CatalogLo
|
|
555
578
|
schemas.insert(*result.schema);
|
556
579
|
}
|
557
580
|
}
|
558
|
-
if (
|
581
|
+
if (if_not_found == OnEntryNotFound::RETURN_NULL) {
|
559
582
|
return {nullptr, nullptr};
|
560
583
|
}
|
561
584
|
throw CreateMissingEntryException(context, name, type, schemas, error_context);
|
562
585
|
}
|
563
586
|
|
564
|
-
CatalogEntry
|
587
|
+
CatalogEntry &Catalog::GetEntry(ClientContext &context, const string &schema, const string &name) {
|
565
588
|
vector<CatalogType> entry_types {CatalogType::TABLE_ENTRY, CatalogType::SEQUENCE_ENTRY};
|
566
589
|
|
567
590
|
for (auto entry_type : entry_types) {
|
568
|
-
|
569
|
-
if (result
|
570
|
-
return result;
|
591
|
+
auto result = GetEntry(context, entry_type, schema, name, OnEntryNotFound::RETURN_NULL);
|
592
|
+
if (result) {
|
593
|
+
return *result;
|
571
594
|
}
|
572
595
|
}
|
573
596
|
|
574
597
|
throw CatalogException("CatalogElement \"%s.%s\" does not exist!", schema, name);
|
575
598
|
}
|
576
599
|
|
577
|
-
CatalogEntry
|
578
|
-
|
579
|
-
|
600
|
+
optional_ptr<CatalogEntry> Catalog::GetEntry(ClientContext &context, CatalogType type, const string &schema_name,
|
601
|
+
const string &name, OnEntryNotFound if_not_found,
|
602
|
+
QueryErrorContext error_context) {
|
603
|
+
return LookupEntry(context, type, schema_name, name, if_not_found, error_context).entry.get();
|
604
|
+
}
|
605
|
+
|
606
|
+
CatalogEntry &Catalog::GetEntry(ClientContext &context, CatalogType type, const string &schema, const string &name,
|
607
|
+
QueryErrorContext error_context) {
|
608
|
+
return *Catalog::GetEntry(context, type, schema, name, OnEntryNotFound::THROW_EXCEPTION, error_context);
|
580
609
|
}
|
581
610
|
|
582
|
-
CatalogEntry
|
583
|
-
|
611
|
+
optional_ptr<CatalogEntry> Catalog::GetEntry(ClientContext &context, CatalogType type, const string &catalog,
|
612
|
+
const string &schema, const string &name, OnEntryNotFound if_not_found,
|
613
|
+
QueryErrorContext error_context) {
|
584
614
|
auto entries = GetCatalogEntries(context, catalog, schema);
|
585
615
|
vector<CatalogLookup> lookups;
|
586
616
|
lookups.reserve(entries.size());
|
587
617
|
for (auto &entry : entries) {
|
588
|
-
if (
|
618
|
+
if (if_not_found == OnEntryNotFound::RETURN_NULL) {
|
589
619
|
auto catalog_entry = Catalog::GetCatalogEntry(context, entry.catalog);
|
590
620
|
if (!catalog_entry) {
|
591
621
|
return nullptr;
|
@@ -595,59 +625,65 @@ CatalogEntry *Catalog::GetEntry(ClientContext &context, CatalogType type, const
|
|
595
625
|
lookups.emplace_back(Catalog::GetCatalog(context, entry.catalog), entry.schema);
|
596
626
|
}
|
597
627
|
}
|
598
|
-
auto result = LookupEntry(context, lookups, type, name,
|
628
|
+
auto result = LookupEntry(context, lookups, type, name, if_not_found, error_context);
|
599
629
|
if (!result.Found()) {
|
600
|
-
D_ASSERT(
|
630
|
+
D_ASSERT(if_not_found == OnEntryNotFound::RETURN_NULL);
|
601
631
|
return nullptr;
|
602
632
|
}
|
603
633
|
return result.entry.get();
|
604
634
|
}
|
605
635
|
|
606
|
-
|
607
|
-
|
636
|
+
CatalogEntry &Catalog::GetEntry(ClientContext &context, CatalogType type, const string &catalog, const string &schema,
|
637
|
+
const string &name, QueryErrorContext error_context) {
|
638
|
+
return *Catalog::GetEntry(context, type, catalog, schema, name, OnEntryNotFound::THROW_EXCEPTION, error_context);
|
639
|
+
}
|
640
|
+
|
641
|
+
optional_ptr<SchemaCatalogEntry> Catalog::GetSchema(ClientContext &context, const string &catalog_name,
|
642
|
+
const string &schema_name, OnEntryNotFound if_not_found,
|
643
|
+
QueryErrorContext error_context) {
|
608
644
|
auto entries = GetCatalogEntries(context, catalog_name, schema_name);
|
609
|
-
SchemaCatalogEntry *result = nullptr;
|
610
645
|
for (idx_t i = 0; i < entries.size(); i++) {
|
611
|
-
auto
|
646
|
+
auto on_not_found = i + 1 == entries.size() ? if_not_found : OnEntryNotFound::RETURN_NULL;
|
612
647
|
auto &catalog = Catalog::GetCatalog(context, entries[i].catalog);
|
613
|
-
auto result = catalog.GetSchema(context, schema_name,
|
648
|
+
auto result = catalog.GetSchema(context, schema_name, on_not_found, error_context);
|
614
649
|
if (result) {
|
615
650
|
return result;
|
616
651
|
}
|
617
652
|
}
|
618
|
-
return
|
653
|
+
return nullptr;
|
619
654
|
}
|
620
655
|
|
621
|
-
LogicalType Catalog::GetType(ClientContext &context, const string &schema, const string &name,
|
622
|
-
|
656
|
+
LogicalType Catalog::GetType(ClientContext &context, const string &schema, const string &name,
|
657
|
+
OnEntryNotFound if_not_found) {
|
658
|
+
auto type_entry = GetEntry<TypeCatalogEntry>(context, schema, name, if_not_found);
|
623
659
|
if (!type_entry) {
|
624
660
|
return LogicalType::INVALID;
|
625
661
|
}
|
626
662
|
auto result_type = type_entry->user_type;
|
627
|
-
|
663
|
+
EnumType::SetCatalog(result_type, type_entry.get());
|
628
664
|
return result_type;
|
629
665
|
}
|
630
666
|
|
631
667
|
LogicalType Catalog::GetType(ClientContext &context, const string &catalog_name, const string &schema,
|
632
668
|
const string &name) {
|
633
|
-
auto type_entry = Catalog::GetEntry<TypeCatalogEntry>(context, catalog_name, schema, name);
|
634
|
-
auto result_type = type_entry
|
635
|
-
|
669
|
+
auto &type_entry = Catalog::GetEntry<TypeCatalogEntry>(context, catalog_name, schema, name);
|
670
|
+
auto result_type = type_entry.user_type;
|
671
|
+
EnumType::SetCatalog(result_type, &type_entry);
|
636
672
|
return result_type;
|
637
673
|
}
|
638
674
|
|
639
|
-
vector<SchemaCatalogEntry
|
640
|
-
vector<SchemaCatalogEntry
|
641
|
-
ScanSchemas(context, [&](
|
675
|
+
vector<reference<SchemaCatalogEntry>> Catalog::GetSchemas(ClientContext &context) {
|
676
|
+
vector<reference<SchemaCatalogEntry>> schemas;
|
677
|
+
ScanSchemas(context, [&](SchemaCatalogEntry &entry) { schemas.push_back(entry); });
|
642
678
|
return schemas;
|
643
679
|
}
|
644
680
|
|
645
681
|
bool Catalog::TypeExists(ClientContext &context, const string &catalog_name, const string &schema, const string &name) {
|
646
|
-
CatalogEntry
|
647
|
-
entry = GetEntry(context, CatalogType::TYPE_ENTRY, catalog_name, schema, name,
|
682
|
+
optional_ptr<CatalogEntry> entry;
|
683
|
+
entry = GetEntry(context, CatalogType::TYPE_ENTRY, catalog_name, schema, name, OnEntryNotFound::RETURN_NULL);
|
648
684
|
if (!entry) {
|
649
685
|
// look in the system catalog
|
650
|
-
entry = GetEntry(context, CatalogType::TYPE_ENTRY, SYSTEM_CATALOG, schema, name,
|
686
|
+
entry = GetEntry(context, CatalogType::TYPE_ENTRY, SYSTEM_CATALOG, schema, name, OnEntryNotFound::RETURN_NULL);
|
651
687
|
if (!entry) {
|
652
688
|
return false;
|
653
689
|
}
|
@@ -655,8 +691,8 @@ bool Catalog::TypeExists(ClientContext &context, const string &catalog_name, con
|
|
655
691
|
return true;
|
656
692
|
}
|
657
693
|
|
658
|
-
vector<SchemaCatalogEntry
|
659
|
-
vector<Catalog
|
694
|
+
vector<reference<SchemaCatalogEntry>> Catalog::GetSchemas(ClientContext &context, const string &catalog_name) {
|
695
|
+
vector<reference<Catalog>> catalogs;
|
660
696
|
if (IsInvalidCatalog(catalog_name)) {
|
661
697
|
unordered_set<string> name;
|
662
698
|
|
@@ -666,45 +702,48 @@ vector<SchemaCatalogEntry *> Catalog::GetSchemas(ClientContext &context, const s
|
|
666
702
|
continue;
|
667
703
|
}
|
668
704
|
name.insert(entry.catalog);
|
669
|
-
catalogs.push_back(
|
705
|
+
catalogs.push_back(Catalog::GetCatalog(context, entry.catalog));
|
670
706
|
}
|
671
707
|
} else {
|
672
|
-
catalogs.push_back(
|
708
|
+
catalogs.push_back(Catalog::GetCatalog(context, catalog_name));
|
673
709
|
}
|
674
|
-
vector<SchemaCatalogEntry
|
710
|
+
vector<reference<SchemaCatalogEntry>> result;
|
675
711
|
for (auto catalog : catalogs) {
|
676
|
-
auto schemas = catalog
|
712
|
+
auto schemas = catalog.get().GetSchemas(context);
|
677
713
|
result.insert(result.end(), schemas.begin(), schemas.end());
|
678
714
|
}
|
679
715
|
return result;
|
680
716
|
}
|
681
717
|
|
682
|
-
vector<SchemaCatalogEntry
|
683
|
-
vector<SchemaCatalogEntry
|
718
|
+
vector<reference<SchemaCatalogEntry>> Catalog::GetAllSchemas(ClientContext &context) {
|
719
|
+
vector<reference<SchemaCatalogEntry>> result;
|
684
720
|
|
685
721
|
auto &db_manager = DatabaseManager::Get(context);
|
686
722
|
auto databases = db_manager.GetDatabases(context);
|
687
723
|
for (auto database : databases) {
|
688
|
-
auto &catalog = database
|
724
|
+
auto &catalog = database.get().GetCatalog();
|
689
725
|
auto new_schemas = catalog.GetSchemas(context);
|
690
726
|
result.insert(result.end(), new_schemas.begin(), new_schemas.end());
|
691
727
|
}
|
692
|
-
sort(result.begin(), result.end(),
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
728
|
+
sort(result.begin(), result.end(),
|
729
|
+
[&](reference<SchemaCatalogEntry> left_p, reference<SchemaCatalogEntry> right_p) {
|
730
|
+
auto &left = left_p.get();
|
731
|
+
auto &right = right_p.get();
|
732
|
+
if (left.catalog.GetName() < right.catalog.GetName()) {
|
733
|
+
return true;
|
734
|
+
}
|
735
|
+
if (left.catalog.GetName() == right.catalog.GetName()) {
|
736
|
+
return left.name < right.name;
|
737
|
+
}
|
738
|
+
return false;
|
739
|
+
});
|
701
740
|
|
702
741
|
return result;
|
703
742
|
}
|
704
743
|
|
705
|
-
void Catalog::Alter(ClientContext &context, AlterInfo
|
744
|
+
void Catalog::Alter(ClientContext &context, AlterInfo &info) {
|
706
745
|
ModifyCatalog();
|
707
|
-
auto lookup = LookupEntry(context, info
|
746
|
+
auto lookup = LookupEntry(context, info.GetCatalogType(), info.schema, info.name, info.if_not_found);
|
708
747
|
if (!lookup.Found()) {
|
709
748
|
return;
|
710
749
|
}
|
@@ -3,9 +3,9 @@
|
|
3
3
|
|
4
4
|
namespace duckdb {
|
5
5
|
|
6
|
-
CopyFunctionCatalogEntry::CopyFunctionCatalogEntry(Catalog
|
7
|
-
CreateCopyFunctionInfo
|
8
|
-
: StandardEntry(CatalogType::COPY_FUNCTION_ENTRY, schema, catalog, info
|
6
|
+
CopyFunctionCatalogEntry::CopyFunctionCatalogEntry(Catalog &catalog, SchemaCatalogEntry &schema,
|
7
|
+
CreateCopyFunctionInfo &info)
|
8
|
+
: StandardEntry(CatalogType::COPY_FUNCTION_ENTRY, schema, catalog, info.name), function(info.function) {
|
9
9
|
}
|
10
10
|
|
11
11
|
} // namespace duckdb
|
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
namespace duckdb {
|
6
6
|
|
7
|
-
DuckIndexEntry::DuckIndexEntry(Catalog
|
7
|
+
DuckIndexEntry::DuckIndexEntry(Catalog &catalog, SchemaCatalogEntry &schema, CreateIndexInfo &info)
|
8
8
|
: IndexCatalogEntry(catalog, schema, info) {
|
9
9
|
}
|
10
10
|
|