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
@@ -14,11 +14,15 @@ namespace duckdb {
14
14
 
15
15
  class Node256 : public Node {
16
16
  public:
17
+ //! Empty Node256
17
18
  explicit Node256();
19
+ //! ART pointers to the child nodes
18
20
  ARTPointer children[256];
19
21
 
20
22
  public:
21
23
  static Node256 *New();
24
+ //! Returns the memory size of the Node256
25
+ idx_t MemorySize(ART &art, const bool &recurse) override;
22
26
  //! Get position of a specific byte, returns DConstants::INVALID_INDEX if not exists
23
27
  idx_t GetChildPos(uint8_t k) override;
24
28
  //! Get the position of the first child that is greater or equal to the specific byte, or DConstants::INVALID_INDEX
@@ -28,18 +32,23 @@ public:
28
32
  idx_t GetMin() override;
29
33
  //! Get the next position in the node, or DConstants::INVALID_INDEX if there is no next position
30
34
  idx_t GetNextPos(idx_t pos) override;
35
+ //! Get the next position in the node, or DConstants::INVALID_INDEX if there is no next position
36
+ idx_t GetNextPosAndByte(idx_t pos, uint8_t &byte) override;
31
37
  //! Get Node256 child
32
38
  Node *GetChild(ART &art, idx_t pos) override;
33
39
  //! Replace child pointer
34
40
  void ReplaceChildPointer(idx_t pos, Node *node) override;
41
+ //! Returns whether the child at pos is in memory
42
+ bool ChildIsInMemory(idx_t pos) override;
35
43
 
36
44
  //! Insert a new child node at key_byte into the Node256
37
- static void InsertChild(Node *&node, uint8_t key_byte, Node *new_child);
45
+ static void InsertChild(ART &art, Node *&node, uint8_t key_byte, Node *new_child);
38
46
  //! Erase the child at pos and (if necessary) shrink to Node48
39
- static void EraseChild(Node *&node, int pos, ART &art);
40
- //! Merge Node256 into l_node
41
- static bool Merge(MergeInfo &info, idx_t depth, Node *&l_parent, idx_t l_pos);
47
+ static void EraseChild(ART &art, Node *&node, idx_t pos);
48
+
42
49
  //! Returns the size (maximum capacity) of the Node256
43
- static idx_t GetSize();
50
+ static constexpr idx_t GetSize() {
51
+ return 256;
52
+ }
44
53
  };
45
54
  } // namespace duckdb
@@ -14,14 +14,17 @@ namespace duckdb {
14
14
 
15
15
  class Node4 : public Node {
16
16
  public:
17
- Node4();
18
-
17
+ //! Empty Node4
18
+ explicit Node4();
19
+ //! Array containing all partial key bytes
19
20
  uint8_t key[4];
20
- // Pointers to the child nodes
21
+ //! ART pointers to the child nodes
21
22
  ARTPointer children[4];
22
23
 
23
24
  public:
24
25
  static Node4 *New();
26
+ //! Returns the memory size of the Node4
27
+ idx_t MemorySize(ART &art, const bool &recurse) override;
25
28
  //! Get position of a byte, returns DConstants::INVALID_INDEX if not exists
26
29
  idx_t GetChildPos(uint8_t k) override;
27
30
  //! Get the position of the first child that is greater or equal to the specific byte, or DConstants::INVALID_INDEX
@@ -31,18 +34,23 @@ public:
31
34
  idx_t GetMin() override;
32
35
  //! Get the next position in the node, or DConstants::INVALID_INDEX if there is no next position
33
36
  idx_t GetNextPos(idx_t pos) override;
37
+ //! Get the next position in the node, or DConstants::INVALID_INDEX if there is no next position
38
+ idx_t GetNextPosAndByte(idx_t pos, uint8_t &byte) override;
34
39
  //! Get Node4 child
35
40
  Node *GetChild(ART &art, idx_t pos) override;
36
41
  //! Replace child pointer
37
42
  void ReplaceChildPointer(idx_t pos, Node *node) override;
43
+ //! Returns whether the child at pos is in memory
44
+ bool ChildIsInMemory(idx_t pos) override;
38
45
 
39
46
  //! Insert a new child node at key_byte into the Node4
40
- static void InsertChild(Node *&node, uint8_t key_byte, Node *new_child);
47
+ static void InsertChild(ART &art, Node *&node, uint8_t key_byte, Node *new_child);
41
48
  //! Erase the child at pos and (if necessary) merge with last child
42
- static void EraseChild(Node *&node, int pos, ART &art);
43
- //! Merge Node4 into l_node
44
- static bool Merge(MergeInfo &info, idx_t depth, Node *&l_parent, idx_t l_pos);
49
+ static void EraseChild(ART &art, Node *&node, idx_t pos);
50
+
45
51
  //! Returns the size (maximum capacity) of the Node4
46
- static idx_t GetSize();
52
+ static constexpr idx_t GetSize() {
53
+ return 4;
54
+ }
47
55
  };
48
56
  } // namespace duckdb
