duckdb 0.8.2-dev1862.0 → 0.8.2-dev2044.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 (283) hide show
  1. package/binding.gyp +9 -9
  2. package/package.json +1 -1
  3. package/src/duckdb/src/catalog/catalog.cpp +1 -1
  4. package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +17 -41
  5. package/src/duckdb/src/catalog/catalog_entry/macro_catalog_entry.cpp +2 -10
  6. package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +4 -14
  7. package/src/duckdb/src/catalog/catalog_entry/sequence_catalog_entry.cpp +11 -28
  8. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +11 -38
  9. package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +11 -27
  10. package/src/duckdb/src/catalog/catalog_entry.cpp +25 -1
  11. package/src/duckdb/src/common/enum_util.cpp +187 -0
  12. package/src/duckdb/src/common/extra_type_info.cpp +1 -2
  13. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +3 -0
  14. package/src/duckdb/src/common/serializer/binary_serializer.cpp +4 -4
  15. package/src/duckdb/src/common/types/column/column_data_collection.cpp +43 -0
  16. package/src/duckdb/src/common/types/hugeint.cpp +40 -0
  17. package/src/duckdb/src/common/types/vector.cpp +1 -1
  18. package/src/duckdb/src/common/types.cpp +0 -12
  19. package/src/duckdb/src/core_functions/function_list.cpp +1 -0
  20. package/src/duckdb/src/core_functions/scalar/string/to_base.cpp +66 -0
  21. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +14 -11
  22. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +6 -4
  23. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +14 -12
  24. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +6 -4
  25. package/src/duckdb/src/execution/operator/helper/physical_batch_collector.cpp +8 -6
  26. package/src/duckdb/src/execution/operator/helper/physical_explain_analyze.cpp +2 -2
  27. package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +5 -3
  28. package/src/duckdb/src/execution/operator/helper/physical_materialized_collector.cpp +7 -5
  29. package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +7 -5
  30. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +5 -4
  31. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +2 -2
  32. package/src/duckdb/src/execution/operator/join/physical_delim_join.cpp +13 -6
  33. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +7 -5
  34. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +7 -5
  35. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +7 -4
  36. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +8 -6
  37. package/src/duckdb/src/execution/operator/order/physical_order.cpp +7 -5
  38. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +7 -5
  39. package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +8 -6
  40. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +8 -7
  41. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +8 -6
  42. package/src/duckdb/src/execution/operator/persistent/physical_fixed_batch_copy.cpp +11 -9
  43. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +10 -10
  44. package/src/duckdb/src/execution/operator/persistent/physical_update.cpp +4 -2
  45. package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +7 -6
  46. package/src/duckdb/src/execution/physical_operator.cpp +3 -2
  47. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  48. package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
  49. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/index_catalog_entry.hpp +1 -2
  50. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/macro_catalog_entry.hpp +1 -4
  51. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +2 -5
  52. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +1 -6
  53. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +2 -11
  54. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/view_catalog_entry.hpp +2 -5
  55. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +14 -0
  56. package/src/duckdb/src/include/duckdb/common/bitpacking.hpp +70 -55
  57. package/src/duckdb/src/include/duckdb/common/constants.hpp +2 -0
  58. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +40 -0
  59. package/src/duckdb/src/include/duckdb/common/enums/index_type.hpp +1 -1
  60. package/src/duckdb/src/include/duckdb/common/enums/operator_result_type.hpp +5 -1
  61. package/src/duckdb/src/include/duckdb/common/hugeint.hpp +15 -0
  62. package/src/duckdb/src/include/duckdb/common/index_vector.hpp +12 -0
  63. package/src/duckdb/src/include/duckdb/common/limits.hpp +52 -149
  64. package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +48 -0
  65. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +28 -4
  66. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +12 -5
  67. package/src/duckdb/src/include/duckdb/common/serializer/deserialization_data.hpp +110 -0
  68. package/src/duckdb/src/include/duckdb/common/serializer/format_deserializer.hpp +46 -1
  69. package/src/duckdb/src/include/duckdb/common/serializer/format_serializer.hpp +23 -21
  70. package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +12 -4
  71. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection.hpp +3 -0
  72. package/src/duckdb/src/include/duckdb/core_functions/aggregate/distributive_functions.hpp +1 -1
  73. package/src/duckdb/src/include/duckdb/core_functions/scalar/operators_functions.hpp +1 -1
  74. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +9 -0
  75. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_hash_aggregate.hpp +3 -3
  76. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_perfecthash_aggregate.hpp +1 -1
  77. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_ungrouped_aggregate.hpp +3 -3
  78. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_window.hpp +2 -2
  79. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_batch_collector.hpp +2 -2
  80. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_explain_analyze.hpp +1 -1
  81. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit.hpp +1 -1
  82. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_materialized_collector.hpp +1 -1
  83. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_vacuum.hpp +2 -2
  84. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_asof_join.hpp +2 -2
  85. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_blockwise_nl_join.hpp +1 -1
  86. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_delim_join.hpp +2 -2
  87. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_hash_join.hpp +2 -2
  88. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_iejoin.hpp +2 -2
  89. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_nested_loop_join.hpp +2 -2
  90. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp +2 -2
  91. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_order.hpp +2 -2
  92. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_top_n.hpp +2 -2
  93. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_copy_to_file.hpp +2 -2
  94. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +2 -2
  95. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +2 -2
  96. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_fixed_batch_copy.hpp +2 -2
  97. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_insert.hpp +2 -2
  98. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_update.hpp +1 -1
  99. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_index.hpp +2 -2
  100. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +3 -3
  101. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +11 -0
  102. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +3 -0
  103. package/src/duckdb/src/include/duckdb/function/scalar_macro_function.hpp +3 -0
  104. package/src/duckdb/src/include/duckdb/function/table_macro_function.hpp +3 -0
  105. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +3 -0
  106. package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +0 -3
  107. package/src/duckdb/src/include/duckdb/parallel/pipeline_executor.hpp +3 -2
  108. package/src/duckdb/src/include/duckdb/parser/column_definition.hpp +6 -5
  109. package/src/duckdb/src/include/duckdb/parser/column_list.hpp +4 -0
  110. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +5 -0
  111. package/src/duckdb/src/include/duckdb/parser/constraints/check_constraint.hpp +3 -0
  112. package/src/duckdb/src/include/duckdb/parser/constraints/foreign_key_constraint.hpp +6 -0
  113. package/src/duckdb/src/include/duckdb/parser/constraints/not_null_constraint.hpp +3 -0
  114. package/src/duckdb/src/include/duckdb/parser/constraints/unique_constraint.hpp +6 -0
  115. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
  116. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  117. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
  118. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
  119. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
  120. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
  121. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  122. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
  123. package/src/duckdb/src/include/duckdb/parser/expression/default_expression.hpp +1 -1
  124. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
  125. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
  126. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
  127. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
  128. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
  129. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  130. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  131. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
  132. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +12 -1
  133. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +66 -2
  134. package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +8 -1
  135. package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_info.hpp +8 -1
  136. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_index_info.hpp +4 -1
  137. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +9 -2
  138. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_macro_info.hpp +3 -0
  139. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_schema_info.hpp +3 -0
  140. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_sequence_info.hpp +3 -0
  141. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_info.hpp +3 -0
  142. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_type_info.hpp +3 -0
  143. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +3 -0
  144. package/src/duckdb/src/include/duckdb/parser/parsed_data/detach_info.hpp +7 -0
  145. package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +7 -0
  146. package/src/duckdb/src/include/duckdb/parser/parsed_data/exported_table_data.hpp +7 -0
  147. package/src/duckdb/src/include/duckdb/parser/parsed_data/load_info.hpp +13 -3
  148. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +22 -0
  149. package/src/duckdb/src/include/duckdb/parser/parsed_data/pragma_info.hpp +10 -0
  150. package/src/duckdb/src/include/duckdb/parser/parsed_data/show_select_info.hpp +7 -0
  151. package/src/duckdb/src/include/duckdb/parser/parsed_data/transaction_info.hpp +10 -0
  152. package/src/duckdb/src/include/duckdb/parser/parsed_data/vacuum_info.hpp +10 -0
  153. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +0 -8
  154. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +6 -0
  155. package/src/duckdb/src/include/duckdb/planner/column_binding.hpp +5 -0
  156. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +6 -0
  157. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +6 -0
  158. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +6 -0
  159. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +3 -0
  160. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +3 -0
  161. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +3 -0
  162. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +3 -0
  163. package/src/duckdb/src/include/duckdb/planner/expression/bound_default_expression.hpp +3 -0
  164. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +3 -1
  165. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +3 -0
  166. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +3 -0
  167. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_data.hpp +5 -2
  168. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +7 -0
  169. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +3 -0
  170. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +3 -0
  171. package/src/duckdb/src/include/duckdb/planner/expression/list.hpp +1 -0
  172. package/src/duckdb/src/include/duckdb/planner/expression.hpp +3 -0
  173. package/src/duckdb/src/include/duckdb/planner/joinside.hpp +3 -0
  174. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +3 -0
  175. package/src/duckdb/src/include/duckdb/planner/operator/logical_aggregate.hpp +3 -0
  176. package/src/duckdb/src/include/duckdb/planner/operator/logical_any_join.hpp +3 -0
  177. package/src/duckdb/src/include/duckdb/planner/operator/logical_column_data_get.hpp +4 -0
  178. package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +9 -2
  179. package/src/duckdb/src/include/duckdb/planner/operator/logical_create.hpp +9 -6
  180. package/src/duckdb/src/include/duckdb/planner/operator/logical_create_index.hpp +2 -16
  181. package/src/duckdb/src/include/duckdb/planner/operator/logical_create_table.hpp +10 -6
  182. package/src/duckdb/src/include/duckdb/planner/operator/logical_cross_product.hpp +3 -0
  183. package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +2 -0
  184. package/src/duckdb/src/include/duckdb/planner/operator/logical_delete.hpp +7 -0
  185. package/src/duckdb/src/include/duckdb/planner/operator/logical_delim_get.hpp +3 -0
  186. package/src/duckdb/src/include/duckdb/planner/operator/logical_distinct.hpp +6 -10
  187. package/src/duckdb/src/include/duckdb/planner/operator/logical_dummy_scan.hpp +2 -0
  188. package/src/duckdb/src/include/duckdb/planner/operator/logical_empty_result.hpp +2 -0
  189. package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +4 -0
  190. package/src/duckdb/src/include/duckdb/planner/operator/logical_expression_get.hpp +3 -0
  191. package/src/duckdb/src/include/duckdb/planner/operator/logical_filter.hpp +3 -0
  192. package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +6 -0
  193. package/src/duckdb/src/include/duckdb/planner/operator/logical_limit.hpp +3 -0
  194. package/src/duckdb/src/include/duckdb/planner/operator/logical_limit_percent.hpp +3 -0
  195. package/src/duckdb/src/include/duckdb/planner/operator/logical_materialized_cte.hpp +5 -2
  196. package/src/duckdb/src/include/duckdb/planner/operator/logical_order.hpp +7 -35
  197. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +6 -0
  198. package/src/duckdb/src/include/duckdb/planner/operator/logical_positional_join.hpp +3 -0
  199. package/src/duckdb/src/include/duckdb/planner/operator/logical_projection.hpp +3 -0
  200. package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +5 -3
  201. package/src/duckdb/src/include/duckdb/planner/operator/logical_reset.hpp +4 -0
  202. package/src/duckdb/src/include/duckdb/planner/operator/logical_sample.hpp +6 -0
  203. package/src/duckdb/src/include/duckdb/planner/operator/logical_set.hpp +4 -0
  204. package/src/duckdb/src/include/duckdb/planner/operator/logical_set_operation.hpp +4 -0
  205. package/src/duckdb/src/include/duckdb/planner/operator/logical_show.hpp +3 -0
  206. package/src/duckdb/src/include/duckdb/planner/operator/logical_simple.hpp +3 -0
  207. package/src/duckdb/src/include/duckdb/planner/operator/logical_top_n.hpp +4 -0
  208. package/src/duckdb/src/include/duckdb/planner/operator/logical_unnest.hpp +2 -0
  209. package/src/duckdb/src/include/duckdb/planner/operator/logical_update.hpp +6 -0
  210. package/src/duckdb/src/include/duckdb/planner/operator/logical_window.hpp +3 -0
  211. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  212. package/src/duckdb/src/main/relation/join_relation.cpp +1 -1
  213. package/src/duckdb/src/optimizer/deliminator.cpp +5 -3
  214. package/src/duckdb/src/parallel/pipeline.cpp +0 -17
  215. package/src/duckdb/src/parallel/pipeline_executor.cpp +26 -7
  216. package/src/duckdb/src/parallel/pipeline_finish_event.cpp +55 -1
  217. package/src/duckdb/src/parser/column_definition.cpp +20 -32
  218. package/src/duckdb/src/parser/column_list.cpp +8 -0
  219. package/src/duckdb/src/parser/constraints/foreign_key_constraint.cpp +3 -0
  220. package/src/duckdb/src/parser/constraints/unique_constraint.cpp +3 -0
  221. package/src/duckdb/src/parser/expression/case_expression.cpp +0 -12
  222. package/src/duckdb/src/parser/parsed_data/alter_info.cpp +5 -2
  223. package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +38 -0
  224. package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +3 -1
  225. package/src/duckdb/src/parser/parsed_data/create_sequence_info.cpp +2 -0
  226. package/src/duckdb/src/parser/parsed_data/detach_info.cpp +1 -1
  227. package/src/duckdb/src/parser/parsed_data/drop_info.cpp +1 -1
  228. package/src/duckdb/src/parser/parsed_data/sample_options.cpp +0 -18
  229. package/src/duckdb/src/parser/parsed_data/transaction_info.cpp +4 -1
  230. package/src/duckdb/src/parser/parsed_data/vacuum_info.cpp +1 -1
  231. package/src/duckdb/src/parser/query_node.cpp +0 -10
  232. package/src/duckdb/src/parser/result_modifier.cpp +0 -13
  233. package/src/duckdb/src/parser/statement/select_statement.cpp +0 -10
  234. package/src/duckdb/src/parser/tableref/pivotref.cpp +0 -16
  235. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +5 -4
  236. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +1 -1
  237. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +6 -1
  238. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +13 -3
  239. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +4 -0
  240. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +13 -6
  241. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +20 -12
  242. package/src/duckdb/src/planner/logical_operator.cpp +13 -1
  243. package/src/duckdb/src/planner/operator/logical_comparison_join.cpp +16 -2
  244. package/src/duckdb/src/planner/operator/logical_create.cpp +14 -0
  245. package/src/duckdb/src/planner/operator/logical_create_index.cpp +20 -0
  246. package/src/duckdb/src/planner/operator/logical_create_table.cpp +16 -0
  247. package/src/duckdb/src/planner/operator/logical_delete.cpp +9 -2
  248. package/src/duckdb/src/planner/operator/logical_delim_join.cpp +2 -4
  249. package/src/duckdb/src/planner/operator/logical_distinct.cpp +13 -0
  250. package/src/duckdb/src/planner/operator/logical_explain.cpp +1 -1
  251. package/src/duckdb/src/planner/operator/logical_insert.cpp +8 -2
  252. package/src/duckdb/src/planner/operator/logical_materialized_cte.cpp +3 -2
  253. package/src/duckdb/src/planner/operator/logical_order.cpp +39 -0
  254. package/src/duckdb/src/planner/operator/logical_pivot.cpp +3 -0
  255. package/src/duckdb/src/planner/operator/logical_recursive_cte.cpp +5 -5
  256. package/src/duckdb/src/planner/operator/logical_sample.cpp +3 -0
  257. package/src/duckdb/src/planner/operator/logical_update.cpp +8 -2
  258. package/src/duckdb/src/planner/parsed_data/bound_create_table_info.cpp +4 -2
  259. package/src/duckdb/src/planner/planner.cpp +11 -0
  260. package/src/duckdb/src/storage/checkpoint_manager.cpp +23 -23
  261. package/src/duckdb/src/storage/compression/bitpacking.cpp +87 -63
  262. package/src/duckdb/src/storage/compression/bitpacking_hugeint.cpp +295 -0
  263. package/src/duckdb/src/storage/serialization/serialize_constraint.cpp +98 -0
  264. package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +188 -0
  265. package/src/duckdb/src/storage/serialization/serialize_expression.cpp +274 -0
  266. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +729 -0
  267. package/src/duckdb/src/storage/serialization/serialize_macro_function.cpp +62 -0
  268. package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +242 -0
  269. package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +419 -0
  270. package/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp +40 -38
  271. package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +36 -36
  272. package/src/duckdb/src/storage/serialization/serialize_result_modifier.cpp +25 -14
  273. package/src/duckdb/src/storage/serialization/serialize_statement.cpp +22 -0
  274. package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +47 -47
  275. package/src/duckdb/src/storage/serialization/serialize_types.cpp +25 -25
  276. package/src/duckdb/src/storage/storage_info.cpp +3 -2
  277. package/src/duckdb/src/storage/wal_replay.cpp +20 -19
  278. package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +6 -6
  279. package/src/duckdb/ub_src_core_functions_scalar_string.cpp +2 -0
  280. package/src/duckdb/ub_src_parser.cpp +0 -2
  281. package/src/duckdb/ub_src_storage_compression.cpp +2 -0
  282. package/src/duckdb/ub_src_storage_serialization.cpp +16 -0
  283. package/src/duckdb/src/parser/common_table_expression_info.cpp +0 -21
