duckdb 0.7.2-dev2430.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.
Files changed (201) hide show
  1. package/package.json +1 -1
  2. package/src/connection.cpp +1 -1
  3. package/src/duckdb/extension/icu/icu-dateadd.cpp +3 -3
  4. package/src/duckdb/extension/icu/icu-datepart.cpp +3 -3
  5. package/src/duckdb/extension/icu/icu-datesub.cpp +2 -2
  6. package/src/duckdb/extension/icu/icu-datetrunc.cpp +1 -1
  7. package/src/duckdb/extension/icu/icu-extension.cpp +3 -3
  8. package/src/duckdb/extension/icu/icu-list-range.cpp +2 -2
  9. package/src/duckdb/extension/icu/icu-makedate.cpp +1 -1
  10. package/src/duckdb/extension/icu/icu-strptime.cpp +4 -4
  11. package/src/duckdb/extension/icu/icu-table-range.cpp +2 -2
  12. package/src/duckdb/extension/icu/icu-timebucket.cpp +1 -1
  13. package/src/duckdb/extension/icu/icu-timezone.cpp +4 -4
  14. package/src/duckdb/extension/json/json-extension.cpp +6 -6
  15. package/src/duckdb/extension/parquet/parquet-extension.cpp +9 -8
  16. package/src/duckdb/src/catalog/catalog.cpp +166 -127
  17. package/src/duckdb/src/catalog/catalog_entry/copy_function_catalog_entry.cpp +3 -3
  18. package/src/duckdb/src/catalog/catalog_entry/duck_index_entry.cpp +1 -1
  19. package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +90 -82
  20. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +65 -67
  21. package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +3 -3
  22. package/src/duckdb/src/catalog/catalog_entry/pragma_function_catalog_entry.cpp +4 -4
  23. package/src/duckdb/src/catalog/catalog_entry/scalar_function_catalog_entry.cpp +8 -8
  24. package/src/duckdb/src/catalog/catalog_entry/scalar_macro_catalog_entry.cpp +10 -10
  25. package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +6 -6
  26. package/src/duckdb/src/catalog/catalog_entry/sequence_catalog_entry.cpp +6 -6
  27. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +4 -4
  28. package/src/duckdb/src/catalog/catalog_entry/table_function_catalog_entry.cpp +9 -9
  29. package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +5 -5
  30. package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +23 -23
  31. package/src/duckdb/src/catalog/catalog_entry.cpp +27 -6
  32. package/src/duckdb/src/catalog/catalog_search_path.cpp +2 -2
  33. package/src/duckdb/src/catalog/catalog_set.cpp +84 -87
  34. package/src/duckdb/src/catalog/catalog_transaction.cpp +1 -1
  35. package/src/duckdb/src/catalog/default/default_functions.cpp +1 -1
  36. package/src/duckdb/src/catalog/default/default_schemas.cpp +1 -1
  37. package/src/duckdb/src/catalog/default/default_types.cpp +1 -1
  38. package/src/duckdb/src/catalog/default/default_views.cpp +1 -1
  39. package/src/duckdb/src/catalog/dependency_list.cpp +2 -2
  40. package/src/duckdb/src/catalog/dependency_manager.cpp +9 -10
  41. package/src/duckdb/src/catalog/duck_catalog.cpp +30 -26
  42. package/src/duckdb/src/catalog/similar_catalog_entry.cpp +1 -1
  43. package/src/duckdb/src/common/types.cpp +15 -27
  44. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +2 -2
  45. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +4 -3
  46. package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +19 -18
  47. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +5 -5
  48. package/src/duckdb/src/execution/operator/schema/physical_alter.cpp +1 -1
  49. package/src/duckdb/src/execution/operator/schema/physical_create_function.cpp +1 -1
  50. package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +6 -5
  51. package/src/duckdb/src/execution/operator/schema/physical_create_schema.cpp +1 -1
  52. package/src/duckdb/src/execution/operator/schema/physical_create_sequence.cpp +1 -1
  53. package/src/duckdb/src/execution/operator/schema/physical_create_table.cpp +2 -2
  54. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +4 -3
  55. package/src/duckdb/src/execution/operator/schema/physical_create_view.cpp +1 -1
  56. package/src/duckdb/src/execution/operator/schema/physical_detach.cpp +1 -1
  57. package/src/duckdb/src/execution/operator/schema/physical_drop.cpp +2 -2
  58. package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +1 -1
  59. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +4 -4
  60. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +4 -3
  61. package/src/duckdb/src/execution/physical_plan/plan_delete.cpp +1 -1
  62. package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +1 -1
  63. package/src/duckdb/src/execution/physical_plan/plan_update.cpp +1 -1
  64. package/src/duckdb/src/function/built_in_functions.cpp +10 -10
  65. package/src/duckdb/src/function/function_binder.cpp +3 -3
  66. package/src/duckdb/src/function/scalar/list/list_aggregates.cpp +5 -6
  67. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -2
  68. package/src/duckdb/src/function/scalar/sequence/nextval.cpp +9 -8
  69. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +6 -6
  70. package/src/duckdb/src/function/table/arrow.cpp +32 -31
  71. package/src/duckdb/src/function/table/arrow_conversion.cpp +75 -59
  72. package/src/duckdb/src/function/table/system/duckdb_columns.cpp +8 -7
  73. package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +14 -14
  74. package/src/duckdb/src/function/table/system/duckdb_databases.cpp +2 -2
  75. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +26 -25
  76. package/src/duckdb/src/function/table/system/duckdb_indexes.cpp +13 -12
  77. package/src/duckdb/src/function/table/system/duckdb_schemas.cpp +7 -7
  78. package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +8 -9
  79. package/src/duckdb/src/function/table/system/duckdb_tables.cpp +10 -9
  80. package/src/duckdb/src/function/table/system/duckdb_types.cpp +13 -13
  81. package/src/duckdb/src/function/table/system/duckdb_views.cpp +11 -10
  82. package/src/duckdb/src/function/table/system/pragma_collations.cpp +2 -2
  83. package/src/duckdb/src/function/table/system/pragma_database_size.cpp +5 -5
  84. package/src/duckdb/src/function/table/system/pragma_storage_info.cpp +3 -3
  85. package/src/duckdb/src/function/table/system/pragma_table_info.cpp +2 -2
  86. package/src/duckdb/src/function/table/table_scan.cpp +39 -37
  87. package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
  88. package/src/duckdb/src/function/udf_function.cpp +2 -2
  89. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +122 -81
  90. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/aggregate_function_catalog_entry.hpp +2 -3
  91. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/collate_catalog_entry.hpp +3 -3
  92. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/copy_function_catalog_entry.hpp +1 -1
  93. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_index_entry.hpp +1 -1
  94. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_schema_entry.hpp +24 -20
  95. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +3 -3
  96. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/index_catalog_entry.hpp +1 -1
  97. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/macro_catalog_entry.hpp +2 -2
  98. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/pragma_function_catalog_entry.hpp +1 -1
  99. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/scalar_function_catalog_entry.hpp +2 -2
  100. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/scalar_macro_catalog_entry.hpp +1 -1
  101. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +22 -17
  102. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +1 -1
  103. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +1 -1
  104. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_function_catalog_entry.hpp +2 -2
  105. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_macro_catalog_entry.hpp +1 -1
  106. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +1 -1
  107. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/view_catalog_entry.hpp +3 -3
  108. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +28 -7
  109. package/src/duckdb/src/include/duckdb/catalog/catalog_set.hpp +20 -19
  110. package/src/duckdb/src/include/duckdb/catalog/duck_catalog.hpp +9 -9
  111. package/src/duckdb/src/include/duckdb/catalog/similar_catalog_entry.hpp +2 -1
  112. package/src/duckdb/src/include/duckdb/catalog/standard_entry.hpp +10 -4
  113. package/src/duckdb/src/include/duckdb/common/enums/on_entry_not_found.hpp +17 -0
  114. package/src/duckdb/src/include/duckdb/common/types.hpp +3 -4
  115. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +4 -4
  116. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +3 -2
  117. package/src/duckdb/src/include/duckdb/function/table/table_scan.hpp +5 -4
  118. package/src/duckdb/src/include/duckdb/function/table_function.hpp +28 -15
  119. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +2 -0
  120. package/src/duckdb/src/include/duckdb/main/client_context.hpp +1 -1
  121. package/src/duckdb/src/include/duckdb/main/database_manager.hpp +3 -2
  122. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +2 -0
  123. package/src/duckdb/src/include/duckdb/parser/keyword_helper.hpp +2 -2
  124. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +7 -5
  125. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +1 -1
  126. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_info.hpp +1 -1
  127. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +1 -1
  128. package/src/duckdb/src/include/duckdb/parser/parsed_data/detach_info.hpp +3 -2
  129. package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +5 -5
  130. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +13 -0
  131. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +5 -2
  132. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +2 -0
  133. package/src/duckdb/src/include/duckdb/planner/binder.hpp +2 -2
  134. package/src/duckdb/src/include/duckdb/planner/expression_binder/base_select_binder.hpp +1 -2
  135. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +4 -7
  136. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +1 -1
  137. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +12 -0
  138. package/src/duckdb/src/main/attached_database.cpp +12 -6
  139. package/src/duckdb/src/main/capi/table_function-c.cpp +17 -16
  140. package/src/duckdb/src/main/client_context.cpp +12 -11
  141. package/src/duckdb/src/main/database_manager.cpp +13 -12
  142. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +1 -2
  143. package/src/duckdb/src/parser/parsed_data/alter_info.cpp +3 -3
  144. package/src/duckdb/src/parser/parsed_data/alter_scalar_function_info.cpp +2 -2
  145. package/src/duckdb/src/parser/parsed_data/alter_table_function_info.cpp +2 -2
  146. package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +9 -9
  147. package/src/duckdb/src/parser/parsed_data/create_scalar_function_info.cpp +2 -2
  148. package/src/duckdb/src/parser/parsed_data/create_table_function_info.cpp +2 -2
  149. package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +2 -2
  150. package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +2 -2
  151. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +3 -2
  152. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +5 -1
  153. package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +1 -1
  154. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +1 -1
  155. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +1 -1
  156. package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +26 -27
  157. package/src/duckdb/src/planner/binder/expression/bind_between_expression.cpp +17 -17
  158. package/src/duckdb/src/planner/binder/expression/bind_case_expression.cpp +9 -9
  159. package/src/duckdb/src/planner/binder/expression/bind_cast_expression.cpp +6 -6
  160. package/src/duckdb/src/planner/binder/expression/bind_collate_expression.cpp +6 -6
  161. package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +2 -2
  162. package/src/duckdb/src/planner/binder/expression/bind_comparison_expression.cpp +21 -21
  163. package/src/duckdb/src/planner/binder/expression/bind_conjunction_expression.cpp +2 -3
  164. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +33 -36
  165. package/src/duckdb/src/planner/binder/expression/bind_macro_expression.cpp +5 -5
  166. package/src/duckdb/src/planner/binder/expression/bind_operator_expression.cpp +23 -23
  167. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +4 -4
  168. package/src/duckdb/src/planner/binder/expression/bind_unnest_expression.cpp +7 -7
  169. package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +23 -23
  170. package/src/duckdb/src/planner/binder/query_node/bind_table_macro_node.cpp +4 -4
  171. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +14 -13
  172. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +36 -35
  173. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +3 -3
  174. package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +1 -1
  175. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +4 -4
  176. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +10 -10
  177. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
  178. package/src/duckdb/src/planner/binder/statement/bind_pragma.cpp +4 -4
  179. package/src/duckdb/src/planner/binder/statement/bind_simple.cpp +5 -4
  180. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +1 -1
  181. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +3 -3
  182. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +10 -12
  183. package/src/duckdb/src/planner/binder.cpp +2 -2
  184. package/src/duckdb/src/planner/expression/bound_expression.cpp +11 -2
  185. package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +2 -5
  186. package/src/duckdb/src/planner/operator/logical_create.cpp +2 -1
  187. package/src/duckdb/src/planner/operator/logical_create_index.cpp +2 -2
  188. package/src/duckdb/src/planner/operator/logical_delete.cpp +2 -2
  189. package/src/duckdb/src/planner/operator/logical_get.cpp +1 -1
  190. package/src/duckdb/src/planner/operator/logical_insert.cpp +2 -7
  191. package/src/duckdb/src/planner/operator/logical_update.cpp +2 -6
  192. package/src/duckdb/src/planner/parsed_data/bound_create_table_info.cpp +2 -2
  193. package/src/duckdb/src/planner/pragma_handler.cpp +3 -4
  194. package/src/duckdb/src/storage/checkpoint_manager.cpp +46 -46
  195. package/src/duckdb/src/storage/data_table.cpp +3 -6
  196. package/src/duckdb/src/storage/table/update_segment.cpp +1 -1
  197. package/src/duckdb/src/storage/wal_replay.cpp +28 -30
  198. package/src/duckdb/src/storage/write_ahead_log.cpp +8 -8
  199. package/src/duckdb/src/transaction/cleanup_state.cpp +1 -1
  200. package/src/duckdb/src/transaction/commit_state.cpp +3 -4
  201. package/src/duckdb/src/transaction/transaction_context.cpp +1 -1