@@ -14,12 +14,17 @@ namespace duckdb {
14
14
 
15
15
  class Node48 : public Node {
16
16
  public:
17
+ //! Empty Node48
17
18
  explicit Node48();
19
+ //! Array containing all possible partial key bytes, those not set have an EMPTY_MARKER
18
20
  uint8_t child_index[256];
21
+ //! ART pointers to the child nodes
19
22
  ARTPointer children[48];
20
23
 
21
24
  public:
22
25
  static Node48 *New();
26
+ //! Returns the memory size of the Node48
27
+ idx_t MemorySize(ART &art, const bool &recurse) override;
23
28
  //! Get position of a specific byte, returns DConstants::INVALID_INDEX if not exists
24
29
  idx_t GetChildPos(uint8_t k) override;
25
30
  //! Get the position of the first child that is greater or equal to the specific byte, or DConstants::INVALID_INDEX
@@ -29,18 +34,22 @@ public:
29
34
  idx_t GetMin() override;
30
35
  //! Get the next position in the node, or DConstants::INVALID_INDEX if there is no next position
31
36
  idx_t GetNextPos(idx_t pos) override;
37
+ //! Get the next position in the node, or DConstants::INVALID_INDEX if there is no next position
38
+ idx_t GetNextPosAndByte(idx_t pos, uint8_t &byte) override;
32
39
  //! Get Node48 child
33
40
  Node *GetChild(ART &art, idx_t pos) override;
34
41
  //! Replace child pointer
35
42
  void ReplaceChildPointer(idx_t pos, Node *node) override;
43
+ //! Returns whether the child at pos is in memory
44
+ bool ChildIsInMemory(idx_t pos) override;
36
45
 
37
46
  //! Insert a new child node at key_byte into the Node48
38
- static void InsertChild(Node *&node, uint8_t key_byte, Node *new_child);
47
+ static void InsertChild(ART &art, Node *&node, uint8_t key_byte, Node *new_child);
39
48
  //! Erase the child at pos and (if necessary) shrink to Node16
40
- static void EraseChild(Node *&node, int pos, ART &art);
41
- //! Merge Node48 into l_node
42
- static bool Merge(MergeInfo &info, idx_t depth, Node *&l_parent, idx_t l_pos);
49
+ static void EraseChild(ART &art, Node *&node, idx_t pos);
43
50
  //! Returns the size (maximum capacity) of the Node48
44
- static idx_t GetSize();
51
+ static constexpr idx_t GetSize() {
52
+ return 48;
53
+ }
45
54
  };
46
55
  } // namespace duckdb
@@ -12,45 +12,51 @@
12
12
  #include "duckdb/storage/meta_block_writer.hpp"
13
13
 