@@ -3,7 +3,8 @@
3
3
  #include "duckdb/common/vector.hpp"
4
4
  #include "duckdb/common/unordered_map.hpp"
5
5
  #include "duckdb/common/unordered_set.hpp"
6
-
6
+ #include "duckdb/common/set.hpp"
7
+ #include "duckdb/common/shared_ptr.hpp"
7
8
  namespace duckdb {
8
9
 
9
10
  class FormatSerializer; // Forward declare
@@ -51,11 +52,18 @@ struct is_vector<typename duckdb::vector<T>> : std::true_type {
51
52
  typedef T ELEMENT_TYPE;
52
53
  };
53
54
 
55
+ template <typename T>
56
+ struct is_unsafe_vector : std::false_type {};
57
+ template <typename T>
58
+ struct is_unsafe_vector<typename duckdb::unsafe_vector<T>> : std::true_type {
59
+ typedef T ELEMENT_TYPE;
60
+ };
61
+
54
62
  // Check if T is a unordered map, and provide access to the inner type
55
63
  template <typename T>
56
64
  struct is_unordered_map : std::false_type {};
57
65
  template <typename... Args>
58
- struct is_unordered_map<typename std::unordered_map<Args...>> : std::true_type {
66
+ struct is_unordered_map<typename duckdb::unordered_map<Args...>> : std::true_type {
59
67
  typedef typename std::tuple_element<0, std::tuple<Args...>>::type KEY_TYPE;
60
68
  typedef typename std::tuple_element<1, std::tuple<Args...>>::type VALUE_TYPE;
61
69
  typedef typename std::tuple_element<2, std::tuple<Args...>>::type HASH_TYPE;
@@ -90,7 +98,7 @@ struct is_pair<std::pair<T, U>> : std::true_type {
90
98
  template <typename T>
91
99
  struct is_unordered_set : std::false_type {};
92
100
  template <typename... Args>
93
- struct is_unordered_set<std::unordered_set<Args...>> : std::true_type {
101
+ struct is_unordered_set<duckdb::unordered_set<Args...>> : std::true_type {
94
102
  typedef typename std::tuple_element<0, std::tuple<Args...>>::type ELEMENT_TYPE;
95
103
  typedef typename std::tuple_element<1, std::tuple<Args...>>::type HASH_TYPE;
96
104
  typedef typename std::tuple_element<2, std::tuple<Args...>>::type EQUAL_TYPE;
@@ -99,7 +107,7 @@ struct is_unordered_set<std::unordered_set<Args...>> : std::true_type {
99
107
  template <typename T>
100
108
  struct is_set : std::false_type {};
101
109
  template <typename... Args>
102
- struct is_set<std::set<Args...>> : std::true_type {
110
+ struct is_set<duckdb::set<Args...>> : std::true_type {
103
111
  typedef typename std::tuple_element<0, std::tuple<Args...>>::type ELEMENT_TYPE;
104
112
  typedef typename std::tuple_element<1, std::tuple<Args...>>::type HASH_TYPE;
105
113
  typedef typename std::tuple_element<2, std::tuple<Args...>>::type EQUAL_TYPE;
@@ -154,6 +154,9 @@ public:
154
154
  //! Get a vector of the segments in this ColumnDataCollection
155
155
  const vector<unique_ptr<ColumnDataCollectionSegment>> &GetSegments() const;
156
156
 
157
+ void FormatSerialize(FormatSerializer &serializer) const;
158
+ static unique_ptr<ColumnDataCollection> FormatDeserialize(FormatDeserializer &deserializer);
159
+
157
160
  private:
158
161
  //! Creates a new segment within the ColumnDataCollection
159
162
  void CreateSegment();
@@ -199,7 +199,7 @@ struct StringAggFun {
199
199
  static constexpr const char *Name = "string_agg";
200
200
  static constexpr const char *Parameters = "str,arg";
201
201
  static constexpr const char *Description = "Concatenates the column string values with an optional separator.";
202
- static constexpr const char *Example = "string_agg(A, '-)";
202
+ static constexpr const char *Example = "string_agg(A, '-')";
203
203
 
204
204
  static AggregateFunctionSet GetFunctions();
205
205
  };
@@ -28,7 +28,7 @@ struct BitwiseOrFun {
28
28
  static constexpr const char *Name = "|";
29
29
  static constexpr const char *Parameters = "left,right";
30
30
  static constexpr const char *Description = "Bitwise OR";
31
- static constexpr const char *Example = "32 & 3";
31
+ static constexpr const char *Example = "32 | 3";
32
32
 
33
33
  static ScalarFunctionSet GetFunctions();
34
34
  };
@@ -453,4 +453,13 @@ struct OrdFun {
453
453
  static constexpr const char *Name = "ord";
454
454
  };
455
455
 
456
+ struct ToBaseFun {
457
+ static constexpr const char *Name = "to_base";
458
+ static constexpr const char *Parameters = "number,radix,min_length";
459
+ static constexpr const char *Description = "Converts a value to a string in the given base radix, optionally padding with leading zeros to the minimum length";
460
+ static constexpr const char *Example = "to_base(42, 16)";
461
+
462
+ static ScalarFunctionSet GetFunctions();
463
+ };
464
+
456
465
  } // namespace duckdb
@@ -106,9 +106,9 @@ public:
106
106
  public:
107
107
  // Sink interface
108
108
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
109
- void Combine(ExecutionContext &context, GlobalSinkState &state, LocalSinkState &lstate) const override;
109
+ SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const override;
110
110
  SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context,
111
- GlobalSinkState &gstate) const override;
111
+ OperatorSinkFinalizeInput &input) const override;
112
112
  SinkFinalizeType FinalizeInternal(Pipeline &pipeline, Event &event, ClientContext &context, GlobalSinkState &gstate,
113
113
  bool check_distinct) const;
114
114
 
@@ -141,7 +141,7 @@ private:
141
141
  SinkFinalizeType FinalizeDistinct(Pipeline &pipeline, Event &event, ClientContext &context,
142
142
  GlobalSinkState &gstate) const;
143
143
  //! Combine the distinct aggregates
144
- void CombineDistinct(ExecutionContext &context, GlobalSinkState &state, LocalSinkState &lstate) const;
144
+ void CombineDistinct(ExecutionContext &context, OperatorSinkCombineInput &input) const;
145
145
  //! Sink the distinct aggregates for a single grouping
146
146
  void SinkDistinctGrouping(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input,
147
147
  idx_t grouping_idx) const;
@@ -46,7 +46,7 @@ public:
46
46
  public:
47
47
  // Sink interface
48
48
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
49
- void Combine(ExecutionContext &context, GlobalSinkState &state, LocalSinkState &lstate) const override;
49
+ SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const override;
50
50
 
51
51
  unique_ptr<LocalSinkState> GetLocalSinkState(ExecutionContext &context) const override;
52
52
  unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
@@ -44,9 +44,9 @@ public:
44
44
  public:
45
45
  // Sink interface
46
46
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
47
- void Combine(ExecutionContext &context, GlobalSinkState &state, LocalSinkState &lstate) const override;
47
+ SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const override;
48
48
  SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context,
49
- GlobalSinkState &gstate) const override;
49
+ OperatorSinkFinalizeInput &input) const override;
50
50
 
51
51
  unique_ptr<LocalSinkState> GetLocalSinkState(ExecutionContext &context) const override;
52
52
  unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
@@ -68,7 +68,7 @@ private:
68
68
  SinkFinalizeType FinalizeDistinct(Pipeline &pipeline, Event &event, ClientContext &context,
69
69
  GlobalSinkState &gstate) const;
70
70
  //! Combine the distinct aggregates
71
- void CombineDistinct(ExecutionContext &context, GlobalSinkState &state, LocalSinkState &lstate) const;
71
+ void CombineDistinct(ExecutionContext &context, OperatorSinkCombineInput &input) const;
72
72
  //! Sink the distinct aggregates
73
73
  void SinkDistinct(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const;
74
74
  };
@@ -51,9 +51,9 @@ public:
51
51
  public:
52
52
  // Sink interface
53
53
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
54
- void Combine(ExecutionContext &context, GlobalSinkState &state, LocalSinkState &lstate) const override;
54
+ SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const override;
55
55
  SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context,
56
- GlobalSinkState &gstate) const override;
56
+ OperatorSinkFinalizeInput &input) const override;
57
57
 
58
58
  unique_ptr<LocalSinkState> GetLocalSinkState(ExecutionContext &context) const override;
59
59
  unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
@@ -22,9 +22,9 @@ public:
22
22
  public:
23
23
  // Sink interface
24
24
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
25
- void Combine(ExecutionContext &context, GlobalSinkState &state, LocalSinkState &lstate) const override;
25
+ SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const override;
26
26
  SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context,
27
- GlobalSinkState &gstate) const override;
27
+ OperatorSinkFinalizeInput &input) const override;
28
28
 
