duckdb 0.6.2-dev971.0 → 0.7.1-dev100.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 (1162) hide show
  1. package/binding.gyp +14 -8
  2. package/configure.py +2 -2
  3. package/lib/duckdb.d.ts +20 -3
  4. package/lib/duckdb.js +13 -1
  5. package/package.json +3 -1
  6. package/src/connection.cpp +5 -3
  7. package/src/database.cpp +117 -11
  8. package/src/duckdb/extension/icu/icu-dateadd.cpp +70 -7
  9. package/src/duckdb/extension/icu/icu-datefunc.cpp +0 -8
  10. package/src/duckdb/extension/icu/icu-datepart.cpp +1 -1
  11. package/src/duckdb/extension/icu/icu-extension.cpp +5 -3
  12. package/src/duckdb/extension/icu/icu-strptime.cpp +2 -2
  13. package/src/duckdb/extension/icu/icu-timebucket.cpp +637 -0
  14. package/src/duckdb/extension/icu/icu-timezone.cpp +7 -3
  15. package/src/duckdb/extension/icu/include/icu-datefunc.hpp +11 -1
  16. package/src/duckdb/{src/include/duckdb/main/replacement_opens.hpp → extension/icu/include/icu-timebucket.hpp} +3 -6
  17. package/src/duckdb/extension/icu/third_party/icu/common/uloc.cpp +3 -1
  18. package/src/duckdb/extension/icu/third_party/icu/i18n/calendar.cpp +1 -1
  19. package/src/duckdb/extension/icu/third_party/icu/i18n/choicfmt.cpp +3 -1
  20. package/src/duckdb/extension/icu/third_party/icu/i18n/plurrule.cpp +3 -1
  21. package/src/duckdb/extension/json/buffered_json_reader.cpp +254 -0
  22. package/src/duckdb/extension/json/include/buffered_json_reader.hpp +148 -0
  23. package/src/duckdb/extension/json/include/json_common.hpp +149 -227
  24. package/src/duckdb/extension/json/include/json_executors.hpp +139 -0
  25. package/src/duckdb/extension/json/include/json_functions.hpp +71 -30
  26. package/src/duckdb/extension/json/include/json_scan.hpp +310 -0
  27. package/src/duckdb/extension/json/include/json_structure.hpp +87 -0
  28. package/src/duckdb/extension/json/include/json_transform.hpp +72 -0
  29. package/src/duckdb/extension/json/json-extension.cpp +35 -17
  30. package/src/duckdb/extension/json/json_common.cpp +10 -87
  31. package/src/duckdb/extension/json/json_functions/copy_json.cpp +109 -0
  32. package/src/duckdb/extension/json/json_functions/json_array_length.cpp +18 -13
  33. package/src/duckdb/extension/json/json_functions/json_contains.cpp +95 -44
  34. package/src/duckdb/extension/json/json_functions/json_create.cpp +48 -39
  35. package/src/duckdb/extension/json/json_functions/json_extract.cpp +30 -21
  36. package/src/duckdb/extension/json/json_functions/json_keys.cpp +60 -0
  37. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +33 -11
  38. package/src/duckdb/extension/json/json_functions/json_structure.cpp +483 -155
  39. package/src/duckdb/extension/json/json_functions/json_transform.cpp +370 -116
  40. package/src/duckdb/extension/json/json_functions/json_type.cpp +19 -14
  41. package/src/duckdb/extension/json/json_functions/json_valid.cpp +16 -6
  42. package/src/duckdb/extension/json/json_functions/read_json.cpp +282 -0
  43. package/src/duckdb/extension/json/json_functions/read_json_objects.cpp +65 -0
  44. package/src/duckdb/extension/json/json_functions.cpp +225 -0
  45. package/src/duckdb/extension/json/json_scan.cpp +667 -0
  46. package/src/duckdb/extension/json/yyjson/include/yyjson.hpp +3847 -3398
  47. package/src/duckdb/extension/json/yyjson/yyjson.cpp +6625 -6411
  48. package/src/duckdb/extension/parquet/column_reader.cpp +28 -23
  49. package/src/duckdb/extension/parquet/column_writer.cpp +79 -77
  50. package/src/duckdb/extension/parquet/include/boolean_column_reader.hpp +5 -1
  51. package/src/duckdb/extension/parquet/include/callback_column_reader.hpp +1 -1
  52. package/src/duckdb/extension/parquet/include/column_reader.hpp +2 -0
  53. package/src/duckdb/extension/parquet/include/generated_column_reader.hpp +1 -1
  54. package/src/duckdb/extension/parquet/include/parquet_reader.hpp +18 -3
  55. package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +1 -1
  56. package/src/duckdb/extension/parquet/include/templated_column_reader.hpp +3 -3
  57. package/src/duckdb/extension/parquet/parquet-extension.cpp +105 -37
  58. package/src/duckdb/extension/parquet/parquet_metadata.cpp +2 -2
  59. package/src/duckdb/extension/parquet/parquet_reader.cpp +108 -39
  60. package/src/duckdb/extension/parquet/parquet_statistics.cpp +8 -4
  61. package/src/duckdb/extension/parquet/parquet_writer.cpp +23 -7
  62. package/src/duckdb/extension/parquet/zstd_file_system.cpp +2 -2
  63. package/src/duckdb/src/catalog/catalog.cpp +36 -134
  64. package/src/duckdb/src/catalog/catalog_entry/column_dependency_manager.cpp +2 -2
  65. package/src/duckdb/src/catalog/catalog_entry/duck_index_entry.cpp +27 -0
  66. package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +330 -0
  67. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +758 -0
  68. package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +4 -13
  69. package/src/duckdb/src/catalog/catalog_entry/pragma_function_catalog_entry.cpp +2 -1
  70. package/src/duckdb/src/catalog/catalog_entry/scalar_function_catalog_entry.cpp +1 -1
  71. package/src/duckdb/src/catalog/catalog_entry/scalar_macro_catalog_entry.cpp +5 -5
  72. package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +11 -308
  73. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +44 -708
  74. package/src/duckdb/src/catalog/catalog_entry/table_function_catalog_entry.cpp +2 -1
  75. package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +1 -1
  76. package/src/duckdb/src/catalog/catalog_entry.cpp +2 -2
  77. package/src/duckdb/src/catalog/catalog_search_path.cpp +10 -10
  78. package/src/duckdb/src/catalog/catalog_set.cpp +68 -62
  79. package/src/duckdb/src/catalog/catalog_transaction.cpp +9 -3
  80. package/src/duckdb/src/catalog/default/default_functions.cpp +7 -7
  81. package/src/duckdb/src/catalog/default/default_schemas.cpp +2 -2
  82. package/src/duckdb/src/catalog/default/default_types.cpp +2 -1
  83. package/src/duckdb/src/catalog/default/default_views.cpp +8 -16
  84. package/src/duckdb/src/catalog/dependency_manager.cpp +6 -6
  85. package/src/duckdb/src/catalog/duck_catalog.cpp +111 -0
  86. package/src/duckdb/src/catalog/similar_catalog_entry.cpp +26 -0
  87. package/src/duckdb/src/common/allocator.cpp +1 -1
  88. package/src/duckdb/src/common/arrow/arrow_appender.cpp +9 -9
  89. package/src/duckdb/src/common/arrow/arrow_converter.cpp +6 -6
  90. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +1 -1
  91. package/src/duckdb/src/common/bind_helpers.cpp +67 -0
  92. package/src/duckdb/src/common/box_renderer.cpp +11 -3
  93. package/src/duckdb/src/common/compressed_file_system.cpp +2 -2
  94. package/src/duckdb/src/common/enums/expression_type.cpp +2 -0
  95. package/src/duckdb/src/common/enums/logical_operator_type.cpp +4 -0
  96. package/src/duckdb/src/common/enums/optimizer_type.cpp +1 -0
  97. package/src/duckdb/src/common/enums/physical_operator_type.cpp +8 -0
  98. package/src/duckdb/src/common/enums/relation_type.cpp +2 -0
  99. package/src/duckdb/src/common/enums/statement_type.cpp +2 -0
  100. package/src/duckdb/src/common/exception_format_value.cpp +2 -2
  101. package/src/duckdb/src/common/file_buffer.cpp +9 -34
  102. package/src/duckdb/src/common/file_system.cpp +42 -4
  103. package/src/duckdb/src/common/gzip_file_system.cpp +3 -3
  104. package/src/duckdb/src/common/hive_partitioning.cpp +129 -4
  105. package/src/duckdb/src/common/local_file_system.cpp +9 -7
  106. package/src/duckdb/src/common/operator/cast_operators.cpp +141 -32
  107. package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
  108. package/src/duckdb/src/common/preserved_error.cpp +1 -1
  109. package/src/duckdb/src/common/printer.cpp +1 -1
  110. package/src/duckdb/src/common/radix_partitioning.cpp +5 -4
  111. package/src/duckdb/src/common/row_operations/row_aggregate.cpp +2 -2
  112. package/src/duckdb/src/common/serializer/buffered_serializer.cpp +1 -1
  113. package/src/duckdb/src/common/sort/merge_sorter.cpp +11 -5
  114. package/src/duckdb/src/common/sort/sort_state.cpp +19 -16
  115. package/src/duckdb/src/common/sort/sorted_block.cpp +12 -11
  116. package/src/duckdb/src/common/string_util.cpp +9 -1
  117. package/src/duckdb/src/common/tree_renderer.cpp +17 -8
  118. package/src/duckdb/src/common/types/batched_data_collection.cpp +4 -4
  119. package/src/duckdb/src/common/types/bit.cpp +278 -0
  120. package/src/duckdb/src/common/types/chunk_collection.cpp +7 -7
  121. package/src/duckdb/src/common/types/column_data_allocator.cpp +6 -6
  122. package/src/duckdb/src/common/types/column_data_collection.cpp +56 -32
  123. package/src/duckdb/src/common/types/column_data_collection_segment.cpp +2 -2
  124. package/src/duckdb/src/common/types/column_data_consumer.cpp +1 -1
  125. package/src/duckdb/src/common/types/conflict_info.cpp +18 -0
  126. package/src/duckdb/src/common/types/conflict_manager.cpp +257 -0
  127. package/src/duckdb/src/common/types/data_chunk.cpp +17 -7
  128. package/src/duckdb/src/common/types/date.cpp +7 -2
  129. package/src/duckdb/src/common/types/hash.cpp +2 -2
  130. package/src/duckdb/src/common/types/partitioned_column_data.cpp +7 -2
  131. package/src/duckdb/src/common/types/row_data_collection.cpp +7 -7
  132. package/src/duckdb/src/common/types/row_data_collection_scanner.cpp +10 -2
  133. package/src/duckdb/src/common/types/row_layout.cpp +4 -4
  134. package/src/duckdb/src/common/types/string_type.cpp +1 -0
  135. package/src/duckdb/src/common/types/time.cpp +11 -7
  136. package/src/duckdb/src/common/types/timestamp.cpp +35 -4
  137. package/src/duckdb/src/common/types/validity_mask.cpp +2 -2
  138. package/src/duckdb/src/common/types/value.cpp +35 -41
  139. package/src/duckdb/src/common/types/vector.cpp +149 -37
  140. package/src/duckdb/src/common/types/vector_buffer.cpp +4 -4
  141. package/src/duckdb/src/common/types/vector_cache.cpp +2 -2
  142. package/src/duckdb/src/common/types.cpp +64 -56
  143. package/src/duckdb/src/common/vector_operations/vector_cast.cpp +7 -2
  144. package/src/duckdb/src/common/virtual_file_system.cpp +3 -3
  145. package/src/duckdb/src/execution/aggregate_hashtable.cpp +10 -8
  146. package/src/duckdb/src/execution/base_aggregate_hashtable.cpp +1 -1
  147. package/src/duckdb/src/execution/column_binding_resolver.cpp +21 -1
  148. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +1 -1
  149. package/src/duckdb/src/execution/expression_executor/execute_cast.cpp +10 -4
  150. package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +1 -1
  151. package/src/duckdb/src/execution/expression_executor/execute_function.cpp +1 -1
  152. package/src/duckdb/src/execution/expression_executor/execute_operator.cpp +1 -1
  153. package/src/duckdb/src/execution/expression_executor.cpp +1 -1
  154. package/src/duckdb/src/execution/index/art/art.cpp +258 -197
  155. package/src/duckdb/src/execution/index/art/art_key.cpp +10 -0
  156. package/src/duckdb/src/execution/index/art/leaf.cpp +68 -25
  157. package/src/duckdb/src/execution/index/art/node.cpp +183 -90
  158. package/src/duckdb/src/execution/index/art/node16.cpp +62 -34
  159. package/src/duckdb/src/execution/index/art/node256.cpp +50 -30
  160. package/src/duckdb/src/execution/index/art/node4.cpp +63 -34
  161. package/src/duckdb/src/execution/index/art/node48.cpp +63 -38
  162. package/src/duckdb/src/execution/index/art/prefix.cpp +24 -14
  163. package/src/duckdb/src/execution/index/art/swizzleable_pointer.cpp +5 -2
  164. package/src/duckdb/src/execution/join_hashtable.cpp +18 -19
  165. package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +1 -1
  166. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +2 -2
  167. package/src/duckdb/src/execution/operator/aggregate/grouped_aggregate_data.cpp +4 -4
  168. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +22 -20
  169. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +3 -3
  170. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +1 -1
  171. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +11 -11
  172. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +322 -420
  173. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +8 -5
  174. package/src/duckdb/src/execution/operator/helper/physical_batch_collector.cpp +3 -3
  175. package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +3 -2
  176. package/src/duckdb/src/execution/operator/helper/physical_materialized_collector.cpp +5 -5
  177. package/src/duckdb/src/execution/operator/helper/physical_set.cpp +9 -8
  178. package/src/duckdb/src/execution/operator/helper/physical_streaming_limit.cpp +3 -3
  179. package/src/duckdb/src/execution/operator/helper/physical_streaming_sample.cpp +1 -1
  180. package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +4 -3
  181. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +2 -2
  182. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +3 -3
  183. package/src/duckdb/src/execution/operator/join/physical_comparison_join.cpp +3 -2
  184. package/src/duckdb/src/execution/operator/join/physical_cross_product.cpp +3 -3
  185. package/src/duckdb/src/execution/operator/join/physical_delim_join.cpp +6 -6
  186. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +19 -19
  187. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +7 -7
  188. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +11 -10
  189. package/src/duckdb/src/execution/operator/join/physical_join.cpp +8 -1
  190. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +4 -3
  191. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +13 -8
  192. package/src/duckdb/src/execution/operator/join/physical_positional_join.cpp +195 -0
  193. package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +7 -7
  194. package/src/duckdb/src/execution/operator/order/physical_order.cpp +6 -6
  195. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +3 -3
  196. package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +188 -35
  197. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +88 -51
  198. package/src/duckdb/src/execution/operator/persistent/csv_buffer.cpp +19 -8
  199. package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +44 -55
  200. package/src/duckdb/src/execution/operator/persistent/parallel_csv_reader.cpp +138 -37
  201. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +32 -28
  202. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +114 -19
  203. package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +2 -1
  204. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +258 -24
  205. package/src/duckdb/src/execution/operator/persistent/physical_update.cpp +5 -3
  206. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +2 -2
  207. package/src/duckdb/src/execution/operator/projection/physical_tableinout_function.cpp +5 -5
  208. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +183 -124
  209. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +187 -0
  210. package/src/duckdb/src/execution/operator/scan/physical_table_scan.cpp +9 -8
  211. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +33 -8
  212. package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +63 -86
  213. package/src/duckdb/src/execution/operator/schema/physical_create_table.cpp +1 -1
  214. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  215. package/src/duckdb/src/execution/operator/schema/physical_detach.cpp +37 -0
  216. package/src/duckdb/src/execution/operator/schema/physical_drop.cpp +20 -3
  217. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +4 -3
  218. package/src/duckdb/src/execution/operator/set/physical_union.cpp +3 -3
  219. package/src/duckdb/src/execution/partitionable_hashtable.cpp +5 -5
  220. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +4 -4
  221. package/src/duckdb/src/execution/physical_operator.cpp +1 -1
  222. package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +20 -19
  223. package/src/duckdb/src/execution/physical_plan/plan_any_join.cpp +2 -2
  224. package/src/duckdb/src/execution/physical_plan/plan_column_data_get.cpp +2 -2
  225. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +25 -23
  226. package/src/duckdb/src/execution/physical_plan/plan_copy_to_file.cpp +11 -6
  227. package/src/duckdb/src/execution/physical_plan/plan_create.cpp +6 -6
  228. package/src/duckdb/src/execution/physical_plan/plan_create_index.cpp +63 -14
  229. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +24 -18
  230. package/src/duckdb/src/execution/physical_plan/plan_cross_product.cpp +1 -1
  231. package/src/duckdb/src/execution/physical_plan/plan_delete.cpp +14 -8
  232. package/src/duckdb/src/execution/physical_plan/plan_delim_get.cpp +1 -1
  233. package/src/duckdb/src/execution/physical_plan/plan_delim_join.cpp +4 -4
  234. package/src/duckdb/src/execution/physical_plan/plan_distinct.cpp +14 -13
  235. package/src/duckdb/src/execution/physical_plan/plan_execute.cpp +3 -3
  236. package/src/duckdb/src/execution/physical_plan/plan_explain.cpp +4 -4
  237. package/src/duckdb/src/execution/physical_plan/plan_export.cpp +4 -4
  238. package/src/duckdb/src/execution/physical_plan/plan_expression_get.cpp +4 -4
  239. package/src/duckdb/src/execution/physical_plan/plan_filter.cpp +6 -6
  240. package/src/duckdb/src/execution/physical_plan/plan_get.cpp +15 -13
  241. package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +32 -17
  242. package/src/duckdb/src/execution/physical_plan/plan_limit.cpp +8 -7
  243. package/src/duckdb/src/execution/physical_plan/plan_limit_percent.cpp +4 -4
  244. package/src/duckdb/src/execution/physical_plan/plan_order.cpp +5 -4
  245. package/src/duckdb/src/execution/physical_plan/plan_positional_join.cpp +21 -0
  246. package/src/duckdb/src/execution/physical_plan/plan_prepare.cpp +2 -2
  247. package/src/duckdb/src/execution/physical_plan/plan_projection.cpp +3 -3
  248. package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +5 -5
  249. package/src/duckdb/src/execution/physical_plan/plan_sample.cpp +2 -2
  250. package/src/duckdb/src/execution/physical_plan/plan_set_operation.cpp +4 -4
  251. package/src/duckdb/src/execution/physical_plan/plan_show_select.cpp +2 -2
  252. package/src/duckdb/src/execution/physical_plan/plan_simple.cpp +14 -8
  253. package/src/duckdb/src/execution/physical_plan/plan_top_n.cpp +3 -3
  254. package/src/duckdb/src/execution/physical_plan/plan_unnest.cpp +3 -3
  255. package/src/duckdb/src/execution/physical_plan/plan_update.cpp +13 -6
  256. package/src/duckdb/src/execution/physical_plan/plan_window.cpp +10 -8
  257. package/src/duckdb/src/execution/physical_plan_generator.cpp +6 -1
  258. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +2 -2
  259. package/src/duckdb/src/execution/reservoir_sample.cpp +2 -2
  260. package/src/duckdb/src/execution/window_segment_tree.cpp +2 -1
  261. package/src/duckdb/src/function/aggregate/distributive/approx_count.cpp +2 -2
  262. package/src/duckdb/src/function/aggregate/distributive/arg_min_max.cpp +232 -72
  263. package/src/duckdb/src/function/aggregate/distributive/first.cpp +2 -2
  264. package/src/duckdb/src/function/aggregate/distributive/minmax.cpp +3 -3
  265. package/src/duckdb/src/function/aggregate/distributive/string_agg.cpp +2 -2
  266. package/src/duckdb/src/function/aggregate/holistic/approximate_quantile.cpp +2 -2
  267. package/src/duckdb/src/function/aggregate/holistic/quantile.cpp +4 -1
  268. package/src/duckdb/src/function/aggregate/holistic/reservoir_quantile.cpp +2 -2
  269. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +6 -5
  270. package/src/duckdb/src/function/built_in_functions.cpp +10 -10
  271. package/src/duckdb/src/function/cast/bit_cast.cpp +19 -0
  272. package/src/duckdb/src/function/cast/blob_cast.cpp +1 -0
  273. package/src/duckdb/src/function/cast/cast_function_set.cpp +5 -5
  274. package/src/duckdb/src/function/cast/decimal_cast.cpp +2 -2
  275. package/src/duckdb/src/function/cast/default_casts.cpp +12 -9
  276. package/src/duckdb/src/function/cast/enum_casts.cpp +2 -3
  277. package/src/duckdb/src/function/cast/list_casts.cpp +1 -2
  278. package/src/duckdb/src/function/cast/map_cast.cpp +12 -1
  279. package/src/duckdb/src/function/cast/numeric_casts.cpp +0 -1
  280. package/src/duckdb/src/function/cast/string_cast.cpp +92 -7
  281. package/src/duckdb/src/function/cast/struct_cast.cpp +3 -4
  282. package/src/duckdb/src/function/cast/time_casts.cpp +0 -9
  283. package/src/duckdb/src/function/cast/union_casts.cpp +11 -9
  284. package/src/duckdb/src/function/cast/uuid_casts.cpp +0 -1
  285. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +161 -53
  286. package/src/duckdb/src/function/cast_rules.cpp +2 -7
  287. package/src/duckdb/src/function/function.cpp +5 -5
  288. package/src/duckdb/src/function/function_binder.cpp +8 -8
  289. package/src/duckdb/src/function/function_set.cpp +3 -3
  290. package/src/duckdb/src/function/macro_function.cpp +12 -10
  291. package/src/duckdb/src/function/pragma/pragma_functions.cpp +1 -0
  292. package/src/duckdb/src/function/pragma/pragma_queries.cpp +24 -6
  293. package/src/duckdb/src/function/pragma_function.cpp +7 -6
  294. package/src/duckdb/src/function/scalar/date/date_part.cpp +11 -11
  295. package/src/duckdb/src/function/scalar/date/date_trunc.cpp +1 -1
  296. package/src/duckdb/src/function/scalar/date/strftime.cpp +14 -13
  297. package/src/duckdb/src/function/scalar/date/time_bucket.cpp +371 -0
  298. package/src/duckdb/src/function/scalar/date_functions.cpp +1 -0
  299. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +3 -3
  300. package/src/duckdb/src/function/scalar/generic/current_setting.cpp +1 -1
  301. package/src/duckdb/src/function/scalar/generic/stats.cpp +1 -1
  302. package/src/duckdb/src/function/scalar/list/list_aggregates.cpp +9 -9
  303. package/src/duckdb/src/function/scalar/list/list_concat.cpp +1 -1
  304. package/src/duckdb/src/function/scalar/list/list_lambdas.cpp +20 -4
  305. package/src/duckdb/src/function/scalar/list/list_sort.cpp +4 -5
  306. package/src/duckdb/src/function/scalar/list/list_value.cpp +3 -3
  307. package/src/duckdb/src/function/scalar/map/map_extract.cpp +1 -4
  308. package/src/duckdb/src/function/scalar/math/numeric.cpp +35 -5
  309. package/src/duckdb/src/function/scalar/math/setseed.cpp +1 -1
  310. package/src/duckdb/src/function/scalar/math_functions.cpp +1 -0
  311. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +11 -11
  312. package/src/duckdb/src/function/scalar/operators/bitwise.cpp +160 -10
  313. package/src/duckdb/src/function/scalar/sequence/nextval.cpp +5 -5
  314. package/src/duckdb/src/function/scalar/string/bar.cpp +93 -0
  315. package/src/duckdb/src/function/scalar/string/left_right.cpp +5 -1
  316. package/src/duckdb/src/function/scalar/string/length.cpp +30 -4
  317. package/src/duckdb/src/function/scalar/string/like.cpp +5 -4
  318. package/src/duckdb/src/function/scalar/string/regexp.cpp +12 -11
  319. package/src/duckdb/src/function/scalar/string/string_split.cpp +1 -1
  320. package/src/duckdb/src/function/scalar/string/substring.cpp +8 -0
  321. package/src/duckdb/src/function/scalar/string_functions.cpp +7 -0
  322. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +2 -1
  323. package/src/duckdb/src/function/scalar/struct/struct_insert.cpp +2 -2
  324. package/src/duckdb/src/function/scalar/struct/struct_pack.cpp +2 -2
  325. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +4 -4
  326. package/src/duckdb/src/function/scalar/system/system_functions.cpp +9 -2
  327. package/src/duckdb/src/function/scalar/union/union_extract.cpp +2 -1
  328. package/src/duckdb/src/function/scalar/union/union_value.cpp +1 -1
  329. package/src/duckdb/src/function/scalar_function.cpp +5 -4
  330. package/src/duckdb/src/function/scalar_macro_function.cpp +2 -2
  331. package/src/duckdb/src/function/table/arrow.cpp +7 -7
  332. package/src/duckdb/src/function/table/arrow_conversion.cpp +1 -2
  333. package/src/duckdb/src/function/table/checkpoint.cpp +1 -0
  334. package/src/duckdb/src/function/table/copy_csv.cpp +23 -24
  335. package/src/duckdb/src/function/table/glob.cpp +1 -1
  336. package/src/duckdb/src/function/table/pragma_detailed_profiling_output.cpp +4 -4
  337. package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +3 -3
  338. package/src/duckdb/src/function/table/range.cpp +2 -2
  339. package/src/duckdb/src/function/table/read_csv.cpp +225 -126
  340. package/src/duckdb/src/function/table/repeat.cpp +1 -1
  341. package/src/duckdb/src/function/table/system/duckdb_columns.cpp +6 -6
  342. package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +71 -60
  343. package/src/duckdb/src/function/table/system/duckdb_databases.cpp +89 -0
  344. package/src/duckdb/src/function/table/system/duckdb_dependencies.cpp +14 -10
  345. package/src/duckdb/src/function/table/system/duckdb_extensions.cpp +5 -5
  346. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +13 -13
  347. package/src/duckdb/src/function/table/system/duckdb_indexes.cpp +17 -10
  348. package/src/duckdb/src/function/table/system/duckdb_keywords.cpp +2 -2
  349. package/src/duckdb/src/function/table/system/duckdb_schemas.cpp +1 -1
  350. package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +1 -1
  351. package/src/duckdb/src/function/table/system/duckdb_settings.cpp +4 -4
  352. package/src/duckdb/src/function/table/system/duckdb_tables.cpp +10 -6
  353. package/src/duckdb/src/function/table/system/duckdb_types.cpp +1 -1
  354. package/src/duckdb/src/function/table/system/duckdb_views.cpp +2 -2
  355. package/src/duckdb/src/function/table/system/pragma_collations.cpp +1 -1
  356. package/src/duckdb/src/function/table/system/pragma_database_size.cpp +4 -4
  357. package/src/duckdb/src/function/table/system/pragma_storage_info.cpp +42 -19
  358. package/src/duckdb/src/function/table/system/pragma_table_info.cpp +17 -11
  359. package/src/duckdb/src/function/table/system/test_all_types.cpp +22 -19
  360. package/src/duckdb/src/function/table/system/test_vector_types.cpp +8 -8
  361. package/src/duckdb/src/function/table/system_functions.cpp +1 -1
  362. package/src/duckdb/src/function/table/table_scan.cpp +34 -30
  363. package/src/duckdb/src/function/table/unnest.cpp +5 -5
  364. package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
  365. package/src/duckdb/src/function/table_function.cpp +1 -1
  366. package/src/duckdb/src/function/table_macro_function.cpp +2 -2
  367. package/src/duckdb/src/function/udf_function.cpp +4 -4
  368. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +44 -20
  369. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_index_entry.hpp +29 -0
  370. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_schema_entry.hpp +69 -0
  371. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +71 -0
  372. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/index_catalog_entry.hpp +3 -2
  373. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +19 -50
  374. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +48 -39
  375. package/src/duckdb/src/include/duckdb/catalog/catalog_set.hpp +9 -6
  376. package/src/duckdb/src/include/duckdb/catalog/dependency_manager.hpp +3 -3
  377. package/src/duckdb/src/include/duckdb/catalog/duck_catalog.hpp +75 -0
  378. package/src/duckdb/src/include/duckdb/catalog/mapping_value.hpp +2 -1
  379. package/src/duckdb/src/include/duckdb/catalog/similar_catalog_entry.hpp +32 -0
  380. package/src/duckdb/src/include/duckdb/common/allocator.hpp +1 -1
  381. package/src/duckdb/src/include/duckdb/common/assert.hpp +4 -0
  382. package/src/duckdb/src/include/duckdb/common/bind_helpers.hpp +21 -0
  383. package/src/duckdb/src/include/duckdb/common/box_renderer.hpp +4 -0
  384. package/src/duckdb/src/include/duckdb/common/constants.hpp +2 -0
  385. package/src/duckdb/src/include/duckdb/common/enums/access_mode.hpp +17 -0
  386. package/src/duckdb/src/include/duckdb/common/enums/expression_type.hpp +3 -1
  387. package/src/duckdb/src/include/duckdb/common/enums/joinref_type.hpp +25 -0
  388. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +2 -0
  389. package/src/duckdb/src/include/duckdb/common/enums/optimizer_type.hpp +1 -0
  390. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +5 -1
  391. package/src/duckdb/src/include/duckdb/common/enums/relation_type.hpp +1 -0
  392. package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +2 -1
  393. package/src/duckdb/src/include/duckdb/common/enums/tableref_type.hpp +0 -1
  394. package/src/duckdb/src/include/duckdb/common/exception.hpp +10 -0
  395. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +4 -4
  396. package/src/duckdb/src/include/duckdb/common/file_buffer.hpp +3 -16
  397. package/src/duckdb/src/include/duckdb/common/file_opener.hpp +4 -1
  398. package/src/duckdb/src/include/duckdb/common/file_system.hpp +18 -6
  399. package/src/duckdb/src/include/duckdb/common/gzip_file_system.hpp +1 -1
  400. package/src/duckdb/src/include/duckdb/common/helper.hpp +8 -0
  401. package/src/duckdb/src/include/duckdb/common/hive_partitioning.hpp +71 -2
  402. package/src/duckdb/src/include/duckdb/common/http_stats.hpp +1 -1
  403. package/src/duckdb/src/include/duckdb/common/index_vector.hpp +1 -1
  404. package/src/duckdb/src/include/duckdb/common/limits.hpp +3 -0
  405. package/src/duckdb/src/include/duckdb/common/local_file_system.hpp +2 -1
  406. package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +41 -0
  407. package/src/duckdb/src/include/duckdb/common/operator/convert_to_string.hpp +18 -18
  408. package/src/duckdb/src/include/duckdb/common/operator/decimal_cast_operators.hpp +20 -0
  409. package/src/duckdb/src/include/duckdb/common/operator/numeric_cast.hpp +39 -0
  410. package/src/duckdb/src/include/duckdb/common/operator/subtract.hpp +1 -1
  411. package/src/duckdb/src/include/duckdb/common/progress_bar/display/terminal_progress_bar_display.hpp +6 -7
  412. package/src/duckdb/src/include/duckdb/common/radix_partitioning.hpp +4 -0
  413. package/src/duckdb/src/include/duckdb/common/serializer.hpp +3 -3
  414. package/src/duckdb/src/include/duckdb/common/string_util.hpp +2 -0
  415. package/src/duckdb/src/include/duckdb/common/tree_renderer.hpp +1 -1
  416. package/src/duckdb/src/include/duckdb/common/types/bit.hpp +57 -0
  417. package/src/duckdb/src/include/duckdb/common/types/chunk_collection.hpp +1 -1
  418. package/src/duckdb/src/include/duckdb/common/types/conflict_manager.hpp +71 -0
  419. package/src/duckdb/src/include/duckdb/common/types/constraint_conflict_info.hpp +27 -0
  420. package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +2 -0
  421. package/src/duckdb/src/include/duckdb/common/types/hugeint.hpp +3 -3
  422. package/src/duckdb/src/include/duckdb/common/types/partitioned_column_data.hpp +1 -1
  423. package/src/duckdb/src/include/duckdb/common/types/row_data_collection_scanner.hpp +4 -1
  424. package/src/duckdb/src/include/duckdb/common/types/selection_vector.hpp +84 -4
  425. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +5 -1
  426. package/src/duckdb/src/include/duckdb/common/types/validity_mask.hpp +1 -9
  427. package/src/duckdb/src/include/duckdb/common/types/value.hpp +6 -5
  428. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +17 -3
  429. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +5 -5
  430. package/src/duckdb/src/include/duckdb/common/types.hpp +7 -5
  431. package/src/duckdb/src/include/duckdb/common/unicode_bar.hpp +35 -0
  432. package/src/duckdb/src/include/duckdb/common/union_by_name.hpp +93 -0
  433. package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +141 -0
  434. package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +14 -0
  435. package/src/duckdb/src/include/duckdb/common/virtual_file_system.hpp +23 -4
  436. package/src/duckdb/src/include/duckdb/execution/executor.hpp +3 -0
  437. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +2 -2
  438. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +26 -20
  439. package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +17 -8
  440. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +21 -9
  441. package/src/duckdb/src/include/duckdb/execution/index/art/node16.hpp +15 -5
  442. package/src/duckdb/src/include/duckdb/execution/index/art/node256.hpp +14 -5
  443. package/src/duckdb/src/include/duckdb/execution/index/art/node4.hpp +16 -8
  444. package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +14 -5
  445. package/src/duckdb/src/include/duckdb/execution/index/art/prefix.hpp +26 -20
  446. package/src/duckdb/src/include/duckdb/execution/index/art/swizzleable_pointer.hpp +4 -4
  447. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_explain_analyze.hpp +1 -1
  448. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit_percent.hpp +3 -3
  449. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_load.hpp +1 -1
  450. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_pragma.hpp +1 -1
  451. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_prepare.hpp +1 -1
  452. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_reservoir_sample.hpp +2 -2
  453. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_set.hpp +3 -3
  454. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_transaction.hpp +1 -1
  455. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_cross_product.hpp +1 -1
  456. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_positional_join.hpp +50 -0
  457. package/src/duckdb/src/include/duckdb/execution/operator/persistent/base_csv_reader.hpp +10 -11
  458. package/src/duckdb/src/include/duckdb/execution/operator/persistent/buffered_csv_reader.hpp +2 -1
  459. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +9 -3
  460. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_file_handle.hpp +2 -2
  461. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_reader_options.hpp +31 -3
  462. package/src/duckdb/src/include/duckdb/execution/operator/persistent/parallel_csv_reader.hpp +14 -2
  463. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +2 -0
  464. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +7 -1
  465. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_delete.hpp +1 -1
  466. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_export.hpp +2 -2
  467. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_insert.hpp +37 -2
  468. package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_unnest.hpp +5 -1
  469. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +1 -1
  470. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_dummy_scan.hpp +1 -1
  471. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_empty_result.hpp +1 -1
  472. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_expression_scan.hpp +2 -2
  473. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_positional_scan.hpp +41 -0
  474. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_alter.hpp +1 -1
  475. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_attach.hpp +1 -1
  476. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_function.hpp +1 -1
  477. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_index.hpp +9 -17
  478. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_schema.hpp +1 -1
  479. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_sequence.hpp +1 -1
  480. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_view.hpp +1 -1
  481. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_detach.hpp +32 -0
  482. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_drop.hpp +1 -1
  483. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +1 -0
  484. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +37 -13
  485. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +11 -2
  486. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +1 -1
  487. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +12 -3
  488. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +3 -3
  489. package/src/duckdb/src/include/duckdb/function/function_set.hpp +4 -2
  490. package/src/duckdb/src/include/duckdb/function/replacement_scan.hpp +4 -4
  491. package/src/duckdb/src/include/duckdb/function/scalar/bit_functions.hpp +28 -0
  492. package/src/duckdb/src/include/duckdb/function/scalar/date_functions.hpp +4 -0
  493. package/src/duckdb/src/include/duckdb/function/scalar/math_functions.hpp +4 -0
  494. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +2 -2
  495. package/src/duckdb/src/include/duckdb/function/scalar/strftime.hpp +4 -3
  496. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +4 -0
  497. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +7 -0
  498. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +1 -1
  499. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +6 -4
  500. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +6 -6
  501. package/src/duckdb/src/include/duckdb/function/table/table_scan.hpp +3 -2
  502. package/src/duckdb/src/include/duckdb/function/udf_function.hpp +2 -2
  503. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +6 -0
  504. package/src/duckdb/src/include/duckdb/main/client_config.hpp +3 -0
  505. package/src/duckdb/src/include/duckdb/main/client_context.hpp +9 -1
  506. package/src/duckdb/src/include/duckdb/main/config.hpp +10 -8
  507. package/src/duckdb/src/include/duckdb/main/connection.hpp +7 -3
  508. package/src/duckdb/src/include/duckdb/main/connection_manager.hpp +1 -1
  509. package/src/duckdb/src/include/duckdb/main/database.hpp +6 -0
  510. package/src/duckdb/src/include/duckdb/main/database_manager.hpp +3 -0
  511. package/src/duckdb/src/include/duckdb/main/extension_functions.hpp +5 -0
  512. package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +5 -5
  513. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +1 -0
  514. package/src/duckdb/src/include/duckdb/main/prepared_statement.hpp +2 -0
  515. package/src/duckdb/src/include/duckdb/main/query_result.hpp +3 -0
  516. package/src/duckdb/src/include/duckdb/main/relation/read_csv_relation.hpp +10 -11
  517. package/src/duckdb/src/include/duckdb/main/relation/read_json_relation.hpp +23 -0
  518. package/src/duckdb/src/include/duckdb/main/relation/table_function_relation.hpp +11 -2
  519. package/src/duckdb/src/include/duckdb/main/relation/write_csv_relation.hpp +2 -1
  520. package/src/duckdb/src/include/duckdb/main/relation/write_parquet_relation.hpp +34 -0
  521. package/src/duckdb/src/include/duckdb/main/relation.hpp +14 -1
  522. package/src/duckdb/src/include/duckdb/main/settings.hpp +9 -0
  523. package/src/duckdb/src/include/duckdb/main/valid_checker.hpp +1 -1
  524. package/src/duckdb/src/include/duckdb/optimizer/deliminator.hpp +4 -1
  525. package/src/duckdb/src/include/duckdb/optimizer/filter_combiner.hpp +3 -3
  526. package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +1 -1
  527. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +3 -6
  528. package/src/duckdb/src/include/duckdb/optimizer/join_order/estimated_properties.hpp +0 -1
  529. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_node.hpp +0 -1
  530. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_order_optimizer.hpp +1 -2
  531. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_relation.hpp +1 -1
  532. package/src/duckdb/src/include/duckdb/optimizer/matcher/expression_type_matcher.hpp +1 -1
  533. package/src/duckdb/src/include/duckdb/optimizer/matcher/function_matcher.hpp +2 -2
  534. package/src/duckdb/src/include/duckdb/optimizer/statistics_propagator.hpp +1 -0
  535. package/src/duckdb/src/include/duckdb/optimizer/unnest_rewriter.hpp +84 -0
  536. package/src/duckdb/src/include/duckdb/parallel/task_counter.hpp +1 -1
  537. package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +3 -3
  538. package/src/duckdb/src/include/duckdb/parser/column_list.hpp +3 -1
  539. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
  540. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  541. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
  542. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
  543. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
  544. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
  545. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  546. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
  547. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +3 -3
  548. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
  549. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
  550. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
  551. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
  552. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  553. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  554. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
  555. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +1 -1
  556. package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_info.hpp +4 -3
  557. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_database_info.hpp +46 -0
  558. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +1 -1
  559. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_macro_info.hpp +1 -1
  560. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_schema_info.hpp +1 -1
  561. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_sequence_info.hpp +1 -1
  562. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_type_info.hpp +2 -2
  563. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +5 -0
  564. package/src/duckdb/src/include/duckdb/parser/parsed_data/detach_info.hpp +32 -0
  565. package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +28 -1
  566. package/src/duckdb/src/include/duckdb/parser/parsed_data/load_info.hpp +17 -0
  567. package/src/duckdb/src/include/duckdb/parser/parser_extension.hpp +2 -2
  568. package/src/duckdb/src/include/duckdb/parser/qualified_name.hpp +1 -1
  569. package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +1 -1
  570. package/src/duckdb/src/include/duckdb/parser/statement/copy_statement.hpp +4 -0
  571. package/src/duckdb/src/include/duckdb/parser/statement/detach_statement.hpp +29 -0
  572. package/src/duckdb/src/include/duckdb/parser/statement/insert_statement.hpp +33 -0
  573. package/src/duckdb/src/include/duckdb/parser/statement/list.hpp +1 -0
  574. package/src/duckdb/src/include/duckdb/parser/statement/logical_plan_statement.hpp +1 -1
  575. package/src/duckdb/src/include/duckdb/parser/statement/update_statement.hpp +20 -3
  576. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +6 -3
  577. package/src/duckdb/src/include/duckdb/parser/tableref/list.hpp +0 -1
  578. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
  579. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +1 -1
  580. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +24 -0
  581. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +4 -3
  582. package/src/duckdb/src/include/duckdb/planner/binder.hpp +33 -20
  583. package/src/duckdb/src/include/duckdb/planner/bound_tokens.hpp +0 -1
  584. package/src/duckdb/src/include/duckdb/planner/column_binding.hpp +1 -0
  585. package/src/duckdb/src/include/duckdb/planner/constraints/bound_foreign_key_constraint.hpp +2 -2
  586. package/src/duckdb/src/include/duckdb/planner/constraints/bound_unique_constraint.hpp +1 -1
  587. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +2 -2
  588. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +54 -0
  589. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_data.hpp +2 -2
  590. package/src/duckdb/src/include/duckdb/planner/expression_binder/column_alias_binder.hpp +1 -1
  591. package/src/duckdb/src/include/duckdb/planner/expression_binder/returning_binder.hpp +0 -4
  592. package/src/duckdb/src/include/duckdb/planner/expression_binder/table_function_binder.hpp +1 -1
  593. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +3 -4
  594. package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +1 -0
  595. package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +1 -0
  596. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +8 -2
  597. package/src/duckdb/src/include/duckdb/planner/operator/logical_create.hpp +1 -1
  598. package/src/duckdb/src/include/duckdb/planner/operator/logical_create_index.hpp +3 -3
  599. package/src/duckdb/src/include/duckdb/planner/operator/logical_create_table.hpp +1 -1
  600. package/src/duckdb/src/include/duckdb/planner/operator/logical_cross_product.hpp +3 -8
  601. package/src/duckdb/src/include/duckdb/planner/operator/logical_delete.hpp +4 -20
  602. package/src/duckdb/src/include/duckdb/planner/operator/logical_distinct.hpp +1 -1
  603. package/src/duckdb/src/include/duckdb/planner/operator/logical_execute.hpp +1 -1
  604. package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +1 -1
  605. package/src/duckdb/src/include/duckdb/planner/operator/logical_export.hpp +2 -2
  606. package/src/duckdb/src/include/duckdb/planner/operator/logical_expression_get.hpp +1 -1
  607. package/src/duckdb/src/include/duckdb/planner/operator/logical_extension_operator.hpp +2 -3
  608. package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +28 -18
  609. package/src/duckdb/src/include/duckdb/planner/operator/logical_limit_percent.hpp +1 -1
  610. package/src/duckdb/src/include/duckdb/planner/operator/logical_order.hpp +1 -1
  611. package/src/duckdb/src/include/duckdb/planner/operator/logical_positional_join.hpp +28 -0
  612. package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +2 -1
  613. package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +2 -2
  614. package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +2 -2
  615. package/src/duckdb/src/include/duckdb/planner/operator/logical_set_operation.hpp +2 -2
  616. package/src/duckdb/src/include/duckdb/planner/operator/logical_show.hpp +1 -1
  617. package/src/duckdb/src/include/duckdb/planner/operator/logical_simple.hpp +1 -1
  618. package/src/duckdb/src/include/duckdb/planner/operator/logical_top_n.hpp +1 -1
  619. package/src/duckdb/src/include/duckdb/planner/operator/logical_unconditional_join.hpp +31 -0
  620. package/src/duckdb/src/include/duckdb/planner/operator/logical_unnest.hpp +1 -2
  621. package/src/duckdb/src/include/duckdb/planner/operator/logical_update.hpp +4 -18
  622. package/src/duckdb/src/include/duckdb/planner/parsed_data/bound_create_function_info.hpp +1 -1
  623. package/src/duckdb/src/include/duckdb/planner/parsed_data/bound_create_table_info.hpp +1 -1
  624. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +8 -0
  625. package/src/duckdb/src/include/duckdb/planner/tableref/bound_basetableref.hpp +1 -1
  626. package/src/duckdb/src/include/duckdb/planner/tableref/bound_joinref.hpp +5 -1
  627. package/src/duckdb/src/include/duckdb/planner/tableref/{bound_crossproductref.hpp → bound_pos_join_ref.hpp} +9 -9
  628. package/src/duckdb/src/include/duckdb/planner/tableref/bound_subqueryref.hpp +1 -1
  629. package/src/duckdb/src/include/duckdb/planner/tableref/bound_table_function.hpp +1 -1
  630. package/src/duckdb/src/include/duckdb/planner/tableref/list.hpp +0 -1
  631. package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +12 -7
  632. package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +10 -5
  633. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +2 -1
  634. package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +1 -3
  635. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +3 -3
  636. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +1 -1
  637. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +3 -3
  638. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +14 -9
  639. package/src/duckdb/src/include/duckdb/storage/database_size.hpp +24 -0
  640. package/src/duckdb/src/include/duckdb/storage/index.hpp +32 -11
  641. package/src/duckdb/src/include/duckdb/storage/magic_bytes.hpp +28 -0
  642. package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +1 -1
  643. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +3 -3
  644. package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +9 -1
  645. package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +1 -1
  646. package/src/duckdb/src/include/duckdb/storage/storage_extension.hpp +50 -0
  647. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +1 -9
  648. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
  649. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +2 -1
  650. package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +1 -1
  651. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +2 -1
  652. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +6 -4
  653. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +3 -2
  654. package/src/duckdb/src/include/duckdb/storage/table/segment_base.hpp +9 -1
  655. package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +1 -1
  656. package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +1 -1
  657. package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +8 -2
  658. package/src/duckdb/src/include/duckdb/storage/table/update_segment.hpp +2 -0
  659. package/src/duckdb/src/include/duckdb/storage/table_storage_info.hpp +48 -0
  660. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +5 -5
  661. package/src/duckdb/src/include/duckdb/transaction/duck_transaction.hpp +68 -0
  662. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +75 -0
  663. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +9 -7
  664. package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +3 -0
  665. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +9 -42
  666. package/src/duckdb/src/include/duckdb/transaction/transaction_data.hpp +3 -2
  667. package/src/duckdb/src/include/duckdb/transaction/transaction_manager.hpp +12 -41
  668. package/src/duckdb/src/include/duckdb.h +32 -2
  669. package/src/duckdb/src/include/duckdb.hpp +1 -0
  670. package/src/duckdb/src/main/appender.cpp +4 -3
  671. package/src/duckdb/src/main/attached_database.cpp +32 -9
  672. package/src/duckdb/src/main/capi/arrow-c.cpp +1 -1
  673. package/src/duckdb/src/main/capi/data_chunk-c.cpp +20 -1
  674. package/src/duckdb/src/main/capi/duckdb-c.cpp +1 -1
  675. package/src/duckdb/src/main/capi/helper-c.cpp +2 -4
  676. package/src/duckdb/src/main/capi/pending-c.cpp +1 -1
  677. package/src/duckdb/src/main/capi/prepared-c.cpp +2 -2
  678. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
  679. package/src/duckdb/src/main/capi/result-c.cpp +1 -1
  680. package/src/duckdb/src/main/capi/table_function-c.cpp +4 -4
  681. package/src/duckdb/src/main/capi/threading-c.cpp +8 -0
  682. package/src/duckdb/src/main/client_context.cpp +90 -61
  683. package/src/duckdb/src/main/client_context_file_opener.cpp +14 -0
  684. package/src/duckdb/src/main/client_data.cpp +2 -0
  685. package/src/duckdb/src/main/client_verify.cpp +7 -7
  686. package/src/duckdb/src/main/config.cpp +13 -2
  687. package/src/duckdb/src/main/connection.cpp +14 -15
  688. package/src/duckdb/src/main/database.cpp +88 -34
  689. package/src/duckdb/src/main/database_manager.cpp +6 -4
  690. package/src/duckdb/src/main/error_manager.cpp +1 -1
  691. package/src/duckdb/src/main/extension/extension_alias.cpp +1 -0
  692. package/src/duckdb/src/main/extension/extension_helper.cpp +18 -1
  693. package/src/duckdb/src/main/extension/extension_install.cpp +6 -1
  694. package/src/duckdb/src/main/extension/extension_load.cpp +22 -28
  695. package/src/duckdb/src/main/materialized_query_result.cpp +16 -4
  696. package/src/duckdb/src/main/pending_query_result.cpp +4 -4
  697. package/src/duckdb/src/main/prepared_statement.cpp +16 -3
  698. package/src/duckdb/src/main/query_profiler.cpp +6 -6
  699. package/src/duckdb/src/main/query_result.cpp +12 -7
  700. package/src/duckdb/src/main/relation/aggregate_relation.cpp +6 -6
  701. package/src/duckdb/src/main/relation/create_table_relation.cpp +4 -4
  702. package/src/duckdb/src/main/relation/create_view_relation.cpp +7 -6
  703. package/src/duckdb/src/main/relation/cross_product_relation.cpp +6 -5
  704. package/src/duckdb/src/main/relation/delete_relation.cpp +3 -3
  705. package/src/duckdb/src/main/relation/distinct_relation.cpp +1 -1
  706. package/src/duckdb/src/main/relation/explain_relation.cpp +2 -2
  707. package/src/duckdb/src/main/relation/filter_relation.cpp +4 -3
  708. package/src/duckdb/src/main/relation/insert_relation.cpp +3 -3
  709. package/src/duckdb/src/main/relation/join_relation.cpp +7 -7
  710. package/src/duckdb/src/main/relation/limit_relation.cpp +2 -2
  711. package/src/duckdb/src/main/relation/order_relation.cpp +3 -3
  712. package/src/duckdb/src/main/relation/projection_relation.cpp +3 -3
  713. package/src/duckdb/src/main/relation/query_relation.cpp +5 -4
  714. package/src/duckdb/src/main/relation/read_csv_relation.cpp +31 -39
  715. package/src/duckdb/src/main/relation/read_json_relation.cpp +20 -0
  716. package/src/duckdb/src/main/relation/setop_relation.cpp +3 -3
  717. package/src/duckdb/src/main/relation/subquery_relation.cpp +2 -1
  718. package/src/duckdb/src/main/relation/table_function_relation.cpp +29 -17
  719. package/src/duckdb/src/main/relation/table_relation.cpp +7 -7
  720. package/src/duckdb/src/main/relation/update_relation.cpp +9 -6
  721. package/src/duckdb/src/main/relation/value_relation.cpp +6 -6
  722. package/src/duckdb/src/main/relation/view_relation.cpp +4 -3
  723. package/src/duckdb/src/main/relation/write_csv_relation.cpp +6 -3
  724. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +37 -0
  725. package/src/duckdb/src/main/relation.cpp +53 -30
  726. package/src/duckdb/src/main/settings/settings.cpp +20 -3
  727. package/src/duckdb/src/main/stream_query_result.cpp +6 -5
  728. package/src/duckdb/src/main/valid_checker.cpp +1 -1
  729. package/src/duckdb/src/optimizer/cse_optimizer.cpp +5 -5
  730. package/src/duckdb/src/optimizer/deliminator.cpp +16 -9
  731. package/src/duckdb/src/optimizer/expression_heuristics.cpp +2 -2
  732. package/src/duckdb/src/optimizer/expression_rewriter.cpp +7 -7
  733. package/src/duckdb/src/optimizer/filter_combiner.cpp +41 -36
  734. package/src/duckdb/src/optimizer/filter_pullup.cpp +17 -17
  735. package/src/duckdb/src/optimizer/filter_pushdown.cpp +24 -24
  736. package/src/duckdb/src/optimizer/in_clause_rewriter.cpp +14 -14
  737. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +8 -7
  738. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +77 -61
  739. package/src/duckdb/src/optimizer/join_order/join_relation_set.cpp +5 -5
  740. package/src/duckdb/src/optimizer/join_order/query_graph.cpp +1 -1
  741. package/src/duckdb/src/optimizer/optimizer.cpp +19 -11
  742. package/src/duckdb/src/optimizer/pullup/pullup_both_side.cpp +4 -4
  743. package/src/duckdb/src/optimizer/pullup/pullup_filter.cpp +4 -4
  744. package/src/duckdb/src/optimizer/pullup/pullup_from_left.cpp +3 -3
  745. package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +7 -7
  746. package/src/duckdb/src/optimizer/pullup/pullup_set_operation.cpp +2 -2
  747. package/src/duckdb/src/optimizer/pushdown/pushdown_aggregate.cpp +6 -6
  748. package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +8 -7
  749. package/src/duckdb/src/optimizer/pushdown/pushdown_filter.cpp +4 -4
  750. package/src/duckdb/src/optimizer/pushdown/pushdown_get.cpp +5 -5
  751. package/src/duckdb/src/optimizer/pushdown/pushdown_inner_join.cpp +8 -8
  752. package/src/duckdb/src/optimizer/pushdown/pushdown_left_join.cpp +13 -13
  753. package/src/duckdb/src/optimizer/pushdown/pushdown_limit.cpp +2 -2
  754. package/src/duckdb/src/optimizer/pushdown/pushdown_mark_join.cpp +4 -4
  755. package/src/duckdb/src/optimizer/pushdown/pushdown_projection.cpp +6 -6
  756. package/src/duckdb/src/optimizer/pushdown/pushdown_set_operation.cpp +9 -9
  757. package/src/duckdb/src/optimizer/pushdown/pushdown_single_join.cpp +4 -4
  758. package/src/duckdb/src/optimizer/regex_range_filter.cpp +5 -5
  759. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +13 -4
  760. package/src/duckdb/src/optimizer/rule/arithmetic_simplification.cpp +6 -6
  761. package/src/duckdb/src/optimizer/rule/case_simplification.cpp +3 -3
  762. package/src/duckdb/src/optimizer/rule/comparison_simplification.cpp +6 -6
  763. package/src/duckdb/src/optimizer/rule/conjunction_simplification.cpp +2 -2
  764. package/src/duckdb/src/optimizer/rule/constant_folding.cpp +1 -1
  765. package/src/duckdb/src/optimizer/rule/date_part_simplification.cpp +3 -3
  766. package/src/duckdb/src/optimizer/rule/distributivity.cpp +11 -11
  767. package/src/duckdb/src/optimizer/rule/empty_needle_removal.cpp +2 -2
  768. package/src/duckdb/src/optimizer/rule/enum_comparison.cpp +8 -7
  769. package/src/duckdb/src/optimizer/rule/equal_or_null_simplification.cpp +7 -7
  770. package/src/duckdb/src/optimizer/rule/in_clause_simplification_rule.cpp +5 -5
  771. package/src/duckdb/src/optimizer/rule/like_optimizations.cpp +8 -8
  772. package/src/duckdb/src/optimizer/rule/move_constants.cpp +14 -14
  773. package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +3 -3
  774. package/src/duckdb/src/optimizer/statistics/expression/propagate_and_compress.cpp +12 -12
  775. package/src/duckdb/src/optimizer/statistics/expression/propagate_between.cpp +12 -10
  776. package/src/duckdb/src/optimizer/statistics/expression/propagate_cast.cpp +2 -2
  777. package/src/duckdb/src/optimizer/statistics/expression/propagate_comparison.cpp +6 -6
  778. package/src/duckdb/src/optimizer/statistics/expression/propagate_conjunction.cpp +1 -1
  779. package/src/duckdb/src/optimizer/statistics/expression/propagate_constant.cpp +4 -4
  780. package/src/duckdb/src/optimizer/statistics/expression/propagate_operator.cpp +3 -3
  781. package/src/duckdb/src/optimizer/statistics/operator/propagate_aggregate.cpp +3 -3
  782. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +2 -2
  783. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +3 -3
  784. package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +69 -13
  785. package/src/duckdb/src/optimizer/statistics/operator/propagate_order.cpp +1 -1
  786. package/src/duckdb/src/optimizer/statistics/operator/propagate_projection.cpp +3 -3
  787. package/src/duckdb/src/optimizer/statistics/operator/propagate_set_operation.cpp +1 -1
  788. package/src/duckdb/src/optimizer/statistics/operator/propagate_window.cpp +1 -1
  789. package/src/duckdb/src/optimizer/statistics_propagator.cpp +3 -1
  790. package/src/duckdb/src/optimizer/topn_optimizer.cpp +4 -4
  791. package/src/duckdb/src/optimizer/unnest_rewriter.cpp +312 -0
  792. package/src/duckdb/src/parallel/base_pipeline_event.cpp +1 -1
  793. package/src/duckdb/src/parallel/event.cpp +4 -4
  794. package/src/duckdb/src/parallel/executor.cpp +13 -9
  795. package/src/duckdb/src/parallel/pipeline.cpp +4 -4
  796. package/src/duckdb/src/parallel/pipeline_event.cpp +1 -1
  797. package/src/duckdb/src/parallel/pipeline_executor.cpp +1 -1
  798. package/src/duckdb/src/parallel/pipeline_finish_event.cpp +1 -1
  799. package/src/duckdb/src/parallel/pipeline_initialize_event.cpp +3 -3
  800. package/src/duckdb/src/parallel/task_scheduler.cpp +10 -10
  801. package/src/duckdb/src/parser/column_definition.cpp +16 -12
  802. package/src/duckdb/src/parser/column_list.cpp +20 -2
  803. package/src/duckdb/src/parser/constraints/check_constraint.cpp +2 -2
  804. package/src/duckdb/src/parser/constraints/foreign_key_constraint.cpp +3 -3
  805. package/src/duckdb/src/parser/constraints/unique_constraint.cpp +5 -5
  806. package/src/duckdb/src/parser/expression/between_expression.cpp +5 -5
  807. package/src/duckdb/src/parser/expression/case_expression.cpp +5 -5
  808. package/src/duckdb/src/parser/expression/cast_expression.cpp +5 -5
  809. package/src/duckdb/src/parser/expression/collate_expression.cpp +5 -5
  810. package/src/duckdb/src/parser/expression/columnref_expression.cpp +10 -8
  811. package/src/duckdb/src/parser/expression/comparison_expression.cpp +4 -4
  812. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +9 -9
  813. package/src/duckdb/src/parser/expression/constant_expression.cpp +4 -4
  814. package/src/duckdb/src/parser/expression/default_expression.cpp +1 -1
  815. package/src/duckdb/src/parser/expression/function_expression.cpp +12 -11
  816. package/src/duckdb/src/parser/expression/lambda_expression.cpp +4 -4
  817. package/src/duckdb/src/parser/expression/operator_expression.cpp +6 -6
  818. package/src/duckdb/src/parser/expression/parameter_expression.cpp +3 -3
  819. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +4 -4
  820. package/src/duckdb/src/parser/expression/star_expression.cpp +5 -5
  821. package/src/duckdb/src/parser/expression/subquery_expression.cpp +4 -4
  822. package/src/duckdb/src/parser/expression/window_expression.cpp +6 -6
  823. package/src/duckdb/src/parser/parsed_data/alter_function_info.cpp +4 -2
  824. package/src/duckdb/src/parser/parsed_data/alter_info.cpp +2 -2
  825. package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +45 -41
  826. package/src/duckdb/src/parser/parsed_data/create_aggregate_function_info.cpp +3 -3
  827. package/src/duckdb/src/parser/parsed_data/create_collation_info.cpp +3 -3
  828. package/src/duckdb/src/parser/parsed_data/create_copy_function_info.cpp +2 -2
  829. package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +1 -1
  830. package/src/duckdb/src/parser/parsed_data/create_info.cpp +3 -0
  831. package/src/duckdb/src/parser/parsed_data/create_pragma_function_info.cpp +4 -4
  832. package/src/duckdb/src/parser/parsed_data/create_scalar_function_info.cpp +4 -4
  833. package/src/duckdb/src/parser/parsed_data/create_table_function_info.cpp +4 -4
  834. package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +4 -3
  835. package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +56 -3
  836. package/src/duckdb/src/parser/parsed_expression.cpp +17 -17
  837. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +2 -7
  838. package/src/duckdb/src/parser/parser.cpp +148 -31
  839. package/src/duckdb/src/parser/query_node/recursive_cte_node.cpp +2 -2
  840. package/src/duckdb/src/parser/query_node/select_node.cpp +2 -2
  841. package/src/duckdb/src/parser/query_node/set_operation_node.cpp +2 -2
  842. package/src/duckdb/src/parser/query_node.cpp +5 -5
  843. package/src/duckdb/src/parser/result_modifier.cpp +9 -9
  844. package/src/duckdb/src/parser/statement/copy_statement.cpp +102 -0
  845. package/src/duckdb/src/parser/statement/detach_statement.cpp +15 -0
  846. package/src/duckdb/src/parser/statement/explain_statement.cpp +1 -1
  847. package/src/duckdb/src/parser/statement/export_statement.cpp +1 -1
  848. package/src/duckdb/src/parser/statement/extension_statement.cpp +2 -1
  849. package/src/duckdb/src/parser/statement/insert_statement.cpp +87 -1
  850. package/src/duckdb/src/parser/statement/relation_statement.cpp +1 -1
  851. package/src/duckdb/src/parser/statement/set_statement.cpp +3 -3
  852. package/src/duckdb/src/parser/statement/update_statement.cpp +21 -6
  853. package/src/duckdb/src/parser/tableref/basetableref.cpp +2 -2
  854. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +4 -4
  855. package/src/duckdb/src/parser/tableref/joinref.cpp +20 -9
  856. package/src/duckdb/src/parser/tableref/subqueryref.cpp +5 -5
  857. package/src/duckdb/src/parser/tableref/table_function.cpp +2 -2
  858. package/src/duckdb/src/parser/tableref.cpp +2 -5
  859. package/src/duckdb/src/parser/transform/constraint/transform_constraint.cpp +2 -2
  860. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +5 -5
  861. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +9 -7
  862. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +4 -4
  863. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +1 -1
  864. package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +2 -2
  865. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +5 -5
  866. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +1 -1
  867. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +1 -1
  868. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +24 -24
  869. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +1 -1
  870. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +4 -4
  871. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +1 -1
  872. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +1 -1
  873. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +37 -36
  874. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +1 -1
  875. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +1 -1
  876. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +13 -13
  877. package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +2 -0
  878. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +1 -1
  879. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +6 -6
  880. package/src/duckdb/src/parser/transform/helpers/transform_orderby.cpp +1 -1
  881. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +35 -4
  882. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +1 -1
  883. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +8 -8
  884. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +2 -2
  885. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +3 -3
  886. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +5 -3
  887. package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +28 -0
  888. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +6 -6
  889. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +25 -18
  890. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +1 -1
  891. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +1 -1
  892. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +4 -4
  893. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +2 -2
  894. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +2 -2
  895. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +1 -1
  896. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +1 -2
  897. package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +19 -0
  898. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +13 -4
  899. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +1 -1
  900. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +20 -5
  901. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +1 -1
  902. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +9 -2
  903. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +4 -4
  904. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +5 -5
  905. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +8 -7
  906. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +15 -7
  907. package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +95 -0
  908. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +1 -1
  909. package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +1 -1
  910. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +1 -1
  911. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +10 -10
  912. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +12 -10
  913. package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +2 -2
  914. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +1 -1
  915. package/src/duckdb/src/parser/transformer.cpp +6 -2
  916. package/src/duckdb/src/planner/bind_context.cpp +15 -14
  917. package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +9 -9
  918. package/src/duckdb/src/planner/binder/expression/bind_between_expression.cpp +12 -12
  919. package/src/duckdb/src/planner/binder/expression/bind_case_expression.cpp +5 -5
  920. package/src/duckdb/src/planner/binder/expression/bind_cast_expression.cpp +5 -5
  921. package/src/duckdb/src/planner/binder/expression/bind_collate_expression.cpp +1 -1
  922. package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +13 -12
  923. package/src/duckdb/src/planner/binder/expression/bind_comparison_expression.cpp +9 -8
  924. package/src/duckdb/src/planner/binder/expression/bind_conjunction_expression.cpp +3 -2
  925. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +59 -16
  926. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +44 -26
  927. package/src/duckdb/src/planner/binder/expression/bind_macro_expression.cpp +1 -1
  928. package/src/duckdb/src/planner/binder/expression/bind_operator_expression.cpp +6 -6
  929. package/src/duckdb/src/planner/binder/expression/bind_parameter_expression.cpp +3 -3
  930. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +12 -12
  931. package/src/duckdb/src/planner/binder/expression/bind_unnest_expression.cpp +3 -3
  932. package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +19 -19
  933. package/src/duckdb/src/planner/binder/query_node/bind_recursive_cte_node.cpp +1 -1
  934. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +38 -34
  935. package/src/duckdb/src/planner/binder/query_node/bind_setop_node.cpp +5 -5
  936. package/src/duckdb/src/planner/binder/query_node/bind_table_macro_node.cpp +1 -1
  937. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +14 -14
  938. package/src/duckdb/src/planner/binder/query_node/plan_recursive_cte_node.cpp +9 -8
  939. package/src/duckdb/src/planner/binder/query_node/plan_select_node.cpp +31 -31
  940. package/src/duckdb/src/planner/binder/query_node/plan_setop.cpp +21 -19
  941. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +63 -61
  942. package/src/duckdb/src/planner/binder/statement/bind_attach.cpp +1 -1
  943. package/src/duckdb/src/planner/binder/statement/bind_call.cpp +1 -1
  944. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +102 -25
  945. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +145 -54
  946. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +10 -10
  947. package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +13 -12
  948. package/src/duckdb/src/planner/binder/statement/bind_detach.cpp +19 -0
  949. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +30 -5
  950. package/src/duckdb/src/planner/binder/statement/bind_execute.cpp +7 -7
  951. package/src/duckdb/src/planner/binder/statement/bind_explain.cpp +2 -2
  952. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +30 -25
  953. package/src/duckdb/src/planner/binder/statement/bind_extension.cpp +3 -2
  954. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +361 -20
  955. package/src/duckdb/src/planner/binder/statement/bind_load.cpp +1 -1
  956. package/src/duckdb/src/planner/binder/statement/bind_logical_plan.cpp +1 -1
  957. package/src/duckdb/src/planner/binder/statement/bind_prepare.cpp +3 -3
  958. package/src/duckdb/src/planner/binder/statement/bind_show.cpp +2 -2
  959. package/src/duckdb/src/planner/binder/statement/bind_simple.cpp +2 -2
  960. package/src/duckdb/src/planner/binder/statement/bind_summarize.cpp +31 -29
  961. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +75 -57
  962. package/src/duckdb/src/planner/binder/statement/bind_vacuum.cpp +11 -10
  963. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +19 -10
  964. package/src/duckdb/src/planner/binder/tableref/bind_expressionlistref.cpp +4 -4
  965. package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +26 -17
  966. package/src/duckdb/src/planner/binder/tableref/bind_subqueryref.cpp +2 -2
  967. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +22 -18
  968. package/src/duckdb/src/planner/binder/tableref/plan_basetableref.cpp +1 -1
  969. package/src/duckdb/src/planner/binder/tableref/plan_expressionlistref.cpp +3 -3
  970. package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +43 -32
  971. package/src/duckdb/src/planner/binder/tableref/plan_table_function.cpp +1 -1
  972. package/src/duckdb/src/planner/binder.cpp +40 -23
  973. package/src/duckdb/src/planner/bound_result_modifier.cpp +3 -3
  974. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +6 -6
  975. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +4 -3
  976. package/src/duckdb/src/planner/expression/bound_case_expression.cpp +12 -12
  977. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +9 -8
  978. package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +4 -4
  979. package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -3
  980. package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +5 -5
  981. package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
  982. package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
  983. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +8 -7
  984. package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +3 -3
  985. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +71 -0
  986. package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +4 -4
  987. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +3 -3
  988. package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +3 -3
  989. package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
  990. package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +4 -4
  991. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -7
  992. package/src/duckdb/src/planner/expression.cpp +1 -1
  993. package/src/duckdb/src/planner/expression_binder/alter_binder.cpp +3 -4
  994. package/src/duckdb/src/planner/expression_binder/check_binder.cpp +16 -2
  995. package/src/duckdb/src/planner/expression_binder/column_alias_binder.cpp +6 -4
  996. package/src/duckdb/src/planner/expression_binder/constant_binder.cpp +1 -1
  997. package/src/duckdb/src/planner/expression_binder/group_binder.cpp +2 -2
  998. package/src/duckdb/src/planner/expression_binder/having_binder.cpp +5 -2
  999. package/src/duckdb/src/planner/expression_binder/lateral_binder.cpp +22 -6
  1000. package/src/duckdb/src/planner/expression_binder/order_binder.cpp +6 -5
  1001. package/src/duckdb/src/planner/expression_binder/relation_binder.cpp +1 -1
  1002. package/src/duckdb/src/planner/expression_binder/returning_binder.cpp +1 -9
  1003. package/src/duckdb/src/planner/expression_binder/select_binder.cpp +7 -2
  1004. package/src/duckdb/src/planner/expression_binder/table_function_binder.cpp +15 -2
  1005. package/src/duckdb/src/planner/expression_binder.cpp +6 -6
  1006. package/src/duckdb/src/planner/expression_iterator.cpp +4 -7
  1007. package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
  1008. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  1009. package/src/duckdb/src/planner/joinside.cpp +10 -9
  1010. package/src/duckdb/src/planner/logical_operator.cpp +8 -3
  1011. package/src/duckdb/src/planner/logical_operator_visitor.cpp +11 -1
  1012. package/src/duckdb/src/planner/operator/logical_aggregate.cpp +8 -7
  1013. package/src/duckdb/src/planner/operator/logical_any_join.cpp +2 -2
  1014. package/src/duckdb/src/planner/operator/logical_column_data_get.cpp +4 -3
  1015. package/src/duckdb/src/planner/operator/logical_comparison_join.cpp +1 -1
  1016. package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +10 -5
  1017. package/src/duckdb/src/planner/operator/logical_create.cpp +1 -1
  1018. package/src/duckdb/src/planner/operator/logical_create_index.cpp +2 -2
  1019. package/src/duckdb/src/planner/operator/logical_create_table.cpp +1 -1
  1020. package/src/duckdb/src/planner/operator/logical_cross_product.cpp +3 -19
  1021. package/src/duckdb/src/planner/operator/logical_delete.cpp +22 -1
  1022. package/src/duckdb/src/planner/operator/logical_delim_join.cpp +1 -1
  1023. package/src/duckdb/src/planner/operator/logical_distinct.cpp +1 -1
  1024. package/src/duckdb/src/planner/operator/logical_empty_result.cpp +1 -1
  1025. package/src/duckdb/src/planner/operator/logical_explain.cpp +1 -1
  1026. package/src/duckdb/src/planner/operator/logical_expression_get.cpp +1 -1
  1027. package/src/duckdb/src/planner/operator/logical_filter.cpp +6 -6
  1028. package/src/duckdb/src/planner/operator/logical_get.cpp +10 -10
  1029. package/src/duckdb/src/planner/operator/logical_insert.cpp +26 -3
  1030. package/src/duckdb/src/planner/operator/logical_limit.cpp +2 -2
  1031. package/src/duckdb/src/planner/operator/logical_limit_percent.cpp +1 -1
  1032. package/src/duckdb/src/planner/operator/logical_order.cpp +3 -3
  1033. package/src/duckdb/src/planner/operator/logical_positional_join.cpp +30 -0
  1034. package/src/duckdb/src/planner/operator/logical_projection.cpp +2 -2
  1035. package/src/duckdb/src/planner/operator/logical_sample.cpp +4 -4
  1036. package/src/duckdb/src/planner/operator/logical_show.cpp +1 -1
  1037. package/src/duckdb/src/planner/operator/logical_simple.cpp +33 -2
  1038. package/src/duckdb/src/planner/operator/logical_top_n.cpp +1 -1
  1039. package/src/duckdb/src/planner/operator/logical_unconditional_join.cpp +26 -0
  1040. package/src/duckdb/src/planner/operator/logical_unnest.cpp +2 -2
  1041. package/src/duckdb/src/planner/operator/logical_update.cpp +20 -1
  1042. package/src/duckdb/src/planner/operator/logical_window.cpp +1 -1
  1043. package/src/duckdb/src/planner/parsed_data/bound_create_table_info.cpp +1 -1
  1044. package/src/duckdb/src/planner/planner.cpp +8 -9
  1045. package/src/duckdb/src/planner/pragma_handler.cpp +3 -3
  1046. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +66 -60
  1047. package/src/duckdb/src/planner/subquery/rewrite_correlated_expressions.cpp +4 -3
  1048. package/src/duckdb/src/planner/table_binding.cpp +61 -30
  1049. package/src/duckdb/src/planner/table_filter.cpp +6 -6
  1050. package/src/duckdb/src/storage/arena_allocator.cpp +37 -7
  1051. package/src/duckdb/src/storage/block.cpp +2 -2
  1052. package/src/duckdb/src/storage/buffer/buffer_handle.cpp +1 -1
  1053. package/src/duckdb/src/storage/buffer_manager.cpp +48 -33
  1054. package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +2 -2
  1055. package/src/duckdb/src/storage/checkpoint/table_data_reader.cpp +1 -1
  1056. package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +6 -4
  1057. package/src/duckdb/src/storage/checkpoint_manager.cpp +14 -13
  1058. package/src/duckdb/src/storage/compression/bitpacking.cpp +5 -4
  1059. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +3 -3
  1060. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +5 -5
  1061. package/src/duckdb/src/storage/compression/fsst.cpp +40 -25
  1062. package/src/duckdb/src/storage/compression/rle.cpp +3 -3
  1063. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +8 -8
  1064. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +2 -2
  1065. package/src/duckdb/src/storage/data_table.cpp +309 -104
  1066. package/src/duckdb/src/storage/index.cpp +12 -6
  1067. package/src/duckdb/src/storage/local_storage.cpp +27 -32
  1068. package/src/duckdb/src/storage/magic_bytes.cpp +31 -0
  1069. package/src/duckdb/src/storage/meta_block_writer.cpp +1 -1
  1070. package/src/duckdb/src/storage/partial_block_manager.cpp +4 -4
  1071. package/src/duckdb/src/storage/single_file_block_manager.cpp +108 -71
  1072. package/src/duckdb/src/storage/statistics/base_statistics.cpp +13 -12
  1073. package/src/duckdb/src/storage/statistics/column_statistics.cpp +2 -2
  1074. package/src/duckdb/src/storage/statistics/distinct_statistics.cpp +2 -2
  1075. package/src/duckdb/src/storage/statistics/list_statistics.cpp +4 -4
  1076. package/src/duckdb/src/storage/statistics/numeric_statistics.cpp +106 -8
  1077. package/src/duckdb/src/storage/statistics/segment_statistics.cpp +2 -2
  1078. package/src/duckdb/src/storage/statistics/string_statistics.cpp +4 -4
  1079. package/src/duckdb/src/storage/statistics/struct_statistics.cpp +5 -4
  1080. package/src/duckdb/src/storage/storage_info.cpp +3 -2
  1081. package/src/duckdb/src/storage/storage_manager.cpp +8 -4
  1082. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
  1083. package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +4 -4
  1084. package/src/duckdb/src/storage/table/column_data.cpp +30 -38
  1085. package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +5 -5
  1086. package/src/duckdb/src/storage/table/column_segment.cpp +16 -16
  1087. package/src/duckdb/src/storage/table/list_column_data.cpp +11 -11
  1088. package/src/duckdb/src/storage/table/row_group.cpp +21 -18
  1089. package/src/duckdb/src/storage/table/row_group_collection.cpp +21 -22
  1090. package/src/duckdb/src/storage/table/scan_state.cpp +3 -3
  1091. package/src/duckdb/src/storage/table/segment_tree.cpp +5 -5
  1092. package/src/duckdb/src/storage/table/standard_column_data.cpp +11 -11
  1093. package/src/duckdb/src/storage/table/struct_column_data.cpp +13 -13
  1094. package/src/duckdb/src/storage/table/table_statistics.cpp +1 -1
  1095. package/src/duckdb/src/storage/table/update_segment.cpp +22 -6
  1096. package/src/duckdb/src/storage/table_index_list.cpp +12 -10
  1097. package/src/duckdb/src/storage/wal_replay.cpp +6 -6
  1098. package/src/duckdb/src/transaction/commit_state.cpp +9 -3
  1099. package/src/duckdb/src/transaction/duck_transaction.cpp +155 -0
  1100. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +342 -0
  1101. package/src/duckdb/src/transaction/meta_transaction.cpp +3 -0
  1102. package/src/duckdb/src/transaction/transaction.cpp +10 -132
  1103. package/src/duckdb/src/transaction/transaction_context.cpp +2 -2
  1104. package/src/duckdb/src/transaction/transaction_manager.cpp +1 -321
  1105. package/src/duckdb/src/verification/copied_statement_verifier.cpp +1 -1
  1106. package/src/duckdb/src/verification/deserialized_statement_verifier.cpp +1 -1
  1107. package/src/duckdb/src/verification/external_statement_verifier.cpp +1 -1
  1108. package/src/duckdb/src/verification/parsed_statement_verifier.cpp +2 -2
  1109. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +12 -12
  1110. package/src/duckdb/src/verification/statement_verifier.cpp +5 -4
  1111. package/src/duckdb/src/verification/unoptimized_statement_verifier.cpp +1 -1
  1112. package/src/duckdb/third_party/fast_float/fast_float/fast_float.h +22 -19
  1113. package/src/duckdb/third_party/fmt/include/fmt/core.h +5 -3
  1114. package/src/duckdb/third_party/fmt/include/fmt/format.h +10 -10
  1115. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +20 -1
  1116. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +26 -0
  1117. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +531 -1004
  1118. package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +1 -0
  1119. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +19942 -19542
  1120. package/src/duckdb/third_party/libpg_query/src_backend_parser_scan.cpp +2 -2
  1121. package/src/duckdb/third_party/mbedtls/library/bignum.cpp +1 -3
  1122. package/src/duckdb/third_party/thrift/thrift/TApplicationException.h +0 -3
  1123. package/src/duckdb/third_party/thrift/thrift/Thrift.h +8 -2
  1124. package/src/duckdb/third_party/zstd/decompress/huf_decompress.cpp +4 -4
  1125. package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +6 -6
  1126. package/src/duckdb/ub_extension_json_json_functions.cpp +8 -0
  1127. package/src/duckdb/ub_src_catalog.cpp +4 -0
  1128. package/src/duckdb/ub_src_catalog_catalog_entry.cpp +6 -0
  1129. package/src/duckdb/ub_src_common.cpp +2 -0
  1130. package/src/duckdb/ub_src_common_types.cpp +6 -0
  1131. package/src/duckdb/ub_src_execution_operator_join.cpp +2 -0
  1132. package/src/duckdb/ub_src_execution_operator_scan.cpp +2 -0
  1133. package/src/duckdb/ub_src_execution_operator_schema.cpp +2 -0
  1134. package/src/duckdb/ub_src_execution_physical_plan.cpp +2 -0
  1135. package/src/duckdb/ub_src_function_cast.cpp +2 -0
  1136. package/src/duckdb/ub_src_function_scalar_date.cpp +2 -0
  1137. package/src/duckdb/ub_src_function_scalar_string.cpp +2 -0
  1138. package/src/duckdb/ub_src_function_table_system.cpp +2 -2
  1139. package/src/duckdb/ub_src_main.cpp +0 -2
  1140. package/src/duckdb/ub_src_main_relation.cpp +4 -0
  1141. package/src/duckdb/ub_src_optimizer.cpp +2 -0
  1142. package/src/duckdb/ub_src_parser_statement.cpp +2 -0
  1143. package/src/duckdb/ub_src_parser_tableref.cpp +0 -2
  1144. package/src/duckdb/ub_src_parser_transform_statement.cpp +6 -0
  1145. package/src/duckdb/ub_src_planner_binder_statement.cpp +2 -0
  1146. package/src/duckdb/ub_src_planner_binder_tableref.cpp +0 -4
  1147. package/src/duckdb/ub_src_planner_expression.cpp +2 -0
  1148. package/src/duckdb/ub_src_planner_operator.cpp +4 -0
  1149. package/src/duckdb/ub_src_storage.cpp +2 -0
  1150. package/src/duckdb/ub_src_transaction.cpp +4 -0
  1151. package/src/duckdb_node.hpp +8 -0
  1152. package/src/statement.cpp +5 -50
  1153. package/src/utils.cpp +42 -0
  1154. package/test/replacement_scan.test.ts +144 -0
  1155. package/test/udf.test.ts +9 -0
  1156. package/src/duckdb/src/function/table/system/pragma_database_list.cpp +0 -59
  1157. package/src/duckdb/src/include/duckdb/function/replacement_open.hpp +0 -45
  1158. package/src/duckdb/src/include/duckdb/parser/tableref/crossproductref.hpp +0 -36
  1159. package/src/duckdb/src/main/extension_prefix_opener.cpp +0 -47
  1160. package/src/duckdb/src/parser/tableref/crossproductref.cpp +0 -43
  1161. package/src/duckdb/src/planner/binder/tableref/bind_crossproductref.cpp +0 -31
  1162. package/src/duckdb/src/planner/binder/tableref/plan_crossproductref.cpp +0 -26
