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