29
29
  unique_ptr<LocalSinkState> GetLocalSinkState(ExecutionContext &context) const override;
30
30
  unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
@@ -34,7 +34,7 @@ public:
34
34
  // Sink Interface
35
35
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
36
36
  SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context,
37
- GlobalSinkState &gstate) const override;
37
+ OperatorSinkFinalizeInput &input) const override;
38
38
 
39
39
  unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
40
40
 
@@ -44,7 +44,7 @@ public:
44
44
  public:
45
45
  // Sink Interface
46
46
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
47
- void Combine(ExecutionContext &context, GlobalSinkState &gstate, LocalSinkState &lstate) const override;
47
+ SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const override;
48
48
  unique_ptr<LocalSinkState> GetLocalSinkState(ExecutionContext &context) const override;
49
49
  unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
50
50
 
@@ -24,7 +24,7 @@ public:
24
24
  public:
25
25
  // Sink interface
26
26
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
27
- void Combine(ExecutionContext &context, GlobalSinkState &gstate, LocalSinkState &lstate) const override;
27
+ SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const override;
28
28
 
29
29
  unique_ptr<LocalSinkState> GetLocalSinkState(ExecutionContext &context) const override;
30
30
  unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
@@ -38,9 +38,9 @@ public:
38
38
  unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