@@ -3,10 +3,10 @@
3
3
 
4
4
  namespace duckdb {
5
5
 
6
- PragmaFunctionCatalogEntry::PragmaFunctionCatalogEntry(Catalog *catalog, SchemaCatalogEntry *schema,
7
- CreatePragmaFunctionInfo *info)
8
- : StandardEntry(CatalogType::PRAGMA_FUNCTION_ENTRY, schema, catalog, info->name),
9
- functions(std::move(info->functions)) {
6
+ PragmaFunctionCatalogEntry::PragmaFunctionCatalogEntry(Catalog &catalog, SchemaCatalogEntry &schema,
7
+ CreatePragmaFunctionInfo &info)
8
+ : StandardEntry(CatalogType::PRAGMA_FUNCTION_ENTRY, schema, catalog, info.name),
9
+ functions(std::move(info.functions)) {
10
10
  }
11
11
 
12
12
  } // namespace duckdb
@@ -3,28 +3,28 @@
3
3
 
4
4
  namespace duckdb {
5
5
 
6
- ScalarFunctionCatalogEntry::ScalarFunctionCatalogEntry(Catalog *catalog, SchemaCatalogEntry *schema,
7
- CreateScalarFunctionInfo *info)
8
- : StandardEntry(CatalogType::SCALAR_FUNCTION_ENTRY, schema, catalog, info->name), functions(info->functions) {
6
+ ScalarFunctionCatalogEntry::ScalarFunctionCatalogEntry(Catalog &catalog, SchemaCatalogEntry &schema,
7
+ CreateScalarFunctionInfo &info)
8
+ : StandardEntry(CatalogType::SCALAR_FUNCTION_ENTRY, schema, catalog, info.name), functions(info.functions) {
9
9
  }
10
10
 
11
- unique_ptr<CatalogEntry> ScalarFunctionCatalogEntry::AlterEntry(ClientContext &context, AlterInfo *info) {
12
- if (info->type != AlterType::ALTER_SCALAR_FUNCTION) {
11
+ unique_ptr<CatalogEntry> ScalarFunctionCatalogEntry::AlterEntry(ClientContext &context, AlterInfo &info) {
12
+ if (info.type != AlterType::ALTER_SCALAR_FUNCTION) {
13
13
  throw InternalException("Attempting to alter ScalarFunctionCatalogEntry with unsupported alter type");
14
14
  }
15
- auto &function_info = (AlterScalarFunctionInfo &)*info;
15
+ auto &function_info = info.Cast<AlterScalarFunctionInfo>();
16
16
  if (function_info.alter_scalar_function_type != AlterScalarFunctionType::ADD_FUNCTION_OVERLOADS) {
17
17
  throw InternalException(
18
18
  "Attempting to alter ScalarFunctionCatalogEntry with unsupported alter scalar function type");
19
19
  }
20
- auto &add_overloads = (AddScalarFunctionOverloadInfo &)function_info;
20
+ auto &add_overloads = function_info.Cast<AddScalarFunctionOverloadInfo>();
21
21
 
22
22
  ScalarFunctionSet new_set = functions;
23
23
  if (!new_set.MergeFunctionSet(add_overloads.new_overloads)) {
24
24
  throw BinderException("Failed to add new function overloads to function \"%s\": function already exists", name);
25
25
  }
26
26
  CreateScalarFunctionInfo new_info(std::move(new_set));
27
- return make_uniq<ScalarFunctionCatalogEntry>(catalog, schema, &new_info);
27
+ return make_uniq<ScalarFunctionCatalogEntry>(catalog, schema, new_info);
28
28
  }
29
29
 
30
30
  } // namespace duckdb
@@ -6,16 +6,16 @@
6
6
 
7
7
  namespace duckdb {
8
8
 
9
- MacroCatalogEntry::MacroCatalogEntry(Catalog *catalog, SchemaCatalogEntry *schema, CreateMacroInfo *info)
9
+ MacroCatalogEntry::MacroCatalogEntry(Catalog &catalog, SchemaCatalogEntry &schema, CreateMacroInfo &info)
10
10
  : StandardEntry(
11
- (info->function->type == MacroType::SCALAR_MACRO ? CatalogType::MACRO_ENTRY : CatalogType::TABLE_MACRO_ENTRY),
12
- schema, catalog, info->name),
13
- function(std::move(info->function)) {
14
- this->temporary = info->temporary;
15
- this->internal = info->internal;
11
+ (info.function->type == MacroType::SCALAR_MACRO ? CatalogType::MACRO_ENTRY : CatalogType::TABLE_MACRO_ENTRY),
12
+ schema, catalog, info.name),
13
+ function(std::move(info.function)) {
14
+ this->temporary = info.temporary;
15
+ this->internal = info.internal;
16
16
  }
17
17
 
18
- ScalarMacroCatalogEntry::ScalarMacroCatalogEntry(Catalog *catalog, SchemaCatalogEntry *schema, CreateMacroInfo *info)
18
+ ScalarMacroCatalogEntry::ScalarMacroCatalogEntry(Catalog &catalog, SchemaCatalogEntry &schema, CreateMacroInfo &info)
19
19
  : MacroCatalogEntry(catalog, schema, info) {
20
20
  }
21
21
 
@@ -23,7 +23,7 @@ void ScalarMacroCatalogEntry::Serialize(Serializer &main_serializer) const {
23
23
  D_ASSERT(!internal);
24
24
  auto &scalar_function = function->Cast<ScalarMacroFunction>();
25
25
  FieldWriter writer(main_serializer);
26
- writer.WriteString(schema->name);
26
+ writer.WriteString(schema.name);
27
27
  writer.WriteString(name);
28
28
  writer.WriteSerializable(*scalar_function.expression);
29
29
  // writer.WriteSerializableList(function->parameters);
@@ -58,7 +58,7 @@ unique_ptr<CreateMacroInfo> ScalarMacroCatalogEntry::Deserialize(Deserializer &m
58
58
  return info;
59
59
  }
60
60
 
61
- TableMacroCatalogEntry::TableMacroCatalogEntry(Catalog *catalog, SchemaCatalogEntry *schema, CreateMacroInfo *info)
61
+ TableMacroCatalogEntry::TableMacroCatalogEntry(Catalog &catalog, SchemaCatalogEntry &schema, CreateMacroInfo &info)
62
62
  : MacroCatalogEntry(catalog, schema, info) {
63
63
  }
64
64
 
@@ -67,7 +67,7 @@ void TableMacroCatalogEntry::Serialize(Serializer &main_serializer) const {
67
67
  FieldWriter writer(main_serializer);
68
68
 
69
69
  auto &table_function = function->Cast<TableMacroFunction>();
70
- writer.WriteString(schema->name);
70
+ writer.WriteString(schema.name);
71
71
  writer.WriteString(name);
72
72
  writer.WriteSerializable(*table_function.query_node);
73
73
  writer.WriteSerializableList(function->parameters);
@@ -11,23 +11,23 @@
11
11
 
12
12
  namespace duckdb {
13
13
 
14
- SchemaCatalogEntry::SchemaCatalogEntry(Catalog *catalog, string name_p, bool internal)
15
- : CatalogEntry(CatalogType::SCHEMA_ENTRY, catalog, std::move(name_p)) {
14
+ SchemaCatalogEntry::SchemaCatalogEntry(Catalog &catalog, string name_p, bool internal)
15
+ : InCatalogEntry(CatalogType::SCHEMA_ENTRY, catalog, std::move(name_p)) {
16
16
  this->internal = internal;
17
17
  }
18
18
 
19
19
  CatalogTransaction SchemaCatalogEntry::GetCatalogTransaction(ClientContext &context) {
20
- return CatalogTransaction(*catalog, context);
20
+ return CatalogTransaction(catalog, context);
21
21
  }
22
22
 
23
23
  SimilarCatalogEntry SchemaCatalogEntry::GetSimilarEntry(CatalogTransaction transaction, CatalogType type,
24
24
  const string &name) {
25
25
  SimilarCatalogEntry result;
26
- Scan(transaction.GetContext(), type, [&](CatalogEntry *entry) {
27
- auto ldist = StringUtil::SimilarityScore(entry->name, name);
26
+ Scan(transaction.GetContext(), type, [&](CatalogEntry &entry) {
27
+ auto ldist = StringUtil::SimilarityScore(entry.name, name);
28
28
  if (ldist < result.distance) {
29
29
  result.distance = ldist;
30
- result.name = entry->name;
30
+ result.name = entry.name;
31
31
  }
32
32
  });
33
33
  return result;
@@ -11,16 +11,16 @@
11
11
 
12
12
  namespace duckdb {
13
13
 
14
- SequenceCatalogEntry::SequenceCatalogEntry(Catalog *catalog, SchemaCatalogEntry *schema, CreateSequenceInfo *info)
15
- : StandardEntry(CatalogType::SEQUENCE_ENTRY, schema, catalog, info->name), usage_count(info->usage_count),
16
- counter(info->start_value), increment(info->increment), start_value(info->start_value),
17
- min_value(info->min_value), max_value(info->max_value), cycle(info->cycle) {
18
- this->temporary = info->temporary;
14
+ SequenceCatalogEntry::SequenceCatalogEntry(Catalog &catalog, SchemaCatalogEntry &schema, CreateSequenceInfo &info)
15
+ : StandardEntry(CatalogType::SEQUENCE_ENTRY, schema, catalog, info.name), usage_count(info.usage_count),
16
+ counter(info.start_value), increment(info.increment), start_value(info.start_value), min_value(info.min_value),
17
+ max_value(info.max_value), cycle(info.cycle) {
18
+ this->temporary = info.temporary;
19
19
  }
20
20
 
21
21
  void SequenceCatalogEntry::Serialize(Serializer &serializer) const {
22
22
  FieldWriter writer(serializer);
23
- writer.WriteString(schema->name);
23
+ writer.WriteString(schema.name);
24
24
  writer.WriteString(name);
25
25
  writer.WriteField<uint64_t>(usage_count);
26
26
  writer.WriteField<int64_t>(increment);
@@ -14,7 +14,7 @@
14
14
 
15
15
  namespace duckdb {
16
16
 
17
- TableCatalogEntry::TableCatalogEntry(Catalog *catalog, SchemaCatalogEntry *schema, CreateTableInfo &info)
17
+ TableCatalogEntry::TableCatalogEntry(Catalog &catalog, SchemaCatalogEntry &schema, CreateTableInfo &info)
18
18
  : StandardEntry(CatalogType::TABLE_ENTRY, schema, catalog, info.table), columns(std::move(info.columns)),
19
19
  constraints(std::move(info.constraints)) {
20
20
  this->temporary = info.temporary;
@@ -55,7 +55,7 @@ void TableCatalogEntry::Serialize(Serializer &serializer) const {
55
55
  D_ASSERT(!internal);
56
56
 
57
57
  FieldWriter writer(serializer);
58
- writer.WriteString(schema->name);
58
+ writer.WriteString(schema.name);
59
59
  writer.WriteString(name);
60
60
  columns.Serialize(writer);
61
61
  writer.WriteSerializableList(constraints);
@@ -165,8 +165,8 @@ string TableCatalogEntry::ToSQL() const {
165
165
 
166
166
  ss << "CREATE TABLE ";
167
167
 
168
- if (schema->name != DEFAULT_SCHEMA) {
169
- ss << KeywordHelper::WriteOptionallyQuoted(schema->name) << ".";
168
+ if (schema.name != DEFAULT_SCHEMA) {
169
+ ss << KeywordHelper::WriteOptionallyQuoted(schema.name) << ".";
170
170
  }
171
171
 
172
172
  ss << KeywordHelper::WriteOptionallyQuoted(name);
@@ -3,30 +3,30 @@
3
3
 
4
4
  namespace duckdb {
5
5
 
6
- TableFunctionCatalogEntry::TableFunctionCatalogEntry(Catalog *catalog, SchemaCatalogEntry *schema,
7
- CreateTableFunctionInfo *info)
8
- : StandardEntry(CatalogType::TABLE_FUNCTION_ENTRY, schema, catalog, info->name),
9
- functions(std::move(info->functions)) {
6
+ TableFunctionCatalogEntry::TableFunctionCatalogEntry(Catalog &catalog, SchemaCatalogEntry &schema,
7
+ CreateTableFunctionInfo &info)
8
+ : StandardEntry(CatalogType::TABLE_FUNCTION_ENTRY, schema, catalog, info.name),
9
+ functions(std::move(info.functions)) {
10
10
  D_ASSERT(this->functions.Size() > 0);
11
11
  }
12
12
 
13
- unique_ptr<CatalogEntry> TableFunctionCatalogEntry::AlterEntry(ClientContext &context, AlterInfo *info) {
14
- if (info->type != AlterType::ALTER_TABLE_FUNCTION) {
13
+ unique_ptr<CatalogEntry> TableFunctionCatalogEntry::AlterEntry(ClientContext &context, AlterInfo &info) {
14
+ if (info.type != AlterType::ALTER_TABLE_FUNCTION) {
15
15
  throw InternalException("Attempting to alter TableFunctionCatalogEntry with unsupported alter type");
16
16
  }
17
- auto &function_info = (AlterTableFunctionInfo &)*info;
17
+ auto &function_info = info.Cast<AlterTableFunctionInfo>();
18
18
  if (function_info.alter_table_function_type != AlterTableFunctionType::ADD_FUNCTION_OVERLOADS) {
19
19
  throw InternalException(
20
20
  "Attempting to alter TableFunctionCatalogEntry with unsupported alter table function type");
21
21
  }
22
- auto &add_overloads = (AddTableFunctionOverloadInfo &)function_info;
22
+ auto &add_overloads = function_info.Cast<AddTableFunctionOverloadInfo>();
23
23
 
24
24
  TableFunctionSet new_set = functions;
25
25
  if (!new_set.MergeFunctionSet(add_overloads.new_overloads)) {
26
26
  throw BinderException("Failed to add new function overloads to function \"%s\": function already exists", name);
27
27
  }
28
28
  CreateTableFunctionInfo new_info(std::move(new_set));
29
- return make_uniq<TableFunctionCatalogEntry>(catalog, schema, &new_info);
29
+ return make_uniq<TableFunctionCatalogEntry>(catalog, schema, new_info);
30
30
  }
31
31
 
32
32
  } // namespace duckdb
@@ -12,16 +12,16 @@
12
12
 
13
13
  namespace duckdb {
14
14
 
15
- TypeCatalogEntry::TypeCatalogEntry(Catalog *catalog, SchemaCatalogEntry *schema, CreateTypeInfo *info)
16
- : StandardEntry(CatalogType::TYPE_ENTRY, schema, catalog, info->name), user_type(info->type) {
17
- this->temporary = info->temporary;
18
- this->internal = info->internal;
15
+ TypeCatalogEntry::TypeCatalogEntry(Catalog &catalog, SchemaCatalogEntry &schema, CreateTypeInfo &info)
16
+ : StandardEntry(CatalogType::TYPE_ENTRY, schema, catalog, info.name), user_type(info.type) {
17
+ this->temporary = info.temporary;
18
+ this->internal = info.internal;
19
19
  }
20
20
 
21
21
  void TypeCatalogEntry::Serialize(Serializer &serializer) const {
22
22
  D_ASSERT(!internal);
23
23
  FieldWriter writer(serializer);
24
- writer.WriteString(schema->name);
24
+ writer.WriteString(schema.name);
25
25
  writer.WriteString(name);
26
26
  if (user_type.id() == LogicalTypeId::ENUM) {
27
27
  // We have to serialize Enum Values
@@ -11,31 +11,31 @@
11
11
 
12
12
  namespace duckdb {
13
13
 
14
- void ViewCatalogEntry::Initialize(CreateViewInfo *info) {
15
- query = std::move(info->query);
16
- this->aliases = info->aliases;
17
- this->types = info->types;
18
- this->temporary = info->temporary;
19
- this->sql = info->sql;
20
- this->internal = info->internal;
14
+ void ViewCatalogEntry::Initialize(CreateViewInfo &info) {
15
+ query = std::move(info.query);
16
+ this->aliases = info.aliases;
17
+ this->types = info.types;
18
+ this->temporary = info.temporary;
19
+ this->sql = info.sql;
20
+ this->internal = info.internal;
21
21
  }
22
22
 
23
- ViewCatalogEntry::ViewCatalogEntry(Catalog *catalog, SchemaCatalogEntry *schema, CreateViewInfo *info)
24
- : StandardEntry(CatalogType::VIEW_ENTRY, schema, catalog, info->view_name) {
23
+ ViewCatalogEntry::ViewCatalogEntry(Catalog &catalog, SchemaCatalogEntry &schema, CreateViewInfo &info)
24
+ : StandardEntry(CatalogType::VIEW_ENTRY, schema, catalog, info.view_name) {
25
25
  Initialize(info);
26
26
  }
27
27
 
28
- unique_ptr<CatalogEntry> ViewCatalogEntry::AlterEntry(ClientContext &context, AlterInfo *info) {
28
+ unique_ptr<CatalogEntry> ViewCatalogEntry::AlterEntry(ClientContext &context, AlterInfo &info) {
29
29
  D_ASSERT(!internal);
30
- if (info->type != AlterType::ALTER_VIEW) {
30
+ if (info.type != AlterType::ALTER_VIEW) {
31
31
  throw CatalogException("Can only modify view with ALTER VIEW statement");
32
32
  }
33
- auto view_info = (AlterViewInfo *)info;
34
- switch (view_info->alter_view_type) {
33
+ auto &view_info = info.Cast<AlterViewInfo>();
34
+ switch (view_info.alter_view_type) {
35
35
  case AlterViewType::RENAME_VIEW: {
36
- auto rename_info = (RenameViewInfo *)view_info;
36
+ auto &rename_info = view_info.Cast<RenameViewInfo>();
37
37
  auto copied_view = Copy(context);
38
- copied_view->name = rename_info->new_view_name;
38
+ copied_view->name = rename_info.new_view_name;
39
39
  return copied_view;
40
40
  }
41
41
  default:
@@ -46,7 +46,7 @@ unique_ptr<CatalogEntry> ViewCatalogEntry::AlterEntry(ClientContext &context, Al
46
46
  void ViewCatalogEntry::Serialize(Serializer &serializer) const {
47
47
  D_ASSERT(!internal);
48
48
  FieldWriter writer(serializer);
49
- writer.WriteString(schema->name);
49
+ writer.WriteString(schema.name);
50
50
  writer.WriteString(name);
51
51
  writer.WriteString(sql);
52
52
  writer.WriteSerializable(*query);
@@ -80,18 +80,18 @@ string ViewCatalogEntry::ToSQL() const {
80
80
 
81
81
  unique_ptr<CatalogEntry> ViewCatalogEntry::Copy(ClientContext &context) const {
82
82
  D_ASSERT(!internal);
83
- auto create_info = make_uniq<CreateViewInfo>(schema, name);
84
- create_info->query = unique_ptr_cast<SQLStatement, SelectStatement>(query->Copy());
83
+ CreateViewInfo create_info(schema, name);
84
+ create_info.query = unique_ptr_cast<SQLStatement, SelectStatement>(query->Copy());
85
85
  for (idx_t i = 0; i < aliases.size(); i++) {
86
- create_info->aliases.push_back(aliases[i]);
86
+ create_info.aliases.push_back(aliases[i]);
87
87
  }
88
88
  for (idx_t i = 0; i < types.size(); i++) {
89
- create_info->types.push_back(types[i]);
89
+ create_info.types.push_back(types[i]);
90
90
  }
91
- create_info->temporary = temporary;
92
- create_info->sql = sql;
91
+ create_info.temporary = temporary;
92
+ create_info.sql = sql;
93
93
 
94
- return make_uniq<ViewCatalogEntry>(catalog, schema, create_info.get());
94
+ return make_uniq<ViewCatalogEntry>(catalog, schema, create_info);
95
95
  }
96
96
 
97
97
  } // namespace duckdb
@@ -4,9 +4,13 @@
4
4
 
5
5
  namespace duckdb {
6
6
 
7
- CatalogEntry::CatalogEntry(CatalogType type, Catalog *catalog_p, string name_p)
8
- : oid(catalog_p ? catalog_p->ModifyCatalog() : 0), type(type), catalog(catalog_p), set(nullptr),
9
- name(std::move(name_p)), deleted(false), temporary(false), internal(false), parent(nullptr) {
7
+ CatalogEntry::CatalogEntry(CatalogType type, string name_p, idx_t oid)
8
+ : oid(oid), type(type), set(nullptr), name(std::move(name_p)), deleted(false), temporary(false), internal(false),
9
+ parent(nullptr) {
10
+ }
11
+
12
+ CatalogEntry::CatalogEntry(CatalogType type, Catalog &catalog, string name_p)
13
+ : CatalogEntry(type, std::move(name_p), catalog.ModifyCatalog()) {
10
14
  }
11
15
 
12
16
  CatalogEntry::~CatalogEntry() {
@@ -16,11 +20,11 @@ void CatalogEntry::SetAsRoot() {
16
20
  }
17
21
 
18
22
  // LCOV_EXCL_START
19
- unique_ptr<CatalogEntry> CatalogEntry::AlterEntry(ClientContext &context, AlterInfo *info) {
23
+ unique_ptr<CatalogEntry> CatalogEntry::AlterEntry(ClientContext &context, AlterInfo &info) {
20
24
  throw InternalException("Unsupported alter type for catalog entry!");
21
25
  }
22
26
 
23
- void CatalogEntry::UndoAlter(ClientContext &context, AlterInfo *info) {
27
+ void CatalogEntry::UndoAlter(ClientContext &context, AlterInfo &info) {
24
28
  }
25
29
 
26
30
  unique_ptr<CatalogEntry> CatalogEntry::Copy(ClientContext &context) const {
@@ -33,7 +37,24 @@ string CatalogEntry::ToSQL() const {
33
37
  // LCOV_EXCL_STOP
34
38
 
35
39
  void CatalogEntry::Verify(Catalog &catalog_p) {
36
- D_ASSERT(&catalog_p == catalog);
37
40
  }
38
41
 
42
+ Catalog &CatalogEntry::ParentCatalog() {
43
+ throw InternalException("CatalogEntry::ParentCatalog called on catalog entry without catalog");
44
+ }
45
+
46
+ SchemaCatalogEntry &CatalogEntry::ParentSchema() {
47
+ throw InternalException("CatalogEntry::ParentSchema called on catalog entry without schema");
48
+ }
49
+
50
+ InCatalogEntry::InCatalogEntry(CatalogType type, Catalog &catalog, string name)
51
+ : CatalogEntry(type, catalog, std::move(name)), catalog(catalog) {
52
+ }
53
+
54
+ InCatalogEntry::~InCatalogEntry() {
55
+ }
56
+
57
+ void InCatalogEntry::Verify(Catalog &catalog_p) {
58
+ D_ASSERT(&catalog_p == &catalog);
59
+ }
39
60
  } // namespace duckdb
@@ -131,10 +131,10 @@ void CatalogSearchPath::Set(vector<CatalogSearchEntry> new_paths, bool is_set_sc
131
131
  throw CatalogException("SET schema can set only 1 schema. This has %d", new_paths.size());
132
132
  }
133
133
  for (auto &path : new_paths) {
134
- if (!Catalog::GetSchema(context, path.catalog, path.schema, true)) {
134
+ if (!Catalog::GetSchema(context, path.catalog, path.schema, OnEntryNotFound::RETURN_NULL)) {
135
135
  if (path.catalog.empty()) {
136
136
  // only schema supplied - check if this is a database instead
137
- auto schema = Catalog::GetSchema(context, path.schema, DEFAULT_SCHEMA, true);
137
+ auto schema = Catalog::GetSchema(context, path.schema, DEFAULT_SCHEMA, OnEntryNotFound::RETURN_NULL);
138
138
  if (schema) {
139
139
  path.catalog = std::move(path.schema);
140
140
  path.schema = schema->name;