duckdb 0.10.3-dev3.0 → 0.10.3-dev6.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 (1050) hide show
  1. package/binding.gyp +4 -5
  2. package/package.json +1 -1
  3. package/src/database.cpp +3 -3
  4. package/src/duckdb/extension/icu/icu_extension.cpp +44 -15
  5. package/src/duckdb/extension/icu/include/icu_extension.hpp +1 -0
  6. package/src/duckdb/extension/icu/third_party/icu/i18n/basictz.cpp +5 -5
  7. package/src/duckdb/extension/json/include/json_common.hpp +6 -1
  8. package/src/duckdb/extension/json/include/json_executors.hpp +5 -5
  9. package/src/duckdb/extension/json/include/json_extension.hpp +1 -0
  10. package/src/duckdb/extension/json/include/json_functions.hpp +2 -2
  11. package/src/duckdb/extension/json/include/json_serializer.hpp +2 -2
  12. package/src/duckdb/extension/json/json_common.cpp +69 -43
  13. package/src/duckdb/extension/json/json_extension.cpp +8 -0
  14. package/src/duckdb/extension/json/json_functions/copy_json.cpp +17 -16
  15. package/src/duckdb/extension/json/json_functions/json_create.cpp +3 -1
  16. package/src/duckdb/extension/json/json_functions/json_structure.cpp +18 -13
  17. package/src/duckdb/extension/json/json_functions/json_transform.cpp +4 -0
  18. package/src/duckdb/extension/json/json_functions/json_type.cpp +2 -2
  19. package/src/duckdb/extension/json/json_functions/read_json.cpp +14 -11
  20. package/src/duckdb/extension/json/json_functions/read_json_objects.cpp +11 -8
  21. package/src/duckdb/extension/json/json_functions.cpp +4 -3
  22. package/src/duckdb/extension/json/json_scan.cpp +21 -11
  23. package/src/duckdb/extension/parquet/column_reader.cpp +9 -5
  24. package/src/duckdb/extension/parquet/column_writer.cpp +31 -18
  25. package/src/duckdb/extension/parquet/include/column_writer.hpp +1 -0
  26. package/src/duckdb/extension/parquet/include/null_column_reader.hpp +54 -0
  27. package/src/duckdb/extension/parquet/include/parquet_extension.hpp +1 -0
  28. package/src/duckdb/extension/parquet/include/parquet_reader.hpp +1 -1
  29. package/src/duckdb/extension/parquet/include/parquet_writer.hpp +7 -2
  30. package/src/duckdb/extension/parquet/include/templated_column_reader.hpp +6 -1
  31. package/src/duckdb/extension/parquet/parquet_crypto.cpp +8 -6
  32. package/src/duckdb/extension/parquet/parquet_extension.cpp +271 -126
  33. package/src/duckdb/extension/parquet/parquet_metadata.cpp +39 -37
  34. package/src/duckdb/extension/parquet/parquet_reader.cpp +7 -4
  35. package/src/duckdb/extension/parquet/parquet_statistics.cpp +5 -4
  36. package/src/duckdb/extension/parquet/parquet_writer.cpp +55 -2
  37. package/src/duckdb/extension/parquet/serialize_parquet.cpp +2 -2
  38. package/src/duckdb/src/catalog/catalog.cpp +19 -39
  39. package/src/duckdb/src/catalog/catalog_entry/duck_index_entry.cpp +6 -6
  40. package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +47 -31
  41. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +84 -52
  42. package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +4 -2
  43. package/src/duckdb/src/catalog/catalog_entry/macro_catalog_entry.cpp +4 -0
  44. package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +7 -0
  45. package/src/duckdb/src/catalog/catalog_entry/sequence_catalog_entry.cpp +4 -1
  46. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +36 -15
  47. package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +7 -1
  48. package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +5 -1
  49. package/src/duckdb/src/catalog/catalog_entry.cpp +7 -0
  50. package/src/duckdb/src/catalog/catalog_entry_retriever.cpp +64 -0
  51. package/src/duckdb/src/catalog/catalog_set.cpp +32 -17
  52. package/src/duckdb/src/catalog/default/default_functions.cpp +2 -1
  53. package/src/duckdb/src/catalog/default/default_views.cpp +1 -1
  54. package/src/duckdb/src/catalog/dependency_manager.cpp +129 -9
  55. package/src/duckdb/src/catalog/duck_catalog.cpp +5 -0
  56. package/src/duckdb/src/common/adbc/nanoarrow/allocator.cpp +2 -2
  57. package/src/duckdb/src/common/adbc/nanoarrow/metadata.cpp +3 -3
  58. package/src/duckdb/src/common/adbc/nanoarrow/schema.cpp +7 -6
  59. package/src/duckdb/src/common/allocator.cpp +6 -2
  60. package/src/duckdb/src/common/arrow/appender/bool_data.cpp +1 -0
  61. package/src/duckdb/src/common/arrow/appender/struct_data.cpp +1 -1
  62. package/src/duckdb/src/common/arrow/appender/union_data.cpp +2 -1
  63. package/src/duckdb/src/common/arrow/arrow_appender.cpp +7 -5
  64. package/src/duckdb/src/common/arrow/arrow_converter.cpp +3 -5
  65. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +1 -1
  66. package/src/duckdb/src/common/box_renderer.cpp +6 -3
  67. package/src/duckdb/src/common/compressed_file_system.cpp +11 -7
  68. package/src/duckdb/src/common/enum_util.cpp +230 -17
  69. package/src/duckdb/src/common/enums/logical_operator_type.cpp +2 -0
  70. package/src/duckdb/src/common/enums/physical_operator_type.cpp +2 -0
  71. package/src/duckdb/src/common/enums/relation_type.cpp +2 -0
  72. package/src/duckdb/src/common/enums/statement_type.cpp +2 -0
  73. package/src/duckdb/src/common/error_data.cpp +12 -0
  74. package/src/duckdb/src/common/exception_format_value.cpp +1 -0
  75. package/src/duckdb/src/common/extra_type_info.cpp +86 -8
  76. package/src/duckdb/src/common/file_system.cpp +39 -7
  77. package/src/duckdb/src/common/gzip_file_system.cpp +38 -14
  78. package/src/duckdb/src/common/hive_partitioning.cpp +28 -76
  79. package/src/duckdb/src/common/http_state.cpp +4 -4
  80. package/src/duckdb/src/common/local_file_system.cpp +29 -12
  81. package/src/duckdb/src/common/multi_file_list.cpp +285 -0
  82. package/src/duckdb/src/common/multi_file_reader.cpp +112 -80
  83. package/src/duckdb/src/common/operator/cast_operators.cpp +27 -225
  84. package/src/duckdb/src/common/operator/string_cast.cpp +13 -14
  85. package/src/duckdb/src/common/pipe_file_system.cpp +3 -2
  86. package/src/duckdb/src/common/progress_bar/progress_bar.cpp +1 -1
  87. package/src/duckdb/src/common/random_engine.cpp +2 -1
  88. package/src/duckdb/src/common/re2_regex.cpp +6 -4
  89. package/src/duckdb/src/common/row_operations/row_aggregate.cpp +10 -10
  90. package/src/duckdb/src/common/row_operations/row_external.cpp +4 -3
  91. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +5 -3
  92. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +17 -4
  93. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +1 -1
  94. package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +4 -4
  95. package/src/duckdb/src/common/serializer/buffered_file_writer.cpp +9 -8
  96. package/src/duckdb/src/common/serializer/memory_stream.cpp +6 -3
  97. package/src/duckdb/src/common/serializer/serializer.cpp +1 -1
  98. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  99. package/src/duckdb/src/common/sort/merge_sorter.cpp +2 -2
  100. package/src/duckdb/src/common/sort/partition_state.cpp +6 -6
  101. package/src/duckdb/src/common/sort/radix_sort.cpp +1 -1
  102. package/src/duckdb/src/common/sort/sort_state.cpp +3 -3
  103. package/src/duckdb/src/common/sort/sorted_block.cpp +5 -5
  104. package/src/duckdb/src/common/string_util.cpp +69 -162
  105. package/src/duckdb/src/common/types/bit.cpp +1 -1
  106. package/src/duckdb/src/common/types/blob.cpp +3 -3
  107. package/src/duckdb/src/common/types/cast_helpers.cpp +197 -0
  108. package/src/duckdb/src/common/types/column/column_data_collection.cpp +17 -9
  109. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  110. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +13 -5
  111. package/src/duckdb/src/common/types/conflict_info.cpp +1 -1
  112. package/src/duckdb/src/common/types/conflict_manager.cpp +1 -1
  113. package/src/duckdb/src/common/types/data_chunk.cpp +1 -1
  114. package/src/duckdb/src/common/types/date.cpp +2 -2
  115. package/src/duckdb/src/common/types/decimal.cpp +12 -12
  116. package/src/duckdb/src/common/types/hash.cpp +1 -1
  117. package/src/duckdb/src/common/types/hugeint.cpp +10 -9
  118. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +4 -4
  119. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +6 -5
  120. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +21 -18
  121. package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +2 -2
  122. package/src/duckdb/src/common/types/row/tuple_data_segment.cpp +7 -0
  123. package/src/duckdb/src/common/types/string_heap.cpp +4 -0
  124. package/src/duckdb/src/common/types/timestamp.cpp +23 -1
  125. package/src/duckdb/src/common/types/uhugeint.cpp +1 -1
  126. package/src/duckdb/src/common/types/uuid.cpp +7 -6
  127. package/src/duckdb/src/common/types/value.cpp +54 -30
  128. package/src/duckdb/src/common/types/vector.cpp +71 -96
  129. package/src/duckdb/src/common/types/vector_buffer.cpp +4 -0
  130. package/src/duckdb/src/common/types/vector_cache.cpp +3 -3
  131. package/src/duckdb/src/common/types.cpp +124 -18
  132. package/src/duckdb/src/common/vector_operations/generators.cpp +4 -16
  133. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +20 -0
  134. package/src/duckdb/src/common/vector_operations/null_operations.cpp +1 -1
  135. package/src/duckdb/src/common/vector_operations/numeric_inplace_operators.cpp +2 -2
  136. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +1 -1
  137. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +13 -6
  138. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +8 -5
  139. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +2 -2
  140. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +2 -2
  141. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +2 -0
  142. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +2 -2
  143. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +8 -5
  144. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +14 -8
  145. package/src/duckdb/src/core_functions/function_list.cpp +2 -1
  146. package/src/duckdb/src/core_functions/lambda_functions.cpp +2 -2
  147. package/src/duckdb/src/core_functions/scalar/array/array_functions.cpp +5 -0
  148. package/src/duckdb/src/core_functions/scalar/bit/bitstring.cpp +4 -4
  149. package/src/duckdb/src/core_functions/scalar/blob/create_sort_key.cpp +3 -2
  150. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +2 -2
  151. package/src/duckdb/src/core_functions/scalar/date/epoch.cpp +17 -0
  152. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +1 -1
  153. package/src/duckdb/src/core_functions/scalar/date/to_interval.cpp +19 -0
  154. package/src/duckdb/src/core_functions/scalar/debug/vector_type.cpp +6 -5
  155. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +2 -3
  156. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +2 -2
  157. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +30 -21
  158. package/src/duckdb/src/core_functions/scalar/list/list_reduce.cpp +1 -1
  159. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +3 -3
  160. package/src/duckdb/src/core_functions/scalar/list/list_value.cpp +1 -1
  161. package/src/duckdb/src/core_functions/scalar/list/range.cpp +2 -2
  162. package/src/duckdb/src/core_functions/scalar/map/map.cpp +44 -14
  163. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +17 -4
  164. package/src/duckdb/src/core_functions/scalar/map/map_entries.cpp +30 -13
  165. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +25 -12
  166. package/src/duckdb/src/core_functions/scalar/map/map_keys_values.cpp +16 -4
  167. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +2 -2
  168. package/src/duckdb/src/core_functions/scalar/operators/bitwise.cpp +2 -2
  169. package/src/duckdb/src/core_functions/scalar/random/setseed.cpp +1 -1
  170. package/src/duckdb/src/core_functions/scalar/string/bar.cpp +1 -1
  171. package/src/duckdb/src/core_functions/scalar/string/chr.cpp +2 -2
  172. package/src/duckdb/src/core_functions/scalar/string/hex.cpp +13 -13
  173. package/src/duckdb/src/core_functions/scalar/string/instr.cpp +1 -1
  174. package/src/duckdb/src/core_functions/scalar/string/pad.cpp +8 -8
  175. package/src/duckdb/src/core_functions/scalar/string/repeat.cpp +15 -7
  176. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +1 -1
  177. package/src/duckdb/src/core_functions/scalar/string/to_base.cpp +1 -1
  178. package/src/duckdb/src/core_functions/scalar/string/translate.cpp +4 -4
  179. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +13 -9
  180. package/src/duckdb/src/core_functions/scalar/string/unicode.cpp +1 -1
  181. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  182. package/src/duckdb/src/execution/aggregate_hashtable.cpp +17 -8
  183. package/src/duckdb/src/execution/index/art/art.cpp +6 -6
  184. package/src/duckdb/src/execution/index/bound_index.cpp +115 -0
  185. package/src/duckdb/src/execution/index/unbound_index.cpp +30 -0
  186. package/src/duckdb/src/execution/join_hashtable.cpp +2 -1
  187. package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +1 -1
  188. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  189. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +3 -3
  190. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +40 -5
  191. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +2 -2
  192. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +16 -3
  193. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer.cpp +4 -4
  194. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.cpp +2 -12
  195. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_file_handle.cpp +2 -1
  196. package/src/duckdb/src/execution/operator/csv_scanner/scanner/base_scanner.cpp +21 -5
  197. package/src/duckdb/src/execution/operator/csv_scanner/scanner/column_count_scanner.cpp +1 -1
  198. package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +312 -260
  199. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/csv_sniffer.cpp +2 -2
  200. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +45 -16
  201. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +19 -18
  202. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +200 -55
  203. package/src/duckdb/src/execution/operator/csv_scanner/table_function/csv_file_scanner.cpp +26 -23
  204. package/src/duckdb/src/execution/operator/csv_scanner/table_function/global_csv_state.cpp +12 -12
  205. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +7 -7
  206. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +31 -22
  207. package/src/duckdb/src/execution/operator/helper/physical_buffered_collector.cpp +1 -1
  208. package/src/duckdb/src/execution/operator/helper/physical_execute.cpp +1 -1
  209. package/src/duckdb/src/execution/operator/helper/physical_load.cpp +24 -2
  210. package/src/duckdb/src/execution/operator/helper/physical_reservoir_sample.cpp +1 -1
  211. package/src/duckdb/src/execution/operator/helper/physical_update_extensions.cpp +57 -0
  212. package/src/duckdb/src/execution/operator/helper/physical_verify_vector.cpp +13 -8
  213. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  214. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +9 -9
  215. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +4 -4
  216. package/src/duckdb/src/execution/operator/join/physical_left_delim_join.cpp +1 -1
  217. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +2 -2
  218. package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +2 -2
  219. package/src/duckdb/src/execution/operator/order/physical_order.cpp +3 -2
  220. package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +4 -4
  221. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +20 -13
  222. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +70 -60
  223. package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +18 -7
  224. package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +88 -12
  225. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +47 -27
  226. package/src/duckdb/src/execution/operator/persistent/physical_update.cpp +34 -9
  227. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -0
  228. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -3
  229. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +22 -7
  230. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +1 -1
  231. package/src/duckdb/src/execution/operator/schema/physical_create_art_index.cpp +9 -9
  232. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +1 -1
  233. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +5 -4
  234. package/src/duckdb/src/execution/physical_operator.cpp +2 -2
  235. package/src/duckdb/src/execution/physical_plan/plan_column_data_get.cpp +2 -4
  236. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  237. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +2 -2
  238. package/src/duckdb/src/execution/physical_plan/plan_cte.cpp +1 -1
  239. package/src/duckdb/src/execution/physical_plan/plan_delete.cpp +2 -2
  240. package/src/duckdb/src/execution/physical_plan/plan_delim_get.cpp +2 -2
  241. package/src/duckdb/src/execution/physical_plan/plan_distinct.cpp +1 -0
  242. package/src/duckdb/src/execution/physical_plan/plan_expression_get.cpp +4 -5
  243. package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +6 -5
  244. package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +1 -1
  245. package/src/duckdb/src/execution/physical_plan/plan_simple.cpp +4 -0
  246. package/src/duckdb/src/execution/physical_plan/plan_top_n.cpp +2 -2
  247. package/src/duckdb/src/execution/physical_plan/plan_update.cpp +3 -3
  248. package/src/duckdb/src/execution/physical_plan/plan_window.cpp +1 -24
  249. package/src/duckdb/src/execution/physical_plan_generator.cpp +3 -0
  250. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +38 -33
  251. package/src/duckdb/src/execution/reservoir_sample.cpp +42 -31
  252. package/src/duckdb/src/execution/window_executor.cpp +39 -39
  253. package/src/duckdb/src/execution/window_segment_tree.cpp +5 -2
  254. package/src/duckdb/src/function/aggregate/distributive/first.cpp +1 -1
  255. package/src/duckdb/src/function/cast/string_cast.cpp +3 -3
  256. package/src/duckdb/src/function/cast_rules.cpp +1 -0
  257. package/src/duckdb/src/function/function.cpp +2 -2
  258. package/src/duckdb/src/function/function_binder.cpp +9 -4
  259. package/src/duckdb/src/function/pragma/pragma_functions.cpp +2 -1
  260. package/src/duckdb/src/function/pragma/pragma_queries.cpp +4 -3
  261. package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +1 -1
  262. package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -2
  263. package/src/duckdb/src/function/scalar/list/list_resize.cpp +1 -1
  264. package/src/duckdb/src/function/scalar/list/list_select.cpp +11 -4
  265. package/src/duckdb/src/function/scalar/list/list_zip.cpp +3 -1
  266. package/src/duckdb/src/function/scalar/operators/add.cpp +19 -9
  267. package/src/duckdb/src/function/scalar/sequence/nextval.cpp +77 -48
  268. package/src/duckdb/src/function/scalar/strftime_format.cpp +61 -39
  269. package/src/duckdb/src/function/scalar/string/caseconvert.cpp +12 -12
  270. package/src/duckdb/src/function/scalar/string/contains.cpp +2 -2
  271. package/src/duckdb/src/function/scalar/string/length.cpp +9 -9
  272. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +2 -2
  273. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +2 -1
  274. package/src/duckdb/src/function/scalar/string/substring.cpp +11 -9
  275. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +2 -2
  276. package/src/duckdb/src/function/scalar_function.cpp +2 -1
  277. package/src/duckdb/src/function/table/arrow.cpp +18 -4
  278. package/src/duckdb/src/function/table/arrow_conversion.cpp +88 -66
  279. package/src/duckdb/src/function/table/copy_csv.cpp +94 -28
  280. package/src/duckdb/src/function/table/glob.cpp +17 -9
  281. package/src/duckdb/src/function/table/read_csv.cpp +37 -14
  282. package/src/duckdb/src/function/table/read_file.cpp +6 -2
  283. package/src/duckdb/src/function/table/repeat.cpp +5 -1
  284. package/src/duckdb/src/function/table/repeat_row.cpp +1 -1
  285. package/src/duckdb/src/function/table/sniff_csv.cpp +9 -3
  286. package/src/duckdb/src/function/table/system/duckdb_columns.cpp +3 -3
  287. package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +31 -16
  288. package/src/duckdb/src/function/table/system/duckdb_databases.cpp +6 -1
  289. package/src/duckdb/src/function/table/system/duckdb_dependencies.cpp +2 -2
  290. package/src/duckdb/src/function/table/system/duckdb_extensions.cpp +48 -6
  291. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +8 -2
  292. package/src/duckdb/src/function/table/system/duckdb_indexes.cpp +9 -4
  293. package/src/duckdb/src/function/table/system/duckdb_memory.cpp +2 -2
  294. package/src/duckdb/src/function/table/system/duckdb_schemas.cpp +7 -2
  295. package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +8 -3
  296. package/src/duckdb/src/function/table/system/duckdb_tables.cpp +18 -10
  297. package/src/duckdb/src/function/table/system/duckdb_temporary_files.cpp +1 -1
  298. package/src/duckdb/src/function/table/system/duckdb_types.cpp +12 -5
  299. package/src/duckdb/src/function/table/system/duckdb_views.cpp +9 -4
  300. package/src/duckdb/src/function/table/system/duckdb_which_secret.cpp +75 -0
  301. package/src/duckdb/src/function/table/system/pragma_database_size.cpp +4 -4
  302. package/src/duckdb/src/function/table/system/pragma_metadata_info.cpp +3 -3
  303. package/src/duckdb/src/function/table/system/pragma_storage_info.cpp +6 -6
  304. package/src/duckdb/src/function/table/system_functions.cpp +1 -0
  305. package/src/duckdb/src/function/table/table_scan.cpp +11 -20
  306. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  307. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  308. package/src/duckdb/src/function/table_function.cpp +5 -4
  309. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +1 -10
  310. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_index_entry.hpp +1 -1
  311. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_schema_entry.hpp +2 -2
  312. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +6 -8
  313. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/function_entry.hpp +1 -0
  314. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +3 -2
  315. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +2 -5
  316. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +3 -4
  317. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +2 -0
  318. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +4 -0
  319. package/src/duckdb/src/include/duckdb/catalog/catalog_entry_retriever.hpp +72 -0
  320. package/src/duckdb/src/include/duckdb/catalog/catalog_transaction.hpp +3 -0
  321. package/src/duckdb/src/include/duckdb/catalog/dependency.hpp +4 -0
  322. package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +7 -1
  323. package/src/duckdb/src/include/duckdb/catalog/dependency_manager.hpp +2 -2
  324. package/src/duckdb/src/include/duckdb/catalog/standard_entry.hpp +2 -0
  325. package/src/duckdb/src/include/duckdb/common/arrow/appender/append_data.hpp +1 -0
  326. package/src/duckdb/src/include/duckdb/common/arrow/appender/enum_data.hpp +3 -3
  327. package/src/duckdb/src/include/duckdb/common/arrow/appender/map_data.hpp +1 -1
  328. package/src/duckdb/src/include/duckdb/common/arrow/appender/scalar_data.hpp +15 -0
  329. package/src/duckdb/src/include/duckdb/common/arrow/appender/varchar_data.hpp +3 -2
  330. package/src/duckdb/src/include/duckdb/common/bit_utils.hpp +63 -98
  331. package/src/duckdb/src/include/duckdb/common/bitpacking.hpp +4 -4
  332. package/src/duckdb/src/include/duckdb/common/constants.hpp +2 -0
  333. package/src/duckdb/src/include/duckdb/common/enable_shared_from_this.ipp +42 -0
  334. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +43 -3
  335. package/src/duckdb/src/include/duckdb/common/enums/checkpoint_type.hpp +38 -0
  336. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +1 -0
  337. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +1 -0
  338. package/src/duckdb/src/include/duckdb/common/enums/relation_type.hpp +1 -0
  339. package/src/duckdb/src/include/duckdb/common/enums/scan_options.hpp +3 -1
  340. package/src/duckdb/src/include/duckdb/common/enums/scan_vector_type.hpp +17 -0
  341. package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +1 -0
  342. package/src/duckdb/src/include/duckdb/common/enums/tableref_type.hpp +2 -1
  343. package/src/duckdb/src/include/duckdb/common/enums/undo_flags.hpp +2 -1
  344. package/src/duckdb/src/include/duckdb/common/exception.hpp +0 -1
  345. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +15 -1
  346. package/src/duckdb/src/include/duckdb/common/file_opener.hpp +4 -0
  347. package/src/duckdb/src/include/duckdb/common/file_system.hpp +3 -0
  348. package/src/duckdb/src/include/duckdb/common/gzip_file_system.hpp +3 -0
  349. package/src/duckdb/src/include/duckdb/common/helper.hpp +22 -1
  350. package/src/duckdb/src/include/duckdb/common/hive_partitioning.hpp +3 -17
  351. package/src/duckdb/src/include/duckdb/common/http_state.hpp +1 -1
  352. package/src/duckdb/src/include/duckdb/common/insertion_order_preserving_map.hpp +129 -0
  353. package/src/duckdb/src/include/duckdb/common/multi_file_list.hpp +151 -0
  354. package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +132 -56
  355. package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +7 -3
  356. package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +3 -0
  357. package/src/duckdb/src/include/duckdb/common/operator/add.hpp +2 -0
  358. package/src/duckdb/src/include/duckdb/common/operator/decimal_cast_operators.hpp +233 -0
  359. package/src/duckdb/src/include/duckdb/common/operator/integer_cast_operator.hpp +5 -4
  360. package/src/duckdb/src/include/duckdb/common/operator/numeric_cast.hpp +2 -2
  361. package/src/duckdb/src/include/duckdb/common/optional_ptr.hpp +5 -0
  362. package/src/duckdb/src/include/duckdb/common/optionally_owned_ptr.hpp +91 -0
  363. package/src/duckdb/src/include/duckdb/common/platform.h +6 -1
  364. package/src/duckdb/src/include/duckdb/common/radix.hpp +12 -4
  365. package/src/duckdb/src/include/duckdb/common/re2_regex.hpp +3 -2
  366. package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +2 -0
  367. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +2 -1
  368. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +8 -6
  369. package/src/duckdb/src/include/duckdb/common/serializer/deserializer.hpp +36 -0
  370. package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +65 -0
  371. package/src/duckdb/src/include/duckdb/common/serializer/serializer.hpp +52 -6
  372. package/src/duckdb/src/include/duckdb/common/shared_ptr.hpp +36 -3
  373. package/src/duckdb/src/include/duckdb/common/shared_ptr.ipp +268 -0
  374. package/src/duckdb/src/include/duckdb/common/sort/duckdb_pdqsort.hpp +3 -3
  375. package/src/duckdb/src/include/duckdb/common/string.hpp +3 -2
  376. package/src/duckdb/src/include/duckdb/common/string_util.hpp +11 -7
  377. package/src/duckdb/src/include/duckdb/common/types/bit.hpp +1 -1
  378. package/src/duckdb/src/include/duckdb/common/types/cast_helpers.hpp +43 -215
  379. package/src/duckdb/src/include/duckdb/common/types/datetime.hpp +36 -11
  380. package/src/duckdb/src/include/duckdb/common/types/hash.hpp +1 -1
  381. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_segment.hpp +7 -1
  382. package/src/duckdb/src/include/duckdb/common/types/selection_vector.hpp +1 -1
  383. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +2 -0
  384. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +2 -0
  385. package/src/duckdb/src/include/duckdb/common/types/validity_mask.hpp +1 -1
  386. package/src/duckdb/src/include/duckdb/common/types/value.hpp +4 -0
  387. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +20 -15
  388. package/src/duckdb/src/include/duckdb/common/types.hpp +14 -2
  389. package/src/duckdb/src/include/duckdb/common/unique_ptr.hpp +7 -6
  390. package/src/duckdb/src/include/duckdb/common/vector.hpp +11 -0
  391. package/src/duckdb/src/include/duckdb/common/vector_size.hpp +1 -1
  392. package/src/duckdb/src/include/duckdb/common/weak_ptr.ipp +117 -0
  393. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +3 -3
  394. package/src/duckdb/src/include/duckdb/core_functions/scalar/date_functions.hpp +18 -0
  395. package/src/duckdb/src/include/duckdb/execution/adaptive_filter.hpp +1 -0
  396. package/src/duckdb/src/include/duckdb/execution/expression_executor.hpp +1 -1
  397. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +4 -4
  398. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +1 -1
  399. package/src/duckdb/src/include/duckdb/execution/index/bound_index.hpp +145 -0
  400. package/src/duckdb/src/include/duckdb/execution/index/index_type.hpp +2 -2
  401. package/src/duckdb/src/include/duckdb/execution/index/unbound_index.hpp +63 -0
  402. package/src/duckdb/src/include/duckdb/execution/merge_sort_tree.hpp +24 -18
  403. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_streaming_window.hpp +2 -0
  404. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_window.hpp +2 -0
  405. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/base_scanner.hpp +10 -3
  406. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/column_count_scanner.hpp +1 -0
  407. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_error.hpp +6 -6
  408. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_reader_options.hpp +7 -6
  409. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_sniffer.hpp +24 -4
  410. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/string_value_scanner.hpp +90 -20
  411. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_update_extensions.hpp +52 -0
  412. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +3 -1
  413. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_delete.hpp +5 -5
  414. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_export.hpp +1 -0
  415. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_insert.hpp +8 -5
  416. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_update.hpp +4 -1
  417. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +4 -5
  418. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_expression_scan.hpp +6 -2
  419. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +1 -1
  420. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +1 -1
  421. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +1 -1
  422. package/src/duckdb/src/include/duckdb/execution/reservoir_sample.hpp +63 -8
  423. package/src/duckdb/src/include/duckdb/function/function.hpp +0 -5
  424. package/src/duckdb/src/include/duckdb/function/function_binder.hpp +6 -3
  425. package/src/duckdb/src/include/duckdb/function/replacement_scan.hpp +25 -2
  426. package/src/duckdb/src/include/duckdb/function/scalar/regexp.hpp +1 -1
  427. package/src/duckdb/src/include/duckdb/function/scalar/sequence_functions.hpp +3 -4
  428. package/src/duckdb/src/include/duckdb/function/scalar/strftime_format.hpp +5 -0
  429. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +1 -1
  430. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +13 -0
  431. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +7 -3
  432. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +3 -0
  433. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +4 -0
  434. package/src/duckdb/src/include/duckdb/function/table_function.hpp +15 -2
  435. package/src/duckdb/src/include/duckdb/logging/http_logger.hpp +81 -0
  436. package/src/duckdb/src/include/duckdb/main/appender.hpp +1 -3
  437. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +1 -1
  438. package/src/duckdb/src/include/duckdb/main/buffered_data/buffered_data.hpp +1 -0
  439. package/src/duckdb/src/include/duckdb/main/capi/cast/generic.hpp +2 -2
  440. package/src/duckdb/src/include/duckdb/main/client_config.hpp +8 -0
  441. package/src/duckdb/src/include/duckdb/main/client_context.hpp +1 -19
  442. package/src/duckdb/src/include/duckdb/main/client_context_state.hpp +11 -1
  443. package/src/duckdb/src/include/duckdb/main/client_context_wrapper.hpp +27 -0
  444. package/src/duckdb/src/include/duckdb/main/client_data.hpp +4 -0
  445. package/src/duckdb/src/include/duckdb/main/config.hpp +36 -3
  446. package/src/duckdb/src/include/duckdb/main/connection_manager.hpp +7 -17
  447. package/src/duckdb/src/include/duckdb/main/database.hpp +25 -20
  448. package/src/duckdb/src/include/duckdb/main/extension.hpp +25 -0
  449. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +155 -10
  450. package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +79 -12
  451. package/src/duckdb/src/include/duckdb/main/extension_install_info.hpp +89 -0
  452. package/src/duckdb/src/include/duckdb/main/extension_util.hpp +3 -1
  453. package/src/duckdb/src/include/duckdb/main/external_dependencies.hpp +46 -4
  454. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  455. package/src/duckdb/src/include/duckdb/main/relation/materialized_relation.hpp +35 -0
  456. package/src/duckdb/src/include/duckdb/main/relation/query_relation.hpp +1 -1
  457. package/src/duckdb/src/include/duckdb/main/relation/table_function_relation.hpp +2 -2
  458. package/src/duckdb/src/include/duckdb/main/relation/table_relation.hpp +1 -1
  459. package/src/duckdb/src/include/duckdb/main/relation/value_relation.hpp +3 -3
  460. package/src/duckdb/src/include/duckdb/main/relation/view_relation.hpp +1 -1
  461. package/src/duckdb/src/include/duckdb/main/relation.hpp +5 -6
  462. package/src/duckdb/src/include/duckdb/main/settings.hpp +47 -0
  463. package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +4 -4
  464. package/src/duckdb/src/include/duckdb/optimizer/join_order/cost_model.hpp +1 -1
  465. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_node.hpp +8 -15
  466. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_order_optimizer.hpp +0 -51
  467. package/src/duckdb/src/include/duckdb/optimizer/join_order/plan_enumerator.hpp +10 -17
  468. package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph_manager.hpp +5 -7
  469. package/src/duckdb/src/include/duckdb/optimizer/matcher/set_matcher.hpp +2 -1
  470. package/src/duckdb/src/include/duckdb/optimizer/optimizer_extension.hpp +10 -2
  471. package/src/duckdb/src/include/duckdb/optimizer/rule/list.hpp +1 -0
  472. package/src/duckdb/src/include/duckdb/optimizer/rule/timestamp_comparison.hpp +30 -0
  473. package/src/duckdb/src/include/duckdb/parallel/event.hpp +1 -1
  474. package/src/duckdb/src/include/duckdb/parallel/interrupt.hpp +1 -0
  475. package/src/duckdb/src/include/duckdb/parallel/meta_pipeline.hpp +1 -1
  476. package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +1 -1
  477. package/src/duckdb/src/include/duckdb/parallel/task.hpp +1 -1
  478. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +1 -1
  479. package/src/duckdb/src/include/duckdb/parser/column_definition.hpp +2 -0
  480. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +1 -0
  481. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_scalar_function_info.hpp +1 -0
  482. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_function_info.hpp +1 -0
  483. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +12 -0
  484. package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +1 -0
  485. package/src/duckdb/src/include/duckdb/parser/parsed_data/comment_on_column_info.hpp +3 -1
  486. package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_info.hpp +10 -12
  487. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +6 -2
  488. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_schema_info.hpp +3 -30
  489. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_sequence_info.hpp +2 -0
  490. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_type_info.hpp +12 -1
  491. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +1 -0
  492. package/src/duckdb/src/include/duckdb/parser/parsed_data/detach_info.hpp +1 -0
  493. package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +1 -0
  494. package/src/duckdb/src/include/duckdb/parser/parsed_data/exported_table_data.hpp +5 -2
  495. package/src/duckdb/src/include/duckdb/parser/parsed_data/load_info.hpp +4 -7
  496. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +7 -1
  497. package/src/duckdb/src/include/duckdb/parser/parsed_data/pragma_info.hpp +2 -11
  498. package/src/duckdb/src/include/duckdb/parser/parsed_data/transaction_info.hpp +2 -0
  499. package/src/duckdb/src/include/duckdb/parser/parsed_data/update_extensions_info.hpp +36 -0
  500. package/src/duckdb/src/include/duckdb/parser/parsed_data/vacuum_info.hpp +1 -0
  501. package/src/duckdb/src/include/duckdb/parser/parser_extension.hpp +1 -0
  502. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  503. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +1 -4
  504. package/src/duckdb/src/include/duckdb/parser/statement/alter_statement.hpp +1 -0
  505. package/src/duckdb/src/include/duckdb/parser/statement/attach_statement.hpp +1 -0
  506. package/src/duckdb/src/include/duckdb/parser/statement/call_statement.hpp +1 -0
  507. package/src/duckdb/src/include/duckdb/parser/statement/copy_database_statement.hpp +1 -2
  508. package/src/duckdb/src/include/duckdb/parser/statement/copy_statement.hpp +1 -3
  509. package/src/duckdb/src/include/duckdb/parser/statement/detach_statement.hpp +1 -0
  510. package/src/duckdb/src/include/duckdb/parser/statement/drop_statement.hpp +1 -0
  511. package/src/duckdb/src/include/duckdb/parser/statement/execute_statement.hpp +1 -0
  512. package/src/duckdb/src/include/duckdb/parser/statement/explain_statement.hpp +1 -0
  513. package/src/duckdb/src/include/duckdb/parser/statement/export_statement.hpp +1 -0
  514. package/src/duckdb/src/include/duckdb/parser/statement/extension_statement.hpp +1 -0
  515. package/src/duckdb/src/include/duckdb/parser/statement/insert_statement.hpp +1 -0
  516. package/src/duckdb/src/include/duckdb/parser/statement/list.hpp +1 -0
  517. package/src/duckdb/src/include/duckdb/parser/statement/load_statement.hpp +1 -0
  518. package/src/duckdb/src/include/duckdb/parser/statement/logical_plan_statement.hpp +3 -0
  519. package/src/duckdb/src/include/duckdb/parser/statement/multi_statement.hpp +1 -0
  520. package/src/duckdb/src/include/duckdb/parser/statement/pragma_statement.hpp +1 -0
  521. package/src/duckdb/src/include/duckdb/parser/statement/prepare_statement.hpp +1 -0
  522. package/src/duckdb/src/include/duckdb/parser/statement/relation_statement.hpp +1 -0
  523. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -0
  524. package/src/duckdb/src/include/duckdb/parser/statement/set_statement.hpp +6 -4
  525. package/src/duckdb/src/include/duckdb/parser/statement/transaction_statement.hpp +1 -0
  526. package/src/duckdb/src/include/duckdb/parser/statement/update_extensions_statement.hpp +36 -0
  527. package/src/duckdb/src/include/duckdb/parser/statement/vacuum_statement.hpp +1 -0
  528. package/src/duckdb/src/include/duckdb/parser/tableref/column_data_ref.hpp +46 -0
  529. package/src/duckdb/src/include/duckdb/parser/tableref/list.hpp +1 -0
  530. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +0 -4
  531. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +3 -0
  532. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +2 -0
  533. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +5 -0
  534. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +4 -4
  535. package/src/duckdb/src/include/duckdb/planner/binder.hpp +42 -16
  536. package/src/duckdb/src/include/duckdb/planner/bound_tokens.hpp +1 -0
  537. package/src/duckdb/src/include/duckdb/planner/expression_binder/alter_binder.hpp +7 -6
  538. package/src/duckdb/src/include/duckdb/planner/expression_binder/having_binder.hpp +2 -1
  539. package/src/duckdb/src/include/duckdb/planner/expression_binder/index_binder.hpp +5 -1
  540. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +5 -0
  541. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +0 -1
  542. package/src/duckdb/src/include/duckdb/planner/operator/logical_column_data_get.hpp +6 -2
  543. package/src/duckdb/src/include/duckdb/planner/operator/logical_delete.hpp +2 -0
  544. package/src/duckdb/src/include/duckdb/planner/operator/logical_export.hpp +7 -0
  545. package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +2 -0
  546. package/src/duckdb/src/include/duckdb/planner/operator/logical_top_n.hpp +3 -3
  547. package/src/duckdb/src/include/duckdb/planner/operator/logical_update.hpp +2 -0
  548. package/src/duckdb/src/include/duckdb/planner/parsed_data/bound_create_table_info.hpp +0 -4
  549. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +4 -4
  550. package/src/duckdb/src/include/duckdb/planner/tableref/bound_column_data_ref.hpp +30 -0
  551. package/src/duckdb/src/include/duckdb/planner/tableref/list.hpp +1 -0
  552. package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +6 -3
  553. package/src/duckdb/src/include/duckdb/storage/buffer/buffer_pool.hpp +16 -7
  554. package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +15 -3
  555. package/src/duckdb/src/include/duckdb/storage/checkpoint/row_group_writer.hpp +10 -7
  556. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +2 -0
  557. package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +24 -15
  558. package/src/duckdb/src/include/duckdb/storage/compression/alp/algorithm/alp.hpp +8 -7
  559. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_compress.hpp +2 -2
  560. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_constants.hpp +5 -4
  561. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_fetch.hpp +1 -1
  562. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_utils.hpp +3 -3
  563. package/src/duckdb/src/include/duckdb/storage/compression/alprd/algorithm/alprd.hpp +2 -1
  564. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_analyze.hpp +5 -3
  565. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_compress.hpp +2 -2
  566. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_fetch.hpp +1 -1
  567. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/bit_reader.hpp +1 -1
  568. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_fetch.hpp +1 -1
  569. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_fetch.hpp +1 -1
  570. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +55 -16
  571. package/src/duckdb/src/include/duckdb/storage/index.hpp +33 -97
  572. package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +3 -3
  573. package/src/duckdb/src/include/duckdb/storage/optimistic_data_writer.hpp +1 -1
  574. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +3 -3
  575. package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +22 -9
  576. package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +6 -3
  577. package/src/duckdb/src/include/duckdb/storage/storage_lock.hpp +17 -13
  578. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +27 -8
  579. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +3 -2
  580. package/src/duckdb/src/include/duckdb/storage/table/append_state.hpp +12 -0
  581. package/src/duckdb/src/include/duckdb/storage/table/array_column_data.hpp +5 -4
  582. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +29 -10
  583. package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +2 -1
  584. package/src/duckdb/src/include/duckdb/storage/table/data_table_info.hpp +32 -6
  585. package/src/duckdb/src/include/duckdb/storage/table/delete_state.hpp +23 -0
  586. package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +5 -4
  587. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +14 -3
  588. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +3 -2
  589. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +4 -0
  590. package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +5 -5
  591. package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +6 -6
  592. package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +5 -4
  593. package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +25 -1
  594. package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +5 -2
  595. package/src/duckdb/src/include/duckdb/storage/table/update_state.hpp +20 -0
  596. package/src/duckdb/src/include/duckdb/storage/table/validity_column_data.hpp +1 -0
  597. package/src/duckdb/src/include/duckdb/storage/temporary_file_manager.hpp +20 -4
  598. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +10 -5
  599. package/src/duckdb/src/include/duckdb/transaction/duck_transaction.hpp +19 -4
  600. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +30 -7
  601. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +8 -5
  602. package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +1 -0
  603. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +8 -0
  604. package/src/duckdb/src/include/duckdb/transaction/undo_buffer.hpp +9 -1
  605. package/src/duckdb/src/include/duckdb.h +15 -11
  606. package/src/duckdb/src/main/appender.cpp +3 -1
  607. package/src/duckdb/src/main/attached_database.cpp +5 -3
  608. package/src/duckdb/src/main/capi/appender-c.cpp +4 -3
  609. package/src/duckdb/src/main/capi/arrow-c.cpp +4 -4
  610. package/src/duckdb/src/main/capi/helper-c.cpp +3 -3
  611. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -5
  612. package/src/duckdb/src/main/capi/result-c.cpp +19 -5
  613. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  614. package/src/duckdb/src/main/client_context.cpp +32 -23
  615. package/src/duckdb/src/main/client_context_file_opener.cpp +31 -0
  616. package/src/duckdb/src/main/client_context_wrapper.cpp +22 -0
  617. package/src/duckdb/src/main/client_data.cpp +5 -3
  618. package/src/duckdb/src/main/config.cpp +71 -2
  619. package/src/duckdb/src/main/connection.cpp +11 -10
  620. package/src/duckdb/src/main/connection_manager.cpp +9 -23
  621. package/src/duckdb/src/main/database.cpp +26 -30
  622. package/src/duckdb/src/main/db_instance_cache.cpp +1 -1
  623. package/src/duckdb/src/main/extension/extension_helper.cpp +396 -17
  624. package/src/duckdb/src/main/extension/extension_install.cpp +297 -89
  625. package/src/duckdb/src/main/extension/extension_load.cpp +137 -135
  626. package/src/duckdb/src/main/extension/extension_util.cpp +8 -2
  627. package/src/duckdb/src/main/extension.cpp +56 -0
  628. package/src/duckdb/src/main/extension_install_info.cpp +116 -0
  629. package/src/duckdb/src/main/materialized_query_result.cpp +11 -0
  630. package/src/duckdb/src/main/query_profiler.cpp +1 -1
  631. package/src/duckdb/src/main/relation/create_view_relation.cpp +6 -0
  632. package/src/duckdb/src/main/relation/materialized_relation.cpp +58 -0
  633. package/src/duckdb/src/main/relation/query_relation.cpp +20 -1
  634. package/src/duckdb/src/main/relation/read_csv_relation.cpp +5 -3
  635. package/src/duckdb/src/main/relation/table_relation.cpp +4 -4
  636. package/src/duckdb/src/main/relation/value_relation.cpp +2 -2
  637. package/src/duckdb/src/main/relation/view_relation.cpp +1 -1
  638. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  639. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  640. package/src/duckdb/src/main/relation.cpp +36 -32
  641. package/src/duckdb/src/main/secret/secret.cpp +1 -1
  642. package/src/duckdb/src/main/settings/settings.cpp +137 -11
  643. package/src/duckdb/src/optimizer/common_aggregate_optimizer.cpp +1 -1
  644. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  645. package/src/duckdb/src/optimizer/filter_pushdown.cpp +3 -2
  646. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +3 -3
  647. package/src/duckdb/src/optimizer/join_order/cost_model.cpp +1 -1
  648. package/src/duckdb/src/optimizer/join_order/join_node.cpp +4 -27
  649. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +5 -8
  650. package/src/duckdb/src/optimizer/join_order/plan_enumerator.cpp +32 -107
  651. package/src/duckdb/src/optimizer/join_order/query_graph_manager.cpp +68 -61
  652. package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +4 -2
  653. package/src/duckdb/src/optimizer/join_order/relation_statistics_helper.cpp +3 -3
  654. package/src/duckdb/src/optimizer/optimizer.cpp +3 -1
  655. package/src/duckdb/src/optimizer/pushdown/pushdown_aggregate.cpp +2 -2
  656. package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +1 -1
  657. package/src/duckdb/src/optimizer/pushdown/pushdown_left_join.cpp +2 -2
  658. package/src/duckdb/src/optimizer/pushdown/pushdown_mark_join.cpp +6 -6
  659. package/src/duckdb/src/optimizer/pushdown/pushdown_projection.cpp +1 -1
  660. package/src/duckdb/src/optimizer/pushdown/pushdown_semi_anti_join.cpp +1 -1
  661. package/src/duckdb/src/optimizer/pushdown/pushdown_set_operation.cpp +1 -1
  662. package/src/duckdb/src/optimizer/pushdown/pushdown_single_join.cpp +2 -2
  663. package/src/duckdb/src/optimizer/remove_duplicate_groups.cpp +1 -1
  664. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +1 -1
  665. package/src/duckdb/src/optimizer/rule/arithmetic_simplification.cpp +1 -1
  666. package/src/duckdb/src/optimizer/rule/case_simplification.cpp +2 -2
  667. package/src/duckdb/src/optimizer/rule/conjunction_simplification.cpp +2 -1
  668. package/src/duckdb/src/optimizer/rule/constant_folding.cpp +1 -0
  669. package/src/duckdb/src/optimizer/rule/distributivity.cpp +1 -1
  670. package/src/duckdb/src/optimizer/rule/empty_needle_removal.cpp +1 -0
  671. package/src/duckdb/src/optimizer/rule/enum_comparison.cpp +1 -0
  672. package/src/duckdb/src/optimizer/rule/in_clause_simplification_rule.cpp +1 -0
  673. package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +1 -2
  674. package/src/duckdb/src/optimizer/rule/timestamp_comparison.cpp +107 -0
  675. package/src/duckdb/src/optimizer/statistics/expression/propagate_conjunction.cpp +1 -1
  676. package/src/duckdb/src/optimizer/statistics/expression/propagate_operator.cpp +4 -4
  677. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +3 -3
  678. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +1 -1
  679. package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +6 -3
  680. package/src/duckdb/src/optimizer/statistics/operator/propagate_set_operation.cpp +2 -1
  681. package/src/duckdb/src/optimizer/topn_optimizer.cpp +2 -2
  682. package/src/duckdb/src/parallel/executor.cpp +12 -9
  683. package/src/duckdb/src/parallel/meta_pipeline.cpp +2 -2
  684. package/src/duckdb/src/parallel/pipeline.cpp +2 -2
  685. package/src/duckdb/src/parallel/task_scheduler.cpp +9 -3
  686. package/src/duckdb/src/parser/column_definition.cpp +1 -0
  687. package/src/duckdb/src/parser/constraints/foreign_key_constraint.cpp +9 -7
  688. package/src/duckdb/src/parser/expression/star_expression.cpp +2 -2
  689. package/src/duckdb/src/parser/parsed_data/alter_scalar_function_info.cpp +4 -0
  690. package/src/duckdb/src/parser/parsed_data/alter_table_function_info.cpp +4 -0
  691. package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +183 -0
  692. package/src/duckdb/src/parser/parsed_data/attach_info.cpp +23 -0
  693. package/src/duckdb/src/parser/parsed_data/comment_on_column_info.cpp +15 -2
  694. package/src/duckdb/src/parser/parsed_data/copy_info.cpp +100 -0
  695. package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +16 -2
  696. package/src/duckdb/src/parser/parsed_data/create_info.cpp +2 -0
  697. package/src/duckdb/src/parser/parsed_data/create_schema_info.cpp +40 -0
  698. package/src/duckdb/src/parser/parsed_data/create_sequence_info.cpp +22 -0
  699. package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +12 -4
  700. package/src/duckdb/src/parser/parsed_data/create_type_info.cpp +37 -14
  701. package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +4 -4
  702. package/src/duckdb/src/parser/parsed_data/detach_info.cpp +12 -0
  703. package/src/duckdb/src/parser/parsed_data/drop_info.cpp +21 -0
  704. package/src/duckdb/src/parser/parsed_data/load_info.cpp +46 -0
  705. package/src/duckdb/src/parser/parsed_data/parse_info.cpp +50 -0
  706. package/src/duckdb/src/parser/parsed_data/pragma_info.cpp +33 -0
  707. package/src/duckdb/src/parser/parsed_data/transaction_info.cpp +22 -0
  708. package/src/duckdb/src/parser/parsed_data/vacuum_info.cpp +20 -0
  709. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +1 -0
  710. package/src/duckdb/src/parser/parser.cpp +5 -4
  711. package/src/duckdb/src/parser/query_node.cpp +6 -2
  712. package/src/duckdb/src/parser/statement/alter_statement.cpp +4 -0
  713. package/src/duckdb/src/parser/statement/attach_statement.cpp +4 -0
  714. package/src/duckdb/src/parser/statement/call_statement.cpp +8 -0
  715. package/src/duckdb/src/parser/statement/copy_statement.cpp +1 -91
  716. package/src/duckdb/src/parser/statement/detach_statement.cpp +4 -0
  717. package/src/duckdb/src/parser/statement/drop_statement.cpp +4 -0
  718. package/src/duckdb/src/parser/statement/execute_statement.cpp +15 -0
  719. package/src/duckdb/src/parser/statement/explain_statement.cpp +19 -0
  720. package/src/duckdb/src/parser/statement/export_statement.cpp +18 -0
  721. package/src/duckdb/src/parser/statement/extension_statement.cpp +4 -0
  722. package/src/duckdb/src/parser/statement/load_statement.cpp +4 -0
  723. package/src/duckdb/src/parser/statement/multi_statement.cpp +8 -0
  724. package/src/duckdb/src/parser/statement/pragma_statement.cpp +4 -0
  725. package/src/duckdb/src/parser/statement/prepare_statement.cpp +13 -0
  726. package/src/duckdb/src/parser/statement/relation_statement.cpp +4 -0
  727. package/src/duckdb/src/parser/statement/set_statement.cpp +33 -4
  728. package/src/duckdb/src/parser/statement/transaction_statement.cpp +4 -0
  729. package/src/duckdb/src/parser/statement/update_extensions_statement.cpp +34 -0
  730. package/src/duckdb/src/parser/statement/vacuum_statement.cpp +4 -0
  731. package/src/duckdb/src/parser/tableref/column_data_ref.cpp +81 -0
  732. package/src/duckdb/src/parser/tableref.cpp +1 -0
  733. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +2 -2
  734. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +1 -1
  735. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +6 -1
  736. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +1 -1
  737. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +1 -1
  738. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +16 -0
  739. package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +2 -0
  740. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +97 -63
  741. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +2 -0
  742. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +1 -1
  743. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -2
  744. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +19 -0
  745. package/src/duckdb/src/parser/transformer.cpp +5 -2
  746. package/src/duckdb/src/planner/bind_context.cpp +2 -2
  747. package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +35 -8
  748. package/src/duckdb/src/planner/binder/expression/bind_cast_expression.cpp +1 -1
  749. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +13 -7
  750. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +1 -1
  751. package/src/duckdb/src/planner/binder/query_node/plan_setop.cpp +35 -2
  752. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +0 -2
  753. package/src/duckdb/src/planner/binder/statement/bind_attach.cpp +2 -0
  754. package/src/duckdb/src/planner/binder/statement/bind_call.cpp +2 -0
  755. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +7 -3
  756. package/src/duckdb/src/planner/binder/statement/bind_copy_database.cpp +21 -68
  757. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +141 -28
  758. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +115 -57
  759. package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +4 -0
  760. package/src/duckdb/src/planner/binder/statement/bind_detach.cpp +2 -0
  761. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +2 -0
  762. package/src/duckdb/src/planner/binder/statement/bind_execute.cpp +4 -2
  763. package/src/duckdb/src/planner/binder/statement/bind_explain.cpp +2 -0
  764. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +15 -4
  765. package/src/duckdb/src/planner/binder/statement/bind_extension.cpp +1 -0
  766. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +5 -1
  767. package/src/duckdb/src/planner/binder/statement/bind_load.cpp +13 -0
  768. package/src/duckdb/src/planner/binder/statement/bind_logical_plan.cpp +2 -0
  769. package/src/duckdb/src/planner/binder/statement/bind_pragma.cpp +2 -0
  770. package/src/duckdb/src/planner/binder/statement/bind_prepare.cpp +1 -0
  771. package/src/duckdb/src/planner/binder/statement/bind_select.cpp +1 -0
  772. package/src/duckdb/src/planner/binder/statement/bind_set.cpp +4 -0
  773. package/src/duckdb/src/planner/binder/statement/bind_simple.cpp +6 -4
  774. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +5 -1
  775. package/src/duckdb/src/planner/binder/statement/bind_update_extensions.cpp +28 -0
  776. package/src/duckdb/src/planner/binder/statement/bind_vacuum.cpp +2 -0
  777. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +32 -29
  778. package/src/duckdb/src/planner/binder/tableref/bind_column_data_ref.cpp +16 -0
  779. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +7 -4
  780. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +32 -22
  781. package/src/duckdb/src/planner/binder/tableref/plan_column_data_ref.cpp +15 -0
  782. package/src/duckdb/src/planner/binder.cpp +50 -30
  783. package/src/duckdb/src/planner/bound_parameter_map.cpp +1 -1
  784. package/src/duckdb/src/planner/bound_result_modifier.cpp +1 -1
  785. package/src/duckdb/src/planner/expression/bound_expression.cpp +3 -2
  786. package/src/duckdb/src/planner/expression_binder/alter_binder.cpp +24 -7
  787. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +27 -2
  788. package/src/duckdb/src/planner/expression_binder/having_binder.cpp +34 -19
  789. package/src/duckdb/src/planner/expression_binder/index_binder.cpp +33 -0
  790. package/src/duckdb/src/planner/expression_binder/order_binder.cpp +10 -1
  791. package/src/duckdb/src/planner/expression_binder.cpp +4 -0
  792. package/src/duckdb/src/planner/expression_iterator.cpp +3 -1
  793. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  794. package/src/duckdb/src/planner/operator/logical_column_data_get.cpp +16 -2
  795. package/src/duckdb/src/planner/operator/logical_delete.cpp +2 -0
  796. package/src/duckdb/src/planner/operator/logical_get.cpp +4 -1
  797. package/src/duckdb/src/planner/operator/logical_insert.cpp +2 -0
  798. package/src/duckdb/src/planner/operator/logical_top_n.cpp +1 -1
  799. package/src/duckdb/src/planner/operator/logical_update.cpp +2 -0
  800. package/src/duckdb/src/planner/planner.cpp +35 -9
  801. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +34 -9
  802. package/src/duckdb/src/planner/table_binding.cpp +1 -1
  803. package/src/duckdb/src/storage/arena_allocator.cpp +5 -3
  804. package/src/duckdb/src/storage/buffer/block_handle.cpp +3 -3
  805. package/src/duckdb/src/storage/buffer/block_manager.cpp +1 -1
  806. package/src/duckdb/src/storage/buffer/buffer_pool.cpp +83 -22
  807. package/src/duckdb/src/storage/buffer/buffer_pool_reservation.cpp +2 -2
  808. package/src/duckdb/src/storage/buffer_manager.cpp +6 -2
  809. package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +9 -0
  810. package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +7 -2
  811. package/src/duckdb/src/storage/checkpoint_manager.cpp +68 -104
  812. package/src/duckdb/src/storage/compression/bitpacking.cpp +19 -13
  813. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +9 -7
  814. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +1 -1
  815. package/src/duckdb/src/storage/compression/fsst.cpp +11 -7
  816. package/src/duckdb/src/storage/compression/rle.cpp +1 -1
  817. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +5 -4
  818. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +1 -1
  819. package/src/duckdb/src/storage/data_table.cpp +254 -101
  820. package/src/duckdb/src/storage/index.cpp +2 -106
  821. package/src/duckdb/src/storage/local_storage.cpp +38 -50
  822. package/src/duckdb/src/storage/metadata/metadata_manager.cpp +2 -2
  823. package/src/duckdb/src/storage/metadata/metadata_writer.cpp +1 -1
  824. package/src/duckdb/src/storage/optimistic_data_writer.cpp +9 -11
  825. package/src/duckdb/src/storage/partial_block_manager.cpp +6 -6
  826. package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +8 -0
  827. package/src/duckdb/src/storage/serialization/serialize_dependency.cpp +49 -0
  828. package/src/duckdb/src/storage/serialization/serialize_extension_install_info.cpp +28 -0
  829. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +5 -2
  830. package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +78 -2
  831. package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +21 -0
  832. package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +16 -0
  833. package/src/duckdb/src/storage/serialization/serialize_types.cpp +6 -1
  834. package/src/duckdb/src/storage/single_file_block_manager.cpp +22 -19
  835. package/src/duckdb/src/storage/standard_buffer_manager.cpp +68 -40
  836. package/src/duckdb/src/storage/statistics/column_statistics.cpp +3 -3
  837. package/src/duckdb/src/storage/statistics/distinct_statistics.cpp +1 -1
  838. package/src/duckdb/src/storage/storage_info.cpp +67 -23
  839. package/src/duckdb/src/storage/storage_lock.cpp +77 -17
  840. package/src/duckdb/src/storage/storage_manager.cpp +56 -43
  841. package/src/duckdb/src/storage/table/array_column_data.cpp +13 -12
  842. package/src/duckdb/src/storage/table/column_data.cpp +80 -37
  843. package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +1 -1
  844. package/src/duckdb/src/storage/table/column_segment.cpp +6 -5
  845. package/src/duckdb/src/storage/table/list_column_data.cpp +15 -14
  846. package/src/duckdb/src/storage/table/row_group.cpp +38 -23
  847. package/src/duckdb/src/storage/table/row_group_collection.cpp +52 -38
  848. package/src/duckdb/src/storage/table/row_version_manager.cpp +2 -2
  849. package/src/duckdb/src/storage/table/standard_column_data.cpp +28 -16
  850. package/src/duckdb/src/storage/table/struct_column_data.cpp +23 -16
  851. package/src/duckdb/src/storage/table/table_statistics.cpp +27 -8
  852. package/src/duckdb/src/storage/table/update_segment.cpp +6 -6
  853. package/src/duckdb/src/storage/table/validity_column_data.cpp +5 -0
  854. package/src/duckdb/src/storage/table_index_list.cpp +69 -42
  855. package/src/duckdb/src/storage/temporary_file_manager.cpp +111 -17
  856. package/src/duckdb/src/storage/temporary_memory_manager.cpp +4 -4
  857. package/src/duckdb/src/storage/wal_replay.cpp +27 -22
  858. package/src/duckdb/src/storage/write_ahead_log.cpp +42 -22
  859. package/src/duckdb/src/transaction/cleanup_state.cpp +4 -7
  860. package/src/duckdb/src/transaction/commit_state.cpp +17 -8
  861. package/src/duckdb/src/transaction/duck_transaction.cpp +60 -15
  862. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +154 -121
  863. package/src/duckdb/src/transaction/meta_transaction.cpp +19 -1
  864. package/src/duckdb/src/transaction/rollback_state.cpp +2 -0
  865. package/src/duckdb/src/transaction/transaction.cpp +7 -7
  866. package/src/duckdb/src/transaction/undo_buffer.cpp +37 -17
  867. package/src/duckdb/third_party/concurrentqueue/concurrentqueue.h +5 -5
  868. package/src/duckdb/third_party/fsst/fsst.h +1 -1
  869. package/src/duckdb/third_party/jaro_winkler/details/common.hpp +9 -9
  870. package/src/duckdb/third_party/jaro_winkler/details/intrinsics.hpp +1 -1
  871. package/src/duckdb/third_party/jaro_winkler/details/jaro_impl.hpp +18 -18
  872. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +1 -0
  873. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +12 -0
  874. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +555 -1032
  875. package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +3 -0
  876. package/src/duckdb/third_party/libpg_query/include/utils/datetime.hpp +1 -0
  877. package/src/duckdb/third_party/libpg_query/pg_functions.cpp +13 -6
  878. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +23925 -23444
  879. package/src/duckdb/third_party/mbedtls/library/constant_time.cpp +1 -1
  880. package/src/duckdb/third_party/parquet/parquet_types.cpp +3 -0
  881. package/src/duckdb/third_party/parquet/parquet_types.h +2 -1
  882. package/src/duckdb/third_party/re2/re2/compile.cc +2 -2
  883. package/src/duckdb/third_party/re2/re2/dfa.cc +3 -8
  884. package/src/duckdb/third_party/re2/re2/onepass.cc +4 -3
  885. package/src/duckdb/third_party/re2/re2/prog.cc +10 -10
  886. package/src/duckdb/third_party/re2/re2/prog.h +8 -8
  887. package/src/duckdb/third_party/tdigest/t_digest.hpp +6 -6
  888. package/src/duckdb/third_party/utf8proc/include/utf8proc.hpp +1 -1
  889. package/src/duckdb/third_party/yyjson/include/yyjson.hpp +7930 -0
  890. package/src/duckdb/third_party/yyjson/yyjson.cpp +9490 -0
  891. package/src/duckdb/ub_src_catalog.cpp +2 -0
  892. package/src/duckdb/ub_src_common.cpp +2 -0
  893. package/src/duckdb/ub_src_execution_index.cpp +3 -1
  894. package/src/duckdb/ub_src_execution_operator_helper.cpp +2 -0
  895. package/src/duckdb/ub_src_function_table_system.cpp +2 -0
  896. package/src/duckdb/ub_src_main.cpp +4 -0
  897. package/src/duckdb/ub_src_main_relation.cpp +2 -0
  898. package/src/duckdb/ub_src_optimizer.cpp +8 -8
  899. package/src/duckdb/ub_src_optimizer_join_order.cpp +0 -2
  900. package/src/duckdb/ub_src_optimizer_rule.cpp +4 -2
  901. package/src/duckdb/ub_src_parser_parsed_data.cpp +10 -0
  902. package/src/duckdb/ub_src_parser_statement.cpp +2 -0
  903. package/src/duckdb/ub_src_parser_tableref.cpp +2 -0
  904. package/src/duckdb/ub_src_planner_binder_statement.cpp +2 -0
  905. package/src/duckdb/ub_src_planner_binder_tableref.cpp +4 -0
  906. package/src/duckdb/ub_src_storage_serialization.cpp +4 -0
  907. package/src/duckdb/src/catalog/catalog_entry/ub_duckdb_catalog_entries.cpp +0 -16
  908. package/src/duckdb/src/catalog/default/ub_duckdb_catalog_default_entries.cpp +0 -5
  909. package/src/duckdb/src/catalog/ub_duckdb_catalog.cpp +0 -10
  910. package/src/duckdb/src/common/adbc/nanoarrow/ub_duckdb_adbc_nanoarrow.cpp +0 -5
  911. package/src/duckdb/src/common/adbc/ub_duckdb_adbc.cpp +0 -3
  912. package/src/duckdb/src/common/arrow/appender/ub_duckdb_common_arrow_appender.cpp +0 -6
  913. package/src/duckdb/src/common/arrow/ub_duckdb_common_arrow.cpp +0 -4
  914. package/src/duckdb/src/common/crypto/ub_duckdb_common_crypto.cpp +0 -2
  915. package/src/duckdb/src/common/enums/ub_duckdb_common_enums.cpp +0 -12
  916. package/src/duckdb/src/common/operator/ub_duckdb_common_operators.cpp +0 -4
  917. package/src/duckdb/src/common/progress_bar/ub_duckdb_progress_bar.cpp +0 -3
  918. package/src/duckdb/src/common/row_operations/ub_duckdb_row_operations.cpp +0 -9
  919. package/src/duckdb/src/common/serializer/ub_duckdb_common_serializer.cpp +0 -7
  920. package/src/duckdb/src/common/sort/ub_duckdb_sort.cpp +0 -7
  921. package/src/duckdb/src/common/types/column/ub_duckdb_common_types_column.cpp +0 -6
  922. package/src/duckdb/src/common/types/row/ub_duckdb_common_types_row.cpp +0 -11
  923. package/src/duckdb/src/common/types/ub_duckdb_common_types.cpp +0 -28
  924. package/src/duckdb/src/common/ub_duckdb_common.cpp +0 -34
  925. package/src/duckdb/src/common/value_operations/ub_duckdb_value_operations.cpp +0 -2
  926. package/src/duckdb/src/core_functions/aggregate/algebraic/ub_duckdb_aggr_algebraic.cpp +0 -5
  927. package/src/duckdb/src/core_functions/aggregate/distributive/ub_duckdb_aggr_distributive.cpp +0 -13
  928. package/src/duckdb/src/core_functions/aggregate/holistic/ub_duckdb_aggr_holistic.cpp +0 -5
  929. package/src/duckdb/src/core_functions/aggregate/nested/ub_duckdb_aggr_nested.cpp +0 -3
  930. package/src/duckdb/src/core_functions/aggregate/regression/ub_duckdb_aggr_regr.cpp +0 -8
  931. package/src/duckdb/src/core_functions/scalar/bit/ub_duckdb_func_bit.cpp +0 -2
  932. package/src/duckdb/src/core_functions/scalar/blob/ub_duckdb_func_blob.cpp +0 -3
  933. package/src/duckdb/src/core_functions/scalar/date/ub_duckdb_func_date.cpp +0 -12
  934. package/src/duckdb/src/core_functions/scalar/debug/ub_duckdb_func_debug.cpp +0 -2
  935. package/src/duckdb/src/core_functions/scalar/enum/ub_duckdb_func_enum.cpp +0 -2
  936. package/src/duckdb/src/core_functions/scalar/generic/ub_duckdb_func_generic.cpp +0 -9
  937. package/src/duckdb/src/core_functions/scalar/list/ub_duckdb_func_list.cpp +0 -11
  938. package/src/duckdb/src/core_functions/scalar/map/ub_duckdb_func_map_nested.cpp +0 -8
  939. package/src/duckdb/src/core_functions/scalar/math/ub_duckdb_func_math.cpp +0 -1
  940. package/src/duckdb/src/core_functions/scalar/operators/ub_duckdb_func_ops.cpp +0 -1
  941. package/src/duckdb/src/core_functions/scalar/random/ub_duckdb_func_random.cpp +0 -3
  942. package/src/duckdb/src/core_functions/scalar/string/ub_duckdb_func_string.cpp +0 -26
  943. package/src/duckdb/src/core_functions/scalar/struct/ub_duckdb_func_struct.cpp +0 -3
  944. package/src/duckdb/src/core_functions/scalar/union/ub_duckdb_func_union.cpp +0 -4
  945. package/src/duckdb/src/core_functions/ub_duckdb_core_functions.cpp +0 -3
  946. package/src/duckdb/src/execution/expression_executor/ub_duckdb_expression_executor.cpp +0 -11
  947. package/src/duckdb/src/execution/index/art/ub_duckdb_art_index_execution.cpp +0 -12
  948. package/src/duckdb/src/execution/index/art/ub_duckdb_execution_index_art.cpp +0 -11
  949. package/src/duckdb/src/execution/index/ub_duckdb_execution_index.cpp +0 -3
  950. package/src/duckdb/src/execution/nested_loop_join/ub_duckdb_nested_loop_join.cpp +0 -3
  951. package/src/duckdb/src/execution/operator/aggregate/ub_duckdb_operator_aggregate.cpp +0 -9
  952. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/ub_duckdb_operator_csv_sniffer.cpp +0 -7
  953. package/src/duckdb/src/execution/operator/csv_scanner/ub_duckdb_operator_csv_scanner.cpp +0 -10
  954. package/src/duckdb/src/execution/operator/filter/ub_duckdb_operator_filter.cpp +0 -2
  955. package/src/duckdb/src/execution/operator/helper/ub_duckdb_operator_helper.cpp +0 -18
  956. package/src/duckdb/src/execution/operator/join/ub_duckdb_operator_join.cpp +0 -16
  957. package/src/duckdb/src/execution/operator/order/ub_duckdb_operator_order.cpp +0 -3
  958. package/src/duckdb/src/execution/operator/persistent/ub_duckdb_operator_persistent.cpp +0 -10
  959. package/src/duckdb/src/execution/operator/projection/ub_duckdb_operator_projection.cpp +0 -5
  960. package/src/duckdb/src/execution/operator/scan/ub_duckdb_operator_scan.cpp +0 -7
  961. package/src/duckdb/src/execution/operator/schema/ub_duckdb_operator_schema.cpp +0 -12
  962. package/src/duckdb/src/execution/operator/set/ub_duckdb_operator_set.cpp +0 -4
  963. package/src/duckdb/src/execution/physical_plan/ub_duckdb_physical_plan.cpp +0 -44
  964. package/src/duckdb/src/execution/ub_duckdb_execution.cpp +0 -15
  965. package/src/duckdb/src/function/aggregate/algebraic/ub_duckdb_aggr_algebraic.cpp +0 -5
  966. package/src/duckdb/src/function/aggregate/distributive/ub_duckdb_aggr_distr.cpp +0 -3
  967. package/src/duckdb/src/function/aggregate/holistic/ub_duckdb_aggr_holistic.cpp +0 -5
  968. package/src/duckdb/src/function/aggregate/nested/ub_duckdb_aggr_nested.cpp +0 -3
  969. package/src/duckdb/src/function/aggregate/regression/ub_duckdb_aggr_regr.cpp +0 -8
  970. package/src/duckdb/src/function/aggregate/ub_duckdb_func_aggr.cpp +0 -3
  971. package/src/duckdb/src/function/cast/ub_duckdb_func_cast.cpp +0 -17
  972. package/src/duckdb/src/function/cast/union/ub_duckdb_union_cast.cpp +0 -2
  973. package/src/duckdb/src/function/pragma/ub_duckdb_func_pragma.cpp +0 -3
  974. package/src/duckdb/src/function/scalar/bit/ub_duckdb_func_bit.cpp +0 -2
  975. package/src/duckdb/src/function/scalar/blob/ub_duckdb_func_blob.cpp +0 -3
  976. package/src/duckdb/src/function/scalar/compressed_materialization/ub_duckdb_func_compressed_materialization.cpp +0 -3
  977. package/src/duckdb/src/function/scalar/date/ub_duckdb_func_date.cpp +0 -12
  978. package/src/duckdb/src/function/scalar/enum/ub_duckdb_func_enum.cpp +0 -2
  979. package/src/duckdb/src/function/scalar/generic/ub_duckdb_func_generic.cpp +0 -8
  980. package/src/duckdb/src/function/scalar/generic/ub_duckdb_func_generic_main.cpp +0 -2
  981. package/src/duckdb/src/function/scalar/list/ub_duckdb_func_list.cpp +0 -11
  982. package/src/duckdb/src/function/scalar/list/ub_duckdb_func_list_nested.cpp +0 -5
  983. package/src/duckdb/src/function/scalar/map/ub_duckdb_func_map_nested.cpp +0 -7
  984. package/src/duckdb/src/function/scalar/math/ub_duckdb_func_math.cpp +0 -4
  985. package/src/duckdb/src/function/scalar/operators/ub_duckdb_func_ops.cpp +0 -6
  986. package/src/duckdb/src/function/scalar/operators/ub_duckdb_func_ops_main.cpp +0 -5
  987. package/src/duckdb/src/function/scalar/sequence/ub_duckdb_func_seq.cpp +0 -2
  988. package/src/duckdb/src/function/scalar/string/regexp/ub_duckdb_func_string_regexp.cpp +0 -3
  989. package/src/duckdb/src/function/scalar/string/ub_duckdb_func_string.cpp +0 -31
  990. package/src/duckdb/src/function/scalar/string/ub_duckdb_func_string_main.cpp +0 -12
  991. package/src/duckdb/src/function/scalar/struct/ub_duckdb_func_struct.cpp +0 -4
  992. package/src/duckdb/src/function/scalar/struct/ub_duckdb_func_struct_main.cpp +0 -2
  993. package/src/duckdb/src/function/scalar/system/ub_duckdb_func_system.cpp +0 -2
  994. package/src/duckdb/src/function/scalar/ub_duckdb_func_scalar.cpp +0 -9
  995. package/src/duckdb/src/function/scalar/union/ub_duckdb_func_union.cpp +0 -4
  996. package/src/duckdb/src/function/table/arrow/ub_duckdb_arrow_conversion.cpp +0 -2
  997. package/src/duckdb/src/function/table/system/ub_duckdb_table_func_system.cpp +0 -23
  998. package/src/duckdb/src/function/table/ub_duckdb_func_table.cpp +0 -16
  999. package/src/duckdb/src/function/table/version/ub_duckdb_func_table_version.cpp +0 -2
  1000. package/src/duckdb/src/function/ub_duckdb_function.cpp +0 -14
  1001. package/src/duckdb/src/main/capi/cast/ub_duckdb_main_capi_cast.cpp +0 -3
  1002. package/src/duckdb/src/main/capi/ub_duckdb_main_capi.cpp +0 -19
  1003. package/src/duckdb/src/main/chunk_scan_state/ub_duckdb_main_chunk_scan_state.cpp +0 -2
  1004. package/src/duckdb/src/main/extension/ub_duckdb_main_extension.cpp +0 -6
  1005. package/src/duckdb/src/main/relation/ub_duckdb_main_relation.cpp +0 -26
  1006. package/src/duckdb/src/main/settings/ub_duckdb_main_settings.cpp +0 -2
  1007. package/src/duckdb/src/main/ub_duckdb_main.cpp +0 -25
  1008. package/src/duckdb/src/optimizer/compressed_materialization/ub_duckdb_optimizer_compressed_materialization.cpp +0 -4
  1009. package/src/duckdb/src/optimizer/join_order/ub_duckdb_optimizer_join_order.cpp +0 -12
  1010. package/src/duckdb/src/optimizer/matcher/ub_duckdb_optimizer_matcher.cpp +0 -2
  1011. package/src/duckdb/src/optimizer/pullup/ub_duckdb_optimizer_pullup.cpp +0 -6
  1012. package/src/duckdb/src/optimizer/pushdown/ub_duckdb_optimizer_pushdown.cpp +0 -12
  1013. package/src/duckdb/src/optimizer/rule/ub_duckdb_optimizer_rules.cpp +0 -16
  1014. package/src/duckdb/src/optimizer/statistics/expression/ub_duckdb_optimizer_statistics_expr.cpp +0 -11
  1015. package/src/duckdb/src/optimizer/statistics/operator/ub_duckdb_optimizer_statistics_op.cpp +0 -11
  1016. package/src/duckdb/src/optimizer/ub_duckdb_optimizer.cpp +0 -20
  1017. package/src/duckdb/src/parallel/ub_duckdb_parallel.cpp +0 -15
  1018. package/src/duckdb/src/parser/constraints/ub_duckdb_constraints.cpp +0 -5
  1019. package/src/duckdb/src/parser/expression/ub_duckdb_expression.cpp +0 -18
  1020. package/src/duckdb/src/parser/parsed_data/ub_duckdb_parsed_data.cpp +0 -24
  1021. package/src/duckdb/src/parser/query_node/ub_duckdb_query_node.cpp +0 -5
  1022. package/src/duckdb/src/parser/statement/ub_duckdb_statement.cpp +0 -25
  1023. package/src/duckdb/src/parser/tableref/ub_duckdb_parser_tableref.cpp +0 -8
  1024. package/src/duckdb/src/parser/transform/constraint/ub_duckdb_transformer_constraint.cpp +0 -2
  1025. package/src/duckdb/src/parser/transform/expression/ub_duckdb_transformer_expression.cpp +0 -20
  1026. package/src/duckdb/src/parser/transform/helpers/ub_duckdb_transformer_helpers.cpp +0 -8
  1027. package/src/duckdb/src/parser/transform/statement/ub_duckdb_transformer_statement.cpp +0 -37
  1028. package/src/duckdb/src/parser/transform/tableref/ub_duckdb_transformer_tableref.cpp +0 -8
  1029. package/src/duckdb/src/parser/ub_duckdb_parser.cpp +0 -15
  1030. package/src/duckdb/src/planner/binder/expression/ub_duckdb_bind_expression.cpp +0 -20
  1031. package/src/duckdb/src/planner/binder/query_node/ub_duckdb_bind_query_node.cpp +0 -12
  1032. package/src/duckdb/src/planner/binder/statement/ub_duckdb_bind_statement.cpp +0 -26
  1033. package/src/duckdb/src/planner/binder/tableref/ub_duckdb_bind_tableref.cpp +0 -17
  1034. package/src/duckdb/src/planner/expression/ub_duckdb_planner_expression.cpp +0 -19
  1035. package/src/duckdb/src/planner/expression_binder/ub_duckdb_expression_binders.cpp +0 -20
  1036. package/src/duckdb/src/planner/filter/ub_duckdb_planner_filter.cpp +0 -4
  1037. package/src/duckdb/src/planner/operator/ub_duckdb_planner_operator.cpp +0 -43
  1038. package/src/duckdb/src/planner/parsed_data/ub_duckdb_planner_parsed_data.cpp +0 -2
  1039. package/src/duckdb/src/planner/subquery/ub_duckdb_planner_subquery.cpp +0 -4
  1040. package/src/duckdb/src/planner/ub_duckdb_planner.cpp +0 -15
  1041. package/src/duckdb/src/storage/buffer/ub_duckdb_storage_buffer.cpp +0 -6
  1042. package/src/duckdb/src/storage/checkpoint/ub_duckdb_storage_checkpoint.cpp +0 -5
  1043. package/src/duckdb/src/storage/compression/chimp/ub_duckdb_storage_compression_chimp.cpp +0 -6
  1044. package/src/duckdb/src/storage/compression/ub_duckdb_storage_compression.cpp +0 -12
  1045. package/src/duckdb/src/storage/metadata/ub_duckdb_storage_metadata.cpp +0 -4
  1046. package/src/duckdb/src/storage/serialization/ub_duckdb_storage_serialization.cpp +0 -16
  1047. package/src/duckdb/src/storage/statistics/ub_duckdb_storage_statistics.cpp +0 -10
  1048. package/src/duckdb/src/storage/table/ub_duckdb_storage_table.cpp +0 -17
  1049. package/src/duckdb/src/storage/ub_duckdb_storage.cpp +0 -20
  1050. package/src/duckdb/src/transaction/ub_duckdb_transaction.cpp +0 -11