14
14
  namespace duckdb {
15
+ class ART;
16
+
15
17
  class Prefix {
16
18
  static constexpr idx_t PREFIX_INLINE_BYTES = 8;
17
19
 
18
20
  public:
21
+ //! Empty prefix
19
22
  Prefix();
20
- // Prefix created from key starting on `depth`
23
+ //! Construct prefix from key starting at depth
21
24
  Prefix(Key &key, uint32_t depth, uint32_t size);
22
- // Prefix created from other prefix up to size
25
+ //! Construct prefix from other prefix up to size
23
26
  Prefix(Prefix &other_prefix, uint32_t size);
24
27
  ~Prefix();
25
28
 
26
- // Returns the Prefix's size
27
- uint32_t Size() const;
28
- //! Return a pointer to the prefix data
29
+ //! Returns the prefix size
30
+ inline uint32_t Size() const {
31
+ return size;
32
+ }
33
+ //! Returns the memory size of the prefix
34
+ idx_t MemorySize();
35
+ //! Returns a pointer to the prefix data
29
36
  uint8_t *GetPrefixData();
37
+ //! Returns a const pointer to the prefix data
30
38
  const uint8_t *GetPrefixData() const;
31
39
 
32
- // Subscript operator
40
+ //! Subscript operator
33
41
  uint8_t &operator[](idx_t idx);
34
-
35
- // Assign operator
42
+ //! Assign operator
36
43
  Prefix &operator=(const Prefix &src);
37
-
38
- // Move operator
44
+ //! Move operator
39
45
  Prefix &operator=(Prefix &&other) noexcept;
40
46
 
41
- // Concatenate Prefix with a key and another prefix
42
- // Used when deleting a Node.
43
- // other.prefix + key + this->Prefix
44
- void Concatenate(uint8_t key, Prefix &other);
45
- // Reduces the prefix in n elements, and returns what would be the first one as a key
46
- uint8_t Reduce(uint32_t n);
47
- // Serializes Prefix
47
+ //! Concatenate prefix with a partial key byte and another prefix: other.prefix + byte + this->prefix
48
+ //! Used when deleting a node
49
+ void Concatenate(ART &art, uint8_t key, Prefix &other);
50
+ //! Reduces the prefix in n bytes, and returns the new first byte
51
+ uint8_t Reduce(ART &art, uint32_t n);
52
+
53
+ //! Serializes the prefix
48
54
  void Serialize(duckdb::MetaBlockWriter &writer);
49
- // Deserializes Prefix
55
+ //! Deserializes the prefix
50
56
  void Deserialize(duckdb::MetaBlockReader &reader);
51
57
 
52
- // Compare the key with the prefix of the node, return the position where it mismatches
53
- uint32_t KeyMismatchPosition(Key &key, uint64_t depth);
58
+ //! Compare the key with the prefix of the node, return the position where they mismatch
59
+ uint32_t KeyMismatchPosition(Key &key, uint32_t depth);
54
60
  //! Compare this prefix to another prefix, return the position where they mismatch, or size otherwise
55
61
  uint32_t MismatchPosition(Prefix &other);
56
62
 
@@ -27,6 +27,8 @@ public:
27
27
  //! Transforms from Node* to uint64_t
28
28
  SwizzleablePointer &operator=(const Node *ptr);
29
29
 
30
+ //! Checks if pointer is swizzled
31
+ bool IsSwizzled();
30
32
  //! Unswizzle the pointer (if possible)
31
33
  Node *Unswizzle(ART &art);
32
34
 
@@ -34,7 +36,7 @@ public:
34
36
  return pointer;
35
37
  }
36
38
 
37
- //! Deletes the underlying object (if necessary) and set the pointer to null_ptr
39
+ //! Deletes the underlying object (if necessary) and set the pointer to nullptr
38
40
  void Reset();
39
41
 
40
42
  private:
@@ -42,10 +44,8 @@ private:
42
44
 
43
45
  friend bool operator!=(const SwizzleablePointer &s_ptr, const uint64_t &ptr);
44
46
 
45
- //! Extracts block info from swizzled pointer
47
+ //! Extracts the block info from swizzled pointer
46
48
  BlockPointer GetSwizzledBlockInfo();
47
- //! Checks if pointer is swizzled
48
- bool IsSwizzled();
49
49
  };
50
50
 
51
51
  } // namespace duckdb