39
39
 
40
40
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
41
- void Combine(ExecutionContext &context, GlobalSinkState &gstate_p, LocalSinkState &lstate_p) const override;
41
+ SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const override;
42
42
  SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context,
43
- GlobalSinkState &gstate) const override;
43
+ OperatorSinkFinalizeInput &input) const override;
44
44
 
45
45
  bool IsSink() const override {
46
46
  return info->has_table;
@@ -69,9 +69,9 @@ public:
69
69
  unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
70
70
  unique_ptr<LocalSinkState> GetLocalSinkState(ExecutionContext &context) const override;
71
71
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
72
- void Combine(ExecutionContext &context, GlobalSinkState &gstate, LocalSinkState &lstate) const override;
72
+ SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const override;
73
73
  SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context,
74
- GlobalSinkState &gstate) const override;
74
+ OperatorSinkFinalizeInput &input) const override;
75
75
 
76
76
  bool IsSink() const override {
77
77
  return true;
@@ -59,7 +59,7 @@ public:
59
59
  unique_ptr<LocalSinkState> GetLocalSinkState(ExecutionContext &context) const override;
60
60
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
61
61
  SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context,
62
- GlobalSinkState &gstate) const override;
62
+ OperatorSinkFinalizeInput &input) const override;
63
63
 