@@ -43,6 +43,7 @@ class ColumnList;
43
43
  class ExternalDependency;
44
44
  class TableFunction;
45
45
  class TableStorageInfo;
46
+ class BoundConstraint;
46
47
 
47
48
  struct CreateInfo;
48
49
  struct BoundCreateTableInfo;
@@ -55,6 +56,7 @@ struct PivotColumnEntry;
55
56
  struct UnpivotEntry;
56
57
 
57
58
  enum class BindingMode : uint8_t { STANDARD_BINDING, EXTRACT_NAMES };
59
+ enum class BinderType : uint8_t { REGULAR_BINDER, VIEW_BINDER };
58
60
 
59
61
  struct CorrelatedColumnInfo {
60
62
  ColumnBinding binding;
@@ -81,13 +83,13 @@ struct CorrelatedColumnInfo {
81
83
  tables and columns in the catalog. In the process, it also resolves types of
82
84
  all expressions.
83
85
  */
84
- class Binder : public std::enable_shared_from_this<Binder> {
86
+ class Binder : public enable_shared_from_this<Binder> {
85
87
  friend class ExpressionBinder;
86
88
  friend class RecursiveDependentJoinPlanner;
87
89
 
88
90
  public:
89
91
  DUCKDB_API static shared_ptr<Binder> CreateBinder(ClientContext &context, optional_ptr<Binder> parent = nullptr,
90
- bool inherit_ctes = true);
92
+ BinderType binder_type = BinderType::REGULAR_BINDER);
91
93
 
92
94
  //! The client context
93
95
  ClientContext &context;
@@ -102,8 +104,6 @@ public:
102
104
  vector<CorrelatedColumnInfo> correlated_columns;
103
105
  //! The set of parameter expressions bound by this binder
104
106
  optional_ptr<BoundParameterMap> parameters;
105
- //! Statement properties
106
- StatementProperties properties;
107
107
  //! The alias for the currently processing subquery, if it exists
108
108
  string alias;
109
109
  //! Macro parameter bindings (if any)
@@ -119,7 +119,20 @@ public:
119
119
 
120
120
  unique_ptr<BoundCreateTableInfo> BindCreateTableInfo(unique_ptr<CreateInfo> info);
121
121
  unique_ptr<BoundCreateTableInfo> BindCreateTableInfo(unique_ptr<CreateInfo> info, SchemaCatalogEntry &schema);
122
-
122
+ unique_ptr<BoundCreateTableInfo> BindCreateTableInfo(unique_ptr<CreateInfo> info, SchemaCatalogEntry &schema,
123
+ vector<unique_ptr<Expression>> &bound_defaults);
124
+ static unique_ptr<BoundCreateTableInfo> BindCreateTableCheckpoint(unique_ptr<CreateInfo> info,
125
+ SchemaCatalogEntry &schema);
126
+ static vector<unique_ptr<BoundConstraint>> BindConstraints(ClientContext &context,
127
+ const vector<unique_ptr<Constraint>> &constraints,
128
+ const string &table_name, const ColumnList &columns);
129
+ vector<unique_ptr<BoundConstraint>> BindConstraints(const vector<unique_ptr<Constraint>> &constraints,
130
+ const string &table_name, const ColumnList &columns);
131
+ vector<unique_ptr<BoundConstraint>> BindConstraints(const TableCatalogEntry &table);
132
+ vector<unique_ptr<BoundConstraint>> BindNewConstraints(vector<unique_ptr<Constraint>> &constraints,
133
+ const string &table_name, const ColumnList &columns);
134
+
135
+ void SetCatalogLookupCallback(catalog_entry_callback_t callback);
123
136
  void BindCreateViewInfo(CreateViewInfo &base);
124
137
  SchemaCatalogEntry &BindSchema(CreateInfo &info);
125
138
  SchemaCatalogEntry &BindCreateFunctionInfo(CreateInfo &info);
@@ -135,6 +148,10 @@ public:
135
148
  //! Generates an unused index for a table
136
149
  idx_t GenerateTableIndex();
137
150
 
151
+ optional_ptr<CatalogEntry> GetCatalogEntry(CatalogType type, const string &catalog, const string &schema,
152
+ const string &name, OnEntryNotFound on_entry_not_found,
153
+ QueryErrorContext &error_context);
154
+
138
155
  //! Add a common table expression to the binder
139
156
  void AddCTE(const string &name, CommonTableExpressionInfo &cte);
140
157
  //! Find all candidate common table expression by name; returns empty vector if none exists
@@ -167,8 +184,8 @@ public:
167
184
  void BindVacuumTable(LogicalVacuum &vacuum, unique_ptr<LogicalOperator> &root);
168
185
 
169
186
  static void BindSchemaOrCatalog(ClientContext &context, string &catalog, string &schema);
170
- static void BindLogicalType(ClientContext &context, LogicalType &type, optional_ptr<Catalog> catalog = nullptr,
171
- const string &schema = INVALID_SCHEMA);
187
+ void BindLogicalType(LogicalType &type, optional_ptr<Catalog> catalog = nullptr,
188
+ const string &schema = INVALID_SCHEMA);
172
189
 
173
190
  bool HasMatchingBinding(const string &table_name, const string &column_name, ErrorData &error);
174
191
  bool HasMatchingBinding(const string &schema_name, const string &table_name, const string &column_name,
@@ -187,6 +204,8 @@ public:
187
204
  void SetCanContainNulls(bool can_contain_nulls);
188
205
  void SetAlwaysRequireRebind();
189
206
 
207
+ StatementProperties &GetStatementProperties();
208
+
190
209
  private:
191
210
  //! The parent binder (if any)
192
211
  shared_ptr<Binder> parent;
@@ -198,8 +217,8 @@ private:
198
217
  bool has_unplanned_dependent_joins = false;
199
218
  //! Whether or not outside dependent joins have been planned and flattened
200
219
  bool is_outside_flattened = true;
201
- //! Whether CTEs should reference the parent binder (if it exists)
202
- bool inherit_ctes = true;
220
+ //! What kind of node we are binding using this binder
221
+ BinderType binder_type = BinderType::REGULAR_BINDER;
203
222
  //! Whether or not the binder can contain NULLs as the root of expressions
204
223
  bool can_contain_nulls = false;
205
224
  //! The root statement of the query that is currently being parsed
@@ -210,8 +229,12 @@ private:
210
229
  unordered_set<string> table_names;
211
230
  //! The set of bound views
212
231
  reference_set_t<ViewCatalogEntry> bound_views;
232
+ //! Used to retrieve CatalogEntry's
233
+ CatalogEntryRetriever entry_retriever;
213
234
  //! Unnamed subquery index
214
235
  idx_t unnamed_subquery_index = 1;
236
+ //! Statement properties
237
+ StatementProperties prop;
215
238
 
216
239
  private:
217
240
  //! Get the root binder (binder with no parent)
@@ -261,6 +284,7 @@ private:
261
284
  BoundStatement Bind(AttachStatement &stmt);
262
285
  BoundStatement Bind(DetachStatement &stmt);
263
286
  BoundStatement Bind(CopyDatabaseStatement &stmt);
287
+ BoundStatement Bind(UpdateExtensionsStatement &stmt);
264
288
 
265
289
  BoundStatement BindReturning(vector<unique_ptr<ParsedExpression>> returning_list, TableCatalogEntry &table,
266
290
  const string &alias, idx_t update_table_index,
@@ -291,6 +315,7 @@ private:
291
315
  unique_ptr<BoundTableRef> Bind(TableFunctionRef &ref);
292
316
  unique_ptr<BoundTableRef> Bind(EmptyTableRef &ref);
293
317
  unique_ptr<BoundTableRef> Bind(ExpressionListRef &ref);
318
+ unique_ptr<BoundTableRef> Bind(ColumnDataRef &ref);
294
319
  unique_ptr<BoundTableRef> Bind(PivotRef &expr);
295
320
  unique_ptr<BoundTableRef> Bind(ShowRef &ref);
296
321
 
@@ -309,11 +334,11 @@ private:
309
334
  bool BindTableInTableOutFunction(vector<unique_ptr<ParsedExpression>> &expressions,
310
335
  unique_ptr<BoundSubqueryRef> &subquery, ErrorData &error);
311
336
  unique_ptr<LogicalOperator> BindTableFunction(TableFunction &function, vector<Value> parameters);
312
- unique_ptr<LogicalOperator>
313
- BindTableFunctionInternal(TableFunction &table_function, const string &function_name, vector<Value> parameters,
314
- named_parameter_map_t named_parameters, vector<LogicalType> input_table_types,
315
- vector<string> input_table_names, const vector<string> &column_name_alias,
316
- unique_ptr<ExternalDependency> external_dependency);
337
+ unique_ptr<LogicalOperator> BindTableFunctionInternal(TableFunction &table_function, const TableFunctionRef &ref,
338
+ vector<Value> parameters,
339
+ named_parameter_map_t named_parameters,
340
+ vector<LogicalType> input_table_types,
341
+ vector<string> input_table_names);
317
342
 
318
343
  unique_ptr<LogicalOperator> CreatePlan(BoundBaseTableRef &ref);
319
344
  unique_ptr<LogicalOperator> CreatePlan(BoundJoinRef &ref);
@@ -321,6 +346,7 @@ private:
321
346
  unique_ptr<LogicalOperator> CreatePlan(BoundTableFunction &ref);
322
347
  unique_ptr<LogicalOperator> CreatePlan(BoundEmptyTableRef &ref);
323
348
  unique_ptr<LogicalOperator> CreatePlan(BoundExpressionListRef &ref);
349
+ unique_ptr<LogicalOperator> CreatePlan(BoundColumnDataRef &ref);
324
350
  unique_ptr<LogicalOperator> CreatePlan(BoundCTERef &ref);
325
351
  unique_ptr<LogicalOperator> CreatePlan(BoundPivotRef &ref);
326
352
 
@@ -379,9 +405,9 @@ private:
379
405
  unique_ptr<BoundTableRef> BindSummarize(ShowRef &ref);
380
406
 
381
407
  public:
382
- // This should really be a private constructor, but make_shared does not allow it...
408
+ // This should really be a private constructor, but make_shared_ptr does not allow it...
383
409
  // If you are thinking about calling this, you should probably call Binder::CreateBinder
384
- Binder(bool i_know_what_i_am_doing, ClientContext &context, shared_ptr<Binder> parent, bool inherit_ctes);
410
+ Binder(bool i_know_what_i_am_doing, ClientContext &context, shared_ptr<Binder> parent, BinderType binder_type);
385
411
  };
386
412
 
387
413
  } // namespace duckdb
@@ -52,6 +52,7 @@ class BoundSubqueryRef;
52
52
  class BoundTableFunction;
53
53
  class BoundEmptyTableRef;
54
54
  class BoundExpressionListRef;
55
+ class BoundColumnDataRef;
55
56
  class BoundCTERef;
56
57
  class BoundPivotRef;
57
58
 
@@ -14,22 +14,23 @@
14
14
  namespace duckdb {
15
15
  class TableCatalogEntry;
16
16
 
17
- //! The ALTER binder is responsible for binding an expression within alter statements
17
+ //! The AlterBinder binds expressions in ALTER statements.
18
18
  class AlterBinder : public ExpressionBinder {
19
19
  public:
20
20
  AlterBinder(Binder &binder, ClientContext &context, TableCatalogEntry &table, vector<LogicalIndex> &bound_columns,
21
21
  LogicalType target_type);
22
22
 
23
- TableCatalogEntry &table;
24
- vector<LogicalIndex> &bound_columns;
25
-
26
23
  protected:
24
+ BindResult BindLambdaReference(LambdaRefExpression &expr, idx_t depth);
25
+ BindResult BindColumnReference(ColumnRefExpression &expr, idx_t depth);
27
26
  BindResult BindExpression(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth,
28
27
  bool root_expression = false) override;
29
28
 
30
- BindResult BindColumn(ColumnRefExpression &expr);
31
-
32
29
  string UnsupportedAggregateMessage() override;
30
+
31
+ private:
32
+ TableCatalogEntry &table;
33
+ vector<LogicalIndex> &bound_columns;
33
34
  };
34
35
 
35
36
  } // namespace duckdb
@@ -14,13 +14,14 @@
14
14
 
15
15
  namespace duckdb {
16
16
 
17
- //! The HAVING binder is responsible for binding an expression within the HAVING clause of a SQL statement
17
+ //! The HAVING binder is responsible for binding an expression within the HAVING clause of a SQL statement.
18
18
  class HavingBinder : public BaseSelectBinder {
19
19
  public:
20
20
  HavingBinder(Binder &binder, ClientContext &context, BoundSelectNode &node, BoundGroupInformation &info,
21
21
  AggregateHandling aggregate_handling);
22
22
 
23
23
  protected:
24
+ BindResult BindLambdaReference(LambdaRefExpression &expr, idx_t depth);
24
25
  BindResult BindWindow(WindowExpression &expr, idx_t depth) override;
25
26
  BindResult BindColumnRef(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth, bool root_expression) override;
26
27
 
@@ -12,17 +12,21 @@
12
12
  #include "duckdb/common/unordered_map.hpp"
13
13
  #include "duckdb/parser/parsed_data/create_index_info.hpp"
14
14
  #include "duckdb/planner/expression_binder.hpp"
15
+ #include "duckdb/execution/index/bound_index.hpp"
16
+ #include "duckdb/execution/index/unbound_index.hpp"
15
17
 
16
18
  namespace duckdb {
17
19
 
18
20
  class BoundColumnRefExpression;
19
21
 
20
- //! The IndexBinder is responsible for binding an expression within an index statement
22
+ //! The IndexBinder is responsible for binding indexes, as well as expressions within an index statement
21
23
  class IndexBinder : public ExpressionBinder {
22
24
  public:
23
25
  IndexBinder(Binder &binder, ClientContext &context, optional_ptr<TableCatalogEntry> table = nullptr,
24
26
  optional_ptr<CreateIndexInfo> info = nullptr);
25
27
 
28
+ unique_ptr<BoundIndex> BindIndex(const UnboundIndex &index);
29
+
26
30
  protected:
27
31
  BindResult BindExpression(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth,
28
32
  bool root_expression = false) override;
@@ -18,6 +18,7 @@
18
18
  #include "duckdb/parser/parsed_expression.hpp"
19
19
  #include "duckdb/parser/tokens.hpp"
20
20
  #include "duckdb/planner/expression.hpp"
21
+ #include "duckdb/catalog/catalog_entry_retriever.hpp"
21
22
  #include "duckdb/planner/expression/bound_lambda_expression.hpp"
22
23
  #include "duckdb/function/scalar_function.hpp"
23
24
 
@@ -90,6 +91,7 @@ public:
90
91
  return bound_columns;
91
92
  }
92
93
 
94
+ void SetCatalogLookupCallback(catalog_entry_callback_t callback);
93
95
  ErrorData Bind(unique_ptr<ParsedExpression> &expr, idx_t depth, bool root_expression = false);
94
96
 
95
97
  //! Returns the STRUCT_EXTRACT operator expression
@@ -194,6 +196,9 @@ protected:
194
196
 
195
197
  virtual string UnsupportedAggregateMessage();
196
198
  virtual string UnsupportedUnnestMessage();
199
+ optional_ptr<CatalogEntry> GetCatalogEntry(CatalogType type, const string &catalog, const string &schema,
200
+ const string &name, OnEntryNotFound on_entry_not_found,
201
+ QueryErrorContext &error_context);
197
202
 
198
203
  Binder &binder;
199
204
  ClientContext &context;
@@ -11,7 +11,6 @@
11
11
  #include "duckdb/catalog/catalog.hpp"
12
12
  #include "duckdb/common/common.hpp"
13
13
  #include "duckdb/common/enums/logical_operator_type.hpp"
14
- #include "duckdb/optimizer/join_order/estimated_properties.hpp"
15
14
  #include "duckdb/planner/column_binding.hpp"
16
15
  #include "duckdb/planner/expression.hpp"
17
16
  #include "duckdb/planner/logical_operator_visitor.hpp"
@@ -10,6 +10,7 @@
10
10
 
11
11
  #include "duckdb/common/types/column/column_data_collection.hpp"
12
12
  #include "duckdb/planner/logical_operator.hpp"
13
+ #include "duckdb/common/optionally_owned_ptr.hpp"
13
14
 
14
15
  namespace duckdb {
15
16
 
@@ -20,13 +21,16 @@ public:
20
21
 
21
22
  public:
22
23
  LogicalColumnDataGet(idx_t table_index, vector<LogicalType> types, unique_ptr<ColumnDataCollection> collection);
24
+ LogicalColumnDataGet(idx_t table_index, vector<LogicalType> types, ColumnDataCollection &to_scan);
25
+ LogicalColumnDataGet(idx_t table_index, vector<LogicalType> types,
26
+ optionally_owned_ptr<ColumnDataCollection> to_scan);
23
27
 
24
28
  //! The table index in the current bind context
25
29
  idx_t table_index;
26
30
  //! The types of the chunk
27
31
  vector<LogicalType> chunk_types;
28
- //! The chunk collection to scan
29
- unique_ptr<ColumnDataCollection> collection;
32
+ //! (optionally owned) column data collection
33
+ optionally_owned_ptr<ColumnDataCollection> collection;
30
34
 
31
35
  public:
32
36
  vector<ColumnBinding> GetColumnBindings() override;
@@ -9,6 +9,7 @@
9
9
  #pragma once
10
10
 
11
11
  #include "duckdb/planner/logical_operator.hpp"
12
+ #include "duckdb/planner/bound_constraint.hpp"
12
13
 
13
14
  namespace duckdb {
14
15
  class TableCatalogEntry;
@@ -23,6 +24,7 @@ public:
23
24
  TableCatalogEntry &table;
24
25
  idx_t table_index;
25
26
  bool return_chunk;
27
+ vector<unique_ptr<BoundConstraint>> bound_constraints;
26
28
 
27
29
  public:
28
30
  void Serialize(Serializer &serializer) const override;
@@ -28,6 +28,13 @@ public:
28
28
  unique_ptr<CopyInfo> copy_info;
29
29
  BoundExportData exported_tables;
30
30
 
31
+ void Serialize(Serializer &serializer) const override {
32
+ throw NotImplementedException("FIXME: Serialize LogicalExport statement");
33
+ }
34
+ unique_ptr<LogicalOperator> Deserialize(Deserializer &deserializer) {
35
+ throw NotImplementedException("FIXME: Deserialize LogicalExport statement");
36
+ }
37
+
31
38
  public:
32
39
  protected:
33
40
  void ResolveTypes() override {
@@ -37,6 +37,8 @@ public:
37
37
  bool return_chunk;
38
38
  //! The default statements used by the table
39
39
  vector<unique_ptr<Expression>> bound_defaults;
40
+ //! The constraints used by the table
41
+ vector<unique_ptr<BoundConstraint>> bound_constraints;
40
42
 
41
43
  //! Which action to take on conflict
42
44
  OnConflictAction action_type;
@@ -19,15 +19,15 @@ public:
19
19
  static constexpr const LogicalOperatorType TYPE = LogicalOperatorType::LOGICAL_TOP_N;
20
20
 
21
21
  public:
22
- LogicalTopN(vector<BoundOrderByNode> orders, int64_t limit, int64_t offset)
22
+ LogicalTopN(vector<BoundOrderByNode> orders, idx_t limit, idx_t offset)
23
23
  : LogicalOperator(LogicalOperatorType::LOGICAL_TOP_N), orders(std::move(orders)), limit(limit), offset(offset) {
24
24
  }
25
25
 
26
26
  vector<BoundOrderByNode> orders;
27
27
  //! The maximum amount of elements to emit
28
- int64_t limit;
28
+ idx_t limit;
29
29
  //! The offset from the start to begin emitting elements
30
- int64_t offset;
30
+ idx_t offset;
31
31
 
32
32
  public:
33
33
  vector<ColumnBinding> GetColumnBindings() override {
@@ -9,6 +9,7 @@
9
9
  #pragma once
10
10
 
11
11
  #include "duckdb/planner/logical_operator.hpp"
12
+ #include "duckdb/planner/bound_constraint.hpp"
12
13
 
13
14
  namespace duckdb {
14
15
  class TableCatalogEntry;
@@ -28,6 +29,7 @@ public:
28
29
  bool return_chunk;
29
30
  vector<PhysicalIndex> columns;
30
31
  vector<unique_ptr<Expression>> bound_defaults;
32
+ vector<unique_ptr<BoundConstraint>> bound_constraints;
31
33
  bool update_is_del_and_insert;
32
34
 
33
35
  public:
@@ -36,10 +36,6 @@ struct BoundCreateTableInfo {
36
36
  ColumnDependencyManager column_dependency_manager;
37
37
  //! List of constraints on the table
38
38
  vector<unique_ptr<Constraint>> constraints;
39
- //! List of bound constraints on the table
40
- vector<unique_ptr<BoundConstraint>> bound_constraints;
41
- //! Bound default values
42
- vector<unique_ptr<Expression>> bound_defaults;
43
39
  //! Dependents of the table (in e.g. default values)
44
40
  LogicalDependencyList dependencies;
45
41
  //! The existing table data on disk (if any)
@@ -133,12 +133,12 @@ public:
133
133
 
134
134
  public:
135
135
  //! Binding macros
136
- BindResult Bind(ColumnRefExpression &colref, idx_t depth) override;
136
+ BindResult Bind(ColumnRefExpression &col_ref, idx_t depth) override;
137
137
  //! Binding lambdas
138
- BindResult Bind(LambdaRefExpression &lambdaref, idx_t depth);
138
+ BindResult Bind(LambdaRefExpression &lambda_ref, idx_t depth);
139
139
 
140
- //! Given the parameter colref, returns a copy of the argument that was supplied for this parameter
141
- unique_ptr<ParsedExpression> ParamToArg(ColumnRefExpression &colref);
140
+ //! Returns a copy of the col_ref parameter as a parsed expression
141
+ unique_ptr<ParsedExpression> ParamToArg(ColumnRefExpression &col_ref);
142
142
  };
143
143
 
144
144
  } // namespace duckdb
@@ -0,0 +1,30 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/planner/tableref/bound_column_data_ref.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #pragma once
10
+
11
+ #include "duckdb/planner/bound_tableref.hpp"
12
+ #include "duckdb/common/optionally_owned_ptr.hpp"
13
+ #include "duckdb/common/types/column/column_data_collection.hpp"
14
+
15
+ namespace duckdb {
16
+ //! Represents a TableReference to a base table in the schema
17
+ class BoundColumnDataRef : public BoundTableRef {
18
+ public:
19
+ static constexpr const TableReferenceType TYPE = TableReferenceType::COLUMN_DATA;
20
+
21
+ public:
22
+ explicit BoundColumnDataRef(optionally_owned_ptr<ColumnDataCollection> collection)
23
+ : BoundTableRef(TableReferenceType::COLUMN_DATA), collection(std::move(collection)) {
24
+ }
25
+ //! The (optionally owned) materialized column data to scan
26
+ optionally_owned_ptr<ColumnDataCollection> collection;
27
+ //! The index in the bind context
28
+ idx_t bind_index;
29
+ };
30
+ } // namespace duckdb
@@ -4,5 +4,6 @@
4
4
  #include "duckdb/planner/tableref/bound_expressionlistref.hpp"
5
5
  #include "duckdb/planner/tableref/bound_joinref.hpp"
6
6
  #include "duckdb/planner/tableref/bound_subqueryref.hpp"
7
+ #include "duckdb/planner/tableref/bound_column_data_ref.hpp"
7
8
  #include "duckdb/planner/tableref/bound_table_function.hpp"
8
9
  #include "duckdb/planner/tableref/bound_pivotref.hpp"
@@ -11,6 +11,7 @@
11
11
  #include "duckdb/common/atomic.hpp"
12
12
  #include "duckdb/common/common.hpp"
13
13
  #include "duckdb/common/mutex.hpp"
14
+ #include "duckdb/common/numeric_utils.hpp"
14
15
  #include "duckdb/storage/storage_info.hpp"
15
16
  #include "duckdb/common/file_buffer.hpp"
16
17
  #include "duckdb/common/enums/memory_tag.hpp"
@@ -76,7 +77,7 @@ public:
76
77
  D_ASSERT(buffer);
77
78
  // resize and adjust current memory
78
79
  buffer->Resize(block_size);
79
- memory_usage += memory_delta;
80
+ memory_usage = NumericCast<idx_t>(NumericCast<int64_t>(memory_usage) + memory_delta);
80
81
  D_ASSERT(memory_usage == buffer->AllocSize());
81
82
  }
82
83
 
@@ -121,8 +122,10 @@ private:
121
122
  MemoryTag tag;
122
123
  //! Pointer to loaded data (if any)
123
124
  unique_ptr<FileBuffer> buffer;
124
- //! Internal eviction timestamp
125
- atomic<idx_t> eviction_timestamp;
125
+ //! Internal eviction sequence number
126
+ atomic<idx_t> eviction_seq_num;
127
+ //! LRU timestamp (for age-based eviction)
128
+ atomic<int64_t> lru_timestamp_msec;
126
129
  //! Whether or not the buffer can be destroyed (only used for temporary buffers)
127
130
  bool can_destroy;
128
131
  //! The memory usage of the block (when loaded). If we are pinning/loading
@@ -20,13 +20,10 @@ struct EvictionQueue;
20
20
  struct BufferEvictionNode {
21
21
  BufferEvictionNode() {
22
22
  }
23
- BufferEvictionNode(weak_ptr<BlockHandle> handle_p, idx_t timestamp_p)
24
- : handle(std::move(handle_p)), timestamp(timestamp_p) {
25
- D_ASSERT(!handle.expired());
26
- }
23
+ BufferEvictionNode(weak_ptr<BlockHandle> handle_p, idx_t eviction_seq_num);
27
24
 
28
25
  weak_ptr<BlockHandle> handle;
29
- idx_t timestamp;
26
+ idx_t handle_sequence_number;
30
27
 
31
28
  bool CanUnload(BlockHandle &handle_p);
32
29
  shared_ptr<BlockHandle> TryGetBlockHandle();
@@ -41,14 +38,14 @@ class BufferPool {
41
38
  friend class StandardBufferManager;
42
39
 
43
40
  public:
44
- explicit BufferPool(idx_t maximum_memory);
41
+ explicit BufferPool(idx_t maximum_memory, bool track_eviction_timestamps);
45
42
  virtual ~BufferPool();
46
43
 
47
44
  //! Set a new memory limit to the buffer pool, throws an exception if the new limit is too low and not enough
48
45
  //! blocks can be evicted
49
46
  void SetLimit(idx_t limit, const char *exception_postscript);
50
47
 
51
- void IncreaseUsedMemory(MemoryTag tag, idx_t size);
48
+ void UpdateUsedMemory(MemoryTag tag, int64_t size);
52
49
 
53
50
  idx_t GetUsedMemory() const;
54
51
 
@@ -72,6 +69,16 @@ protected:
72
69
  virtual EvictionResult EvictBlocks(MemoryTag tag, idx_t extra_memory, idx_t memory_limit,
73
70
  unique_ptr<FileBuffer> *buffer = nullptr);
74
71
 
72
+ //! Purge all blocks that haven't been pinned within the last N seconds
73
+ idx_t PurgeAgedBlocks(uint32_t max_age_sec);
74
+
75
+ //! Iterate over all purgable blocks and invoke the callback. If the callback returns true
76
+ //! iteration continues.
77
+ //! - Callback signature is: bool((BufferEvictionNode &, const std::shared_ptr<BlockHandle> &)
78
+ //! - Callback is invoked while holding the corresponding BlockHandle mutex.
79
+ template <typename FN>
80
+ void IterateUnloadableBlocks(FN fn);
81
+
75
82
  //! Tries to dequeue an element from the eviction queue, but only after acquiring the purge queue lock.
76
83
  bool TryDequeueWithLock(BufferEvictionNode &node);
77
84
  //! Bulk purge dead nodes from the eviction queue. Then, enqueue those that are still alive.
@@ -98,6 +105,8 @@ protected:
98
105
  atomic<idx_t> current_memory;
99
106
  //! The maximum amount of memory that the buffer manager can keep (in bytes)
100
107
  atomic<idx_t> maximum_memory;
108
+ //! Record timestamps of buffer manager unpin() events. Usable by custom eviction policies.
109
+ bool track_eviction_timestamps;
101
110
  //! Eviction queue
102
111
  unique_ptr<EvictionQueue> queue;
103
112
  //! Memory manager for concurrently used temporary memory, e.g., for physical operators
@@ -40,10 +40,17 @@ public:
40
40
  virtual void ReAllocate(shared_ptr<BlockHandle> &handle, idx_t block_size) = 0;
41
41
  virtual BufferHandle Pin(shared_ptr<BlockHandle> &handle) = 0;
42
42
  virtual void Unpin(shared_ptr<BlockHandle> &handle) = 0;
43
+
43
44
  //! Returns the currently allocated memory
44
45
  virtual idx_t GetUsedMemory() const = 0;
45
46
  //! Returns the maximum available memory
46
47
  virtual idx_t GetMaxMemory() const = 0;
48
+ //! Returns the currently used swap space
49
+ virtual idx_t GetUsedSwap() = 0;
50
+ //! Returns the maximum swap space that can be used
51
+ virtual optional_idx GetMaxSwap() const = 0;
52
+
53
+ //! Returns a new block of memory that is smaller than Storage::BLOCK_SIZE
47
54
  virtual shared_ptr<BlockHandle> RegisterSmallMemory(idx_t block_size);
48
55
  virtual DUCKDB_API Allocator &GetBufferAllocator();
49
56
  virtual DUCKDB_API void ReserveMemory(idx_t size);
@@ -51,19 +58,21 @@ public:
51
58
  virtual vector<MemoryInformation> GetMemoryUsageInfo() const = 0;
52
59
  //! Set a new memory limit to the buffer manager, throws an exception if the new limit is too low and not enough
53
60
  //! blocks can be evicted
54
- virtual void SetLimit(idx_t limit = (idx_t)-1);
61
+ virtual void SetMemoryLimit(idx_t limit = (idx_t)-1);
62
+ virtual void SetSwapLimit(optional_idx limit = optional_idx());
63
+
55
64
  virtual vector<TemporaryFileInformation> GetTemporaryFiles();
56
65
  virtual const string &GetTemporaryDirectory() const;
57
66
  virtual void SetTemporaryDirectory(const string &new_dir);
58
67
  virtual bool HasTemporaryDirectory() const;
68
+
59
69
  //! Construct a managed buffer.
60
70
  virtual unique_ptr<FileBuffer> ConstructManagedBuffer(idx_t size, unique_ptr<FileBuffer> &&source,
61
71
  FileBufferType type = FileBufferType::MANAGED_BUFFER);
62
72
  //! Get the underlying buffer pool responsible for managing the buffers
63
73
  virtual BufferPool &GetBufferPool() const;
64
- //! Get the manager that assigns reservations for temporary memory, e.g., for query intermediates
65
- virtual TemporaryMemoryManager &GetTemporaryMemoryManager();
66
74
 
75
+ virtual DatabaseInstance &GetDatabase() = 0;
67
76
  // Static methods
68
77
  DUCKDB_API static BufferManager &GetBufferManager(DatabaseInstance &db);
69
78
  DUCKDB_API static const BufferManager &GetBufferManager(const DatabaseInstance &db);
@@ -77,6 +86,9 @@ public:
77
86
  //! Returns the maximum available memory for a given query
78
87
  idx_t GetQueryMaxMemory() const;
79
88
 
89
+ //! Get the manager that assigns reservations for temporary memory, e.g., for query intermediates
90
+ virtual TemporaryMemoryManager &GetTemporaryMemoryManager();
91
+
80
92
  protected:
81
93
  virtual void PurgeQueue() = 0;
82
94
  virtual void AddToEvictionQueue(shared_ptr<BlockHandle> &handle);
@@ -32,6 +32,7 @@ public:
32
32
 
33
33
  virtual void WriteColumnDataPointers(ColumnCheckpointState &column_checkpoint_state, Serializer &serializer) = 0;
34
34
 
35
+ virtual CheckpointType GetCheckpointType() const = 0;
35
36
  virtual MetadataWriter &GetPayloadWriter() = 0;
36
37
 
37
38
  PartialBlockManager &GetPartialBlockManager() {
@@ -47,18 +48,20 @@ protected:
47
48
  class SingleFileRowGroupWriter : public RowGroupWriter {
48
49
  public:
49
50
  SingleFileRowGroupWriter(TableCatalogEntry &table, PartialBlockManager &partial_block_manager,
50
- MetadataWriter &table_data_writer)
51
- : RowGroupWriter(table, partial_block_manager), table_data_writer(table_data_writer) {
52
- }
53
-
54
- //! MetadataWriter is a cursor on a given BlockManager. This returns the
55
- //! cursor against which we should write payload data for the specified RowGroup.
56
- MetadataWriter &table_data_writer;
51
+ TableDataWriter &writer, MetadataWriter &table_data_writer);
57
52
 
58
53
  public:
59
54
  void WriteColumnDataPointers(ColumnCheckpointState &column_checkpoint_state, Serializer &serializer) override;
60
55
 
56
+ CheckpointType GetCheckpointType() const override;
61
57
  MetadataWriter &GetPayloadWriter() override;
58
+
59
+ private:
60
+ //! Underlying writer object
61
+ TableDataWriter &writer;
62
+ //! MetadataWriter is a cursor on a given BlockManager. This returns the
63
+ //! cursor against which we should write payload data for the specified RowGroup.
64
+ MetadataWriter &table_data_writer;
62
65
  };
63
66
 
64
67
  } // namespace duckdb
@@ -35,6 +35,7 @@ public:
35
35
  virtual unique_ptr<RowGroupWriter> GetRowGroupWriter(RowGroup &row_group) = 0;
36
36
 
37
37
  virtual void AddRowGroup(RowGroupPointer &&row_group_pointer, unique_ptr<RowGroupWriter> writer);
38
+ virtual CheckpointType GetCheckpointType() const = 0;
38
39
 
39
40
  TaskScheduler &GetScheduler();
40
41
 
@@ -52,6 +53,7 @@ public:
52
53
  public:
53
54
  void FinalizeTable(const TableStatistics &global_stats, DataTableInfo *info, Serializer &serializer) override;
54
55
  unique_ptr<RowGroupWriter> GetRowGroupWriter(RowGroup &row_group) override;
56
+ CheckpointType GetCheckpointType() const override;
55
57
 
56
58
  private:
57
59
  SingleFileCheckpointWriter &checkpoint_manager;