duckdb 0.6.2-dev781.0 → 0.6.2-dev889.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 (319) 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/parquet-extension.cpp +1 -1
  14. package/src/duckdb/src/catalog/catalog.cpp +516 -177
  15. package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +1 -0
  16. package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +66 -49
  17. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +15 -16
  18. package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +1 -1
  19. package/src/duckdb/src/catalog/catalog_entry.cpp +6 -2
  20. package/src/duckdb/src/catalog/catalog_search_path.cpp +177 -22
  21. package/src/duckdb/src/catalog/catalog_set.cpp +134 -72
  22. package/src/duckdb/src/catalog/catalog_transaction.cpp +28 -0
  23. package/src/duckdb/src/catalog/default/default_views.cpp +4 -4
  24. package/src/duckdb/src/catalog/dependency_list.cpp +13 -0
  25. package/src/duckdb/src/catalog/dependency_manager.cpp +19 -13
  26. package/src/duckdb/src/common/constants.cpp +8 -0
  27. package/src/duckdb/src/common/enums/catalog_type.cpp +2 -0
  28. package/src/duckdb/src/common/enums/logical_operator_type.cpp +2 -0
  29. package/src/duckdb/src/common/enums/physical_operator_type.cpp +2 -0
  30. package/src/duckdb/src/common/enums/statement_type.cpp +2 -0
  31. package/src/duckdb/src/common/file_system.cpp +1 -1
  32. package/src/duckdb/src/common/string_util.cpp +5 -1
  33. package/src/duckdb/src/execution/index/art/art.cpp +1 -1
  34. package/src/duckdb/src/execution/operator/helper/physical_transaction.cpp +1 -0
  35. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +1 -1
  36. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +3 -2
  37. package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +1 -1
  38. package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +1 -1
  39. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +4 -3
  40. package/src/duckdb/src/execution/operator/schema/physical_alter.cpp +1 -1
  41. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +72 -0
  42. package/src/duckdb/src/execution/operator/schema/physical_create_function.cpp +2 -1
  43. package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +3 -3
  44. package/src/duckdb/src/execution/operator/schema/physical_create_schema.cpp +5 -1
  45. package/src/duckdb/src/execution/operator/schema/physical_create_sequence.cpp +2 -1
  46. package/src/duckdb/src/execution/operator/schema/physical_create_table.cpp +2 -2
  47. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  48. package/src/duckdb/src/execution/operator/schema/physical_create_view.cpp +2 -1
  49. package/src/duckdb/src/execution/operator/schema/physical_drop.cpp +10 -2
  50. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +4 -4
  51. package/src/duckdb/src/execution/physical_plan/plan_create_index.cpp +1 -1
  52. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +2 -3
  53. package/src/duckdb/src/execution/physical_plan/plan_delete.cpp +1 -1
  54. package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +1 -1
  55. package/src/duckdb/src/execution/physical_plan/plan_simple.cpp +4 -0
  56. package/src/duckdb/src/execution/physical_plan/plan_update.cpp +1 -1
  57. package/src/duckdb/src/execution/physical_plan_generator.cpp +3 -2
  58. package/src/duckdb/src/function/built_in_functions.cpp +88 -0
  59. package/src/duckdb/src/function/function.cpp +0 -79
  60. package/src/duckdb/src/function/function_binder.cpp +2 -1
  61. package/src/duckdb/src/function/pragma/pragma_queries.cpp +10 -1
  62. package/src/duckdb/src/function/scalar/date/current.cpp +2 -2
  63. package/src/duckdb/src/function/scalar/list/list_aggregates.cpp +3 -2
  64. package/src/duckdb/src/function/scalar/sequence/nextval.cpp +14 -17
  65. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +2 -2
  66. package/src/duckdb/src/function/scalar/system/system_functions.cpp +7 -4
  67. package/src/duckdb/src/function/table/checkpoint.cpp +37 -4
  68. package/src/duckdb/src/function/table/read_csv.cpp +1 -1
  69. package/src/duckdb/src/function/table/system/duckdb_columns.cpp +32 -25
  70. package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +26 -22
  71. package/src/duckdb/src/function/table/system/duckdb_dependencies.cpp +1 -1
  72. package/src/duckdb/src/function/table/system/duckdb_extensions.cpp +1 -1
  73. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +22 -15
  74. package/src/duckdb/src/function/table/system/duckdb_indexes.cpp +25 -18
  75. package/src/duckdb/src/function/table/system/duckdb_schemas.cpp +16 -8
  76. package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +26 -19
  77. package/src/duckdb/src/function/table/system/duckdb_tables.cpp +24 -17
  78. package/src/duckdb/src/function/table/system/duckdb_types.cpp +22 -16
  79. package/src/duckdb/src/function/table/system/duckdb_views.cpp +20 -13
  80. package/src/duckdb/src/function/table/system/pragma_collations.cpp +3 -4
  81. package/src/duckdb/src/function/table/system/pragma_database_list.cpp +20 -12
  82. package/src/duckdb/src/function/table/system/pragma_database_size.cpp +39 -24
  83. package/src/duckdb/src/function/table/system/pragma_storage_info.cpp +1 -7
  84. package/src/duckdb/src/function/table/system/pragma_table_info.cpp +3 -2
  85. package/src/duckdb/src/function/table/system_functions.cpp +0 -1
  86. package/src/duckdb/src/function/table/table_scan.cpp +13 -10
  87. package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
  88. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +102 -81
  89. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/aggregate_function_catalog_entry.hpp +4 -0
  90. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/collate_catalog_entry.hpp +4 -0
  91. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/copy_function_catalog_entry.hpp +4 -0
  92. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/index_catalog_entry.hpp +4 -0
  93. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/pragma_function_catalog_entry.hpp +4 -0
  94. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/scalar_function_catalog_entry.hpp +4 -0
  95. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/scalar_macro_catalog_entry.hpp +4 -0
  96. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +21 -14
  97. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +4 -0
  98. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +4 -0
  99. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_function_catalog_entry.hpp +4 -0
  100. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_macro_catalog_entry.hpp +4 -0
  101. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +4 -0
  102. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/view_catalog_entry.hpp +4 -0
  103. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -0
  104. package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +30 -11
  105. package/src/duckdb/src/include/duckdb/catalog/catalog_set.hpp +35 -20
  106. package/src/duckdb/src/include/duckdb/catalog/catalog_transaction.hpp +32 -0
  107. package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +27 -0
  108. package/src/duckdb/src/include/duckdb/catalog/dependency_manager.hpp +6 -4
  109. package/src/duckdb/src/include/duckdb/common/allocator.hpp +3 -0
  110. package/src/duckdb/src/include/duckdb/common/constants.hpp +8 -3
  111. package/src/duckdb/src/include/duckdb/common/enums/catalog_type.hpp +1 -0
  112. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +1 -0
  113. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +1 -0
  114. package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +10 -4
  115. package/src/duckdb/src/include/duckdb/common/file_system.hpp +2 -0
  116. package/src/duckdb/src/include/duckdb/common/string_util.hpp +3 -0
  117. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +2 -2
  118. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_attach.hpp +33 -0
  119. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +2 -1
  120. package/src/duckdb/src/include/duckdb/function/aggregate/algebraic_functions.hpp +1 -0
  121. package/src/duckdb/src/include/duckdb/function/aggregate/distributive_functions.hpp +1 -0
  122. package/src/duckdb/src/include/duckdb/function/aggregate/holistic_functions.hpp +1 -0
  123. package/src/duckdb/src/include/duckdb/function/aggregate/nested_functions.hpp +1 -0
  124. package/src/duckdb/src/include/duckdb/function/aggregate/regression_functions.hpp +1 -0
  125. package/src/duckdb/src/include/duckdb/function/built_in_functions.hpp +78 -0
  126. package/src/duckdb/src/include/duckdb/function/function.hpp +0 -61
  127. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +1 -2
  128. package/src/duckdb/src/include/duckdb/function/pragma/pragma_functions.hpp +1 -0
  129. package/src/duckdb/src/include/duckdb/function/scalar/blob_functions.hpp +1 -0
  130. package/src/duckdb/src/include/duckdb/function/scalar/date_functions.hpp +1 -0
  131. package/src/duckdb/src/include/duckdb/function/scalar/enum_functions.hpp +1 -0
  132. package/src/duckdb/src/include/duckdb/function/scalar/generic_functions.hpp +1 -0
  133. package/src/duckdb/src/include/duckdb/function/scalar/math_functions.hpp +1 -0
  134. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +1 -0
  135. package/src/duckdb/src/include/duckdb/function/scalar/operators.hpp +1 -0
  136. package/src/duckdb/src/include/duckdb/function/scalar/regexp.hpp +1 -0
  137. package/src/duckdb/src/include/duckdb/function/scalar/sequence_functions.hpp +1 -0
  138. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +1 -0
  139. package/src/duckdb/src/include/duckdb/function/scalar/trigonometric_functions.hpp +1 -0
  140. package/src/duckdb/src/include/duckdb/function/scalar/uuid_functions.hpp +1 -0
  141. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -1
  142. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +1 -0
  143. package/src/duckdb/src/include/duckdb/function/table/range.hpp +1 -0
  144. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +1 -0
  145. package/src/duckdb/src/include/duckdb/function/table/summary.hpp +1 -0
  146. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +1 -4
  147. package/src/duckdb/src/include/duckdb/function/table/table_scan.hpp +1 -0
  148. package/src/duckdb/src/include/duckdb/function/table_function.hpp +2 -1
  149. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +64 -0
  150. package/src/duckdb/src/include/duckdb/main/client_context.hpp +3 -3
  151. package/src/duckdb/src/include/duckdb/main/client_data.hpp +2 -1
  152. package/src/duckdb/src/include/duckdb/main/config.hpp +3 -0
  153. package/src/duckdb/src/include/duckdb/main/database.hpp +6 -6
  154. package/src/duckdb/src/include/duckdb/main/database_manager.hpp +69 -0
  155. package/src/duckdb/src/include/duckdb/main/settings.hpp +10 -0
  156. package/src/duckdb/src/include/duckdb/main/valid_checker.hpp +2 -2
  157. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +3 -1
  158. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +3 -1
  159. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_function_info.hpp +2 -2
  160. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +18 -1
  161. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +53 -56
  162. package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +39 -0
  163. package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_info.hpp +4 -1
  164. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_aggregate_function_info.hpp +3 -18
  165. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_collation_info.hpp +4 -13
  166. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_copy_function_info.hpp +3 -12
  167. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_index_info.hpp +1 -1
  168. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +5 -3
  169. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_pragma_function_info.hpp +3 -14
  170. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_function_info.hpp +3 -19
  171. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_info.hpp +3 -1
  172. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +7 -34
  173. package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +7 -1
  174. package/src/duckdb/src/include/duckdb/parser/parsed_data/exported_table_data.hpp +3 -0
  175. package/src/duckdb/src/include/duckdb/parser/parser_extension.hpp +2 -2
  176. package/src/duckdb/src/include/duckdb/parser/qualified_name.hpp +10 -2
  177. package/src/duckdb/src/include/duckdb/parser/query_error_context.hpp +2 -2
  178. package/src/duckdb/src/include/duckdb/parser/statement/attach_statement.hpp +29 -0
  179. package/src/duckdb/src/include/duckdb/parser/statement/export_statement.hpp +1 -0
  180. package/src/duckdb/src/include/duckdb/parser/statement/insert_statement.hpp +2 -0
  181. package/src/duckdb/src/include/duckdb/parser/statement/list.hpp +1 -0
  182. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +4 -1
  183. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +1 -0
  184. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +2 -0
  185. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -0
  186. package/src/duckdb/src/include/duckdb/planner/binder.hpp +11 -1
  187. package/src/duckdb/src/include/duckdb/planner/parsed_data/bound_create_table_info.hpp +2 -1
  188. package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +1 -0
  189. package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +13 -6
  190. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +10 -2
  191. package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +2 -2
  192. package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +2 -2
  193. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +9 -12
  194. package/src/duckdb/src/include/duckdb/storage/table/data_table_info.hpp +3 -7
  195. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +5 -6
  196. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +9 -7
  197. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +3 -1
  198. package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +64 -0
  199. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +14 -23
  200. package/src/duckdb/src/include/duckdb/transaction/transaction_context.hpp +12 -8
  201. package/src/duckdb/src/include/duckdb/transaction/transaction_manager.hpp +5 -10
  202. package/src/duckdb/src/include/duckdb/transaction/undo_buffer.hpp +1 -1
  203. package/src/duckdb/src/main/attached_database.cpp +97 -0
  204. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  205. package/src/duckdb/src/main/client_context.cpp +28 -22
  206. package/src/duckdb/src/main/client_data.cpp +5 -2
  207. package/src/duckdb/src/main/config.cpp +1 -0
  208. package/src/duckdb/src/main/database.cpp +54 -40
  209. package/src/duckdb/src/main/database_manager.cpp +95 -0
  210. package/src/duckdb/src/main/materialized_query_result.cpp +1 -1
  211. package/src/duckdb/src/main/prepared_statement_data.cpp +1 -2
  212. package/src/duckdb/src/main/query_result.cpp +4 -4
  213. package/src/duckdb/src/main/settings/settings.cpp +22 -6
  214. package/src/duckdb/src/main/stream_query_result.cpp +1 -1
  215. package/src/duckdb/src/parser/expression/columnref_expression.cpp +9 -3
  216. package/src/duckdb/src/parser/expression/function_expression.cpp +15 -13
  217. package/src/duckdb/src/parser/expression/window_expression.cpp +6 -4
  218. package/src/duckdb/src/parser/parsed_data/alter_function_info.cpp +7 -7
  219. package/src/duckdb/src/parser/parsed_data/alter_info.cpp +12 -2
  220. package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +96 -98
  221. package/src/duckdb/src/parser/parsed_data/create_aggregate_function_info.cpp +27 -0
  222. package/src/duckdb/src/parser/parsed_data/create_collation_info.cpp +23 -0
  223. package/src/duckdb/src/parser/parsed_data/create_copy_function_info.cpp +21 -0
  224. package/src/duckdb/src/parser/parsed_data/create_info.cpp +3 -0
  225. package/src/duckdb/src/parser/parsed_data/create_pragma_function_info.cpp +23 -0
  226. package/src/duckdb/src/parser/parsed_data/create_scalar_function_info.cpp +3 -1
  227. package/src/duckdb/src/parser/parsed_data/create_table_function_info.cpp +28 -0
  228. package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +9 -3
  229. package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +49 -0
  230. package/src/duckdb/src/parser/statement/attach_statement.cpp +15 -0
  231. package/src/duckdb/src/parser/statement/insert_statement.cpp +6 -2
  232. package/src/duckdb/src/parser/tableref/basetableref.cpp +9 -4
  233. package/src/duckdb/src/parser/transform/constraint/transform_constraint.cpp +15 -13
  234. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +17 -7
  235. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +4 -9
  236. package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +4 -0
  237. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +5 -4
  238. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +8 -10
  239. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +32 -0
  240. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +7 -2
  241. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +1 -0
  242. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +1 -0
  243. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +1 -0
  244. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +1 -0
  245. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +5 -5
  246. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +1 -0
  247. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +6 -13
  248. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +6 -6
  249. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +11 -2
  250. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -1
  251. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +1 -0
  252. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -36
  253. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +3 -1
  254. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +21 -0
  255. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +11 -3
  256. package/src/duckdb/src/parser/transformer.cpp +4 -0
  257. package/src/duckdb/src/planner/bind_context.cpp +11 -2
  258. package/src/duckdb/src/planner/binder/expression/bind_cast_expression.cpp +1 -1
  259. package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +43 -13
  260. package/src/duckdb/src/planner/binder/expression/bind_comparison_expression.cpp +1 -1
  261. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +2 -3
  262. package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +2 -3
  263. package/src/duckdb/src/planner/binder/statement/bind_attach.cpp +20 -0
  264. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +7 -4
  265. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +79 -27
  266. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +11 -7
  267. package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +1 -1
  268. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +13 -5
  269. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +6 -3
  270. package/src/duckdb/src/planner/binder/statement/bind_extension.cpp +1 -1
  271. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +3 -2
  272. package/src/duckdb/src/planner/binder/statement/bind_pragma.cpp +2 -2
  273. package/src/duckdb/src/planner/binder/statement/bind_prepare.cpp +0 -2
  274. package/src/duckdb/src/planner/binder/statement/bind_simple.cpp +11 -6
  275. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +1 -1
  276. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +10 -6
  277. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +2 -4
  278. package/src/duckdb/src/planner/binder.cpp +17 -2
  279. package/src/duckdb/src/planner/logical_operator.cpp +5 -12
  280. package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +3 -4
  281. package/src/duckdb/src/planner/operator/logical_create.cpp +1 -4
  282. package/src/duckdb/src/planner/operator/logical_create_index.cpp +2 -2
  283. package/src/duckdb/src/planner/operator/logical_delete.cpp +2 -3
  284. package/src/duckdb/src/planner/operator/logical_insert.cpp +1 -1
  285. package/src/duckdb/src/planner/operator/logical_update.cpp +1 -1
  286. package/src/duckdb/src/planner/parsed_data/bound_create_table_info.cpp +1 -1
  287. package/src/duckdb/src/planner/planner.cpp +3 -2
  288. package/src/duckdb/src/planner/pragma_handler.cpp +1 -1
  289. package/src/duckdb/src/storage/buffer_manager.cpp +5 -0
  290. package/src/duckdb/src/storage/checkpoint_manager.cpp +10 -17
  291. package/src/duckdb/src/storage/data_table.cpp +34 -24
  292. package/src/duckdb/src/storage/local_storage.cpp +7 -3
  293. package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
  294. package/src/duckdb/src/storage/storage_manager.cpp +25 -42
  295. package/src/duckdb/src/storage/table/column_data.cpp +2 -1
  296. package/src/duckdb/src/storage/table/row_group.cpp +7 -2
  297. package/src/duckdb/src/storage/wal_replay.cpp +6 -22
  298. package/src/duckdb/src/storage/write_ahead_log.cpp +3 -3
  299. package/src/duckdb/src/transaction/meta_transaction.cpp +106 -0
  300. package/src/duckdb/src/transaction/transaction.cpp +21 -21
  301. package/src/duckdb/src/transaction/transaction_context.cpp +44 -8
  302. package/src/duckdb/src/transaction/transaction_manager.cpp +20 -20
  303. package/src/duckdb/src/transaction/undo_buffer.cpp +1 -3
  304. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +2 -0
  305. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +27 -1
  306. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +99 -97
  307. package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +1 -0
  308. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +15206 -14793
  309. package/src/duckdb/ub_src_catalog.cpp +4 -0
  310. package/src/duckdb/ub_src_execution_operator_schema.cpp +2 -0
  311. package/src/duckdb/ub_src_function.cpp +2 -0
  312. package/src/duckdb/ub_src_function_table_system.cpp +0 -2
  313. package/src/duckdb/ub_src_main.cpp +4 -0
  314. package/src/duckdb/ub_src_parser_parsed_data.cpp +12 -0
  315. package/src/duckdb/ub_src_parser_statement.cpp +2 -0
  316. package/src/duckdb/ub_src_parser_transform_statement.cpp +4 -0
  317. package/src/duckdb/ub_src_planner_binder_statement.cpp +2 -0
  318. package/src/duckdb/ub_src_transaction.cpp +2 -0
  319. package/src/duckdb/src/function/table/system/pragma_functions.cpp +0 -120