64
64
  bool IsSink() const override {
65
65
  return true;
@@ -35,9 +35,9 @@ public:
35
35
  unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
36
36
  unique_ptr<LocalSinkState> GetLocalSinkState(ExecutionContext &context) const override;
37
37
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
38
- void Combine(ExecutionContext &context, GlobalSinkState &state, LocalSinkState &lstate) const override;
38
+ SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const override;
39
39
  SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context,
40
- GlobalSinkState &gstate) const override;
40
+ OperatorSinkFinalizeInput &input) const override;
41
41
 
42
42
  bool IsSink() const override {
43
43
  return true;
@@ -79,9 +79,9 @@ public:
79
79
 
80
80
  unique_ptr<LocalSinkState> GetLocalSinkState(ExecutionContext &context) const override;
81
81
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
82
- void Combine(ExecutionContext &context, GlobalSinkState &gstate, LocalSinkState &lstate) const override;
82
+ SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const override;
83
83
  SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context,
84
- GlobalSinkState &gstate) const override;
84
+ OperatorSinkFinalizeInput &input) const override;
85
85
 
86
86
  bool IsSink() const override {
87
87
  return true;
@@ -51,9 +51,9 @@ public:
51
51
  unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
52
52
  unique_ptr<LocalSinkState> GetLocalSinkState(ExecutionContext &context) const override;
53
53
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
54
- void Combine(ExecutionContext &context, GlobalSinkState &gstate, LocalSinkState &lstate) const override;
54
+ SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const override;
55
55
  SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context,
56
- GlobalSinkState &gstate) const override;
56
+ OperatorSinkFinalizeInput &input) const override;
57
57
 
