duckdb 0.6.2-dev781.0 → 0.6.2-dev891.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 (320) hide show
  1. package/binding.gyp +1 -1
  2. package/package.json +1 -1
  3. package/src/connection.cpp +2 -1
  4. package/src/duckdb/extension/icu/icu-dateadd.cpp +3 -3
  5. package/src/duckdb/extension/icu/icu-datepart.cpp +3 -3
  6. package/src/duckdb/extension/icu/icu-datesub.cpp +2 -2
  7. package/src/duckdb/extension/icu/icu-datetrunc.cpp +1 -1
  8. package/src/duckdb/extension/icu/icu-extension.cpp +1 -1
  9. package/src/duckdb/extension/icu/icu-makedate.cpp +1 -1
  10. package/src/duckdb/extension/icu/icu-strptime.cpp +2 -2
  11. package/src/duckdb/extension/icu/icu-timezone.cpp +6 -5
  12. package/src/duckdb/extension/json/json-extension.cpp +1 -1
  13. package/src/duckdb/extension/parquet/column_reader.cpp +7 -0
  14. package/src/duckdb/extension/parquet/parquet-extension.cpp +1 -1
  15. package/src/duckdb/src/catalog/catalog.cpp +516 -177
  16. package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +1 -0
  17. package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +66 -49
  18. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +15 -16
  19. package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +1 -1
  20. package/src/duckdb/src/catalog/catalog_entry.cpp +6 -2
  21. package/src/duckdb/src/catalog/catalog_search_path.cpp +177 -22
  22. package/src/duckdb/src/catalog/catalog_set.cpp +134 -72
  23. package/src/duckdb/src/catalog/catalog_transaction.cpp +28 -0
  24. package/src/duckdb/src/catalog/default/default_views.cpp +4 -4
  25. package/src/duckdb/src/catalog/dependency_list.cpp +13 -0
  26. package/src/duckdb/src/catalog/dependency_manager.cpp +19 -13
  27. package/src/duckdb/src/common/constants.cpp +8 -0
  28. package/src/duckdb/src/common/enums/catalog_type.cpp +2 -0
  29. package/src/duckdb/src/common/enums/logical_operator_type.cpp +2 -0
  30. package/src/duckdb/src/common/enums/physical_operator_type.cpp +2 -0
  31. package/src/duckdb/src/common/enums/statement_type.cpp +2 -0
  32. package/src/duckdb/src/common/file_system.cpp +1 -1
  33. package/src/duckdb/src/common/string_util.cpp +5 -1
  34. package/src/duckdb/src/execution/index/art/art.cpp +1 -1
  35. package/src/duckdb/src/execution/operator/helper/physical_transaction.cpp +1 -0
  36. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +1 -1
  37. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +3 -2
  38. package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +1 -1
  39. package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +1 -1
  40. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +4 -3
  41. package/src/duckdb/src/execution/operator/schema/physical_alter.cpp +1 -1
  42. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +72 -0
  43. package/src/duckdb/src/execution/operator/schema/physical_create_function.cpp +2 -1
  44. package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +3 -3
  45. package/src/duckdb/src/execution/operator/schema/physical_create_schema.cpp +5 -1
  46. package/src/duckdb/src/execution/operator/schema/physical_create_sequence.cpp +2 -1
  47. package/src/duckdb/src/execution/operator/schema/physical_create_table.cpp +2 -2
  48. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  49. package/src/duckdb/src/execution/operator/schema/physical_create_view.cpp +2 -1
  50. package/src/duckdb/src/execution/operator/schema/physical_drop.cpp +10 -2
  51. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +4 -4
  52. package/src/duckdb/src/execution/physical_plan/plan_create_index.cpp +1 -1
  53. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +2 -3
  54. package/src/duckdb/src/execution/physical_plan/plan_delete.cpp +1 -1
  55. package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +1 -1
  56. package/src/duckdb/src/execution/physical_plan/plan_simple.cpp +4 -0
  57. package/src/duckdb/src/execution/physical_plan/plan_update.cpp +1 -1
  58. package/src/duckdb/src/execution/physical_plan_generator.cpp +3 -2
  59. package/src/duckdb/src/function/built_in_functions.cpp +88 -0
  60. package/src/duckdb/src/function/function.cpp +0 -79
  61. package/src/duckdb/src/function/function_binder.cpp +2 -1
  62. package/src/duckdb/src/function/pragma/pragma_queries.cpp +10 -1
  63. package/src/duckdb/src/function/scalar/date/current.cpp +2 -2
  64. package/src/duckdb/src/function/scalar/list/list_aggregates.cpp +3 -2
  65. package/src/duckdb/src/function/scalar/sequence/nextval.cpp +14 -17
  66. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +2 -2
  67. package/src/duckdb/src/function/scalar/system/system_functions.cpp +7 -4
  68. package/src/duckdb/src/function/table/checkpoint.cpp +37 -4
  69. package/src/duckdb/src/function/table/read_csv.cpp +1 -1
  70. package/src/duckdb/src/function/table/system/duckdb_columns.cpp +32 -25
  71. package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +26 -22
  72. package/src/duckdb/src/function/table/system/duckdb_dependencies.cpp +1 -1
  73. package/src/duckdb/src/function/table/system/duckdb_extensions.cpp +1 -1
  74. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +22 -15
  75. package/src/duckdb/src/function/table/system/duckdb_indexes.cpp +25 -18
  76. package/src/duckdb/src/function/table/system/duckdb_schemas.cpp +16 -8
  77. package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +26 -19
  78. package/src/duckdb/src/function/table/system/duckdb_tables.cpp +24 -17
  79. package/src/duckdb/src/function/table/system/duckdb_types.cpp +22 -16
  80. package/src/duckdb/src/function/table/system/duckdb_views.cpp +20 -13
  81. package/src/duckdb/src/function/table/system/pragma_collations.cpp +3 -4
  82. package/src/duckdb/src/function/table/system/pragma_database_list.cpp +20 -12
  83. package/src/duckdb/src/function/table/system/pragma_database_size.cpp +39 -24
  84. package/src/duckdb/src/function/table/system/pragma_storage_info.cpp +1 -7
  85. package/src/duckdb/src/function/table/system/pragma_table_info.cpp +3 -2
  86. package/src/duckdb/src/function/table/system_functions.cpp +0 -1
  87. package/src/duckdb/src/function/table/table_scan.cpp +13 -10
  88. package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
  89. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +102 -81
  90. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/aggregate_function_catalog_entry.hpp +4 -0
  91. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/collate_catalog_entry.hpp +4 -0
  92. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/copy_function_catalog_entry.hpp +4 -0
  93. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/index_catalog_entry.hpp +4 -0
  94. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/pragma_function_catalog_entry.hpp +4 -0
  95. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/scalar_function_catalog_entry.hpp +4 -0
  96. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/scalar_macro_catalog_entry.hpp +4 -0
  97. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +21 -14
  98. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +4 -0
  99. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +4 -0
  100. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_function_catalog_entry.hpp +4 -0
  101. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_macro_catalog_entry.hpp +4 -0
  102. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +4 -0
  103. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/view_catalog_entry.hpp +4 -0
  104. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -0
  105. package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +30 -11
  106. package/src/duckdb/src/include/duckdb/catalog/catalog_set.hpp +35 -20
  107. package/src/duckdb/src/include/duckdb/catalog/catalog_transaction.hpp +32 -0
  108. package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +27 -0
  109. package/src/duckdb/src/include/duckdb/catalog/dependency_manager.hpp +6 -4
  110. package/src/duckdb/src/include/duckdb/common/allocator.hpp +3 -0
  111. package/src/duckdb/src/include/duckdb/common/constants.hpp +8 -3
  112. package/src/duckdb/src/include/duckdb/common/enums/catalog_type.hpp +1 -0
  113. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +1 -0
  114. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +1 -0
  115. package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +10 -4
  116. package/src/duckdb/src/include/duckdb/common/file_system.hpp +2 -0
  117. package/src/duckdb/src/include/duckdb/common/string_util.hpp +3 -0
  118. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +2 -2
  119. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_attach.hpp +33 -0
  120. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +2 -1
  121. package/src/duckdb/src/include/duckdb/function/aggregate/algebraic_functions.hpp +1 -0
  122. package/src/duckdb/src/include/duckdb/function/aggregate/distributive_functions.hpp +1 -0
  123. package/src/duckdb/src/include/duckdb/function/aggregate/holistic_functions.hpp +1 -0
  124. package/src/duckdb/src/include/duckdb/function/aggregate/nested_functions.hpp +1 -0
  125. package/src/duckdb/src/include/duckdb/function/aggregate/regression_functions.hpp +1 -0
  126. package/src/duckdb/src/include/duckdb/function/built_in_functions.hpp +78 -0
  127. package/src/duckdb/src/include/duckdb/function/function.hpp +0 -61
  128. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +1 -2
  129. package/src/duckdb/src/include/duckdb/function/pragma/pragma_functions.hpp +1 -0
  130. package/src/duckdb/src/include/duckdb/function/scalar/blob_functions.hpp +1 -0
  131. package/src/duckdb/src/include/duckdb/function/scalar/date_functions.hpp +1 -0
  132. package/src/duckdb/src/include/duckdb/function/scalar/enum_functions.hpp +1 -0
  133. package/src/duckdb/src/include/duckdb/function/scalar/generic_functions.hpp +1 -0
  134. package/src/duckdb/src/include/duckdb/function/scalar/math_functions.hpp +1 -0
  135. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +1 -0
  136. package/src/duckdb/src/include/duckdb/function/scalar/operators.hpp +1 -0
  137. package/src/duckdb/src/include/duckdb/function/scalar/regexp.hpp +1 -0
  138. package/src/duckdb/src/include/duckdb/function/scalar/sequence_functions.hpp +1 -0
  139. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +1 -0
  140. package/src/duckdb/src/include/duckdb/function/scalar/trigonometric_functions.hpp +1 -0
  141. package/src/duckdb/src/include/duckdb/function/scalar/uuid_functions.hpp +1 -0
  142. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -1
  143. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +1 -0
  144. package/src/duckdb/src/include/duckdb/function/table/range.hpp +1 -0
  145. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +1 -0
  146. package/src/duckdb/src/include/duckdb/function/table/summary.hpp +1 -0
  147. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +1 -4
  148. package/src/duckdb/src/include/duckdb/function/table/table_scan.hpp +1 -0
  149. package/src/duckdb/src/include/duckdb/function/table_function.hpp +2 -1
  150. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +64 -0
  151. package/src/duckdb/src/include/duckdb/main/client_context.hpp +3 -3
  152. package/src/duckdb/src/include/duckdb/main/client_data.hpp +2 -1
  153. package/src/duckdb/src/include/duckdb/main/config.hpp +3 -0
  154. package/src/duckdb/src/include/duckdb/main/database.hpp +6 -6
  155. package/src/duckdb/src/include/duckdb/main/database_manager.hpp +69 -0
  156. package/src/duckdb/src/include/duckdb/main/settings.hpp +10 -0
  157. package/src/duckdb/src/include/duckdb/main/valid_checker.hpp +2 -2
  158. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +3 -1
  159. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +3 -1
  160. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_function_info.hpp +2 -2
  161. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +18 -1
  162. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +53 -56
  163. package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +39 -0
  164. package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_info.hpp +4 -1
  165. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_aggregate_function_info.hpp +3 -18
  166. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_collation_info.hpp +4 -13
  167. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_copy_function_info.hpp +3 -12
  168. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_index_info.hpp +1 -1
  169. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +5 -3
  170. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_pragma_function_info.hpp +3 -14
  171. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_function_info.hpp +3 -19
  172. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_info.hpp +3 -1
  173. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +7 -34
  174. package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +7 -1
  175. package/src/duckdb/src/include/duckdb/parser/parsed_data/exported_table_data.hpp +3 -0
  176. package/src/duckdb/src/include/duckdb/parser/parser_extension.hpp +2 -2
  177. package/src/duckdb/src/include/duckdb/parser/qualified_name.hpp +10 -2
  178. package/src/duckdb/src/include/duckdb/parser/query_error_context.hpp +2 -2
  179. package/src/duckdb/src/include/duckdb/parser/statement/attach_statement.hpp +29 -0
  180. package/src/duckdb/src/include/duckdb/parser/statement/export_statement.hpp +1 -0
  181. package/src/duckdb/src/include/duckdb/parser/statement/insert_statement.hpp +2 -0
  182. package/src/duckdb/src/include/duckdb/parser/statement/list.hpp +1 -0
  183. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +4 -1
  184. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +1 -0
  185. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +2 -0
  186. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -0
  187. package/src/duckdb/src/include/duckdb/planner/binder.hpp +11 -1
  188. package/src/duckdb/src/include/duckdb/planner/parsed_data/bound_create_table_info.hpp +2 -1
  189. package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +1 -0
  190. package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +13 -6
  191. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +10 -2
  192. package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +2 -2
  193. package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +2 -2
  194. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +9 -12
  195. package/src/duckdb/src/include/duckdb/storage/table/data_table_info.hpp +3 -7
  196. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +5 -6
  197. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +9 -7
  198. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +3 -1
  199. package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +64 -0
  200. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +14 -23
  201. package/src/duckdb/src/include/duckdb/transaction/transaction_context.hpp +12 -8
  202. package/src/duckdb/src/include/duckdb/transaction/transaction_manager.hpp +5 -10
  203. package/src/duckdb/src/include/duckdb/transaction/undo_buffer.hpp +1 -1
  204. package/src/duckdb/src/main/attached_database.cpp +97 -0
  205. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  206. package/src/duckdb/src/main/client_context.cpp +28 -22
  207. package/src/duckdb/src/main/client_data.cpp +5 -2
  208. package/src/duckdb/src/main/config.cpp +1 -0
  209. package/src/duckdb/src/main/database.cpp +54 -40
  210. package/src/duckdb/src/main/database_manager.cpp +95 -0
  211. package/src/duckdb/src/main/materialized_query_result.cpp +1 -1
  212. package/src/duckdb/src/main/prepared_statement_data.cpp +1 -2
  213. package/src/duckdb/src/main/query_result.cpp +4 -4
  214. package/src/duckdb/src/main/settings/settings.cpp +22 -6
  215. package/src/duckdb/src/main/stream_query_result.cpp +1 -1
  216. package/src/duckdb/src/parser/expression/columnref_expression.cpp +9 -3
  217. package/src/duckdb/src/parser/expression/function_expression.cpp +15 -13
  218. package/src/duckdb/src/parser/expression/window_expression.cpp +6 -4
  219. package/src/duckdb/src/parser/parsed_data/alter_function_info.cpp +7 -7
  220. package/src/duckdb/src/parser/parsed_data/alter_info.cpp +12 -2
  221. package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +96 -98
  222. package/src/duckdb/src/parser/parsed_data/create_aggregate_function_info.cpp +27 -0
  223. package/src/duckdb/src/parser/parsed_data/create_collation_info.cpp +23 -0
  224. package/src/duckdb/src/parser/parsed_data/create_copy_function_info.cpp +21 -0
  225. package/src/duckdb/src/parser/parsed_data/create_info.cpp +3 -0
  226. package/src/duckdb/src/parser/parsed_data/create_pragma_function_info.cpp +23 -0
  227. package/src/duckdb/src/parser/parsed_data/create_scalar_function_info.cpp +3 -1
  228. package/src/duckdb/src/parser/parsed_data/create_table_function_info.cpp +28 -0
  229. package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +9 -3
  230. package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +49 -0
  231. package/src/duckdb/src/parser/statement/attach_statement.cpp +15 -0
  232. package/src/duckdb/src/parser/statement/insert_statement.cpp +6 -2
  233. package/src/duckdb/src/parser/tableref/basetableref.cpp +9 -4
  234. package/src/duckdb/src/parser/transform/constraint/transform_constraint.cpp +15 -13
  235. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +17 -7
  236. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +4 -9
  237. package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +4 -0
  238. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +5 -4
  239. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +8 -10
  240. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +32 -0
  241. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +7 -2
  242. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +1 -0
  243. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +1 -0
  244. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +1 -0
  245. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +1 -0
  246. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +5 -5
  247. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +1 -0
  248. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +6 -13
  249. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +6 -6
  250. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +11 -2
  251. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -1
  252. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +1 -0
  253. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -36
  254. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +3 -1
  255. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +21 -0
  256. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +11 -3
  257. package/src/duckdb/src/parser/transformer.cpp +4 -0
  258. package/src/duckdb/src/planner/bind_context.cpp +11 -2
  259. package/src/duckdb/src/planner/binder/expression/bind_cast_expression.cpp +1 -1
  260. package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +43 -13
  261. package/src/duckdb/src/planner/binder/expression/bind_comparison_expression.cpp +1 -1
  262. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +2 -3
  263. package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +2 -3
  264. package/src/duckdb/src/planner/binder/statement/bind_attach.cpp +20 -0
  265. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +7 -4
  266. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +79 -27
  267. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +11 -7
  268. package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +1 -1
  269. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +13 -5
  270. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +6 -3
  271. package/src/duckdb/src/planner/binder/statement/bind_extension.cpp +1 -1
  272. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +3 -2
  273. package/src/duckdb/src/planner/binder/statement/bind_pragma.cpp +2 -2
  274. package/src/duckdb/src/planner/binder/statement/bind_prepare.cpp +0 -2
  275. package/src/duckdb/src/planner/binder/statement/bind_simple.cpp +11 -6
  276. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +1 -1
  277. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +10 -6
  278. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +2 -4
  279. package/src/duckdb/src/planner/binder.cpp +17 -2
  280. package/src/duckdb/src/planner/logical_operator.cpp +5 -12
  281. package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +3 -4
  282. package/src/duckdb/src/planner/operator/logical_create.cpp +1 -4
  283. package/src/duckdb/src/planner/operator/logical_create_index.cpp +2 -2
  284. package/src/duckdb/src/planner/operator/logical_delete.cpp +2 -3
  285. package/src/duckdb/src/planner/operator/logical_insert.cpp +1 -1
  286. package/src/duckdb/src/planner/operator/logical_update.cpp +1 -1
  287. package/src/duckdb/src/planner/parsed_data/bound_create_table_info.cpp +1 -1
  288. package/src/duckdb/src/planner/planner.cpp +3 -2
  289. package/src/duckdb/src/planner/pragma_handler.cpp +1 -1
  290. package/src/duckdb/src/storage/buffer_manager.cpp +5 -0
  291. package/src/duckdb/src/storage/checkpoint_manager.cpp +10 -17
  292. package/src/duckdb/src/storage/data_table.cpp +34 -24
  293. package/src/duckdb/src/storage/local_storage.cpp +7 -3
  294. package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
  295. package/src/duckdb/src/storage/storage_manager.cpp +25 -42
  296. package/src/duckdb/src/storage/table/column_data.cpp +2 -1
  297. package/src/duckdb/src/storage/table/row_group.cpp +7 -2
  298. package/src/duckdb/src/storage/wal_replay.cpp +6 -22
  299. package/src/duckdb/src/storage/write_ahead_log.cpp +3 -3
  300. package/src/duckdb/src/transaction/meta_transaction.cpp +106 -0
  301. package/src/duckdb/src/transaction/transaction.cpp +21 -21
  302. package/src/duckdb/src/transaction/transaction_context.cpp +44 -8
  303. package/src/duckdb/src/transaction/transaction_manager.cpp +20 -20
  304. package/src/duckdb/src/transaction/undo_buffer.cpp +1 -3
  305. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +2 -0
  306. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +27 -1
  307. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +99 -97
  308. package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +1 -0
  309. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +15206 -14793
  310. package/src/duckdb/ub_src_catalog.cpp +4 -0
  311. package/src/duckdb/ub_src_execution_operator_schema.cpp +2 -0
  312. package/src/duckdb/ub_src_function.cpp +2 -0
  313. package/src/duckdb/ub_src_function_table_system.cpp +0 -2
  314. package/src/duckdb/ub_src_main.cpp +4 -0
  315. package/src/duckdb/ub_src_parser_parsed_data.cpp +12 -0
  316. package/src/duckdb/ub_src_parser_statement.cpp +2 -0
  317. package/src/duckdb/ub_src_parser_transform_statement.cpp +4 -0
  318. package/src/duckdb/ub_src_planner_binder_statement.cpp +2 -0
  319. package/src/duckdb/ub_src_transaction.cpp +2 -0
  320. package/src/duckdb/src/function/table/system/pragma_functions.cpp +0 -120