@@ -16,7 +16,7 @@ namespace duckdb {
16
16
  class PhysicalExplainAnalyze : public PhysicalOperator {
17
17
  public:
18
18
  PhysicalExplainAnalyze(vector<LogicalType> types)
19
- : PhysicalOperator(PhysicalOperatorType::EXPLAIN_ANALYZE, move(types), 1) {
19
+ : PhysicalOperator(PhysicalOperatorType::EXPLAIN_ANALYZE, std::move(types), 1) {
20
20
  }
21
21
 
22
22
  public:
@@ -19,9 +19,9 @@ public:
19
19
  PhysicalLimitPercent(vector<LogicalType> types, double limit_percent, idx_t offset,
20
20
  unique_ptr<Expression> limit_expression, unique_ptr<Expression> offset_expression,
21
21
  idx_t estimated_cardinality)
22
- : PhysicalOperator(PhysicalOperatorType::LIMIT_PERCENT, move(types), estimated_cardinality),
23
- limit_percent(limit_percent), offset_value(offset), limit_expression(move(limit_expression)),
24
- offset_expression(move(offset_expression)) {
22
+ : PhysicalOperator(PhysicalOperatorType::LIMIT_PERCENT, std::move(types), estimated_cardinality),
23
+ limit_percent(limit_percent), offset_value(offset), limit_expression(std::move(limit_expression)),
24
+ offset_expression(std::move(offset_expression)) {
25
25
  }
26
26
 
27
27
  double limit_percent;
@@ -18,7 +18,7 @@ class PhysicalLoad : public PhysicalOperator {
18
18
  public:
19
19
  explicit PhysicalLoad(unique_ptr<LoadInfo> info, idx_t estimated_cardinality)
20
20
  : PhysicalOperator(PhysicalOperatorType::LOAD, {LogicalType::BOOLEAN}, estimated_cardinality),
21
- info(move(info)) {
21
+ info(std::move(info)) {
22
22
  }
23
23
 
24
24
  unique_ptr<LoadInfo> info;
@@ -19,7 +19,7 @@ class PhysicalPragma : public PhysicalOperator {
19
19
  public:
20
20
  PhysicalPragma(PragmaFunction function_p, PragmaInfo info_p, idx_t estimated_cardinality)
21
21
  : PhysicalOperator(PhysicalOperatorType::PRAGMA, {LogicalType::BOOLEAN}, estimated_cardinality),
22
- function(move(function_p)), info(move(info_p)) {
22
+ function(std::move(function_p)), info(std::move(info_p)) {
23
23
  }
24
24
 
25
25
  //! The pragma function to call
@@ -18,7 +18,7 @@ class PhysicalPrepare : public PhysicalOperator {
18
18
  public:
19
19
  PhysicalPrepare(string name, shared_ptr<PreparedStatementData> prepared, idx_t estimated_cardinality)
20
20
  : PhysicalOperator(PhysicalOperatorType::PREPARE, {LogicalType::BOOLEAN}, estimated_cardinality), name(name),
21
- prepared(move(prepared)) {
21
+ prepared(std::move(prepared)) {
22
22
  }
23
23
 
24
24
  string name;
@@ -17,8 +17,8 @@ namespace duckdb {
17
17
  class PhysicalReservoirSample : public PhysicalOperator {
18
18
  public:
19
19
  PhysicalReservoirSample(vector<LogicalType> types, unique_ptr<SampleOptions> options, idx_t estimated_cardinality)
20
- : PhysicalOperator(PhysicalOperatorType::RESERVOIR_SAMPLE, move(types), estimated_cardinality),
21
- options(move(options)) {
20
+ : PhysicalOperator(PhysicalOperatorType::RESERVOIR_SAMPLE, std::move(types), estimated_cardinality),
21
+ options(std::move(options)) {
22
22
  }
23
23
 
24
24
  unique_ptr<SampleOptions> options;
@@ -30,13 +30,13 @@ public:
30
30
  void GetData(ExecutionContext &context, DataChunk &chunk, GlobalSourceState &gstate,
31
31
  LocalSourceState &lstate) const override;
32
32
 
33
+ static void SetExtensionVariable(ClientContext &context, ExtensionOption &extension_option, const string &name,
34
+ SetScope scope, const Value &value);
35
+
33
36
  public:
34
37
  const std::string name;
35
38
  const Value value;
36
39
  const SetScope scope;
37
-
38
- private:
39
- void SetExtensionVariable(ExecutionContext &context, DBConfig &config, ExtensionOption &extension_option) const;
40
40
  };
41
41
 
42
42
  } // namespace duckdb
@@ -18,7 +18,7 @@ class PhysicalTransaction : public PhysicalOperator {
18
18
  public:
19
19
  explicit PhysicalTransaction(unique_ptr<TransactionInfo> info, idx_t estimated_cardinality)
20
20
  : PhysicalOperator(PhysicalOperatorType::TRANSACTION, {LogicalType::BOOLEAN}, estimated_cardinality),
21
- info(move(info)) {
21
+ info(std::move(info)) {
22
22
  }
23
23
 
24
24
  unique_ptr<TransactionInfo> info;
@@ -56,7 +56,7 @@ public:
56
56
 
57
57
  class CrossProductExecutor {
58
58
  public:
59
- CrossProductExecutor(ColumnDataCollection &rhs);
59
+ explicit CrossProductExecutor(ColumnDataCollection &rhs);
60
60
 
61
61
  OperatorResultType Execute(DataChunk &input, DataChunk &output);
62
62
 
@@ -0,0 +1,50 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/execution/operator/join/physical_positional_join.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #pragma once
10
+
11
+ #include "duckdb/execution/physical_operator.hpp"
12
+ #include "duckdb/common/types/column_data_collection.hpp"
13
+
14
+ namespace duckdb {
15
+
16
+ //! PhysicalPositionalJoin represents a cross product between two tables
17
+ class PhysicalPositionalJoin : public PhysicalOperator {
18
+ public:
19
+ PhysicalPositionalJoin(vector<LogicalType> types, unique_ptr<PhysicalOperator> left,
20
+ unique_ptr<PhysicalOperator> right, idx_t estimated_cardinality);
21
+
22
+ public:
23
+ // Operator Interface
24
+ OperatorResultType Execute(ExecutionContext &context, DataChunk &input, DataChunk &chunk,
25
+ GlobalOperatorState &gstate, OperatorState &state) const override;
26
+
27
+ public:
28
+ // Source interface
29
+ void GetData(ExecutionContext &context, DataChunk &chunk, GlobalSourceState &gstate,
30
+ LocalSourceState &lstate) const override;
31
+
32
+ bool IsSource() const override {
33
+ return true;
34
+ }
35
+
36
+ public:
37
+ // Sink Interface
38
+ unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
39
+ SinkResultType Sink(ExecutionContext &context, GlobalSinkState &state, LocalSinkState &lstate,
40
+ DataChunk &input) const override;
41
+
42
+ bool IsSink() const override {
43
+ return true;
44
+ }
45
+
46
+ public:
47
+ void BuildPipelines(Pipeline &current, MetaPipeline &meta_pipeline) override;
48
+ vector<const PhysicalOperator *> GetSources() const override;
49
+ };
50
+ } // namespace duckdb
@@ -35,22 +35,22 @@ class BaseCSVReader {
35
35
  public:
36
36
  BaseCSVReader(ClientContext &context, BufferedCSVReaderOptions options,
37
37
  const vector<LogicalType> &requested_types = vector<LogicalType>());
38
-
39
- BaseCSVReader(FileSystem &fs, Allocator &allocator, FileOpener *opener, BufferedCSVReaderOptions options,
40
- const vector<LogicalType> &requested_types = vector<LogicalType>());
41
38
  ~BaseCSVReader();
42
39
 
40
+ ClientContext &context;
43
41
  FileSystem &fs;
44
42
  Allocator &allocator;
45
43
  FileOpener *opener;
46
44
  BufferedCSVReaderOptions options;
47
- vector<LogicalType> sql_types;
48
- vector<string> col_names;
45
+ vector<LogicalType> return_types;
46
+ vector<string> names;
49
47
 
50
48
  //! remap parse_chunk col to insert_chunk col, because when
51
49
  //! union_by_name option on insert_chunk may have more cols
52
50
  vector<idx_t> insert_cols_idx;
53
- vector<idx_t> insert_nulls_idx;
51
+ vector<idx_t> union_idx_map;
52
+ vector<bool> union_null_cols;
53
+ vector<LogicalType> union_col_types;
54
54
 
55
55
  idx_t linenr = 0;
56
56
  bool linenr_estimated = false;
@@ -70,10 +70,6 @@ public:
70
70
 
71
71
  ParserMode mode;
72
72
 
73
- public:
74
- //! Fill nulls into the cols that mismtach union names
75
- void SetNullUnionCols(DataChunk &insert_chunk);
76
-
77
73
  protected:
78
74
  //! Initializes the parse_chunk with varchar columns and aligns info with new number of cols
79
75
  void InitParseChunk(idx_t num_cols);
@@ -99,8 +95,11 @@ protected:
99
95
  void VerifyUTF8(idx_t col_idx, idx_t row_idx, DataChunk &chunk, int64_t offset = 0);
100
96
  static string GetLineNumberStr(idx_t linenr, bool linenr_estimated);
101
97
 
98
+ //! Sets the newline delimiter
99
+ void SetNewLineDelimiter(bool carry = false, bool carry_followed_by_nl = false);
100
+
102
101
  protected:
103
- //! Whether or not the current row's columns have overflown sql_types.size()
102
+ //! Whether or not the current row's columns have overflown return_types.size()
104
103
  bool error_column_overflow = false;
105
104
  //! Number of sniffed columns - only used when auto-detecting
106
105
  vector<idx_t> sniffed_column_counts;
@@ -55,7 +55,7 @@ class BufferedCSVReader : public BaseCSVReader {
55
55
  public:
56
56
  BufferedCSVReader(ClientContext &context, BufferedCSVReaderOptions options,
57
57
  const vector<LogicalType> &requested_types = vector<LogicalType>());
58
- BufferedCSVReader(FileSystem &fs, Allocator &allocator, FileOpener *opener, BufferedCSVReaderOptions options,
58
+ BufferedCSVReader(ClientContext &context, string filename, BufferedCSVReaderOptions options,
59
59
  const vector<LogicalType> &requested_types = vector<LogicalType>());
60
60
  ~BufferedCSVReader();
61
61
 
@@ -73,6 +73,7 @@ public:
73
73
  public:
74
74
  //! Extract a single DataChunk from the CSV file and stores it in insert_chunk
75
75
  void ParseCSV(DataChunk &insert_chunk);
76
+ static string ColumnTypesError(case_insensitive_map_t<idx_t> sql_types_per_column, const vector<string> &names);
76
77
 
77
78
  private:
78
79
  //! Initialize Parser
@@ -20,13 +20,15 @@ public:
20
20
  static constexpr idx_t INITIAL_BUFFER_SIZE_COLOSSAL = 32000000; // 32MB
21
21
 
22
22
  //! Constructor for Initial Buffer
23
- CSVBuffer(ClientContext &context, idx_t buffer_size_p, CSVFileHandle &file_handle);
23
+ CSVBuffer(ClientContext &context, idx_t buffer_size_p, CSVFileHandle &file_handle,
24
+ idx_t &global_csv_current_position);
24
25
 
25
26
  //! Constructor for `Next()` Buffers
26
- CSVBuffer(ClientContext &context, BufferHandle handle, idx_t buffer_size_p, idx_t actual_size_p, bool final_buffer);
27
+ CSVBuffer(ClientContext &context, BufferHandle handle, idx_t buffer_size_p, idx_t actual_size_p, bool final_buffer,
28
+ idx_t global_csv_current_position);
27
29
 
28
30
  //! Creates a new buffer with the next part of the CSV File
29
- unique_ptr<CSVBuffer> Next(CSVFileHandle &file_handle, idx_t set_buffer_size);
31
+ unique_ptr<CSVBuffer> Next(CSVFileHandle &file_handle, idx_t buffer_size, idx_t &global_csv_current_position);
30
32
 
31
33
  //! Gets the buffer actual size
32
34
  idx_t GetBufferSize();
@@ -40,6 +42,8 @@ public:
40
42
  //! If this buffer is the first buffer of the CSV File
41
43
  bool IsCSVFileFirstBuffer();
42
44
 
45
+ idx_t GetCSVGlobalStart();
46
+
43
47
  BufferHandle AllocateBuffer(idx_t buffer_size);
44
48
 
45
49
  char *Ptr() {
@@ -59,5 +63,7 @@ private:
59
63
  bool last_buffer = false;
60
64
  //! If this is the first buffer of the CSV File
61
65
  bool first_buffer = false;
66
+ //! Global position from the CSV File where this buffer starts
67
+ idx_t global_csv_start = 0;
62
68
  };
63
69
  } // namespace duckdb
@@ -15,7 +15,7 @@ namespace duckdb {
15
15
 
16
16
  struct CSVFileHandle {
17
17
  public:
18
- explicit CSVFileHandle(unique_ptr<FileHandle> file_handle_p) : file_handle(move(file_handle_p)) {
18
+ explicit CSVFileHandle(unique_ptr<FileHandle> file_handle_p) : file_handle(std::move(file_handle_p)) {
19
19
  can_seek = file_handle->CanSeek();
20
20
  plain_file_source = file_handle->OnDiskFile() && can_seek;
21
21
  file_size = file_handle->GetFileSize();
@@ -98,7 +98,7 @@ public:
98
98
  if (buffer_size > 0) {
99
99
  memcpy(new_buffer.get(), cached_buffer.get(), buffer_size);
100
100
  }
101
- cached_buffer = move(new_buffer);
101
+ cached_buffer = std::move(new_buffer);
102
102
  }
103
103
  memcpy(cached_buffer.get() + buffer_size, (char *)buffer + result_offset, bytes_read);
104
104
  buffer_size += bytes_read;
@@ -13,9 +13,17 @@
13
13
  #include "duckdb/function/scalar/strftime.hpp"
14
14
  #include "duckdb/common/types/value.hpp"
15
15
  #include "duckdb/common/field_writer.hpp"
16
+ #include "duckdb/common/case_insensitive_map.hpp"
16
17
 
17
18
  namespace duckdb {
18
19
 
20
+ enum NewLineIdentifier {
21
+ SINGLE = 1, // Either \r or \n
22
+ CARRY_ON = 2, // \r\n
23
+ MIX = 3, // Hippie-Land, can't run it multithreaded
24
+ NOT_SET = 4
25
+ };
26
+
19
27
  struct BufferedCSVReaderOptions {
20
28
  //===--------------------------------------------------------------------===//
21
29
  // CommonCSVOptions
@@ -25,7 +33,16 @@ struct BufferedCSVReaderOptions {
25
33
  bool has_delimiter = false;
26
34
  //! Delimiter to separate columns within each line
27
35
  string delimiter = ",";
28
- //! Whether or not a quote sign was defined by the user
36
+ //! Whether or not a new_line was defined by the user
37
+ bool has_newline = false;
38
+ //! New Line separator
39
+ NewLineIdentifier new_line = NewLineIdentifier::NOT_SET;
40
+
41
+ //! Whether or not an option was provided for parallel
42
+ bool has_parallel = false;
43
+ //! Whether or not the read will use the ParallelCSVReader
44
+ bool use_parallel = false;
45
+ //! Whether or not a quote was defined by the user
29
46
  bool has_quote = false;
30
47
  //! Quote used for columns that contain reserved characters, e.g., delimiter
31
48
  string quote = "\"";
@@ -54,8 +71,10 @@ struct BufferedCSVReaderOptions {
54
71
  //===--------------------------------------------------------------------===//
55
72
  // CSVAutoOptions
56
73
  //===--------------------------------------------------------------------===//
57
- //! SQL Types defined per specific column
58
- unordered_map<string, LogicalType> sql_types_per_column;
74
+ //! SQL Type list mapping of name to SQL type index in sql_type_list
75
+ case_insensitive_map_t<idx_t> sql_types_per_column;
76
+ //! User-defined SQL type list
77
+ vector<LogicalType> sql_type_list;
59
78
  //===--------------------------------------------------------------------===//
60
79
  // ReadCSVOptions
61
80
  //===--------------------------------------------------------------------===//
@@ -87,6 +106,8 @@ struct BufferedCSVReaderOptions {
87
106
  bool union_by_name = false;
88
107
  //! Buffer Size (Parallel Scan)
89
108
  idx_t buffer_size = CSVBuffer::INITIAL_BUFFER_SIZE_COLOSSAL;
109
+ //! Decimal separator when reading as numeric
110
+ string decimal_separator = ".";
90
111
 
91
112
  //===--------------------------------------------------------------------===//
92
113
  // WriteCSVOptions
@@ -106,7 +127,14 @@ struct BufferedCSVReaderOptions {
106
127
  void Serialize(FieldWriter &writer) const;
107
128
  void Deserialize(FieldReader &reader);
108
129
 
130
+ void SetCompression(const string &compression);
131
+ void SetHeader(bool has_header);
132
+ void SetEscape(const string &escape);
133
+ void SetQuote(const string &quote);
109
134
  void SetDelimiter(const string &delimiter);
135
+ void SetParallel(bool use_parallel);
136
+
137
+ void SetNewline(const string &input);
110
138
  //! Set an option that is supported by both reading and writing functions, called by
111
139
  //! the SetReadOption and SetWriteOption methods
112
140
  bool SetBaseOption(const string &loption, const Value &value);
@@ -21,7 +21,7 @@ namespace duckdb {
21
21
  struct CSVBufferRead {
22
22
  CSVBufferRead(shared_ptr<CSVBuffer> buffer_p, idx_t buffer_start_p, idx_t buffer_end_p, idx_t batch_index,
23
23
  idx_t estimated_linenr)
24
- : buffer(move(buffer_p)), buffer_start(buffer_start_p), buffer_end(buffer_end_p), batch_index(batch_index),
24
+ : buffer(std::move(buffer_p)), buffer_start(buffer_start_p), buffer_end(buffer_end_p), batch_index(batch_index),
25
25
  estimated_linenr(estimated_linenr) {
26
26
  if (buffer) {
27
27
  if (buffer_end > buffer->GetBufferSize()) {
@@ -76,7 +76,7 @@ struct CSVBufferRead {
76
76
  for (; cur_pos < length; cur_pos++) {
77
77
  intersection[cur_pos] = next_buffer_ptr[nxt_buffer_pos++];
78
78
  }
79
- intersections.emplace_back(move(intersection));
79
+ intersections.emplace_back(std::move(intersection));
80
80
  return string_t(intersections.back().get(), length);
81
81
  }
82
82
  }
@@ -91,6 +91,10 @@ struct CSVBufferRead {
91
91
  idx_t estimated_linenr;
92
92
  };
93
93
 
94
+ struct VerificationPositions {
95
+ idx_t beginning_of_first_line = 0;
96
+ idx_t end_of_last_line = 0;
97
+ };
94
98
  //! Buffered CSV reader is a class that reads values from a stream and parses them as a CSV file
95
99
  class ParallelCSVReader : public BaseCSVReader {
96
100
  public:
@@ -111,7 +115,10 @@ public:
111
115
  //! If this flag is set, it means we are about to try to read our last row.
112
116
  bool reached_remainder_state = false;
113
117
 
118
+ bool finished = false;
119
+
114
120
  unique_ptr<CSVBufferRead> buffer;
121
+ VerificationPositions GetVerificationPositions();
115
122
 
116
123
  public:
117
124
  void SetBufferRead(unique_ptr<CSVBufferRead> buffer);
@@ -134,8 +141,13 @@ private:
134
141
  //! when changing the buffer end the first time.
135
142
  //! It returns FALSE if the parser should jump to the final state of parsing or not
136
143
  bool BufferRemainder();
144
+
145
+ bool NewLineDelimiter(bool carry, bool carry_followed_by_nl, bool first_char);
146
+
137
147
  //! Parses a CSV file with a one-byte delimiter, escape and quote character
138
148
  bool TryParseSimpleCSV(DataChunk &insert_chunk, string &error_message, bool try_add_line = false);
149
+ //! Position of the first read line and last read line for verification purposes
150
+ VerificationPositions verification_positions;
139
151
  };
140
152
 
141
153
  } // namespace duckdb