58
58
  bool IsSink() const override {
59
59
  return true;
@@ -54,9 +54,9 @@ public:
54
54
  unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
55
55
  unique_ptr<LocalSinkState> GetLocalSinkState(ExecutionContext &context) const override;
56
56
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
57
- void Combine(ExecutionContext &context, GlobalSinkState &gstate, LocalSinkState &lstate) const override;
57
+ SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const override;
58
58
  SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context,
59
- GlobalSinkState &gstate) const override;
59
+ OperatorSinkFinalizeInput &input) const override;
60
60
 
61
61
  bool IsSink() const override {
62
62
  return true;
@@ -60,9 +60,9 @@ public:
60
60
  unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
61
61
  unique_ptr<LocalSinkState> GetLocalSinkState(ExecutionContext &context) const override;
62
62
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
63
- void Combine(ExecutionContext &context, GlobalSinkState &gstate, LocalSinkState &lstate) const override;
63
+ SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const override;
64
64
  SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context,
65
- GlobalSinkState &gstate) const override;
65
+ OperatorSinkFinalizeInput &input) const override;
66
66
 
67
67
  bool IsSink() const override {
68
68
  return true;
@@ -60,9 +60,9 @@ public:
60
60
  unique_ptr<LocalSinkState> GetLocalSinkState(ExecutionContext &context) const override;
61
61
  unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
62
62
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
63
- void Combine(ExecutionContext &context, GlobalSinkState &gstate_p, LocalSinkState &lstate_p) const override;
63
+ SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const override;
64
64
  SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context,
65
- GlobalSinkState &gstate) const override;
65
+ OperatorSinkFinalizeInput &input) const override;
66
66
 
67
67
  bool IsSink() const override {
68
68
  return true;
@@ -42,9 +42,9 @@ public:
42
42
 
43
43
  public:
44
44
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
45
- void Combine(ExecutionContext &context, GlobalSinkState &state, LocalSinkState &lstate) const override;
45
+ SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const override;
46
46
  SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context,
47
- GlobalSinkState &gstate) const override;
47
+ OperatorSinkFinalizeInput &input) const override;
48
48
  unique_ptr<LocalSinkState> GetLocalSinkState(ExecutionContext &context) const override;
49
49
  unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
50
50
 
@@ -41,9 +41,9 @@ public:
41
41
  public:
42
42
  // Sink interface
43
43
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
44
- void Combine(ExecutionContext &context, GlobalSinkState &gstate, LocalSinkState &lstate) const override;
44
+ SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const override;
45
45
  SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context,
46
- GlobalSinkState &gstate) const override;
46
+ OperatorSinkFinalizeInput &input) const override;
47
47
  unique_ptr<LocalSinkState> GetLocalSinkState(ExecutionContext &context) const override;
48
48
  unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
49
49
  void NextBatch(ExecutionContext &context, GlobalSinkState &state, LocalSinkState &lstate_p) const override;
@@ -54,9 +54,9 @@ public:
54
54
  unique_ptr<LocalSinkState> GetLocalSinkState(ExecutionContext &context) const override;
55
55
  void NextBatch(ExecutionContext &context, GlobalSinkState &state, LocalSinkState &lstate_p) const override;
56
56
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
57
- void Combine(ExecutionContext &context, GlobalSinkState &gstate, LocalSinkState &lstate) const override;
57
+ SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const override;
58
58
  SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context,
59
- GlobalSinkState &gstate) const override;
59
+ OperatorSinkFinalizeInput &input) const override;
60
60
 