@@ -10,6 +10,7 @@
10
10
 
11
11
  #include "duckdb/function/scalar_function.hpp"
12
12
  #include "duckdb/function/function_set.hpp"
13
+ #include "duckdb/function/built_in_functions.hpp"
13
14
 
14
15
  namespace duckdb {
15
16
 
@@ -10,6 +10,7 @@
10
10
 
11
11
  #include "duckdb/function/scalar_function.hpp"
12
12
  #include "duckdb/function/function_set.hpp"
13
+ #include "duckdb/function/built_in_functions.hpp"
13
14
 
14
15
  namespace duckdb {
15
16
  class BoundFunctionExpression;
@@ -10,6 +10,7 @@
10
10
 
11
11
  #include "duckdb/function/scalar_function.hpp"
12
12
  #include "duckdb/function/function_set.hpp"
13
+ #include "duckdb/function/built_in_functions.hpp"
13
14
 
14
15
  namespace duckdb {
15
16
 
@@ -13,6 +13,7 @@
13
13
  #include "duckdb/common/map.hpp"
14
14
  #include "duckdb/common/unordered_map.hpp"
15
15
  #include "duckdb/common/field_writer.hpp"
16
+ #include "duckdb/function/built_in_functions.hpp"
16
17
 
17
18
  namespace duckdb {
18
19
 
@@ -10,6 +10,7 @@
10
10
 
11
11
  #include "duckdb/function/function_set.hpp"
12
12
  #include "duckdb/function/scalar_function.hpp"
13
+ #include "duckdb/function/built_in_functions.hpp"
13
14
 
14
15
  namespace duckdb {
15
16
 
@@ -10,6 +10,7 @@
10
10
 
11
11
  #include "duckdb/function/function_set.hpp"
12
12
  #include "re2/re2.h"
13
+ #include "duckdb/function/built_in_functions.hpp"
13
14
 
14
15
  namespace duckdb {
15
16
 
@@ -10,6 +10,7 @@
10
10
 
11
11
  #include "duckdb/function/scalar_function.hpp"
12
12
  #include "duckdb/function/function_set.hpp"
13
+ #include "duckdb/function/built_in_functions.hpp"
13
14
 
14
15
  namespace duckdb {
15
16
 
@@ -10,6 +10,7 @@
10
10
 
11
11
  #include "duckdb/function/function_set.hpp"
12
12
  #include "utf8proc.hpp"
13
+ #include "duckdb/function/built_in_functions.hpp"
13
14
 
14
15
  namespace re2 {
15
16
  class RE2;
@@ -10,6 +10,7 @@
10
10
 
11
11
  #include "duckdb/function/scalar_function.hpp"
12
12
  #include "duckdb/function/function_set.hpp"
13
+ #include "duckdb/function/built_in_functions.hpp"
13
14
 
14
15
  namespace duckdb {
15
16
 
@@ -9,6 +9,7 @@
9
9
  #pragma once
10
10
 
11
11
  #include "duckdb/function/function_set.hpp"
12
+ #include "duckdb/function/built_in_functions.hpp"
12
13
 
13
14
  namespace duckdb {
14
15
 
@@ -24,6 +24,7 @@ struct FunctionLocalState {
24
24
 
25
25
  class Binder;
26
26
  class BoundFunctionExpression;
27
+ class DependencyList;
27
28
  class ScalarFunctionCatalogEntry;
28
29
 
29
30
  struct FunctionStatisticsInput {
@@ -48,7 +49,7 @@ typedef unique_ptr<FunctionLocalState> (*init_local_state_t)(ExpressionState &st
48
49
  FunctionData *bind_data);
49
50
  typedef unique_ptr<BaseStatistics> (*function_statistics_t)(ClientContext &context, FunctionStatisticsInput &input);
50
51
  //! Adds the dependencies of this BoundFunctionExpression to the set of dependencies
51
- typedef void (*dependency_function_t)(BoundFunctionExpression &expr, unordered_set<CatalogEntry *> &dependencies);
52
+ typedef void (*dependency_function_t)(BoundFunctionExpression &expr, DependencyList &dependencies);
52
53
 
53
54
  typedef void (*function_serialize_t)(FieldWriter &writer, const FunctionData *bind_data,
54
55
  const ScalarFunction &function);
@@ -15,6 +15,7 @@
15
15
  #include "duckdb/common/pair.hpp"
16
16
  #include "duckdb/common/thread.hpp"
17
17
  #include "duckdb/common/unordered_map.hpp"
18
+ #include "duckdb/function/built_in_functions.hpp"
18
19
 
19
20
  namespace duckdb {
20
21
  //===--------------------------------------------------------------------===//
@@ -9,6 +9,7 @@
9
9
  #pragma once
10
10
 
11
11
  #include "duckdb/function/table_function.hpp"
12
+ #include "duckdb/function/built_in_functions.hpp"
12
13
 
13
14
  namespace duckdb {
14
15
 
@@ -15,6 +15,7 @@
15
15
  #include "duckdb/execution/operator/persistent/parallel_csv_reader.hpp"
16
16
  #include "duckdb/execution/operator/persistent/csv_file_handle.hpp"
17
17
  #include "duckdb/execution/operator/persistent/csv_buffer.hpp"
18
+ #include "duckdb/function/built_in_functions.hpp"
18
19
 
19
20
  namespace duckdb {
20
21
 
@@ -9,6 +9,7 @@
9
9
  #pragma once
10
10
 
11
11
  #include "duckdb/function/table_function.hpp"
12
+ #include "duckdb/function/built_in_functions.hpp"
12
13
 
13
14
  namespace duckdb {
14
15
 
@@ -9,6 +9,7 @@
9
9
  #pragma once
10
10
 
11
11
  #include "duckdb/function/table_function.hpp"
12
+ #include "duckdb/function/built_in_functions.hpp"
12
13
 
13
14
  namespace duckdb {
14
15
 
@@ -16,10 +17,6 @@ struct PragmaCollations {
16
17
  static void RegisterFunction(BuiltinFunctions &set);
17
18
  };
18
19
 
19
- struct PragmaFunctionPragma {
20
- static void RegisterFunction(BuiltinFunctions &set);
21
- };
22
-
23
20
  struct PragmaTableInfo {
24
21
  static void RegisterFunction(BuiltinFunctions &set);
25
22
  };
@@ -10,6 +10,7 @@
10
10
 
11
11
  #include "duckdb/function/table_function.hpp"
12
12
  #include "duckdb/common/atomic.hpp"
13
+ #include "duckdb/function/built_in_functions.hpp"
13
14
 
14
15
  namespace duckdb {
15
16
  class TableCatalogEntry;
@@ -18,6 +18,7 @@
18
18
  namespace duckdb {
19
19
 
20
20
  class BaseStatistics;
21
+ class DependencyList;
21
22
  class LogicalGet;
22
23
  class TableFilterSet;
23
24
 
@@ -156,7 +157,7 @@ typedef BindInfo (*table_function_get_bind_info)(const FunctionData *bind_data);
156
157
 
157
158
  typedef double (*table_function_progress_t)(ClientContext &context, const FunctionData *bind_data,
158
159
  const GlobalTableFunctionState *global_state);
159
- typedef void (*table_function_dependency_t)(unordered_set<CatalogEntry *> &dependencies, const FunctionData *bind_data);
160
+ typedef void (*table_function_dependency_t)(DependencyList &dependencies, const FunctionData *bind_data);
160
161
  typedef unique_ptr<NodeStatistics> (*table_function_cardinality_t)(ClientContext &context,
161
162
  const FunctionData *bind_data);
162
163
  typedef void (*table_function_pushdown_complex_filter_t)(ClientContext &context, LogicalGet &get,
@@ -0,0 +1,64 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/main/attached_database.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #pragma once
10
+
11
+ #include "duckdb/common/common.hpp"
12
+ #include "duckdb/common/case_insensitive_map.hpp"
13
+ #include "duckdb/common/mutex.hpp"
14
+ #include "duckdb/main/config.hpp"
15
+ #include "duckdb/catalog/catalog_entry.hpp"
16
+
17
+ namespace duckdb {
18
+ class Catalog;
19
+ class DatabaseInstance;
20
+ class StorageManager;
21
+ class TransactionManager;
22
+
23
+ enum class AttachedDatabaseType {
24
+ READ_WRITE_DATABASE,
25
+ READ_ONLY_DATABASE,
26
+ SYSTEM_DATABASE,
27
+ TEMP_DATABASE,
28
+ };
29
+
30
+ //! The AttachedDatabase represents an attached database instance
31
+ class AttachedDatabase : public CatalogEntry {
32
+ public:
33
+ //! Create the built-in system attached database (without storage)
34
+ explicit AttachedDatabase(DatabaseInstance &db, AttachedDatabaseType type = AttachedDatabaseType::SYSTEM_DATABASE);
35
+ //! Create an attached database instance with the specified name and storage
36
+ AttachedDatabase(DatabaseInstance &db, Catalog &catalog, string name, string file_path, AccessMode access_mode);
37
+ ~AttachedDatabase();
38
+
39
+ void Initialize();
40
+
41
+ StorageManager &GetStorageManager();
42
+ Catalog &GetCatalog();
43
+ TransactionManager &GetTransactionManager();
44
+ DatabaseInstance &GetDatabase() {
45
+ return db;
46
+ }
47
+ const string &GetName() const {
48
+ return name;
49
+ }
50
+ bool IsSystem() const;
51
+ bool IsTemporary() const;
52
+ bool IsReadOnly() const;
53
+
54
+ static string ExtractDatabaseName(const string &dbpath);
55
+
56
+ private:
57
+ DatabaseInstance &db;
58
+ unique_ptr<StorageManager> storage;
59
+ unique_ptr<Catalog> catalog;
60
+ unique_ptr<TransactionManager> transaction_manager;
61
+ AttachedDatabaseType type;
62
+ };
63
+
64
+ } // namespace duckdb
@@ -72,8 +72,6 @@ public:
72
72
 
73
73
  //! The database that this client is connected to
74
74
  shared_ptr<DatabaseInstance> db;
75
- //! Data for the currently running transaction
76
- TransactionContext transaction;
77
75
  //! Whether or not the query is interrupted
78
76
  atomic<bool> interrupted;
79
77
  //! External Objects (e.g., Python objects) that views depend of
@@ -84,9 +82,11 @@ public:
84
82
  ClientConfig config;
85
83
  //! The set of client-specific data
86
84
  unique_ptr<ClientData> client_data;
85
+ //! Data for the currently running transaction
86
+ TransactionContext transaction;
87
87
 
88
88
  public:
89
- DUCKDB_API Transaction &ActiveTransaction() {
89
+ DUCKDB_API MetaTransaction &ActiveTransaction() {
90
90
  return transaction.ActiveTransaction();
91
91
  }
92
92
 
@@ -15,6 +15,7 @@
15
15
  #include "duckdb/common/atomic.hpp"
16
16
 
17
17
  namespace duckdb {
18
+ class AttachedDatabase;
18
19
  class BufferedFileWriter;
19
20
  class ClientContext;
20
21
  class CatalogSearchPath;
@@ -36,7 +37,7 @@ struct ClientData {
36
37
  unique_ptr<QueryProfilerHistory> query_profiler_history;
37
38
 
38
39
  //! The set of temporary objects that belong to this client
39
- shared_ptr<SchemaCatalogEntry> temporary_objects;
40
+ shared_ptr<AttachedDatabase> temporary_objects;
40
41
  //! The set of bound prepared statements that belong to this client
41
42
  unordered_map<string, shared_ptr<PreparedStatementData>> prepared_statements;
42
43
 
@@ -142,6 +142,8 @@ struct DBConfigOptions {
142
142
  bool enable_fsst_vectors = false;
143
143
  //! Experimental parallel CSV reader
144
144
  bool experimental_parallel_csv_reader = false;
145
+ //! Start transactions immediately in all attached databases - instead of lazily when a database is referenced
146
+ bool immediate_transaction_mode = false;
145
147
 
146
148
  bool operator==(const DBConfigOptions &other) const;
147
149
  };
@@ -185,6 +187,7 @@ public:
185
187
  public:
186
188
  DUCKDB_API static DBConfig &GetConfig(ClientContext &context);
187
189
  DUCKDB_API static DBConfig &GetConfig(DatabaseInstance &db);
190
+ DUCKDB_API static DBConfig &Get(AttachedDatabase &db);
188
191
  DUCKDB_API static const DBConfig &GetConfig(const ClientContext &context);
189
192
  DUCKDB_API static const DBConfig &GetConfig(const DatabaseInstance &db);
190
193
  DUCKDB_API static vector<ConfigurationOption> GetOptions();
@@ -14,6 +14,8 @@
14
14
  #include "duckdb/main/extension.hpp"
15
15
 
16
16
  namespace duckdb {
17
+ class BufferManager;
18
+ class DatabaseManager;
17
19
  class StorageManager;
18
20
  class Catalog;
19
21
  class TransactionManager;
@@ -32,10 +34,9 @@ public:
32
34
  DBConfig config;
33
35
 
34
36
  public:
35
- DUCKDB_API StorageManager &GetStorageManager();
36
- DUCKDB_API Catalog &GetCatalog();
37
+ DUCKDB_API BufferManager &GetBufferManager();
38
+ DUCKDB_API DatabaseManager &GetDatabaseManager();
37
39
  DUCKDB_API FileSystem &GetFileSystem();
38
- DUCKDB_API TransactionManager &GetTransactionManager();
39
40
  DUCKDB_API TaskScheduler &GetScheduler();
40
41
  DUCKDB_API ObjectCache &GetObjectCache();
41
42
  DUCKDB_API ConnectionManager &GetConnectionManager();
@@ -56,9 +57,8 @@ private:
56
57
  void Configure(DBConfig &config);
57
58
 
58
59
  private:
59
- unique_ptr<StorageManager> storage;
60
- unique_ptr<Catalog> catalog;
61
- unique_ptr<TransactionManager> transaction_manager;
60
+ unique_ptr<BufferManager> buffer_manager;
61
+ unique_ptr<DatabaseManager> db_manager;
62
62
  unique_ptr<TaskScheduler> scheduler;
63
63
  unique_ptr<ObjectCache> object_cache;
64
64
  unique_ptr<ConnectionManager> connection_manager;
@@ -0,0 +1,69 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/main/database_manager.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #pragma once
10
+
11
+ #include "duckdb/common/common.hpp"
12
+ #include "duckdb/common/case_insensitive_map.hpp"
13
+ #include "duckdb/common/mutex.hpp"
14
+ #include "duckdb/common/atomic.hpp"
15
+
16
+ namespace duckdb {
17
+ class AttachedDatabase;
18
+ class Catalog;
19
+ class CatalogSet;
20
+ class ClientContext;
21
+ class DatabaseInstance;
22
+
23
+ //! The DatabaseManager is a class that sits at the root of all attached databases
24
+ class DatabaseManager {
25
+ friend class Catalog;
26
+
27
+ public:
28
+ explicit DatabaseManager(DatabaseInstance &db);
29
+ ~DatabaseManager();
30
+
31
+ public:
32
+ static DatabaseManager &Get(DatabaseInstance &db);
33
+ static DatabaseManager &Get(ClientContext &db);
34
+ static DatabaseManager &Get(AttachedDatabase &db);
35
+
36
+ void InitializeSystemCatalog();
37
+ //! Get an attached database with the given name
38
+ AttachedDatabase *GetDatabase(ClientContext &context, const string &name);
39
+ //! Add a new attached database to the database manager
40
+ void AddDatabase(ClientContext &context, unique_ptr<AttachedDatabase> db);
41
+ void DetachDatabase(ClientContext &context, const string &name, bool if_exists);
42
+ //! Returns a reference to the system catalog
43
+ Catalog &GetSystemCatalog();
44
+ static const string &GetDefaultDatabase(ClientContext &context);
45
+
46
+ AttachedDatabase *GetDatabaseFromPath(ClientContext &context, const string &path);
47
+ vector<AttachedDatabase *> GetDatabases(ClientContext &context);
48
+
49
+ transaction_t GetNewQueryNumber() {
50
+ return current_query_number++;
51
+ }
52
+ transaction_t ActiveQueryNumber() const {
53
+ return current_query_number;
54
+ }
55
+
56
+ private:
57
+ //! The system database is a special database that holds system entries (e.g. functions)
58
+ unique_ptr<AttachedDatabase> system;
59
+ //! The set of attached databases
60
+ unique_ptr<CatalogSet> databases;
61
+ //! The global catalog version, incremented whenever anything changes in the catalog
62
+ atomic<idx_t> catalog_version;
63
+ //! The current query number
64
+ atomic<transaction_t> current_query_number;
65
+ //! The current default database
66
+ string default_database;
67
+ };
68
+
69
+ } // namespace duckdb
@@ -262,6 +262,16 @@ struct LogQueryPathSetting {
262
262
  static Value GetSetting(ClientContext &context);
263
263
  };
264
264
 
265
+ struct ImmediateTransactionModeSetting {
266
+ static constexpr const char *Name = "immediate_transaction_mode";
267
+ static constexpr const char *Description =
268
+ "Whether transactions should be started lazily when needed, or immediately when BEGIN TRANSACTION is called";
269
+ static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
270
+ static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
271
+ static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
272
+ static Value GetSetting(ClientContext &context);
273
+ };
274
+
265
275
  struct MaximumExpressionDepthSetting {
266
276
  static constexpr const char *Name = "max_expression_depth";
267
277
  static constexpr const char *Description =
@@ -14,14 +14,14 @@
14
14
 
15
15
  namespace duckdb {
16
16
  class DatabaseInstance;
17
- class Transaction;
17
+ class MetaTransaction;
18
18
 
19
19
  class ValidChecker {
20
20
  public:
21
21
  ValidChecker();
22
22
 
23
23
  DUCKDB_API static ValidChecker &Get(DatabaseInstance &db);
24
- DUCKDB_API static ValidChecker &Get(Transaction &transaction);
24
+ DUCKDB_API static ValidChecker &Get(MetaTransaction &transaction);
25
25
 
26
26
  DUCKDB_API void Invalidate(string error);
27
27
  DUCKDB_API bool IsInvalidated();
@@ -16,7 +16,7 @@ namespace duckdb {
16
16
  //! Represents a function call
17
17
  class FunctionExpression : public ParsedExpression {
18
18
  public:
19
- DUCKDB_API FunctionExpression(string schema_name, const string &function_name,
19
+ DUCKDB_API FunctionExpression(string catalog_name, string schema_name, const string &function_name,
20
20
  vector<unique_ptr<ParsedExpression>> children,
21
21
  unique_ptr<ParsedExpression> filter = nullptr,
22
22
  unique_ptr<OrderModifier> order_bys = nullptr, bool distinct = false,
@@ -26,6 +26,8 @@ public:
26
26
  unique_ptr<OrderModifier> order_bys = nullptr, bool distinct = false,
27
27
  bool is_operator = false, bool export_state = false);
28
28
 
29
+ //! Catalog of the function
30
+ string catalog;
29
31
  //! Schema of the function
30
32
  string schema;
31
33
  //! Function name
@@ -29,8 +29,10 @@ enum class WindowBoundary : uint8_t {
29
29
  //! they inherit from them.
30
30
  class WindowExpression : public ParsedExpression {
31
31
  public:
32
- WindowExpression(ExpressionType type, string schema_name, const string &function_name);
32
+ WindowExpression(ExpressionType type, string catalog_name, string schema_name, const string &function_name);
33
33
 
34
+ //! Catalog of the aggregate function
35
+ string catalog;
34
36
  //! Schema of the aggregate function
35
37
  string schema;
36
38
  //! Name of the aggregate function
@@ -20,7 +20,7 @@ namespace duckdb {
20
20
  enum class AlterFunctionType : uint8_t { INVALID = 0, ADD_FUNCTION_OVERLOADS = 1 };
21
21
 
22
22
  struct AlterFunctionInfo : public AlterInfo {
23
- AlterFunctionInfo(AlterFunctionType type, string schema, string name, bool if_exists);
23
+ AlterFunctionInfo(AlterFunctionType type, AlterEntryData data);
24
24
  virtual ~AlterFunctionInfo() override;
25
25
 
26
26
  AlterFunctionType alter_function_type;
@@ -35,7 +35,7 @@ public:
35
35
  // AddFunctionOverloadInfo
36
36
  //===--------------------------------------------------------------------===//
37
37
  struct AddFunctionOverloadInfo : public AlterFunctionInfo {
38
- AddFunctionOverloadInfo(string schema, string name, bool if_exists, ScalarFunctionSet new_overloads);
38
+ AddFunctionOverloadInfo(AlterEntryData data, ScalarFunctionSet new_overloads);
39
39
  ~AddFunctionOverloadInfo() override;
40
40
 
41
41
  ScalarFunctionSet new_overloads;
@@ -23,13 +23,28 @@ enum class AlterType : uint8_t {
23
23
  ALTER_FUNCTION = 5
24
24
  };
25
25
 
26
+ struct AlterEntryData {
27
+ AlterEntryData() {
28
+ }
29
+ AlterEntryData(string catalog_p, string schema_p, string name_p, bool if_exists)
30
+ : catalog(move(catalog_p)), schema(move(schema_p)), name(move(name_p)), if_exists(if_exists) {
31
+ }
32
+
33
+ string catalog;
34
+ string schema;
35
+ string name;
36
+ bool if_exists;
37
+ };
38
+
26
39
  struct AlterInfo : public ParseInfo {
27
- AlterInfo(AlterType type, string schema, string name, bool if_exists);
40
+ AlterInfo(AlterType type, string catalog, string schema, string name, bool if_exists);
28
41
  virtual ~AlterInfo() override;
29
42
 
30
43
  AlterType type;
31
44
  //! if exists
32
45
  bool if_exists;
46
+ //! Catalog name to alter
47
+ string catalog;
33
48
  //! Schema name to alter
34
49
  string schema;
35
50
  //! Entry name to alter
@@ -43,6 +58,8 @@ public:
43
58
  void Serialize(Serializer &serializer) const;
44
59
  virtual void Serialize(FieldWriter &writer) const = 0;
45
60
  static unique_ptr<AlterInfo> Deserialize(Deserializer &source);
61
+
62
+ AlterEntryData GetAlterEntryData() const;
46
63
  };
47
64
 
48
65
  } // namespace duckdb