@@ -8,9 +8,11 @@ namespace duckdb {
8
8
  //===--------------------------------------------------------------------===//
9
9
  // ChangeOwnershipInfo
10
10
  //===--------------------------------------------------------------------===//
11
- ChangeOwnershipInfo::ChangeOwnershipInfo(CatalogType entry_catalog_type, string entry_schema_p, string entry_name_p,
12
- string owner_schema_p, string owner_name_p, bool if_exists)
13
- : AlterInfo(AlterType::CHANGE_OWNERSHIP, move(entry_schema_p), move(entry_name_p), if_exists),
11
+ ChangeOwnershipInfo::ChangeOwnershipInfo(CatalogType entry_catalog_type, string entry_catalog_p, string entry_schema_p,
12
+ string entry_name_p, string owner_schema_p, string owner_name_p,
13
+ bool if_exists)
14
+ : AlterInfo(AlterType::CHANGE_OWNERSHIP, move(entry_catalog_p), move(entry_schema_p), move(entry_name_p),
15
+ if_exists),
14
16
  entry_catalog_type(entry_catalog_type), owner_schema(move(owner_schema_p)), owner_name(move(owner_name_p)) {
15
17
  }
16
18
 
@@ -19,8 +21,8 @@ CatalogType ChangeOwnershipInfo::GetCatalogType() const {
19
21
  }
20
22
 
21
23
  unique_ptr<AlterInfo> ChangeOwnershipInfo::Copy() const {
22
- return make_unique_base<AlterInfo, ChangeOwnershipInfo>(entry_catalog_type, schema, name, owner_schema, owner_name,
23
- if_exists);
24
+ return make_unique_base<AlterInfo, ChangeOwnershipInfo>(entry_catalog_type, catalog, schema, name, owner_schema,
25
+ owner_name, if_exists);
24
26
  }
25
27
 
26
28
  void ChangeOwnershipInfo::Serialize(FieldWriter &writer) const {
@@ -30,8 +32,9 @@ void ChangeOwnershipInfo::Serialize(FieldWriter &writer) const {
30
32
  //===--------------------------------------------------------------------===//
31
33
  // AlterTableInfo
32
34
  //===--------------------------------------------------------------------===//
33
- AlterTableInfo::AlterTableInfo(AlterTableType type, string schema_p, string table_p, bool if_exists)
34
- : AlterInfo(AlterType::ALTER_TABLE, move(move(schema_p)), move(table_p), if_exists), alter_table_type(type) {
35
+ AlterTableInfo::AlterTableInfo(AlterTableType type, AlterEntryData data)
36
+ : AlterInfo(AlterType::ALTER_TABLE, move(data.catalog), move(data.schema), move(data.name), data.if_exists),
37
+ alter_table_type(type) {
35
38
  }
36
39
  AlterTableInfo::~AlterTableInfo() {
37
40
  }
@@ -42,6 +45,7 @@ CatalogType AlterTableInfo::GetCatalogType() const {
42
45
 
43
46
  void AlterTableInfo::Serialize(FieldWriter &writer) const {
44
47
  writer.WriteField<AlterTableType>(alter_table_type);
48
+ writer.WriteString(catalog);
45
49
  writer.WriteString(schema);
46
50
  writer.WriteString(name);
47
51
  writer.WriteField(if_exists);
@@ -50,30 +54,32 @@ void AlterTableInfo::Serialize(FieldWriter &writer) const {
50
54
 
51
55
  unique_ptr<AlterInfo> AlterTableInfo::Deserialize(FieldReader &reader) {
52
56
  auto type = reader.ReadRequired<AlterTableType>();
53
- auto schema = reader.ReadRequired<string>();
54
- auto table = reader.ReadRequired<string>();
55
- auto if_exists = reader.ReadRequired<bool>();
57
+ AlterEntryData data;
58
+ data.catalog = reader.ReadRequired<string>();
59
+ data.schema = reader.ReadRequired<string>();
60
+ data.name = reader.ReadRequired<string>();
61
+ data.if_exists = reader.ReadRequired<bool>();
56
62
 
57
63
  unique_ptr<AlterTableInfo> info;
58
64
  switch (type) {
59
65
  case AlterTableType::RENAME_COLUMN:
60
- return RenameColumnInfo::Deserialize(reader, schema, table, if_exists);
66
+ return RenameColumnInfo::Deserialize(reader, move(data));
61
67
  case AlterTableType::RENAME_TABLE:
62
- return RenameTableInfo::Deserialize(reader, schema, table, if_exists);
68
+ return RenameTableInfo::Deserialize(reader, move(data));
63
69
  case AlterTableType::ADD_COLUMN:
64
- return AddColumnInfo::Deserialize(reader, schema, table, if_exists);
70
+ return AddColumnInfo::Deserialize(reader, move(data));
65
71
  case AlterTableType::REMOVE_COLUMN:
66
- return RemoveColumnInfo::Deserialize(reader, schema, table, if_exists);
72
+ return RemoveColumnInfo::Deserialize(reader, move(data));
67
73
  case AlterTableType::ALTER_COLUMN_TYPE:
68
- return ChangeColumnTypeInfo::Deserialize(reader, schema, table, if_exists);
74
+ return ChangeColumnTypeInfo::Deserialize(reader, move(data));
69
75
  case AlterTableType::SET_DEFAULT:
70
- return SetDefaultInfo::Deserialize(reader, schema, table, if_exists);
76
+ return SetDefaultInfo::Deserialize(reader, move(data));
71
77
  case AlterTableType::FOREIGN_KEY_CONSTRAINT:
72
- return AlterForeignKeyInfo::Deserialize(reader, schema, table, if_exists);
78
+ return AlterForeignKeyInfo::Deserialize(reader, move(data));
73
79
  case AlterTableType::SET_NOT_NULL:
74
- return SetNotNullInfo::Deserialize(reader, schema, table, if_exists);
80
+ return SetNotNullInfo::Deserialize(reader, move(data));
75
81
  case AlterTableType::DROP_NOT_NULL:
76
- return DropNotNullInfo::Deserialize(reader, schema, table, if_exists);
82
+ return DropNotNullInfo::Deserialize(reader, move(data));
77
83
  default:
78
84
  throw SerializationException("Unknown alter table type for deserialization!");
79
85
  }
@@ -82,16 +88,15 @@ unique_ptr<AlterInfo> AlterTableInfo::Deserialize(FieldReader &reader) {
82
88
  //===--------------------------------------------------------------------===//
83
89
  // RenameColumnInfo
84
90
  //===--------------------------------------------------------------------===//
85
- RenameColumnInfo::RenameColumnInfo(string schema_p, string table_p, bool if_exists_p, string old_name_p,
86
- string new_name_p)
87
- : AlterTableInfo(AlterTableType::RENAME_COLUMN, move(schema_p), move(table_p), if_exists_p),
88
- old_name(move(old_name_p)), new_name(move(new_name_p)) {
91
+ RenameColumnInfo::RenameColumnInfo(AlterEntryData data, string old_name_p, string new_name_p)
92
+ : AlterTableInfo(AlterTableType::RENAME_COLUMN, move(data)), old_name(move(old_name_p)),
93
+ new_name(move(new_name_p)) {
89
94
  }
90
95
  RenameColumnInfo::~RenameColumnInfo() {
91
96
  }
92
97
 
93
98
  unique_ptr<AlterInfo> RenameColumnInfo::Copy() const {
94
- return make_unique_base<AlterInfo, RenameColumnInfo>(schema, name, if_exists, old_name, new_name);
99
+ return make_unique_base<AlterInfo, RenameColumnInfo>(GetAlterEntryData(), old_name, new_name);
95
100
  }
96
101
 
97
102
  void RenameColumnInfo::SerializeAlterTable(FieldWriter &writer) const {
@@ -99,49 +104,47 @@ void RenameColumnInfo::SerializeAlterTable(FieldWriter &writer) const {
99
104
  writer.WriteString(new_name);
100
105
  }
101
106
 
102
- unique_ptr<AlterInfo> RenameColumnInfo::Deserialize(FieldReader &reader, string schema, string table, bool if_exists) {
107
+ unique_ptr<AlterInfo> RenameColumnInfo::Deserialize(FieldReader &reader, AlterEntryData data) {
103
108
  auto old_name = reader.ReadRequired<string>();
104
109
  auto new_name = reader.ReadRequired<string>();
105
- return make_unique<RenameColumnInfo>(move(schema), move(table), if_exists, old_name, new_name);
110
+ return make_unique<RenameColumnInfo>(move(data), old_name, new_name);
106
111
  }
107
112
 
108
113
  //===--------------------------------------------------------------------===//
109
114
  // RenameTableInfo
110
115
  //===--------------------------------------------------------------------===//
111
- RenameTableInfo::RenameTableInfo(string schema_p, string table_p, bool if_exists, string new_name_p)
112
- : AlterTableInfo(AlterTableType::RENAME_TABLE, move(schema_p), move(table_p), if_exists),
113
- new_table_name(move(new_name_p)) {
116
+ RenameTableInfo::RenameTableInfo(AlterEntryData data, string new_name_p)
117
+ : AlterTableInfo(AlterTableType::RENAME_TABLE, move(data)), new_table_name(move(new_name_p)) {
114
118
  }
115
119
  RenameTableInfo::~RenameTableInfo() {
116
120
  }
117
121
 
118
122
  unique_ptr<AlterInfo> RenameTableInfo::Copy() const {
119
- return make_unique_base<AlterInfo, RenameTableInfo>(schema, name, if_exists, new_table_name);
123
+ return make_unique_base<AlterInfo, RenameTableInfo>(GetAlterEntryData(), new_table_name);
120
124
  }
121
125
 
122
126
  void RenameTableInfo::SerializeAlterTable(FieldWriter &writer) const {
123
127
  writer.WriteString(new_table_name);
124
128
  }
125
129
 
126
- unique_ptr<AlterInfo> RenameTableInfo::Deserialize(FieldReader &reader, string schema, string table, bool if_exists) {
130
+ unique_ptr<AlterInfo> RenameTableInfo::Deserialize(FieldReader &reader, AlterEntryData data) {
127
131
  auto new_name = reader.ReadRequired<string>();
128
- return make_unique<RenameTableInfo>(move(schema), move(table), if_exists, new_name);
132
+ return make_unique<RenameTableInfo>(move(data), new_name);
129
133
  }
130
134
 
131
135
  //===--------------------------------------------------------------------===//
132
136
  // AddColumnInfo
133
137
  //===--------------------------------------------------------------------===//
134
- AddColumnInfo::AddColumnInfo(string schema_p, string table_p, bool if_exists_p, ColumnDefinition new_column,
135
- bool if_column_not_exists)
136
- : AlterTableInfo(AlterTableType::ADD_COLUMN, move(schema_p), move(table_p), if_exists_p),
137
- new_column(move(new_column)), if_column_not_exists(if_column_not_exists) {
138
+ AddColumnInfo::AddColumnInfo(AlterEntryData data, ColumnDefinition new_column, bool if_column_not_exists)
139
+ : AlterTableInfo(AlterTableType::ADD_COLUMN, move(data)), new_column(move(new_column)),
140
+ if_column_not_exists(if_column_not_exists) {
138
141
  }
139
142
 
140
143
  AddColumnInfo::~AddColumnInfo() {
141
144
  }
142
145
 
143
146
  unique_ptr<AlterInfo> AddColumnInfo::Copy() const {
144
- return make_unique_base<AlterInfo, AddColumnInfo>(schema, name, if_exists, new_column.Copy(), if_column_not_exists);
147
+ return make_unique_base<AlterInfo, AddColumnInfo>(GetAlterEntryData(), new_column.Copy(), if_column_not_exists);
145
148
  }
146
149
 
147
150
  void AddColumnInfo::SerializeAlterTable(FieldWriter &writer) const {
@@ -149,25 +152,24 @@ void AddColumnInfo::SerializeAlterTable(FieldWriter &writer) const {
149
152
  writer.WriteField<bool>(if_column_not_exists);
150
153
  }
151
154
 
152
- unique_ptr<AlterInfo> AddColumnInfo::Deserialize(FieldReader &reader, string schema, string table, bool if_exists) {
155
+ unique_ptr<AlterInfo> AddColumnInfo::Deserialize(FieldReader &reader, AlterEntryData data) {
153
156
  auto new_column = reader.ReadRequiredSerializable<ColumnDefinition, ColumnDefinition>();
154
157
  auto if_column_not_exists = reader.ReadRequired<bool>();
155
- return make_unique<AddColumnInfo>(move(schema), move(table), if_exists, move(new_column), if_column_not_exists);
158
+ return make_unique<AddColumnInfo>(move(data), move(new_column), if_column_not_exists);
156
159
  }
157
160
 
158
161
  //===--------------------------------------------------------------------===//
159
162
  // RemoveColumnInfo
160
163
  //===--------------------------------------------------------------------===//
161
- RemoveColumnInfo::RemoveColumnInfo(string schema, string table, bool if_exists, string removed_column,
162
- bool if_column_exists, bool cascade)
163
- : AlterTableInfo(AlterTableType::REMOVE_COLUMN, move(schema), move(table), if_exists),
164
- removed_column(move(removed_column)), if_column_exists(if_column_exists), cascade(cascade) {
164
+ RemoveColumnInfo::RemoveColumnInfo(AlterEntryData data, string removed_column, bool if_column_exists, bool cascade)
165
+ : AlterTableInfo(AlterTableType::REMOVE_COLUMN, move(data)), removed_column(move(removed_column)),
166
+ if_column_exists(if_column_exists), cascade(cascade) {
165
167
  }
166
168
  RemoveColumnInfo::~RemoveColumnInfo() {
167
169
  }
168
170
 
169
171
  unique_ptr<AlterInfo> RemoveColumnInfo::Copy() const {
170
- return make_unique_base<AlterInfo, RemoveColumnInfo>(schema, name, if_exists, removed_column, if_column_exists,
172
+ return make_unique_base<AlterInfo, RemoveColumnInfo>(GetAlterEntryData(), removed_column, if_column_exists,
171
173
  cascade);
172
174
  }
173
175
 
@@ -177,26 +179,26 @@ void RemoveColumnInfo::SerializeAlterTable(FieldWriter &writer) const {
177
179
  writer.WriteField<bool>(cascade);
178
180
  }
179
181
 
180
- unique_ptr<AlterInfo> RemoveColumnInfo::Deserialize(FieldReader &reader, string schema, string table, bool if_exists) {
182
+ unique_ptr<AlterInfo> RemoveColumnInfo::Deserialize(FieldReader &reader, AlterEntryData data) {
181
183
  auto new_name = reader.ReadRequired<string>();
182
184
  auto if_column_exists = reader.ReadRequired<bool>();
183
185
  auto cascade = reader.ReadRequired<bool>();
184
- return make_unique<RemoveColumnInfo>(move(schema), move(table), if_exists, new_name, if_column_exists, cascade);
186
+ return make_unique<RemoveColumnInfo>(move(data), move(new_name), if_column_exists, cascade);
185
187
  }
186
188
 
187
189
  //===--------------------------------------------------------------------===//
188
190
  // ChangeColumnTypeInfo
189
191
  //===--------------------------------------------------------------------===//
190
- ChangeColumnTypeInfo::ChangeColumnTypeInfo(string schema_p, string table_p, bool if_exists_p, string column_name,
191
- LogicalType target_type, unique_ptr<ParsedExpression> expression)
192
- : AlterTableInfo(AlterTableType::ALTER_COLUMN_TYPE, move(schema_p), move(table_p), if_exists_p),
193
- column_name(move(column_name)), target_type(move(target_type)), expression(move(expression)) {
192
+ ChangeColumnTypeInfo::ChangeColumnTypeInfo(AlterEntryData data, string column_name, LogicalType target_type,
193
+ unique_ptr<ParsedExpression> expression)
194
+ : AlterTableInfo(AlterTableType::ALTER_COLUMN_TYPE, move(data)), column_name(move(column_name)),
195
+ target_type(move(target_type)), expression(move(expression)) {
194
196
  }
195
197
  ChangeColumnTypeInfo::~ChangeColumnTypeInfo() {
196
198
  }
197
199
 
198
200
  unique_ptr<AlterInfo> ChangeColumnTypeInfo::Copy() const {
199
- return make_unique_base<AlterInfo, ChangeColumnTypeInfo>(schema, name, if_exists, column_name, target_type,
201
+ return make_unique_base<AlterInfo, ChangeColumnTypeInfo>(GetAlterEntryData(), column_name, target_type,
200
202
  expression->Copy());
201
203
  }
202
204
 
@@ -206,28 +208,25 @@ void ChangeColumnTypeInfo::SerializeAlterTable(FieldWriter &writer) const {
206
208
  writer.WriteOptional(expression);
207
209
  }
208
210
 
209
- unique_ptr<AlterInfo> ChangeColumnTypeInfo::Deserialize(FieldReader &reader, string schema, string table,
210
- bool if_exists) {
211
+ unique_ptr<AlterInfo> ChangeColumnTypeInfo::Deserialize(FieldReader &reader, AlterEntryData data) {
211
212
  auto column_name = reader.ReadRequired<string>();
212
213
  auto target_type = reader.ReadRequiredSerializable<LogicalType, LogicalType>();
213
214
  auto expression = reader.ReadOptional<ParsedExpression>(nullptr);
214
- return make_unique<ChangeColumnTypeInfo>(move(schema), move(table), if_exists, move(column_name), move(target_type),
215
- move(expression));
215
+ return make_unique<ChangeColumnTypeInfo>(move(data), move(column_name), move(target_type), move(expression));
216
216
  }
217
217
 
218
218
  //===--------------------------------------------------------------------===//
219
219
  // SetDefaultInfo
220
220
  //===--------------------------------------------------------------------===//
221
- SetDefaultInfo::SetDefaultInfo(string schema_p, string table_p, bool if_exists_p, string column_name_p,
222
- unique_ptr<ParsedExpression> new_default)
223
- : AlterTableInfo(AlterTableType::SET_DEFAULT, move(schema_p), move(table_p), if_exists_p),
224
- column_name(move(column_name_p)), expression(move(new_default)) {
221
+ SetDefaultInfo::SetDefaultInfo(AlterEntryData data, string column_name_p, unique_ptr<ParsedExpression> new_default)
222
+ : AlterTableInfo(AlterTableType::SET_DEFAULT, move(data)), column_name(move(column_name_p)),
223
+ expression(move(new_default)) {
225
224
  }
226
225
  SetDefaultInfo::~SetDefaultInfo() {
227
226
  }
228
227
 
229
228
  unique_ptr<AlterInfo> SetDefaultInfo::Copy() const {
230
- return make_unique_base<AlterInfo, SetDefaultInfo>(schema, name, if_exists, column_name,
229
+ return make_unique_base<AlterInfo, SetDefaultInfo>(GetAlterEntryData(), column_name,
231
230
  expression ? expression->Copy() : nullptr);
232
231
  }
233
232
 
@@ -236,74 +235,71 @@ void SetDefaultInfo::SerializeAlterTable(FieldWriter &writer) const {
236
235
  writer.WriteOptional(expression);
237
236
  }
238
237
 
239
- unique_ptr<AlterInfo> SetDefaultInfo::Deserialize(FieldReader &reader, string schema, string table, bool if_exists) {
238
+ unique_ptr<AlterInfo> SetDefaultInfo::Deserialize(FieldReader &reader, AlterEntryData data) {
240
239
  auto column_name = reader.ReadRequired<string>();
241
240
  auto new_default = reader.ReadOptional<ParsedExpression>(nullptr);
242
- return make_unique<SetDefaultInfo>(move(schema), move(table), if_exists, move(column_name), move(new_default));
241
+ return make_unique<SetDefaultInfo>(move(data), move(column_name), move(new_default));
243
242
  }
244
243
 
245
244
  //===--------------------------------------------------------------------===//
246
245
  // SetNotNullInfo
247
246
  //===--------------------------------------------------------------------===//
248
- SetNotNullInfo::SetNotNullInfo(string schema_p, string table_p, bool if_exists_p, string column_name_p)
249
- : AlterTableInfo(AlterTableType::SET_NOT_NULL, move(schema_p), move(table_p), if_exists_p),
250
- column_name(move(column_name_p)) {
247
+ SetNotNullInfo::SetNotNullInfo(AlterEntryData data, string column_name_p)
248
+ : AlterTableInfo(AlterTableType::SET_NOT_NULL, move(data)), column_name(move(column_name_p)) {
251
249
  }
252
250
  SetNotNullInfo::~SetNotNullInfo() {
253
251
  }
254
252
 
255
253
  unique_ptr<AlterInfo> SetNotNullInfo::Copy() const {
256
- return make_unique_base<AlterInfo, SetNotNullInfo>(schema, name, if_exists, column_name);
254
+ return make_unique_base<AlterInfo, SetNotNullInfo>(GetAlterEntryData(), column_name);
257
255
  }
258
256
 
259
257
  void SetNotNullInfo::SerializeAlterTable(FieldWriter &writer) const {
260
258
  writer.WriteString(column_name);
261
259
  }
262
260
 
263
- unique_ptr<AlterInfo> SetNotNullInfo::Deserialize(FieldReader &reader, string schema, string table, bool if_exists) {
261
+ unique_ptr<AlterInfo> SetNotNullInfo::Deserialize(FieldReader &reader, AlterEntryData data) {
264
262
  auto column_name = reader.ReadRequired<string>();
265
- return make_unique<SetNotNullInfo>(move(schema), move(table), if_exists, move(column_name));
263
+ return make_unique<SetNotNullInfo>(move(data), move(column_name));
266
264
  }
267
265
 
268
266
  //===--------------------------------------------------------------------===//
269
267
  // DropNotNullInfo
270
268
  //===--------------------------------------------------------------------===//
271
- DropNotNullInfo::DropNotNullInfo(string schema_p, string table_p, bool if_exists_p, string column_name_p)
272
- : AlterTableInfo(AlterTableType::DROP_NOT_NULL, move(schema_p), move(table_p), if_exists_p),
273
- column_name(move(column_name_p)) {
269
+ DropNotNullInfo::DropNotNullInfo(AlterEntryData data, string column_name_p)
270
+ : AlterTableInfo(AlterTableType::DROP_NOT_NULL, move(data)), column_name(move(column_name_p)) {
274
271
  }
275
272
  DropNotNullInfo::~DropNotNullInfo() {
276
273
  }
277
274
 
278
275
  unique_ptr<AlterInfo> DropNotNullInfo::Copy() const {
279
- return make_unique_base<AlterInfo, DropNotNullInfo>(schema, name, if_exists, column_name);
276
+ return make_unique_base<AlterInfo, DropNotNullInfo>(GetAlterEntryData(), column_name);
280
277
  }
281
278
 
282
279
  void DropNotNullInfo::SerializeAlterTable(FieldWriter &writer) const {
283
280
  writer.WriteString(column_name);
284
281
  }
285
282
 
286
- unique_ptr<AlterInfo> DropNotNullInfo::Deserialize(FieldReader &reader, string schema, string table, bool if_exists) {
283
+ unique_ptr<AlterInfo> DropNotNullInfo::Deserialize(FieldReader &reader, AlterEntryData data) {
287
284
  auto column_name = reader.ReadRequired<string>();
288
- return make_unique<DropNotNullInfo>(move(schema), move(table), if_exists, move(column_name));
285
+ return make_unique<DropNotNullInfo>(move(data), move(column_name));
289
286
  }
290
287
 
291
288
  //===--------------------------------------------------------------------===//
292
289
  // AlterForeignKeyInfo
293
290
  //===--------------------------------------------------------------------===//
294
- AlterForeignKeyInfo::AlterForeignKeyInfo(string schema_p, string table_p, bool if_exists_p, string fk_table,
295
- vector<string> pk_columns, vector<string> fk_columns,
296
- vector<PhysicalIndex> pk_keys, vector<PhysicalIndex> fk_keys,
297
- AlterForeignKeyType type_p)
298
- : AlterTableInfo(AlterTableType::FOREIGN_KEY_CONSTRAINT, move(schema_p), move(table_p), if_exists_p),
299
- fk_table(move(fk_table)), pk_columns(move(pk_columns)), fk_columns(move(fk_columns)), pk_keys(move(pk_keys)),
300
- fk_keys(move(fk_keys)), type(type_p) {
291
+ AlterForeignKeyInfo::AlterForeignKeyInfo(AlterEntryData data, string fk_table, vector<string> pk_columns,
292
+ vector<string> fk_columns, vector<PhysicalIndex> pk_keys,
293
+ vector<PhysicalIndex> fk_keys, AlterForeignKeyType type_p)
294
+ : AlterTableInfo(AlterTableType::FOREIGN_KEY_CONSTRAINT, move(data)), fk_table(move(fk_table)),
295
+ pk_columns(move(pk_columns)), fk_columns(move(fk_columns)), pk_keys(move(pk_keys)), fk_keys(move(fk_keys)),
296
+ type(type_p) {
301
297
  }
302
298
  AlterForeignKeyInfo::~AlterForeignKeyInfo() {
303
299
  }
304
300
 
305
301
  unique_ptr<AlterInfo> AlterForeignKeyInfo::Copy() const {
306
- return make_unique_base<AlterInfo, AlterForeignKeyInfo>(schema, name, if_exists, fk_table, pk_columns, fk_columns,
302
+ return make_unique_base<AlterInfo, AlterForeignKeyInfo>(GetAlterEntryData(), fk_table, pk_columns, fk_columns,
307
303
  pk_keys, fk_keys, type);
308
304
  }
309
305
 
@@ -316,23 +312,23 @@ void AlterForeignKeyInfo::SerializeAlterTable(FieldWriter &writer) const {
316
312
  writer.WriteField<AlterForeignKeyType>(type);
317
313
  }
318
314
 
319
- unique_ptr<AlterInfo> AlterForeignKeyInfo::Deserialize(FieldReader &reader, string schema, string table,
320
- bool if_exists) {
315
+ unique_ptr<AlterInfo> AlterForeignKeyInfo::Deserialize(FieldReader &reader, AlterEntryData data) {
321
316
  auto fk_table = reader.ReadRequired<string>();
322
317
  auto pk_columns = reader.ReadRequiredList<string>();
323
318
  auto fk_columns = reader.ReadRequiredList<string>();
324
319
  auto pk_keys = reader.ReadRequiredIndexList<PhysicalIndex>();
325
320
  auto fk_keys = reader.ReadRequiredIndexList<PhysicalIndex>();
326
321
  auto type = reader.ReadRequired<AlterForeignKeyType>();
327
- return make_unique<AlterForeignKeyInfo>(move(schema), move(table), if_exists, move(fk_table), move(pk_columns),
328
- move(fk_columns), move(pk_keys), move(fk_keys), type);
322
+ return make_unique<AlterForeignKeyInfo>(move(data), move(fk_table), move(pk_columns), move(fk_columns),
323
+ move(pk_keys), move(fk_keys), type);
329
324
  }
330
325
 
331
326
  //===--------------------------------------------------------------------===//
332
327
  // Alter View
333
328
  //===--------------------------------------------------------------------===//
334
- AlterViewInfo::AlterViewInfo(AlterViewType type, string schema_p, string view_p, bool if_exists_p)
335
- : AlterInfo(AlterType::ALTER_VIEW, move(schema_p), move(view_p), if_exists_p), alter_view_type(type) {
329
+ AlterViewInfo::AlterViewInfo(AlterViewType type, AlterEntryData data)
330
+ : AlterInfo(AlterType::ALTER_VIEW, move(data.catalog), move(data.schema), move(data.name), data.if_exists),
331
+ alter_view_type(type) {
336
332
  }
337
333
  AlterViewInfo::~AlterViewInfo() {
338
334
  }
@@ -343,6 +339,7 @@ CatalogType AlterViewInfo::GetCatalogType() const {
343
339
 
344
340
  void AlterViewInfo::Serialize(FieldWriter &writer) const {
345
341
  writer.WriteField<AlterViewType>(alter_view_type);
342
+ writer.WriteString(catalog);
346
343
  writer.WriteString(schema);
347
344
  writer.WriteString(name);
348
345
  writer.WriteField<bool>(if_exists);
@@ -351,13 +348,15 @@ void AlterViewInfo::Serialize(FieldWriter &writer) const {
351
348
 
352
349
  unique_ptr<AlterInfo> AlterViewInfo::Deserialize(FieldReader &reader) {
353
350
  auto type = reader.ReadRequired<AlterViewType>();
354
- auto schema = reader.ReadRequired<string>();
355
- auto view = reader.ReadRequired<string>();
356
- auto if_exists = reader.ReadRequired<bool>();
351
+ AlterEntryData data;
352
+ data.catalog = reader.ReadRequired<string>();
353
+ data.schema = reader.ReadRequired<string>();
354
+ data.name = reader.ReadRequired<string>();
355
+ data.if_exists = reader.ReadRequired<bool>();
357
356
  unique_ptr<AlterViewInfo> info;
358
357
  switch (type) {
359
358
  case AlterViewType::RENAME_VIEW:
360
- return RenameViewInfo::Deserialize(reader, schema, view, if_exists);
359
+ return RenameViewInfo::Deserialize(reader, move(data));
361
360
  default:
362
361
  throw SerializationException("Unknown alter view type for deserialization!");
363
362
  }
@@ -366,23 +365,22 @@ unique_ptr<AlterInfo> AlterViewInfo::Deserialize(FieldReader &reader) {
366
365
  //===--------------------------------------------------------------------===//
367
366
  // RenameViewInfo
368
367
  //===--------------------------------------------------------------------===//
369
- RenameViewInfo::RenameViewInfo(string schema_p, string view_p, bool if_exists_p, string new_name_p)
370
- : AlterViewInfo(AlterViewType::RENAME_VIEW, move(schema_p), move(view_p), if_exists_p),
371
- new_view_name(move(new_name_p)) {
368
+ RenameViewInfo::RenameViewInfo(AlterEntryData data, string new_name_p)
369
+ : AlterViewInfo(AlterViewType::RENAME_VIEW, move(data)), new_view_name(move(new_name_p)) {
372
370
  }
373
371
  RenameViewInfo::~RenameViewInfo() {
374
372
  }
375
373
 
376
374
  unique_ptr<AlterInfo> RenameViewInfo::Copy() const {
377
- return make_unique_base<AlterInfo, RenameViewInfo>(schema, name, if_exists, new_view_name);
375
+ return make_unique_base<AlterInfo, RenameViewInfo>(GetAlterEntryData(), new_view_name);
378
376
  }
379
377
 
380
378
  void RenameViewInfo::SerializeAlterView(FieldWriter &writer) const {
381
379
  writer.WriteString(new_view_name);
382
380
  }
383
381
 
384
- unique_ptr<AlterInfo> RenameViewInfo::Deserialize(FieldReader &reader, string schema, string view, bool if_exists) {
382
+ unique_ptr<AlterInfo> RenameViewInfo::Deserialize(FieldReader &reader, AlterEntryData data) {
385
383
  auto new_name = reader.ReadRequired<string>();
386
- return make_unique<RenameViewInfo>(move(schema), move(view), if_exists, new_name);
384
+ return make_unique<RenameViewInfo>(move(data), new_name);
387
385
  }
388
386
  } // namespace duckdb
@@ -0,0 +1,27 @@
1
+ #include "duckdb/parser/parsed_data/create_aggregate_function_info.hpp"
2
+
3
+ namespace duckdb {
4
+
5
+ CreateAggregateFunctionInfo::CreateAggregateFunctionInfo(AggregateFunction function)
6
+ : CreateFunctionInfo(CatalogType::AGGREGATE_FUNCTION_ENTRY), functions(function.name) {
7
+ name = function.name;
8
+ functions.AddFunction(move(function));
9
+ internal = true;
10
+ }
11
+
12
+ CreateAggregateFunctionInfo::CreateAggregateFunctionInfo(AggregateFunctionSet set)
13
+ : CreateFunctionInfo(CatalogType::AGGREGATE_FUNCTION_ENTRY), functions(move(set)) {
14
+ name = functions.name;
15
+ for (auto &func : functions.functions) {
16
+ func.name = functions.name;
17
+ }
18
+ internal = true;
19
+ }
20
+
21
+ unique_ptr<CreateInfo> CreateAggregateFunctionInfo::Copy() const {
22
+ auto result = make_unique<CreateAggregateFunctionInfo>(functions);
23
+ CopyProperties(*result);
24
+ return move(result);
25
+ }
26
+
27
+ } // namespace duckdb
@@ -0,0 +1,23 @@
1
+ #include "duckdb/parser/parsed_data/create_collation_info.hpp"
2
+
3
+ namespace duckdb {
4
+
5
+ CreateCollationInfo::CreateCollationInfo(string name_p, ScalarFunction function_p, bool combinable_p,
6
+ bool not_required_for_equality_p)
7
+ : CreateInfo(CatalogType::COLLATION_ENTRY), function(move(function_p)), combinable(combinable_p),
8
+ not_required_for_equality(not_required_for_equality_p) {
9
+ this->name = move(name_p);
10
+ internal = true;
11
+ }
12
+
13
+ void CreateCollationInfo::SerializeInternal(Serializer &) const {
14
+ throw NotImplementedException("Cannot serialize '%s'", CatalogTypeToString(type));
15
+ }
16
+
17
+ unique_ptr<CreateInfo> CreateCollationInfo::Copy() const {
18
+ auto result = make_unique<CreateCollationInfo>(name, function, combinable, not_required_for_equality);
19
+ CopyProperties(*result);
20
+ return move(result);
21
+ }
22
+
23
+ } // namespace duckdb
@@ -0,0 +1,21 @@
1
+ #include "duckdb/parser/parsed_data/create_copy_function_info.hpp"
2
+
3
+ namespace duckdb {
4
+
5
+ CreateCopyFunctionInfo::CreateCopyFunctionInfo(CopyFunction function_p)
6
+ : CreateInfo(CatalogType::COPY_FUNCTION_ENTRY), function(move(function_p)) {
7
+ this->name = function.name;
8
+ internal = true;
9
+ }
10
+
11
+ void CreateCopyFunctionInfo::SerializeInternal(Serializer &) const {
12
+ throw NotImplementedException("Cannot serialize '%s'", CatalogTypeToString(type));
13
+ }
14
+
15
+ unique_ptr<CreateInfo> CreateCopyFunctionInfo::Copy() const {
16
+ auto result = make_unique<CreateCopyFunctionInfo>(function);
17
+ CopyProperties(*result);
18
+ return move(result);
19
+ }
20
+
21
+ } // namespace duckdb
@@ -8,6 +8,7 @@
8
8
 
9
9
  namespace duckdb {
10
10
  void CreateInfo::DeserializeBase(Deserializer &deserializer) {
11
+ this->catalog = deserializer.Read<string>();
11
12
  this->schema = deserializer.Read<string>();
12
13
  this->on_conflict = deserializer.Read<OnCreateConflict>();
13
14
  this->temporary = deserializer.Read<bool>();
@@ -17,6 +18,7 @@ void CreateInfo::DeserializeBase(Deserializer &deserializer) {
17
18
 
18
19
  void CreateInfo::Serialize(Serializer &serializer) const {
19
20
  serializer.Write(type);
21
+ serializer.WriteString(catalog);
20
22
  serializer.WriteString(schema);
21
23
  serializer.Write(on_conflict);
22
24
  serializer.Write(temporary);
@@ -47,6 +49,7 @@ unique_ptr<CreateInfo> CreateInfo::Deserialize(Deserializer &source, PlanDeseria
47
49
 
48
50
  void CreateInfo::CopyProperties(CreateInfo &other) const {
49
51
  other.type = type;
52
+ other.catalog = catalog;
50
53
  other.schema = schema;
51
54
  other.on_conflict = on_conflict;
52
55
  other.temporary = temporary;
@@ -0,0 +1,23 @@
1
+ #include "duckdb/parser/parsed_data/create_pragma_function_info.hpp"
2
+
3
+ namespace duckdb {
4
+
5
+ CreatePragmaFunctionInfo::CreatePragmaFunctionInfo(PragmaFunction function)
6
+ : CreateFunctionInfo(CatalogType::PRAGMA_FUNCTION_ENTRY), functions(function.name) {
7
+ name = function.name;
8
+ functions.AddFunction(move(function));
9
+ internal = true;
10
+ }
11
+ CreatePragmaFunctionInfo::CreatePragmaFunctionInfo(string name, PragmaFunctionSet functions_p)
12
+ : CreateFunctionInfo(CatalogType::PRAGMA_FUNCTION_ENTRY), functions(move(functions_p)) {
13
+ this->name = move(name);
14
+ internal = true;
15
+ }
16
+
17
+ unique_ptr<CreateInfo> CreatePragmaFunctionInfo::Copy() const {
18
+ auto result = make_unique<CreatePragmaFunctionInfo>(functions.name, functions);
19
+ CopyProperties(*result);
20
+ return move(result);
21
+ }
22
+
23
+ } // namespace duckdb
@@ -7,6 +7,7 @@ CreateScalarFunctionInfo::CreateScalarFunctionInfo(ScalarFunction function)
7
7
  : CreateFunctionInfo(CatalogType::SCALAR_FUNCTION_ENTRY), functions(function.name) {
8
8
  name = function.name;
9
9
  functions.AddFunction(move(function));
10
+ internal = true;
10
11
  }
11
12
  CreateScalarFunctionInfo::CreateScalarFunctionInfo(ScalarFunctionSet set)
12
13
  : CreateFunctionInfo(CatalogType::SCALAR_FUNCTION_ENTRY), functions(move(set)) {
@@ -14,6 +15,7 @@ CreateScalarFunctionInfo::CreateScalarFunctionInfo(ScalarFunctionSet set)
14
15
  for (auto &func : functions.functions) {
15
16
  func.name = functions.name;
16
17
  }
18
+ internal = true;
17
19
  }
18
20
 
19
21
  unique_ptr<CreateInfo> CreateScalarFunctionInfo::Copy() const {
@@ -25,7 +27,7 @@ unique_ptr<CreateInfo> CreateScalarFunctionInfo::Copy() const {
25
27
  }
26
28
 
27
29
  unique_ptr<AlterInfo> CreateScalarFunctionInfo::GetAlterInfo() const {
28
- return make_unique_base<AlterInfo, AddFunctionOverloadInfo>(schema, name, true, functions);
30
+ return make_unique_base<AlterInfo, AddFunctionOverloadInfo>(AlterEntryData(catalog, schema, name, true), functions);
29
31
  }
30
32
 
31
33
  } // namespace duckdb
@@ -0,0 +1,28 @@
1
+ #include "duckdb/parser/parsed_data/create_table_function_info.hpp"
2
+
3
+ namespace duckdb {
4
+
5
+ CreateTableFunctionInfo::CreateTableFunctionInfo(TableFunction function)
6
+ : CreateFunctionInfo(CatalogType::TABLE_FUNCTION_ENTRY), functions(function.name) {
7
+ name = function.name;
8
+ functions.AddFunction(move(function));
9
+ internal = true;
10
+ }
11
+ CreateTableFunctionInfo::CreateTableFunctionInfo(TableFunctionSet set)
12
+ : CreateFunctionInfo(CatalogType::TABLE_FUNCTION_ENTRY), functions(move(set)) {
13
+ name = functions.name;
14
+ for (auto &func : functions.functions) {
15
+ func.name = functions.name;
16
+ }
17
+ internal = true;
18
+ }
19
+
20
+ unique_ptr<CreateInfo> CreateTableFunctionInfo::Copy() const {
21
+ TableFunctionSet set(name);
22
+ set.functions = functions.functions;
23
+ auto result = make_unique<CreateTableFunctionInfo>(move(set));
24
+ CopyProperties(*result);
25
+ return move(result);
26
+ }
27
+
28
+ } // namespace duckdb