61
61
  bool RequiresBatchIndex() const override {
62
62
  return true;
@@ -50,9 +50,9 @@ public:
50
50
  public:
51
51
  // Sink interface
52
52
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
53
- void Combine(ExecutionContext &context, GlobalSinkState &gstate, LocalSinkState &lstate) const override;
53
+ SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const override;
54
54
  SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context,
55
- GlobalSinkState &gstate) const override;
55
+ OperatorSinkFinalizeInput &input) const override;
56
56
  unique_ptr<LocalSinkState> GetLocalSinkState(ExecutionContext &context) const override;
57
57
  unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
58
58
 
@@ -40,9 +40,9 @@ public:
40
40
  public:
41
41
  // Sink interface
42
42
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
43
- void Combine(ExecutionContext &context, GlobalSinkState &gstate, LocalSinkState &lstate) const override;
43
+ SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const override;
44
44
  SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context,
45
- GlobalSinkState &gstate) const override;
45
+ OperatorSinkFinalizeInput &input) const override;
46
46
  unique_ptr<LocalSinkState> GetLocalSinkState(ExecutionContext &context) const override;
47
47
  unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
48
48
  void NextBatch(ExecutionContext &context, GlobalSinkState &state, LocalSinkState &lstate_p) const override;
@@ -88,9 +88,9 @@ public:
88
88
  unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
89
89
  unique_ptr<LocalSinkState> GetLocalSinkState(ExecutionContext &context) const override;
90
90
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
91
- void Combine(ExecutionContext &context, GlobalSinkState &gstate, LocalSinkState &lstate) const override;
91
+ SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const override;
92
92
  SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context,
93
- GlobalSinkState &gstate) const override;
93
+ OperatorSinkFinalizeInput &input) const override;
94
94
 
95
95
  bool IsSink() const override {
96
96
  return true;
@@ -47,7 +47,7 @@ public:
47
47
  unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
48
48
  unique_ptr<LocalSinkState> GetLocalSinkState(ExecutionContext &context) const override;
49
49
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
50
- void Combine(ExecutionContext &context, GlobalSinkState &gstate, LocalSinkState &lstate) const override;
50
+ SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const override;
51
51
 
52
52
  bool IsSink() const override {
53
53
  return true;
@@ -53,9 +53,9 @@ public:
53
53
  unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
54
54
 
55
55
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
56
- void Combine(ExecutionContext &context, GlobalSinkState &gstate_p, LocalSinkState &lstate_p) const override;
56
+ SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const override;
57
57
  SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context,
58
- GlobalSinkState &gstate) const override;
58
+ OperatorSinkFinalizeInput &input) const override;
59
59
 
60
60
  bool IsSink() const override {
61
61
  return true;
@@ -140,14 +140,14 @@ public:
140
140
  // The combine is called when a single thread has completed execution of its part of the pipeline, it is the final
141
141
  // time that a specific LocalSinkState is accessible. This method can be called in parallel while other Sink() or
142
142
  // Combine() calls are active on the same GlobalSinkState.
143
- virtual void Combine(ExecutionContext &context, GlobalSinkState &gstate, LocalSinkState &lstate) const;
143
+ virtual SinkCombineResultType Combine(ExecutionContext &context, OperatorSinkCombineInput &input) const;
144
144
  //! The finalize is called when ALL threads are finished execution. It is called only once per pipeline, and is
145
145
  //! entirely single threaded.
146
146
  //! If Finalize returns SinkResultType::FINISHED, the sink is marked as finished
147
147
  virtual SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context,
148
- GlobalSinkState &gstate) const;
148
+ OperatorSinkFinalizeInput &input) const;
149
149
  //! For sinks with RequiresBatchIndex set to true, when a new batch starts being processed this method is called
150
- //! This allows flushing of the current batch (e.g. to disk)
150
+ //! This allows flushing of the current batch (e.g. to disk) TODO: should this be able to block too?
151
151
  virtual void NextBatch(ExecutionContext &context, GlobalSinkState &state, LocalSinkState &lstate_p) const;
152
152
 
153
153
  virtual unique_ptr<LocalSinkState> GetLocalSinkState(ExecutionContext &context) const;
@@ -165,6 +165,17 @@ struct OperatorSourceInput {
165
165
  InterruptState &interrupt_state;
166
166
  };
167
167
 
168
+ struct OperatorSinkCombineInput {
169
+ GlobalSinkState &global_state;
170
+ LocalSinkState &local_state;
171
+ InterruptState &interrupt_state;
172
+ };
173
+
174
+ struct OperatorSinkFinalizeInput {
175
+ GlobalSinkState &global_state;
176
+ InterruptState &interrupt_state;
177
+ };
178
+
168
179
  // LCOV_EXCL_STOP
169
180
 
170
181
  } // namespace duckdb
@@ -48,6 +48,9 @@ public:
48
48
  void Serialize(Serializer &serializer) const;
49
49
  static unique_ptr<MacroFunction> Deserialize(Deserializer &deserializer);
50
50
 
51
+ virtual void FormatSerialize(FormatSerializer &serializer) const;
52
+ static unique_ptr<MacroFunction> FormatDeserialize(FormatDeserializer &deserializer);
53
+
51
54
  protected:
52
55
  virtual void SerializeInternal(FieldWriter &writer) const = 0;
53
56
 
@@ -36,6 +36,9 @@ public:
36
36
 
37
37
  static unique_ptr<MacroFunction> Deserialize(FieldReader &reader);
38
38
 
39
+ void FormatSerialize(FormatSerializer &serializer) const override;
40
+ static unique_ptr<MacroFunction> FormatDeserialize(FormatDeserializer &deserializer);
41
+
39
42
  protected:
40
43
  void SerializeInternal(FieldWriter &writer) const override;
41
44
  };
@@ -36,6 +36,9 @@ public:
36
36
 