@@ -17,20 +17,23 @@
17
17
  #include "duckdb/storage/table/scan_state.hpp"
18
18
  #include "duckdb/storage/meta_block_writer.hpp"
19
19
  #include "duckdb/execution/expression_executor.hpp"
20
+ #include "duckdb/common/types/constraint_conflict_info.hpp"
20
21
 
21
22
  namespace duckdb {
22
23
 
23
24
  class ClientContext;
24
25
  class TableIOManager;
25
26
  class Transaction;
27
+ class ConflictManager;
26
28
 
27
29
  struct IndexLock;
28
30
 
29
31
  //! The index is an abstract base class that serves as the basis for indexes
30
32
  class Index {
31
33
  public:
32
- Index(IndexType type, TableIOManager &table_io_manager, const vector<column_t> &column_ids,
33
- const vector<unique_ptr<Expression>> &unbound_expressions, IndexConstraintType constraint_type);
34
+ Index(AttachedDatabase &db, IndexType type, TableIOManager &table_io_manager, const vector<column_t> &column_ids,
35
+ const vector<unique_ptr<Expression>> &unbound_expressions, IndexConstraintType constraint_type,
36
+ bool track_memory);
34
37
  virtual ~Index() = default;
35
38
 
36
39
  //! The type of the index
@@ -39,7 +42,7 @@ public:
39
42
  TableIOManager &table_io_manager;
40
43
  //! Column identifiers to extract from the base table
41
44
  vector<column_t> column_ids;
42
- //! unordered_set of column_ids used by the index
45
+ //! Unordered_set of column_ids used by the index
43
46
  unordered_set<column_t> column_id_set;
44
47
  //! Unbound expressions used by the index
45
48
  vector<unique_ptr<Expression>> unbound_expressions;
@@ -47,18 +50,29 @@ public:
47
50
  vector<PhysicalType> types;
48
51
  //! The logical types of the expressions
49
52
  vector<LogicalType> logical_types;
50
- //! constraint type
53
+ //! Index constraint type (primary key, foreign key, ...)
51
54
  IndexConstraintType constraint_type;
52
55
 
56
+ //! Attached database instance
57
+ AttachedDatabase &db;
58
+ //! Buffer manager of the database instance
59
+ BufferManager &buffer_manager;
60
+ //! The size of the index in memory
61
+ //! This does not track the size of the index meta information, but only allocated nodes and leaves
62
+ idx_t memory_size;
63
+ //! Flag determining if this index's size is tracked by the buffer manager
64
+ bool track_memory;
65
+
53
66
  public:
54
67
  //! Initialize a scan on the index with the given expression and column ids
55
68
  //! to fetch from the base table when we only have one query predicate
56
- virtual unique_ptr<IndexScanState> InitializeScanSinglePredicate(Transaction &transaction, Value value,
69
+ virtual unique_ptr<IndexScanState> InitializeScanSinglePredicate(const Transaction &transaction, const Value &value,
57
70
  ExpressionType expressionType) = 0;
58
71
  //! Initialize a scan on the index with the given expression and column ids
59
72
  //! to fetch from the base table for two query predicates
60
- virtual unique_ptr<IndexScanState> InitializeScanTwoPredicates(Transaction &transaction, Value low_value,
61
- ExpressionType low_expression_type, Value high_value,
73
+ virtual unique_ptr<IndexScanState> InitializeScanTwoPredicates(Transaction &transaction, const Value &low_value,
74
+ ExpressionType low_expression_type,
75
+ const Value &high_value,
62
76
  ExpressionType high_expression_type) = 0;
63
77
  //! Perform a lookup on the index, fetching up to max_count result ids. Returns true if all row ids were fetched,
64
78
  //! and false otherwise.
@@ -72,10 +86,12 @@ public:
72
86
  bool Append(DataChunk &entries, Vector &row_identifiers);
73
87
  //! Verify that data can be appended to the index
74
88
  virtual void VerifyAppend(DataChunk &chunk) = 0;
89
+ //! Verify that data can be appended to the index
90
+ virtual void VerifyAppend(DataChunk &chunk, ConflictManager &conflict_manager) = 0;
75
91
  //! Verify that data can be appended to the index for foreign key constraint
76
- virtual void VerifyAppendForeignKey(DataChunk &chunk, string *err_msg_ptr) = 0;
92
+ virtual void VerifyAppendForeignKey(DataChunk &chunk) = 0;
77
93
  //! Verify that data can be delete from the index for foreign key constraint
78
- virtual void VerifyDeleteForeignKey(DataChunk &chunk, string *err_msg_ptr) = 0;
94
+ virtual void VerifyDeleteForeignKey(DataChunk &chunk) = 0;
79
95
 
80
96
  //! Called when data inside the index is Deleted
81
97
  virtual void Delete(IndexLock &state, DataChunk &entries, Vector &row_identifiers) = 0;
@@ -83,8 +99,6 @@ public:
83
99
 
84
100
  //! Insert data into the index. Does not lock the index.
85
101
  virtual bool Insert(IndexLock &lock, DataChunk &input, Vector &row_identifiers) = 0;
86
- //! Construct an index from sorted chunks of keys.
87
- virtual void ConstructAndMerge(IndexLock &lock, PayloadScanner &scanner, Allocator &allocator) = 0;
88
102
 
89
103
  //! Merge other_index into this index.
90
104
  virtual bool MergeIndexes(IndexLock &state, Index *other_index) = 0;
@@ -92,10 +106,16 @@ public:
92
106
 
93
107
  //! Returns the string representation of an index
94
108
  virtual string ToString() = 0;
109
+ //! Verifies that the memory_size value of the index matches its actual size
110
+ virtual void Verify() = 0;
95
111
 
96
112
  //! Returns true if the index is affected by updates on the specified column ids, and false otherwise
97
113
  bool IndexIsUpdated(const vector<PhysicalIndex> &column_ids) const;
98
114
 
115
+ //! Returns how many of the input values were found in the 'input' chunk, with the option to also record what those
116
+ //! matches were. For this purpose, nulls count as a match, and are returned in 'null_count'
117
+ virtual void LookupValues(DataChunk &input, ConflictManager &conflict_manager) = 0;
118
+
99
119
  //! Returns unique flag
100
120
  bool IsUnique() {
101
121
  return (constraint_type == IndexConstraintType::UNIQUE || constraint_type == IndexConstraintType::PRIMARY);
@@ -110,6 +130,7 @@ public:
110
130
  }
111
131
  //! Serializes the index and returns the pair of block_id offset positions
112
132
  virtual BlockPointer Serialize(duckdb::MetaBlockWriter &writer);
133
+ BlockPointer GetBlockPointer();
113
134
 
114
135
  //! Returns block/offset of where index was most recently serialized.
115
136
  BlockPointer GetSerializedDataPointer() const {
@@ -0,0 +1,28 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/storage/magic_bytes.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #pragma once
10
+
11
+ #include "duckdb/common/common.hpp"
12
+
13
+ namespace duckdb {
14
+ class FileSystem;
15
+
16
+ enum class DataFileType : uint8_t {
17
+ FILE_DOES_NOT_EXIST, // file does not exist
18
+ DUCKDB_FILE, // duckdb database file
19
+ SQLITE_FILE, // sqlite database file
20
+ PARQUET_FILE // parquet file
21
+ };
22
+
23
+ class MagicBytes {
24
+ public:
25
+ static DataFileType CheckMagicBytes(FileSystem *fs, const string &path);
26
+ };
27
+
28
+ } // namespace duckdb
@@ -49,7 +49,7 @@ public:
49
49
 
50
50
  void Put(string key, shared_ptr<ObjectCacheEntry> value) {
51
51
  lock_guard<mutex> glock(lock);
52
- cache[key] = move(value);
52
+ cache[key] = std::move(value);
53
53
  }
54
54
 
55
55
  DUCKDB_API static ObjectCache &GetObjectCache(ClientContext &context);
@@ -36,7 +36,7 @@ struct PartialBlockState {
36
36
  };
37
37
 
38
38
  struct PartialBlock {
39
- explicit PartialBlock(PartialBlockState state) : state(move(state)) {
39
+ explicit PartialBlock(PartialBlockState state) : state(std::move(state)) {
40
40
  }
41
41
  virtual ~PartialBlock() {
42
42
  }
@@ -68,10 +68,10 @@ public:
68
68
  // 20% free / 80% utilization
69
69
  static constexpr const idx_t DEFAULT_MAX_PARTIAL_BLOCK_SIZE = Storage::BLOCK_SIZE / 5 * 4;
70
70
  // Max number of shared references to a block. No effective limit by default.
71
- static constexpr const idx_t DEFAULT_MAX_USE_COUNT = 1 << 20;
71
+ static constexpr const idx_t DEFAULT_MAX_USE_COUNT = 1u << 20;
72
72
  // No point letting map size grow unbounded. We'll drop blocks with the
73
73
  // least free space first.
74
- static constexpr const idx_t MAX_BLOCK_MAP_SIZE = 1 << 31;
74
+ static constexpr const idx_t MAX_BLOCK_MAP_SIZE = 1u << 31;
75
75
 
76
76
  public:
77
77
  PartialBlockManager(BlockManager &block_manager, uint32_t max_partial_block_size = DEFAULT_MAX_PARTIAL_BLOCK_SIZE,
@@ -17,6 +17,7 @@
17
17
  #include "duckdb/common/vector.hpp"
18
18
 
19
19
  namespace duckdb {
20
+
20
21
  class DatabaseInstance;
21
22
 
22
23
  //! SingleFileBlockManager is an implementation for a BlockManager which manages blocks in a single file
@@ -25,7 +26,11 @@ class SingleFileBlockManager : public BlockManager {
25
26
  static constexpr uint64_t BLOCK_START = Storage::FILE_HEADER_SIZE * 3;
26
27
 
27
28
  public:
28
- SingleFileBlockManager(AttachedDatabase &db, string path, bool read_only, bool create_new, bool use_direct_io);
29
+ SingleFileBlockManager(AttachedDatabase &db, string path, bool read_only, bool use_direct_io);
30
+
31
+ void GetFileFlags(uint8_t &flags, FileLockType &lock, bool create_new);
32
+ void CreateNewDatabase();
33
+ void LoadExistingDatabase();
29
34
 
30
35
  //! Creates a new Block using the specified block_id and returns a pointer
31
36
  unique_ptr<Block> CreateBlock(block_id_t block_id, FileBuffer *source_buffer) override;
@@ -59,6 +64,9 @@ private:
59
64
 
60
65
  void Initialize(DatabaseHeader &header);
61
66
 
67
+ void ReadAndChecksum(FileBuffer &handle, uint64_t location) const;
68
+ void ChecksumAndWrite(FileBuffer &handle, uint64_t location) const;
69
+
62
70
  //! Return the blocks to which we will write the free list and modified blocks
63
71
  vector<block_id_t> GetFreeListBlocks();
64
72
 
@@ -63,7 +63,7 @@ public:
63
63
  virtual void Serialize(Serializer &serializer) const;
64
64
  virtual void Serialize(FieldWriter &writer) const;
65
65
 
66
- idx_t GetDistinctCount();
66
+ virtual idx_t GetDistinctCount();
67
67
 
68
68
  static unique_ptr<BaseStatistics> Deserialize(Deserializer &source, LogicalType type);
69
69
 
@@ -0,0 +1,50 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/storage/storage_extension.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #pragma once
10
+
11
+ #include "duckdb/common/common.hpp"
12
+ #include "duckdb/common/enums/access_mode.hpp"
13
+ #include "duckdb/parser/tableref/table_function_ref.hpp"
14
+
15
+ namespace duckdb {
16
+ class AttachedDatabase;
17
+ struct AttachInfo;
18
+ class Catalog;
19
+ class TransactionManager;
20
+
21
+ //! The StorageExtensionInfo holds static information relevant to the storage extension
22
+ struct StorageExtensionInfo {
23
+ DUCKDB_API virtual ~StorageExtensionInfo() {
24
+ }
25
+ };
26
+
27
+ typedef unique_ptr<Catalog> (*attach_function_t)(StorageExtensionInfo *storage_info, AttachedDatabase &db,
28
+ const string &name, AttachInfo &info, AccessMode access_mode);
29
+ typedef unique_ptr<TransactionManager> (*create_transaction_manager_t)(StorageExtensionInfo *storage_info,
30
+ AttachedDatabase &db, Catalog &catalog);
31
+ typedef unique_ptr<TableFunctionRef> (*create_database_t)(StorageExtensionInfo *info, ClientContext &context,
32
+ const string &database_name, const string &source_path);
33
+ typedef unique_ptr<TableFunctionRef> (*drop_database_t)(StorageExtensionInfo *storage_info, ClientContext &context,
34
+ const string &database_name);
35
+
36
+ class StorageExtension {
37
+ public:
38
+ attach_function_t attach;
39
+ create_transaction_manager_t create_transaction_manager;
40
+ create_database_t create_database;
41
+ drop_database_t drop_database;
42
+
43
+ //! Additional info passed to the various storage functions
44
+ shared_ptr<StorageExtensionInfo> storage_info;
45
+
46
+ DUCKDB_API virtual ~StorageExtension() {
47
+ }
48
+ };
49
+
50
+ } // namespace duckdb
@@ -13,6 +13,7 @@
13
13
  #include "duckdb/storage/data_table.hpp"
14
14
  #include "duckdb/storage/table_io_manager.hpp"
15
15
  #include "duckdb/storage/write_ahead_log.hpp"
16
+ #include "duckdb/storage/database_size.hpp"
16
17
 
17
18
  namespace duckdb {
18
19
  class BlockManager;
@@ -22,15 +23,6 @@ class DatabaseInstance;
22
23
  class TransactionManager;
23
24
  class TableCatalogEntry;
24
25
 
25
- struct DatabaseSize {
26
- idx_t total_blocks = 0;
27
- idx_t block_size = 0;
28
- idx_t free_blocks = 0;
29
- idx_t used_blocks = 0;
30
- idx_t bytes = 0;
31
- idx_t wal_size = 0;
32
- };
33
-
34
26
  class StorageCommitState {
35
27
  public:
36
28
  // Destruction of this object, without prior call to FlushCommit,
@@ -61,7 +61,7 @@ public:
61
61
  static unique_ptr<CompressionAppendState> StringInitAppend(ColumnSegment &segment) {
62
62
  auto &buffer_manager = BufferManager::GetBufferManager(segment.db);
63
63
  auto handle = buffer_manager.Pin(segment.block);
64
- return make_unique<CompressionAppendState>(move(handle));
64
+ return make_unique<CompressionAppendState>(std::move(handle));
65
65
  }
66
66
 
67
67
  static idx_t StringAppend(CompressionAppendState &append_state, ColumnSegment &segment, SegmentStatistics &stats,
@@ -25,6 +25,7 @@ class DatabaseInstance;
25
25
  class RowGroup;
26
26
  class RowGroupWriter;
27
27
  class TableDataWriter;
28
+ class TableStorageInfo;
28
29
  struct TransactionData;
29
30
 
30
31
  struct DataTableInfo;
@@ -123,7 +124,7 @@ public:
123
124
  idx_t start_row, Deserializer &source, const LogicalType &type,
124
125
  ColumnData *parent);
125
126
 
126
- virtual void GetStorageInfo(idx_t row_group_index, vector<idx_t> col_path, vector<vector<Value>> &result);
127
+ virtual void GetStorageInfo(idx_t row_group_index, vector<idx_t> col_path, TableStorageInfo &result);
127
128
  virtual void Verify(RowGroup &parent);
128
129
 
129
130
  static shared_ptr<ColumnData> CreateColumn(BlockManager &block_manager, DataTableInfo &info, idx_t column_index,
@@ -58,7 +58,7 @@ public:
58
58
 
59
59
  void DeserializeColumn(Deserializer &source) override;
60
60
 
61
- void GetStorageInfo(idx_t row_group_index, vector<idx_t> col_path, vector<vector<Value>> &result) override;
61
+ void GetStorageInfo(idx_t row_group_index, vector<idx_t> col_path, TableStorageInfo &result) override;
62
62
 
63
63
  private:
64
64
  list_entry_t FetchListEntry(idx_t row_idx);
@@ -29,6 +29,7 @@ struct DataTableInfo;
29
29
  class ExpressionExecutor;
30
30
  class RowGroupWriter;
31
31
  class UpdateSegment;
32
+ class TableStorageInfo;
32
33
  class Vector;
33
34
  struct ColumnCheckpointState;
34
35
  struct RowGroupPointer;
@@ -149,7 +150,7 @@ public:
149
150
  void MergeIntoStatistics(idx_t column_idx, BaseStatistics &other);
150
151
  unique_ptr<BaseStatistics> GetStatistics(idx_t column_idx);
151
152
 
152
- void GetStorageInfo(idx_t row_group_index, vector<vector<Value>> &result);
153
+ void GetStorageInfo(idx_t row_group_index, TableStorageInfo &result);
153
154
 
154
155
  void Verify();
155
156
 
@@ -21,6 +21,8 @@ class TableDataWriter;
21
21
  class TableIndexList;
22
22
  class TableStatistics;
23
23
 
24
+ class BoundConstraint;
25
+
24
26
  class RowGroupCollection {
25
27
  public:
26
28
  RowGroupCollection(shared_ptr<DataTableInfo> info, BlockManager &block_manager, vector<LogicalType> types,
@@ -49,12 +51,12 @@ public:
49
51
  void InitializeParallelScan(ParallelCollectionScanState &state);
50
52
  bool NextParallelScan(ClientContext &context, ParallelCollectionScanState &state, CollectionScanState &scan_state);
51
53
 
52
- bool Scan(Transaction &transaction, const vector<column_t> &column_ids,
54
+ bool Scan(DuckTransaction &transaction, const vector<column_t> &column_ids,
53
55
  const std::function<bool(DataChunk &chunk)> &fun);
54
- bool Scan(Transaction &transaction, const std::function<bool(DataChunk &chunk)> &fun);
56
+ bool Scan(DuckTransaction &transaction, const std::function<bool(DataChunk &chunk)> &fun);
55
57
 
56
58
  void Fetch(TransactionData transaction, DataChunk &result, const vector<column_t> &column_ids,
57
- Vector &row_identifiers, idx_t fetch_count, ColumnFetchState &state);
59
+ const Vector &row_identifiers, idx_t fetch_count, ColumnFetchState &state);
58
60
 
59
61
  //! Initialize an append of a variable number of rows. FinalizeAppend must be called after appending is done.
60
62
  void InitializeAppend(TableAppendState &state);
@@ -81,7 +83,7 @@ public:
81
83
  void CommitDropColumn(idx_t index);
82
84
  void CommitDropTable();
83
85
 
84
- vector<vector<Value>> GetStorageInfo();
86
+ void GetStorageInfo(TableStorageInfo &result);
85
87
  const vector<LogicalType> &GetTypes() const;
86
88
 
87
89
  shared_ptr<RowGroupCollection> AddColumn(ClientContext &context, ColumnDefinition &new_column,
@@ -28,6 +28,7 @@ class ColumnSegment;
28
28
  class ValiditySegment;
29
29
  class TableFilterSet;
30
30
  class ColumnData;
31
+ class DuckTransaction;
31
32
 
32
33
  struct SegmentScanState {
33
34
  virtual ~SegmentScanState() {
@@ -59,7 +60,7 @@ struct ColumnScanState {
59
60
  //! The version of the column data that we are scanning.
60
61
  //! This is used to detect if the ColumnData has been changed out from under us during a scan
61
62
  //! If this is the case, we re-initialize the scan
62
- idx_t version;
63
+ idx_t version = 0;
63
64
  //! We initialize one SegmentScanState per segment, however, if scanning a DataChunk requires us to scan over more
64
65
  //! than one Segment, we need to keep the scan states of the previous segments around
65
66
  vector<unique_ptr<SegmentScanState>> previous_states;
@@ -124,7 +125,7 @@ public:
124
125
  const vector<column_t> &GetColumnIds();
125
126
  TableFilterSet *GetFilters();
126
127
  AdaptiveFilter *GetAdaptiveFilter();
127
- bool Scan(Transaction &transaction, DataChunk &result);
128
+ bool Scan(DuckTransaction &transaction, DataChunk &result);
128
129
  bool ScanCommitted(DataChunk &result, TableScanType type);
129
130
 
130
131
  private:
@@ -19,9 +19,12 @@ public:
19
19
  }
20
20
  virtual ~SegmentBase() {
21
21
  }
22
-
23
22
  SegmentBase *Next() {
23
+ #ifndef DUCKDB_R_BUILD
24
24
  return next.load();
25
+ #else
26
+ return next;
27
+ #endif
25
28
  }
26
29
 
27
30
  //! The start row id of this chunk
@@ -29,7 +32,12 @@ public:
29
32
  //! The amount of entries in this storage chunk
30
33
  atomic<idx_t> count;
31
34
  //! The next segment after this one
35
+
36
+ #ifndef DUCKDB_R_BUILD
32
37
  atomic<SegmentBase *> next;
38
+ #else
39
+ SegmentBase *next;
40
+ #endif
33
41
  };
34
42
 
35
43
  } // namespace duckdb
@@ -56,7 +56,7 @@ public:
56
56
 
57
57
  void DeserializeColumn(Deserializer &source) override;
58
58
 
59
- void GetStorageInfo(idx_t row_group_index, vector<idx_t> col_path, vector<vector<Value>> &result) override;
59
+ void GetStorageInfo(idx_t row_group_index, vector<idx_t> col_path, TableStorageInfo &result) override;
60
60
 
61
61
  void Verify(RowGroup &parent) override;
62
62
 
@@ -59,7 +59,7 @@ public:
59
59
 
60
60
  void DeserializeColumn(Deserializer &source) override;
61
61
 
62
- void GetStorageInfo(idx_t row_group_index, vector<idx_t> col_path, vector<vector<Value>> &result) override;
62
+ void GetStorageInfo(idx_t row_group_index, vector<idx_t> col_path, TableStorageInfo &result) override;
63
63
 
64
64
  void Verify(RowGroup &parent) override;
65
65
  };
@@ -12,6 +12,9 @@
12
12
  #include "duckdb/storage/index.hpp"
13
13
 
14
14
  namespace duckdb {
15
+
16
+ class ConflictManager;
17
+
15
18
  class TableIndexList {
16
19
  public:
17
20
  //! Scan the catalog set, invoking the callback method for every entry
@@ -26,6 +29,10 @@ public:
26
29
  }
27
30
  }
28
31
 
32
+ const vector<unique_ptr<Index>> &Indexes() const {
33
+ return indexes;
34
+ }
35
+
29
36
  void AddIndex(unique_ptr<Index> index);
30
37
 
31
38
  void RemoveIndex(Index *index);
@@ -37,8 +44,7 @@ public:
37
44
  void Move(TableIndexList &other);
38
45
 
39
46
  Index *FindForeignKeyIndex(const vector<PhysicalIndex> &fk_keys, ForeignKeyType fk_type);
40
- void VerifyForeignKey(const vector<PhysicalIndex> &fk_keys, bool is_append, DataChunk &chunk,
41
- vector<string> &err_msg);
47
+ void VerifyForeignKey(const vector<PhysicalIndex> &fk_keys, DataChunk &chunk, ConflictManager &conflict_manager);
42
48
 
43
49
  //! Serialize all indexes owned by this table, returns a vector of block info of all indexes
44
50
  vector<BlockPointer> SerializeIndexes(duckdb::MetaBlockWriter &writer);
@@ -23,6 +23,8 @@ struct UpdateNode;
23
23
  class UpdateSegment {
24
24
  public:
25
25
  UpdateSegment(ColumnData &column_data);
26
+ // Construct a duplicate of 'other' with 'new_owner' as it's column data
27
+ UpdateSegment(UpdateSegment &other, ColumnData &new_owner);
26
28
  ~UpdateSegment();
27
29
 
28
30
  ColumnData &column_data;
@@ -0,0 +1,48 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/storage/table_storage_info.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #pragma once
10
+
11
+ #include "duckdb/common/types/value.hpp"
12
+
13
+ namespace duckdb {
14
+
15
+ struct ColumnSegmentInfo {
16
+ idx_t row_group_index;
17
+ idx_t column_id;
18
+ string column_path;
19
+ idx_t segment_idx;
20
+ string segment_type;
21
+ idx_t segment_start;
22
+ idx_t segment_count;
23
+ string compression_type;
24
+ string segment_stats;
25
+ bool has_updates;
26
+ bool persistent;
27
+ block_id_t block_id;
28
+ idx_t block_offset;
29
+ };
30
+
31
+ struct IndexInfo {
32
+ bool is_unique;
33
+ bool is_primary;
34
+ bool is_foreign;
35
+ unordered_set<column_t> column_set;
36
+ };
37
+
38
+ class TableStorageInfo {
39
+ public:
40
+ //! The (estimated) cardinality of the table
41
+ idx_t cardinality = DConstants::INVALID_INDEX;
42
+ //! Info of the indexes of a table
43
+ vector<IndexInfo> index_info;
44
+ //! Info of the column segments of the table
45
+ vector<ColumnSegmentInfo> column_segments;
46
+ };
47
+
48
+ } // namespace duckdb
@@ -12,11 +12,11 @@
12
12
  #include "duckdb/common/types/data_chunk.hpp"
13
13
  #include "duckdb/common/enums/wal_type.hpp"
14
14
  #include "duckdb/common/serializer/buffered_file_writer.hpp"
15
- #include "duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp"
16
- #include "duckdb/storage/storage_info.hpp"
17
-
18
15
  #include "duckdb/catalog/catalog_entry/scalar_macro_catalog_entry.hpp"
16
+ #include "duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp"
19
17
  #include "duckdb/catalog/catalog_entry/table_macro_catalog_entry.hpp"
18
+ #include "duckdb/main/attached_database.hpp"
19
+ #include "duckdb/storage/storage_info.hpp"
20
20
 
21
21
  namespace duckdb {
22
22
 
@@ -38,8 +38,8 @@ class TransactionManager;
38
38
  class ReplayState {
39
39
  public:
40
40
  ReplayState(AttachedDatabase &db, ClientContext &context, Deserializer &source)
41
- : db(db), context(context), catalog(Catalog::GetCatalog(context, INVALID_CATALOG)), source(source),
42
- current_table(nullptr), deserialize_only(false), checkpoint_id(INVALID_BLOCK) {
41
+ : db(db), context(context), catalog(db.GetCatalog()), source(source), current_table(nullptr),
42
+ deserialize_only(false), checkpoint_id(INVALID_BLOCK) {
43
43
  }
44
44
 
45
45
  AttachedDatabase &db;
@@ -0,0 +1,68 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/transaction/duck_transaction.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #pragma once
10
+
11
+ #include "duckdb/transaction/transaction.hpp"
12
+
13
+ namespace duckdb {
14
+
15
+ class DuckTransaction : public Transaction {
16
+ public:
17
+ DuckTransaction(TransactionManager &manager, ClientContext &context, transaction_t start_time,
18
+ transaction_t transaction_id);
19
+ ~DuckTransaction();
20
+
21
+ //! The start timestamp of this transaction
22
+ transaction_t start_time;
23
+ //! The transaction id of this transaction
24
+ transaction_t transaction_id;
25
+ //! The commit id of this transaction, if it has successfully been committed
26
+ transaction_t commit_id;
27
+ //! Map of all sequences that were used during the transaction and the value they had in this transaction
28
+ unordered_map<SequenceCatalogEntry *, SequenceValue> sequence_usage;
29
+ //! Highest active query when the transaction finished, used for cleaning up
30
+ transaction_t highest_active_query;
31
+
32
+ public:
33
+ static DuckTransaction &Get(ClientContext &context, AttachedDatabase &db);
34
+ static DuckTransaction &Get(ClientContext &context, Catalog &catalog);
35
+ LocalStorage &GetLocalStorage();
36
+
37
+ void PushCatalogEntry(CatalogEntry *entry, data_ptr_t extra_data = nullptr, idx_t extra_data_size = 0);
38
+
39
+ //! Commit the current transaction with the given commit identifier. Returns an error message if the transaction
40
+ //! commit failed, or an empty string if the commit was sucessful
41
+ string Commit(AttachedDatabase &db, transaction_t commit_id, bool checkpoint) noexcept;
42
+ //! Returns whether or not a commit of this transaction should trigger an automatic checkpoint
43
+ bool AutomaticCheckpoint(AttachedDatabase &db);
44
+
45
+ //! Rollback
46
+ void Rollback() noexcept;
47
+ //! Cleanup the undo buffer
48
+ void Cleanup();
49
+
50
+ bool ChangesMade();
51
+
52
+ void PushDelete(DataTable *table, ChunkVectorInfo *vinfo, row_t rows[], idx_t count, idx_t base_row);
53
+ void PushAppend(DataTable *table, idx_t row_start, idx_t row_count);
54
+ UpdateInfo *CreateUpdateInfo(idx_t type_size, idx_t entries);
55
+
56
+ bool IsDuckTransaction() const override {
57
+ return true;
58
+ }
59
+
60
+ private:
61
+ //! The undo buffer is used to store old versions of rows that are updated
62
+ //! or deleted
63
+ UndoBuffer undo_buffer;
64
+ //! The set of uncommitted appends for the transaction
65
+ unique_ptr<LocalStorage> storage;
66
+ };
67
+
68
+ } // namespace duckdb