37
37
  static unique_ptr<MacroFunction> Deserialize(FieldReader &reader);
38
38
 
39
+ void FormatSerialize(FormatSerializer &serializer) const override;
40
+ static unique_ptr<MacroFunction> FormatDeserialize(FormatDeserializer &deserializer);
41
+
39
42
  protected:
40
43
  void SerializeInternal(FieldWriter &writer) const override;
41
44
  };
@@ -32,6 +32,9 @@ static constexpr ExtensionEntry EXTENSION_FUNCTIONS[] = {{"->>", "json"},
32
32
  {"from_substrait_json", "substrait"},
33
33
  {"get_substrait", "substrait"},
34
34
  {"get_substrait_json", "substrait"},
35
+ {"iceberg_scan", "iceberg"},
36
+ {"iceberg_metadata", "iceberg"},
37
+ {"iceberg_snapshots", "iceberg"},
35
38
  {"icu_calendar_names", "icu"},
36
39
  {"icu_sort_key", "icu"},
37
40
  {"json", "json"},
@@ -71,9 +71,6 @@ public:
71
71
  void ClearSource();
72
72
  void Schedule(shared_ptr<Event> &event);
73
73
 
74
- //! Finalize this pipeline
75
- void Finalize(Event &event);
76
-
77
74
  string ToString() const;
78
75
  void Print() const;
79
76
  void PrintDependencies() const;
@@ -48,8 +48,8 @@ public:
48
48
  //! If OperatorResultType::FINISHED is returned, more input will not change the result anymore
49
49
  OperatorResultType ExecutePush(DataChunk &input);
50
50
  //! Called after depleting the source: finalizes the execution of this pipeline executor
51
- //! This should only be called once per PipelineExecutor
52
- void PushFinalize();
51
+ //! This should only be called once per PipelineExecutor.
52
+ PipelineExecuteResult PushFinalize();
53
53
 
54
54
  //! Initializes a chunk with the types that will flow out of ExecutePull
55
55
  void InitializeChunk(DataChunk &chunk);
@@ -142,6 +142,7 @@ private:
142
142
  //! Debugging state: number of times blocked
143
143
  int debug_blocked_sink_count = 0;
144
144
  int debug_blocked_source_count = 0;
145
+ int debug_blocked_combine_count = 0;
145
146
  //! Number of times the Sink/Source will block before actually returning data
146
147
  int debug_blocked_target_count = 1;
147
148
  #endif
@@ -29,9 +29,6 @@ public:
29
29
  DUCKDB_API ColumnDefinition(string name, LogicalType type, unique_ptr<ParsedExpression> expression,
30
30
  TableColumnType category);
31
31
 
32
- //! The default value of the column (if any)
33
- unique_ptr<ParsedExpression> default_value;
34
-
35
32
  public:
36
33
  //! default_value
37
34
  const unique_ptr<ParsedExpression> &DefaultValue() const;
@@ -70,6 +67,9 @@ public:
70
67
  DUCKDB_API void Serialize(Serializer &serializer) const;
71
68
  DUCKDB_API static ColumnDefinition Deserialize(Deserializer &source);
72
69
 
70
+ DUCKDB_API void FormatSerialize(FormatSerializer &serializer) const;
71
+ DUCKDB_API static ColumnDefinition FormatDeserialize(FormatDeserializer &deserializer);
72
+
73
73
  //===--------------------------------------------------------------------===//
74
74
  // Generated Columns (VIRTUAL)
75
75
  //===--------------------------------------------------------------------===//
@@ -97,8 +97,9 @@ private:
97
97
  idx_t oid = DConstants::INVALID_INDEX;
98
98
  //! The category of the column
99
99
  TableColumnType category = TableColumnType::STANDARD;
100
- //! Used by Generated Columns
101
- unique_ptr<ParsedExpression> generated_expression;
100
+ //! The default value of the column (for non-generated columns)
101
+ //! The generated column expression (for generated columns)
102
+ unique_ptr<ParsedExpression> expression;
102
103
  };
103
104
 
104
105
  } // namespace duckdb
@@ -20,6 +20,7 @@ public:
20
20
 
21
21
  public:
22
22
  DUCKDB_API ColumnList(bool allow_duplicate_names = false);
23
+ DUCKDB_API explicit ColumnList(vector<ColumnDefinition> columns, bool allow_duplicate_names = false);
23
24
 
24
25
  DUCKDB_API void AddColumn(ColumnDefinition column);
25
26
  void Finalize();
@@ -53,6 +54,9 @@ public:
53
54
  void Serialize(FieldWriter &writer) const;
54
55
  static ColumnList Deserialize(FieldReader &reader);
55
56
 
57
+ void FormatSerialize(FormatSerializer &serializer) const;
58
+ static ColumnList FormatDeserialize(FormatDeserializer &deserializer);
59
+
56
60
  DUCKDB_API ColumnListIterator Logical() const;
57
61
  DUCKDB_API ColumnListIterator Physical() const;
58
62
 
@@ -16,6 +16,8 @@ namespace duckdb {
16
16
 
17
17
  class Serializer;
18
18
  class Deserializer;
19
+ class FormatSerializer;
20
+ class FormatDeserializer;
19
21
  class FieldWriter;
20
22
  class FieldReader;
21
23
 
@@ -68,6 +70,9 @@ public:
68
70
  //! Deserializes a blob back into a Constraint
69
71
  DUCKDB_API static unique_ptr<Constraint> Deserialize(Deserializer &source);
70
72
 
73
+ DUCKDB_API virtual void FormatSerialize(FormatSerializer &serializer) const;
74
+ DUCKDB_API static unique_ptr<Constraint> FormatDeserialize(FormatDeserializer &deserializer);
75
+
71
76
  public:
72
77
  template <class TARGET>
73
78
  TARGET &Cast() {