duckdb 0.10.3-dev0.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 (1052) hide show
  1. package/.github/workflows/NodeJS.yml +95 -4
  2. package/binding.gyp +4 -5
  3. package/examples/example.js +10 -0
  4. package/package.json +1 -1
  5. package/src/database.cpp +3 -3
  6. package/src/duckdb/extension/icu/icu_extension.cpp +44 -15
  7. package/src/duckdb/extension/icu/include/icu_extension.hpp +1 -0
  8. package/src/duckdb/extension/icu/third_party/icu/i18n/basictz.cpp +5 -5
  9. package/src/duckdb/extension/json/include/json_common.hpp +6 -1
  10. package/src/duckdb/extension/json/include/json_executors.hpp +5 -5
  11. package/src/duckdb/extension/json/include/json_extension.hpp +1 -0
  12. package/src/duckdb/extension/json/include/json_functions.hpp +2 -2
  13. package/src/duckdb/extension/json/include/json_serializer.hpp +2 -2
  14. package/src/duckdb/extension/json/json_common.cpp +69 -43
  15. package/src/duckdb/extension/json/json_extension.cpp +8 -0
  16. package/src/duckdb/extension/json/json_functions/copy_json.cpp +17 -16
  17. package/src/duckdb/extension/json/json_functions/json_create.cpp +3 -1
  18. package/src/duckdb/extension/json/json_functions/json_structure.cpp +18 -13
  19. package/src/duckdb/extension/json/json_functions/json_transform.cpp +4 -0
  20. package/src/duckdb/extension/json/json_functions/json_type.cpp +2 -2
  21. package/src/duckdb/extension/json/json_functions/read_json.cpp +14 -11
  22. package/src/duckdb/extension/json/json_functions/read_json_objects.cpp +11 -8
  23. package/src/duckdb/extension/json/json_functions.cpp +4 -3
  24. package/src/duckdb/extension/json/json_scan.cpp +21 -11
  25. package/src/duckdb/extension/parquet/column_reader.cpp +9 -5
  26. package/src/duckdb/extension/parquet/column_writer.cpp +31 -18
  27. package/src/duckdb/extension/parquet/include/column_writer.hpp +1 -0
  28. package/src/duckdb/extension/parquet/include/null_column_reader.hpp +54 -0
  29. package/src/duckdb/extension/parquet/include/parquet_extension.hpp +1 -0
  30. package/src/duckdb/extension/parquet/include/parquet_reader.hpp +1 -1
  31. package/src/duckdb/extension/parquet/include/parquet_writer.hpp +7 -2
  32. package/src/duckdb/extension/parquet/include/templated_column_reader.hpp +6 -1
  33. package/src/duckdb/extension/parquet/parquet_crypto.cpp +8 -6
  34. package/src/duckdb/extension/parquet/parquet_extension.cpp +271 -126
  35. package/src/duckdb/extension/parquet/parquet_metadata.cpp +39 -37
  36. package/src/duckdb/extension/parquet/parquet_reader.cpp +7 -4
  37. package/src/duckdb/extension/parquet/parquet_statistics.cpp +5 -4
  38. package/src/duckdb/extension/parquet/parquet_writer.cpp +55 -2
  39. package/src/duckdb/extension/parquet/serialize_parquet.cpp +2 -2
  40. package/src/duckdb/src/catalog/catalog.cpp +19 -39
  41. package/src/duckdb/src/catalog/catalog_entry/duck_index_entry.cpp +6 -6
  42. package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +47 -31
  43. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +84 -52
  44. package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +4 -2
  45. package/src/duckdb/src/catalog/catalog_entry/macro_catalog_entry.cpp +4 -0
  46. package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +7 -0
  47. package/src/duckdb/src/catalog/catalog_entry/sequence_catalog_entry.cpp +4 -1
  48. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +36 -15
  49. package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +7 -1
  50. package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +5 -1
  51. package/src/duckdb/src/catalog/catalog_entry.cpp +7 -0
  52. package/src/duckdb/src/catalog/catalog_entry_retriever.cpp +64 -0
  53. package/src/duckdb/src/catalog/catalog_set.cpp +32 -17
  54. package/src/duckdb/src/catalog/default/default_functions.cpp +2 -1
  55. package/src/duckdb/src/catalog/default/default_views.cpp +1 -1
  56. package/src/duckdb/src/catalog/dependency_manager.cpp +129 -9
  57. package/src/duckdb/src/catalog/duck_catalog.cpp +5 -0
  58. package/src/duckdb/src/common/adbc/nanoarrow/allocator.cpp +2 -2
  59. package/src/duckdb/src/common/adbc/nanoarrow/metadata.cpp +3 -3
  60. package/src/duckdb/src/common/adbc/nanoarrow/schema.cpp +7 -6
  61. package/src/duckdb/src/common/allocator.cpp +6 -2
  62. package/src/duckdb/src/common/arrow/appender/bool_data.cpp +1 -0
  63. package/src/duckdb/src/common/arrow/appender/struct_data.cpp +1 -1
  64. package/src/duckdb/src/common/arrow/appender/union_data.cpp +2 -1
  65. package/src/duckdb/src/common/arrow/arrow_appender.cpp +7 -5
  66. package/src/duckdb/src/common/arrow/arrow_converter.cpp +3 -5
  67. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +1 -1
  68. package/src/duckdb/src/common/box_renderer.cpp +6 -3
  69. package/src/duckdb/src/common/compressed_file_system.cpp +11 -7
  70. package/src/duckdb/src/common/enum_util.cpp +230 -17
  71. package/src/duckdb/src/common/enums/logical_operator_type.cpp +2 -0
  72. package/src/duckdb/src/common/enums/physical_operator_type.cpp +2 -0
  73. package/src/duckdb/src/common/enums/relation_type.cpp +2 -0
  74. package/src/duckdb/src/common/enums/statement_type.cpp +2 -0
  75. package/src/duckdb/src/common/error_data.cpp +12 -0
  76. package/src/duckdb/src/common/exception_format_value.cpp +1 -0
  77. package/src/duckdb/src/common/extra_type_info.cpp +86 -8
  78. package/src/duckdb/src/common/file_system.cpp +39 -7
  79. package/src/duckdb/src/common/gzip_file_system.cpp +38 -14
  80. package/src/duckdb/src/common/hive_partitioning.cpp +28 -76
  81. package/src/duckdb/src/common/http_state.cpp +4 -4
  82. package/src/duckdb/src/common/local_file_system.cpp +29 -12
  83. package/src/duckdb/src/common/multi_file_list.cpp +285 -0
  84. package/src/duckdb/src/common/multi_file_reader.cpp +112 -80
  85. package/src/duckdb/src/common/operator/cast_operators.cpp +27 -225
  86. package/src/duckdb/src/common/operator/string_cast.cpp +13 -14
  87. package/src/duckdb/src/common/pipe_file_system.cpp +3 -2
  88. package/src/duckdb/src/common/progress_bar/progress_bar.cpp +1 -1
  89. package/src/duckdb/src/common/random_engine.cpp +2 -1
  90. package/src/duckdb/src/common/re2_regex.cpp +6 -4
  91. package/src/duckdb/src/common/row_operations/row_aggregate.cpp +10 -10
  92. package/src/duckdb/src/common/row_operations/row_external.cpp +4 -3
  93. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +5 -3
  94. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +17 -4
  95. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +1 -1
  96. package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +4 -4
  97. package/src/duckdb/src/common/serializer/buffered_file_writer.cpp +9 -8
  98. package/src/duckdb/src/common/serializer/memory_stream.cpp +6 -3
  99. package/src/duckdb/src/common/serializer/serializer.cpp +1 -1
  100. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  101. package/src/duckdb/src/common/sort/merge_sorter.cpp +2 -2
  102. package/src/duckdb/src/common/sort/partition_state.cpp +6 -6
  103. package/src/duckdb/src/common/sort/radix_sort.cpp +1 -1
  104. package/src/duckdb/src/common/sort/sort_state.cpp +3 -3
  105. package/src/duckdb/src/common/sort/sorted_block.cpp +5 -5
  106. package/src/duckdb/src/common/string_util.cpp +69 -162
  107. package/src/duckdb/src/common/types/bit.cpp +1 -1
  108. package/src/duckdb/src/common/types/blob.cpp +3 -3
  109. package/src/duckdb/src/common/types/cast_helpers.cpp +197 -0
  110. package/src/duckdb/src/common/types/column/column_data_collection.cpp +17 -9
  111. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  112. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +13 -5
  113. package/src/duckdb/src/common/types/conflict_info.cpp +1 -1
  114. package/src/duckdb/src/common/types/conflict_manager.cpp +1 -1
  115. package/src/duckdb/src/common/types/data_chunk.cpp +1 -1
  116. package/src/duckdb/src/common/types/date.cpp +2 -2
  117. package/src/duckdb/src/common/types/decimal.cpp +12 -12
  118. package/src/duckdb/src/common/types/hash.cpp +1 -1
  119. package/src/duckdb/src/common/types/hugeint.cpp +10 -9
  120. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +4 -4
  121. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +6 -5
  122. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +21 -18
  123. package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +2 -2
  124. package/src/duckdb/src/common/types/row/tuple_data_segment.cpp +7 -0
  125. package/src/duckdb/src/common/types/string_heap.cpp +4 -0
  126. package/src/duckdb/src/common/types/timestamp.cpp +23 -1
  127. package/src/duckdb/src/common/types/uhugeint.cpp +1 -1
  128. package/src/duckdb/src/common/types/uuid.cpp +7 -6
  129. package/src/duckdb/src/common/types/value.cpp +54 -30
  130. package/src/duckdb/src/common/types/vector.cpp +71 -96
  131. package/src/duckdb/src/common/types/vector_buffer.cpp +4 -0
  132. package/src/duckdb/src/common/types/vector_cache.cpp +3 -3
  133. package/src/duckdb/src/common/types.cpp +124 -18
  134. package/src/duckdb/src/common/vector_operations/generators.cpp +4 -16
  135. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +20 -0
  136. package/src/duckdb/src/common/vector_operations/null_operations.cpp +1 -1
  137. package/src/duckdb/src/common/vector_operations/numeric_inplace_operators.cpp +2 -2
  138. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +1 -1
  139. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +13 -6
  140. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +8 -5
  141. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +2 -2
  142. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +2 -2
  143. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +2 -0
  144. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +2 -2
  145. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +8 -5
  146. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +14 -8
  147. package/src/duckdb/src/core_functions/function_list.cpp +2 -1
  148. package/src/duckdb/src/core_functions/lambda_functions.cpp +2 -2
  149. package/src/duckdb/src/core_functions/scalar/array/array_functions.cpp +5 -0
  150. package/src/duckdb/src/core_functions/scalar/bit/bitstring.cpp +4 -4
  151. package/src/duckdb/src/core_functions/scalar/blob/create_sort_key.cpp +3 -2
  152. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +2 -2
  153. package/src/duckdb/src/core_functions/scalar/date/epoch.cpp +17 -0
  154. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +1 -1
  155. package/src/duckdb/src/core_functions/scalar/date/to_interval.cpp +19 -0
  156. package/src/duckdb/src/core_functions/scalar/debug/vector_type.cpp +6 -5
  157. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +2 -3
  158. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +2 -2
  159. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +30 -21
  160. package/src/duckdb/src/core_functions/scalar/list/list_reduce.cpp +1 -1
  161. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +3 -3
  162. package/src/duckdb/src/core_functions/scalar/list/list_value.cpp +1 -1
  163. package/src/duckdb/src/core_functions/scalar/list/range.cpp +2 -2
  164. package/src/duckdb/src/core_functions/scalar/map/map.cpp +44 -14
  165. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +17 -4
  166. package/src/duckdb/src/core_functions/scalar/map/map_entries.cpp +30 -13
  167. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +25 -12
  168. package/src/duckdb/src/core_functions/scalar/map/map_keys_values.cpp +16 -4
  169. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +2 -2
  170. package/src/duckdb/src/core_functions/scalar/operators/bitwise.cpp +2 -2
  171. package/src/duckdb/src/core_functions/scalar/random/setseed.cpp +1 -1
  172. package/src/duckdb/src/core_functions/scalar/string/bar.cpp +1 -1
  173. package/src/duckdb/src/core_functions/scalar/string/chr.cpp +2 -2
  174. package/src/duckdb/src/core_functions/scalar/string/hex.cpp +13 -13
  175. package/src/duckdb/src/core_functions/scalar/string/instr.cpp +1 -1
  176. package/src/duckdb/src/core_functions/scalar/string/pad.cpp +8 -8
  177. package/src/duckdb/src/core_functions/scalar/string/repeat.cpp +15 -7
  178. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +1 -1
  179. package/src/duckdb/src/core_functions/scalar/string/to_base.cpp +1 -1
  180. package/src/duckdb/src/core_functions/scalar/string/translate.cpp +4 -4
  181. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +13 -9
  182. package/src/duckdb/src/core_functions/scalar/string/unicode.cpp +1 -1
  183. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  184. package/src/duckdb/src/execution/aggregate_hashtable.cpp +17 -8
  185. package/src/duckdb/src/execution/index/art/art.cpp +6 -6
  186. package/src/duckdb/src/execution/index/bound_index.cpp +115 -0
  187. package/src/duckdb/src/execution/index/unbound_index.cpp +30 -0
  188. package/src/duckdb/src/execution/join_hashtable.cpp +2 -1
  189. package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +1 -1
  190. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  191. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +3 -3
  192. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +40 -5
  193. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +2 -2
  194. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +16 -3
  195. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer.cpp +4 -4
  196. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.cpp +2 -12
  197. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_file_handle.cpp +2 -1
  198. package/src/duckdb/src/execution/operator/csv_scanner/scanner/base_scanner.cpp +21 -5
  199. package/src/duckdb/src/execution/operator/csv_scanner/scanner/column_count_scanner.cpp +1 -1
  200. package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +312 -260
  201. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/csv_sniffer.cpp +2 -2
  202. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +45 -16
  203. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +19 -18
  204. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +200 -55
  205. package/src/duckdb/src/execution/operator/csv_scanner/table_function/csv_file_scanner.cpp +26 -23
  206. package/src/duckdb/src/execution/operator/csv_scanner/table_function/global_csv_state.cpp +12 -12
  207. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +7 -7
  208. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +31 -22
  209. package/src/duckdb/src/execution/operator/helper/physical_buffered_collector.cpp +1 -1
  210. package/src/duckdb/src/execution/operator/helper/physical_execute.cpp +1 -1
  211. package/src/duckdb/src/execution/operator/helper/physical_load.cpp +24 -2
  212. package/src/duckdb/src/execution/operator/helper/physical_reservoir_sample.cpp +1 -1
  213. package/src/duckdb/src/execution/operator/helper/physical_update_extensions.cpp +57 -0
  214. package/src/duckdb/src/execution/operator/helper/physical_verify_vector.cpp +13 -8
  215. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  216. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +9 -9
  217. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +4 -4
  218. package/src/duckdb/src/execution/operator/join/physical_left_delim_join.cpp +1 -1
  219. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +2 -2
  220. package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +2 -2
  221. package/src/duckdb/src/execution/operator/order/physical_order.cpp +3 -2
  222. package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +4 -4
  223. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +20 -13
  224. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +70 -60
  225. package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +18 -7
  226. package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +88 -12
  227. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +47 -27
  228. package/src/duckdb/src/execution/operator/persistent/physical_update.cpp +34 -9
  229. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -0
  230. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -3
  231. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +22 -7
  232. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +1 -1
  233. package/src/duckdb/src/execution/operator/schema/physical_create_art_index.cpp +9 -9
  234. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +1 -1
  235. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +5 -4
  236. package/src/duckdb/src/execution/physical_operator.cpp +2 -2
  237. package/src/duckdb/src/execution/physical_plan/plan_column_data_get.cpp +2 -4
  238. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  239. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +2 -2
  240. package/src/duckdb/src/execution/physical_plan/plan_cte.cpp +1 -1
  241. package/src/duckdb/src/execution/physical_plan/plan_delete.cpp +2 -2
  242. package/src/duckdb/src/execution/physical_plan/plan_delim_get.cpp +2 -2
  243. package/src/duckdb/src/execution/physical_plan/plan_distinct.cpp +1 -0
  244. package/src/duckdb/src/execution/physical_plan/plan_expression_get.cpp +4 -5
  245. package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +6 -5
  246. package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +1 -1
  247. package/src/duckdb/src/execution/physical_plan/plan_simple.cpp +4 -0
  248. package/src/duckdb/src/execution/physical_plan/plan_top_n.cpp +2 -2
  249. package/src/duckdb/src/execution/physical_plan/plan_update.cpp +3 -3
  250. package/src/duckdb/src/execution/physical_plan/plan_window.cpp +1 -24
  251. package/src/duckdb/src/execution/physical_plan_generator.cpp +3 -0
  252. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +38 -33
  253. package/src/duckdb/src/execution/reservoir_sample.cpp +42 -31
  254. package/src/duckdb/src/execution/window_executor.cpp +39 -39
  255. package/src/duckdb/src/execution/window_segment_tree.cpp +5 -2
  256. package/src/duckdb/src/function/aggregate/distributive/first.cpp +1 -1
  257. package/src/duckdb/src/function/cast/string_cast.cpp +3 -3
  258. package/src/duckdb/src/function/cast_rules.cpp +1 -0
  259. package/src/duckdb/src/function/function.cpp +2 -2
  260. package/src/duckdb/src/function/function_binder.cpp +9 -4
  261. package/src/duckdb/src/function/pragma/pragma_functions.cpp +2 -1
  262. package/src/duckdb/src/function/pragma/pragma_queries.cpp +4 -3
  263. package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +1 -1
  264. package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -2
  265. package/src/duckdb/src/function/scalar/list/list_resize.cpp +1 -1
  266. package/src/duckdb/src/function/scalar/list/list_select.cpp +11 -4
  267. package/src/duckdb/src/function/scalar/list/list_zip.cpp +3 -1
  268. package/src/duckdb/src/function/scalar/operators/add.cpp +19 -9
  269. package/src/duckdb/src/function/scalar/sequence/nextval.cpp +77 -48
  270. package/src/duckdb/src/function/scalar/strftime_format.cpp +61 -39
  271. package/src/duckdb/src/function/scalar/string/caseconvert.cpp +12 -12
  272. package/src/duckdb/src/function/scalar/string/contains.cpp +2 -2
  273. package/src/duckdb/src/function/scalar/string/length.cpp +9 -9
  274. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +2 -2
  275. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +2 -1
  276. package/src/duckdb/src/function/scalar/string/substring.cpp +11 -9
  277. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +2 -2
  278. package/src/duckdb/src/function/scalar_function.cpp +2 -1
  279. package/src/duckdb/src/function/table/arrow.cpp +18 -4
  280. package/src/duckdb/src/function/table/arrow_conversion.cpp +88 -66
  281. package/src/duckdb/src/function/table/copy_csv.cpp +94 -28
  282. package/src/duckdb/src/function/table/glob.cpp +17 -9
  283. package/src/duckdb/src/function/table/read_csv.cpp +37 -14
  284. package/src/duckdb/src/function/table/read_file.cpp +6 -2
  285. package/src/duckdb/src/function/table/repeat.cpp +5 -1
  286. package/src/duckdb/src/function/table/repeat_row.cpp +1 -1
  287. package/src/duckdb/src/function/table/sniff_csv.cpp +9 -3
  288. package/src/duckdb/src/function/table/system/duckdb_columns.cpp +3 -3
  289. package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +31 -16
  290. package/src/duckdb/src/function/table/system/duckdb_databases.cpp +6 -1
  291. package/src/duckdb/src/function/table/system/duckdb_dependencies.cpp +2 -2
  292. package/src/duckdb/src/function/table/system/duckdb_extensions.cpp +48 -6
  293. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +8 -2
  294. package/src/duckdb/src/function/table/system/duckdb_indexes.cpp +9 -4
  295. package/src/duckdb/src/function/table/system/duckdb_memory.cpp +2 -2
  296. package/src/duckdb/src/function/table/system/duckdb_schemas.cpp +7 -2
  297. package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +8 -3
  298. package/src/duckdb/src/function/table/system/duckdb_tables.cpp +18 -10
  299. package/src/duckdb/src/function/table/system/duckdb_temporary_files.cpp +1 -1
  300. package/src/duckdb/src/function/table/system/duckdb_types.cpp +12 -5
  301. package/src/duckdb/src/function/table/system/duckdb_views.cpp +9 -4
  302. package/src/duckdb/src/function/table/system/duckdb_which_secret.cpp +75 -0
  303. package/src/duckdb/src/function/table/system/pragma_database_size.cpp +4 -4
  304. package/src/duckdb/src/function/table/system/pragma_metadata_info.cpp +3 -3
  305. package/src/duckdb/src/function/table/system/pragma_storage_info.cpp +6 -6
  306. package/src/duckdb/src/function/table/system_functions.cpp +1 -0
  307. package/src/duckdb/src/function/table/table_scan.cpp +11 -20
  308. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  309. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  310. package/src/duckdb/src/function/table_function.cpp +5 -4
  311. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +1 -10
  312. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_index_entry.hpp +1 -1
  313. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_schema_entry.hpp +2 -2
  314. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +6 -8
  315. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/function_entry.hpp +1 -0
  316. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +3 -2
  317. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +2 -5
  318. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +3 -4
  319. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +2 -0
  320. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +4 -0
  321. package/src/duckdb/src/include/duckdb/catalog/catalog_entry_retriever.hpp +72 -0
  322. package/src/duckdb/src/include/duckdb/catalog/catalog_transaction.hpp +3 -0
  323. package/src/duckdb/src/include/duckdb/catalog/dependency.hpp +4 -0
  324. package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +7 -1
  325. package/src/duckdb/src/include/duckdb/catalog/dependency_manager.hpp +2 -2
  326. package/src/duckdb/src/include/duckdb/catalog/standard_entry.hpp +2 -0
  327. package/src/duckdb/src/include/duckdb/common/arrow/appender/append_data.hpp +1 -0
  328. package/src/duckdb/src/include/duckdb/common/arrow/appender/enum_data.hpp +3 -3
  329. package/src/duckdb/src/include/duckdb/common/arrow/appender/map_data.hpp +1 -1
  330. package/src/duckdb/src/include/duckdb/common/arrow/appender/scalar_data.hpp +15 -0
  331. package/src/duckdb/src/include/duckdb/common/arrow/appender/varchar_data.hpp +3 -2
  332. package/src/duckdb/src/include/duckdb/common/bit_utils.hpp +63 -98
  333. package/src/duckdb/src/include/duckdb/common/bitpacking.hpp +4 -4
  334. package/src/duckdb/src/include/duckdb/common/constants.hpp +2 -0
  335. package/src/duckdb/src/include/duckdb/common/enable_shared_from_this.ipp +42 -0
  336. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +43 -3
  337. package/src/duckdb/src/include/duckdb/common/enums/checkpoint_type.hpp +38 -0
  338. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +1 -0
  339. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +1 -0
  340. package/src/duckdb/src/include/duckdb/common/enums/relation_type.hpp +1 -0
  341. package/src/duckdb/src/include/duckdb/common/enums/scan_options.hpp +3 -1
  342. package/src/duckdb/src/include/duckdb/common/enums/scan_vector_type.hpp +17 -0
  343. package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +1 -0
  344. package/src/duckdb/src/include/duckdb/common/enums/tableref_type.hpp +2 -1
  345. package/src/duckdb/src/include/duckdb/common/enums/undo_flags.hpp +2 -1
  346. package/src/duckdb/src/include/duckdb/common/exception.hpp +0 -1
  347. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +15 -1
  348. package/src/duckdb/src/include/duckdb/common/file_opener.hpp +4 -0
  349. package/src/duckdb/src/include/duckdb/common/file_system.hpp +3 -0
  350. package/src/duckdb/src/include/duckdb/common/gzip_file_system.hpp +3 -0
  351. package/src/duckdb/src/include/duckdb/common/helper.hpp +22 -1
  352. package/src/duckdb/src/include/duckdb/common/hive_partitioning.hpp +3 -17
  353. package/src/duckdb/src/include/duckdb/common/http_state.hpp +1 -1
  354. package/src/duckdb/src/include/duckdb/common/insertion_order_preserving_map.hpp +129 -0
  355. package/src/duckdb/src/include/duckdb/common/multi_file_list.hpp +151 -0
  356. package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +132 -56
  357. package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +7 -3
  358. package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +3 -0
  359. package/src/duckdb/src/include/duckdb/common/operator/add.hpp +2 -0
  360. package/src/duckdb/src/include/duckdb/common/operator/decimal_cast_operators.hpp +233 -0
  361. package/src/duckdb/src/include/duckdb/common/operator/integer_cast_operator.hpp +5 -4
  362. package/src/duckdb/src/include/duckdb/common/operator/numeric_cast.hpp +2 -2
  363. package/src/duckdb/src/include/duckdb/common/optional_ptr.hpp +5 -0
  364. package/src/duckdb/src/include/duckdb/common/optionally_owned_ptr.hpp +91 -0
  365. package/src/duckdb/src/include/duckdb/common/platform.h +6 -1
  366. package/src/duckdb/src/include/duckdb/common/radix.hpp +12 -4
  367. package/src/duckdb/src/include/duckdb/common/re2_regex.hpp +3 -2
  368. package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +2 -0
  369. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +2 -1
  370. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +8 -6
  371. package/src/duckdb/src/include/duckdb/common/serializer/deserializer.hpp +36 -0
  372. package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +65 -0
  373. package/src/duckdb/src/include/duckdb/common/serializer/serializer.hpp +52 -6
  374. package/src/duckdb/src/include/duckdb/common/shared_ptr.hpp +36 -3
  375. package/src/duckdb/src/include/duckdb/common/shared_ptr.ipp +268 -0
  376. package/src/duckdb/src/include/duckdb/common/sort/duckdb_pdqsort.hpp +3 -3
  377. package/src/duckdb/src/include/duckdb/common/string.hpp +3 -2
  378. package/src/duckdb/src/include/duckdb/common/string_util.hpp +11 -7
  379. package/src/duckdb/src/include/duckdb/common/types/bit.hpp +1 -1
  380. package/src/duckdb/src/include/duckdb/common/types/cast_helpers.hpp +43 -215
  381. package/src/duckdb/src/include/duckdb/common/types/datetime.hpp +36 -11
  382. package/src/duckdb/src/include/duckdb/common/types/hash.hpp +1 -1
  383. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_segment.hpp +7 -1
  384. package/src/duckdb/src/include/duckdb/common/types/selection_vector.hpp +1 -1
  385. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +2 -0
  386. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +2 -0
  387. package/src/duckdb/src/include/duckdb/common/types/validity_mask.hpp +1 -1
  388. package/src/duckdb/src/include/duckdb/common/types/value.hpp +4 -0
  389. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +20 -15
  390. package/src/duckdb/src/include/duckdb/common/types.hpp +14 -2
  391. package/src/duckdb/src/include/duckdb/common/unique_ptr.hpp +7 -6
  392. package/src/duckdb/src/include/duckdb/common/vector.hpp +11 -0
  393. package/src/duckdb/src/include/duckdb/common/vector_size.hpp +1 -1
  394. package/src/duckdb/src/include/duckdb/common/weak_ptr.ipp +117 -0
  395. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +3 -3
  396. package/src/duckdb/src/include/duckdb/core_functions/scalar/date_functions.hpp +18 -0
  397. package/src/duckdb/src/include/duckdb/execution/adaptive_filter.hpp +1 -0
  398. package/src/duckdb/src/include/duckdb/execution/expression_executor.hpp +1 -1
  399. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +4 -4
  400. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +1 -1
  401. package/src/duckdb/src/include/duckdb/execution/index/bound_index.hpp +145 -0
  402. package/src/duckdb/src/include/duckdb/execution/index/index_type.hpp +2 -2
  403. package/src/duckdb/src/include/duckdb/execution/index/unbound_index.hpp +63 -0
  404. package/src/duckdb/src/include/duckdb/execution/merge_sort_tree.hpp +24 -18
  405. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_streaming_window.hpp +2 -0
  406. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_window.hpp +2 -0
  407. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/base_scanner.hpp +10 -3
  408. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/column_count_scanner.hpp +1 -0
  409. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_error.hpp +6 -6
  410. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_reader_options.hpp +7 -6
  411. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_sniffer.hpp +24 -4
  412. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/string_value_scanner.hpp +90 -20
  413. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_update_extensions.hpp +52 -0
  414. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +3 -1
  415. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_delete.hpp +5 -5
  416. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_export.hpp +1 -0
  417. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_insert.hpp +8 -5
  418. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_update.hpp +4 -1
  419. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +4 -5
  420. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_expression_scan.hpp +6 -2
  421. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +1 -1
  422. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +1 -1
  423. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +1 -1
  424. package/src/duckdb/src/include/duckdb/execution/reservoir_sample.hpp +63 -8
  425. package/src/duckdb/src/include/duckdb/function/function.hpp +0 -5
  426. package/src/duckdb/src/include/duckdb/function/function_binder.hpp +6 -3
  427. package/src/duckdb/src/include/duckdb/function/replacement_scan.hpp +25 -2
  428. package/src/duckdb/src/include/duckdb/function/scalar/regexp.hpp +1 -1
  429. package/src/duckdb/src/include/duckdb/function/scalar/sequence_functions.hpp +3 -4
  430. package/src/duckdb/src/include/duckdb/function/scalar/strftime_format.hpp +5 -0
  431. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +1 -1
  432. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +13 -0
  433. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +7 -3
  434. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +3 -0
  435. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +4 -0
  436. package/src/duckdb/src/include/duckdb/function/table_function.hpp +15 -2
  437. package/src/duckdb/src/include/duckdb/logging/http_logger.hpp +81 -0
  438. package/src/duckdb/src/include/duckdb/main/appender.hpp +1 -3
  439. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +1 -1
  440. package/src/duckdb/src/include/duckdb/main/buffered_data/buffered_data.hpp +1 -0
  441. package/src/duckdb/src/include/duckdb/main/capi/cast/generic.hpp +2 -2
  442. package/src/duckdb/src/include/duckdb/main/client_config.hpp +8 -0
  443. package/src/duckdb/src/include/duckdb/main/client_context.hpp +1 -19
  444. package/src/duckdb/src/include/duckdb/main/client_context_state.hpp +11 -1
  445. package/src/duckdb/src/include/duckdb/main/client_context_wrapper.hpp +27 -0
  446. package/src/duckdb/src/include/duckdb/main/client_data.hpp +4 -0
  447. package/src/duckdb/src/include/duckdb/main/config.hpp +36 -3
  448. package/src/duckdb/src/include/duckdb/main/connection_manager.hpp +7 -17
  449. package/src/duckdb/src/include/duckdb/main/database.hpp +25 -20
  450. package/src/duckdb/src/include/duckdb/main/extension.hpp +25 -0
  451. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +155 -10
  452. package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +79 -12
  453. package/src/duckdb/src/include/duckdb/main/extension_install_info.hpp +89 -0
  454. package/src/duckdb/src/include/duckdb/main/extension_util.hpp +3 -1
  455. package/src/duckdb/src/include/duckdb/main/external_dependencies.hpp +46 -4
  456. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  457. package/src/duckdb/src/include/duckdb/main/relation/materialized_relation.hpp +35 -0
  458. package/src/duckdb/src/include/duckdb/main/relation/query_relation.hpp +1 -1
  459. package/src/duckdb/src/include/duckdb/main/relation/table_function_relation.hpp +2 -2
  460. package/src/duckdb/src/include/duckdb/main/relation/table_relation.hpp +1 -1
  461. package/src/duckdb/src/include/duckdb/main/relation/value_relation.hpp +3 -3
  462. package/src/duckdb/src/include/duckdb/main/relation/view_relation.hpp +1 -1
  463. package/src/duckdb/src/include/duckdb/main/relation.hpp +5 -6
  464. package/src/duckdb/src/include/duckdb/main/settings.hpp +47 -0
  465. package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +4 -4
  466. package/src/duckdb/src/include/duckdb/optimizer/join_order/cost_model.hpp +1 -1
  467. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_node.hpp +8 -15
  468. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_order_optimizer.hpp +0 -51
  469. package/src/duckdb/src/include/duckdb/optimizer/join_order/plan_enumerator.hpp +10 -17
  470. package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph_manager.hpp +5 -7
  471. package/src/duckdb/src/include/duckdb/optimizer/matcher/set_matcher.hpp +2 -1
  472. package/src/duckdb/src/include/duckdb/optimizer/optimizer_extension.hpp +10 -2
  473. package/src/duckdb/src/include/duckdb/optimizer/rule/list.hpp +1 -0
  474. package/src/duckdb/src/include/duckdb/optimizer/rule/timestamp_comparison.hpp +30 -0
  475. package/src/duckdb/src/include/duckdb/parallel/event.hpp +1 -1
  476. package/src/duckdb/src/include/duckdb/parallel/interrupt.hpp +1 -0
  477. package/src/duckdb/src/include/duckdb/parallel/meta_pipeline.hpp +1 -1
  478. package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +1 -1
  479. package/src/duckdb/src/include/duckdb/parallel/task.hpp +1 -1
  480. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +1 -1
  481. package/src/duckdb/src/include/duckdb/parser/column_definition.hpp +2 -0
  482. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +1 -0
  483. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_scalar_function_info.hpp +1 -0
  484. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_function_info.hpp +1 -0
  485. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +12 -0
  486. package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +1 -0
  487. package/src/duckdb/src/include/duckdb/parser/parsed_data/comment_on_column_info.hpp +3 -1
  488. package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_info.hpp +10 -12
  489. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +6 -2
  490. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_schema_info.hpp +3 -30
  491. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_sequence_info.hpp +2 -0
  492. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_type_info.hpp +12 -1
  493. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +1 -0
  494. package/src/duckdb/src/include/duckdb/parser/parsed_data/detach_info.hpp +1 -0
  495. package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +1 -0
  496. package/src/duckdb/src/include/duckdb/parser/parsed_data/exported_table_data.hpp +5 -2
  497. package/src/duckdb/src/include/duckdb/parser/parsed_data/load_info.hpp +4 -7
  498. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +7 -1
  499. package/src/duckdb/src/include/duckdb/parser/parsed_data/pragma_info.hpp +2 -11
  500. package/src/duckdb/src/include/duckdb/parser/parsed_data/transaction_info.hpp +2 -0
  501. package/src/duckdb/src/include/duckdb/parser/parsed_data/update_extensions_info.hpp +36 -0
  502. package/src/duckdb/src/include/duckdb/parser/parsed_data/vacuum_info.hpp +1 -0
  503. package/src/duckdb/src/include/duckdb/parser/parser_extension.hpp +1 -0
  504. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  505. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +1 -4
  506. package/src/duckdb/src/include/duckdb/parser/statement/alter_statement.hpp +1 -0
  507. package/src/duckdb/src/include/duckdb/parser/statement/attach_statement.hpp +1 -0
  508. package/src/duckdb/src/include/duckdb/parser/statement/call_statement.hpp +1 -0
  509. package/src/duckdb/src/include/duckdb/parser/statement/copy_database_statement.hpp +1 -2
  510. package/src/duckdb/src/include/duckdb/parser/statement/copy_statement.hpp +1 -3
  511. package/src/duckdb/src/include/duckdb/parser/statement/detach_statement.hpp +1 -0
  512. package/src/duckdb/src/include/duckdb/parser/statement/drop_statement.hpp +1 -0
  513. package/src/duckdb/src/include/duckdb/parser/statement/execute_statement.hpp +1 -0
  514. package/src/duckdb/src/include/duckdb/parser/statement/explain_statement.hpp +1 -0
  515. package/src/duckdb/src/include/duckdb/parser/statement/export_statement.hpp +1 -0
  516. package/src/duckdb/src/include/duckdb/parser/statement/extension_statement.hpp +1 -0
  517. package/src/duckdb/src/include/duckdb/parser/statement/insert_statement.hpp +1 -0
  518. package/src/duckdb/src/include/duckdb/parser/statement/list.hpp +1 -0
  519. package/src/duckdb/src/include/duckdb/parser/statement/load_statement.hpp +1 -0
  520. package/src/duckdb/src/include/duckdb/parser/statement/logical_plan_statement.hpp +3 -0
  521. package/src/duckdb/src/include/duckdb/parser/statement/multi_statement.hpp +1 -0
  522. package/src/duckdb/src/include/duckdb/parser/statement/pragma_statement.hpp +1 -0
  523. package/src/duckdb/src/include/duckdb/parser/statement/prepare_statement.hpp +1 -0
  524. package/src/duckdb/src/include/duckdb/parser/statement/relation_statement.hpp +1 -0
  525. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -0
  526. package/src/duckdb/src/include/duckdb/parser/statement/set_statement.hpp +6 -4
  527. package/src/duckdb/src/include/duckdb/parser/statement/transaction_statement.hpp +1 -0
  528. package/src/duckdb/src/include/duckdb/parser/statement/update_extensions_statement.hpp +36 -0
  529. package/src/duckdb/src/include/duckdb/parser/statement/vacuum_statement.hpp +1 -0
  530. package/src/duckdb/src/include/duckdb/parser/tableref/column_data_ref.hpp +46 -0
  531. package/src/duckdb/src/include/duckdb/parser/tableref/list.hpp +1 -0
  532. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +0 -4
  533. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +3 -0
  534. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +2 -0
  535. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +5 -0
  536. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +4 -4
  537. package/src/duckdb/src/include/duckdb/planner/binder.hpp +42 -16
  538. package/src/duckdb/src/include/duckdb/planner/bound_tokens.hpp +1 -0
  539. package/src/duckdb/src/include/duckdb/planner/expression_binder/alter_binder.hpp +7 -6
  540. package/src/duckdb/src/include/duckdb/planner/expression_binder/having_binder.hpp +2 -1
  541. package/src/duckdb/src/include/duckdb/planner/expression_binder/index_binder.hpp +5 -1
  542. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +5 -0
  543. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +0 -1
  544. package/src/duckdb/src/include/duckdb/planner/operator/logical_column_data_get.hpp +6 -2
  545. package/src/duckdb/src/include/duckdb/planner/operator/logical_delete.hpp +2 -0
  546. package/src/duckdb/src/include/duckdb/planner/operator/logical_export.hpp +7 -0
  547. package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +2 -0
  548. package/src/duckdb/src/include/duckdb/planner/operator/logical_top_n.hpp +3 -3
  549. package/src/duckdb/src/include/duckdb/planner/operator/logical_update.hpp +2 -0
  550. package/src/duckdb/src/include/duckdb/planner/parsed_data/bound_create_table_info.hpp +0 -4
  551. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +4 -4
  552. package/src/duckdb/src/include/duckdb/planner/tableref/bound_column_data_ref.hpp +30 -0
  553. package/src/duckdb/src/include/duckdb/planner/tableref/list.hpp +1 -0
  554. package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +6 -3
  555. package/src/duckdb/src/include/duckdb/storage/buffer/buffer_pool.hpp +16 -7
  556. package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +15 -3
  557. package/src/duckdb/src/include/duckdb/storage/checkpoint/row_group_writer.hpp +10 -7
  558. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +2 -0
  559. package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +24 -15
  560. package/src/duckdb/src/include/duckdb/storage/compression/alp/algorithm/alp.hpp +8 -7
  561. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_compress.hpp +2 -2
  562. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_constants.hpp +5 -4
  563. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_fetch.hpp +1 -1
  564. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_utils.hpp +3 -3
  565. package/src/duckdb/src/include/duckdb/storage/compression/alprd/algorithm/alprd.hpp +2 -1
  566. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_analyze.hpp +5 -3
  567. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_compress.hpp +2 -2
  568. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_fetch.hpp +1 -1
  569. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/bit_reader.hpp +1 -1
  570. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_fetch.hpp +1 -1
  571. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_fetch.hpp +1 -1
  572. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +55 -16
  573. package/src/duckdb/src/include/duckdb/storage/index.hpp +33 -97
  574. package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +3 -3
  575. package/src/duckdb/src/include/duckdb/storage/optimistic_data_writer.hpp +1 -1
  576. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +3 -3
  577. package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +22 -9
  578. package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +6 -3
  579. package/src/duckdb/src/include/duckdb/storage/storage_lock.hpp +17 -13
  580. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +27 -8
  581. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +3 -2
  582. package/src/duckdb/src/include/duckdb/storage/table/append_state.hpp +12 -0
  583. package/src/duckdb/src/include/duckdb/storage/table/array_column_data.hpp +5 -4
  584. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +29 -10
  585. package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +2 -1
  586. package/src/duckdb/src/include/duckdb/storage/table/data_table_info.hpp +32 -6
  587. package/src/duckdb/src/include/duckdb/storage/table/delete_state.hpp +23 -0
  588. package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +5 -4
  589. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +14 -3
  590. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +3 -2
  591. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +4 -0
  592. package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +5 -5
  593. package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +6 -6
  594. package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +5 -4
  595. package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +25 -1
  596. package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +5 -2
  597. package/src/duckdb/src/include/duckdb/storage/table/update_state.hpp +20 -0
  598. package/src/duckdb/src/include/duckdb/storage/table/validity_column_data.hpp +1 -0
  599. package/src/duckdb/src/include/duckdb/storage/temporary_file_manager.hpp +20 -4
  600. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +10 -5
  601. package/src/duckdb/src/include/duckdb/transaction/duck_transaction.hpp +19 -4
  602. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +30 -7
  603. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +8 -5
  604. package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +1 -0
  605. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +8 -0
  606. package/src/duckdb/src/include/duckdb/transaction/undo_buffer.hpp +9 -1
  607. package/src/duckdb/src/include/duckdb.h +15 -11
  608. package/src/duckdb/src/main/appender.cpp +3 -1
  609. package/src/duckdb/src/main/attached_database.cpp +5 -3
  610. package/src/duckdb/src/main/capi/appender-c.cpp +4 -3
  611. package/src/duckdb/src/main/capi/arrow-c.cpp +4 -4
  612. package/src/duckdb/src/main/capi/helper-c.cpp +3 -3
  613. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -5
  614. package/src/duckdb/src/main/capi/result-c.cpp +19 -5
  615. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  616. package/src/duckdb/src/main/client_context.cpp +32 -23
  617. package/src/duckdb/src/main/client_context_file_opener.cpp +31 -0
  618. package/src/duckdb/src/main/client_context_wrapper.cpp +22 -0
  619. package/src/duckdb/src/main/client_data.cpp +5 -3
  620. package/src/duckdb/src/main/config.cpp +71 -2
  621. package/src/duckdb/src/main/connection.cpp +11 -10
  622. package/src/duckdb/src/main/connection_manager.cpp +9 -23
  623. package/src/duckdb/src/main/database.cpp +26 -30
  624. package/src/duckdb/src/main/db_instance_cache.cpp +1 -1
  625. package/src/duckdb/src/main/extension/extension_helper.cpp +396 -17
  626. package/src/duckdb/src/main/extension/extension_install.cpp +297 -89
  627. package/src/duckdb/src/main/extension/extension_load.cpp +137 -135
  628. package/src/duckdb/src/main/extension/extension_util.cpp +8 -2
  629. package/src/duckdb/src/main/extension.cpp +56 -0
  630. package/src/duckdb/src/main/extension_install_info.cpp +116 -0
  631. package/src/duckdb/src/main/materialized_query_result.cpp +11 -0
  632. package/src/duckdb/src/main/query_profiler.cpp +1 -1
  633. package/src/duckdb/src/main/relation/create_view_relation.cpp +6 -0
  634. package/src/duckdb/src/main/relation/materialized_relation.cpp +58 -0
  635. package/src/duckdb/src/main/relation/query_relation.cpp +20 -1
  636. package/src/duckdb/src/main/relation/read_csv_relation.cpp +5 -3
  637. package/src/duckdb/src/main/relation/table_relation.cpp +4 -4
  638. package/src/duckdb/src/main/relation/value_relation.cpp +2 -2
  639. package/src/duckdb/src/main/relation/view_relation.cpp +1 -1
  640. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  641. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  642. package/src/duckdb/src/main/relation.cpp +36 -32
  643. package/src/duckdb/src/main/secret/secret.cpp +1 -1
  644. package/src/duckdb/src/main/settings/settings.cpp +137 -11
  645. package/src/duckdb/src/optimizer/common_aggregate_optimizer.cpp +1 -1
  646. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  647. package/src/duckdb/src/optimizer/filter_pushdown.cpp +3 -2
  648. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +3 -3
  649. package/src/duckdb/src/optimizer/join_order/cost_model.cpp +1 -1
  650. package/src/duckdb/src/optimizer/join_order/join_node.cpp +4 -27
  651. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +5 -8
  652. package/src/duckdb/src/optimizer/join_order/plan_enumerator.cpp +32 -107
  653. package/src/duckdb/src/optimizer/join_order/query_graph_manager.cpp +68 -61
  654. package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +4 -2
  655. package/src/duckdb/src/optimizer/join_order/relation_statistics_helper.cpp +3 -3
  656. package/src/duckdb/src/optimizer/optimizer.cpp +3 -1
  657. package/src/duckdb/src/optimizer/pushdown/pushdown_aggregate.cpp +2 -2
  658. package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +1 -1
  659. package/src/duckdb/src/optimizer/pushdown/pushdown_left_join.cpp +2 -2
  660. package/src/duckdb/src/optimizer/pushdown/pushdown_mark_join.cpp +6 -6
  661. package/src/duckdb/src/optimizer/pushdown/pushdown_projection.cpp +1 -1
  662. package/src/duckdb/src/optimizer/pushdown/pushdown_semi_anti_join.cpp +1 -1
  663. package/src/duckdb/src/optimizer/pushdown/pushdown_set_operation.cpp +1 -1
  664. package/src/duckdb/src/optimizer/pushdown/pushdown_single_join.cpp +2 -2
  665. package/src/duckdb/src/optimizer/remove_duplicate_groups.cpp +1 -1
  666. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +1 -1
  667. package/src/duckdb/src/optimizer/rule/arithmetic_simplification.cpp +1 -1
  668. package/src/duckdb/src/optimizer/rule/case_simplification.cpp +2 -2
  669. package/src/duckdb/src/optimizer/rule/conjunction_simplification.cpp +2 -1
  670. package/src/duckdb/src/optimizer/rule/constant_folding.cpp +1 -0
  671. package/src/duckdb/src/optimizer/rule/distributivity.cpp +1 -1
  672. package/src/duckdb/src/optimizer/rule/empty_needle_removal.cpp +1 -0
  673. package/src/duckdb/src/optimizer/rule/enum_comparison.cpp +1 -0
  674. package/src/duckdb/src/optimizer/rule/in_clause_simplification_rule.cpp +1 -0
  675. package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +1 -2
  676. package/src/duckdb/src/optimizer/rule/timestamp_comparison.cpp +107 -0
  677. package/src/duckdb/src/optimizer/statistics/expression/propagate_conjunction.cpp +1 -1
  678. package/src/duckdb/src/optimizer/statistics/expression/propagate_operator.cpp +4 -4
  679. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +3 -3
  680. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +1 -1
  681. package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +6 -3
  682. package/src/duckdb/src/optimizer/statistics/operator/propagate_set_operation.cpp +2 -1
  683. package/src/duckdb/src/optimizer/topn_optimizer.cpp +2 -2
  684. package/src/duckdb/src/parallel/executor.cpp +12 -9
  685. package/src/duckdb/src/parallel/meta_pipeline.cpp +2 -2
  686. package/src/duckdb/src/parallel/pipeline.cpp +2 -2
  687. package/src/duckdb/src/parallel/task_scheduler.cpp +9 -3
  688. package/src/duckdb/src/parser/column_definition.cpp +1 -0
  689. package/src/duckdb/src/parser/constraints/foreign_key_constraint.cpp +9 -7
  690. package/src/duckdb/src/parser/expression/star_expression.cpp +2 -2
  691. package/src/duckdb/src/parser/parsed_data/alter_scalar_function_info.cpp +4 -0
  692. package/src/duckdb/src/parser/parsed_data/alter_table_function_info.cpp +4 -0
  693. package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +183 -0
  694. package/src/duckdb/src/parser/parsed_data/attach_info.cpp +23 -0
  695. package/src/duckdb/src/parser/parsed_data/comment_on_column_info.cpp +15 -2
  696. package/src/duckdb/src/parser/parsed_data/copy_info.cpp +100 -0
  697. package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +16 -2
  698. package/src/duckdb/src/parser/parsed_data/create_info.cpp +2 -0
  699. package/src/duckdb/src/parser/parsed_data/create_schema_info.cpp +40 -0
  700. package/src/duckdb/src/parser/parsed_data/create_sequence_info.cpp +22 -0
  701. package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +12 -4
  702. package/src/duckdb/src/parser/parsed_data/create_type_info.cpp +37 -14
  703. package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +4 -4
  704. package/src/duckdb/src/parser/parsed_data/detach_info.cpp +12 -0
  705. package/src/duckdb/src/parser/parsed_data/drop_info.cpp +21 -0
  706. package/src/duckdb/src/parser/parsed_data/load_info.cpp +46 -0
  707. package/src/duckdb/src/parser/parsed_data/parse_info.cpp +50 -0
  708. package/src/duckdb/src/parser/parsed_data/pragma_info.cpp +33 -0
  709. package/src/duckdb/src/parser/parsed_data/transaction_info.cpp +22 -0
  710. package/src/duckdb/src/parser/parsed_data/vacuum_info.cpp +20 -0
  711. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +1 -0
  712. package/src/duckdb/src/parser/parser.cpp +5 -4
  713. package/src/duckdb/src/parser/query_node.cpp +6 -2
  714. package/src/duckdb/src/parser/statement/alter_statement.cpp +4 -0
  715. package/src/duckdb/src/parser/statement/attach_statement.cpp +4 -0
  716. package/src/duckdb/src/parser/statement/call_statement.cpp +8 -0
  717. package/src/duckdb/src/parser/statement/copy_statement.cpp +1 -91
  718. package/src/duckdb/src/parser/statement/detach_statement.cpp +4 -0
  719. package/src/duckdb/src/parser/statement/drop_statement.cpp +4 -0
  720. package/src/duckdb/src/parser/statement/execute_statement.cpp +15 -0
  721. package/src/duckdb/src/parser/statement/explain_statement.cpp +19 -0
  722. package/src/duckdb/src/parser/statement/export_statement.cpp +18 -0
  723. package/src/duckdb/src/parser/statement/extension_statement.cpp +4 -0
  724. package/src/duckdb/src/parser/statement/load_statement.cpp +4 -0
  725. package/src/duckdb/src/parser/statement/multi_statement.cpp +8 -0
  726. package/src/duckdb/src/parser/statement/pragma_statement.cpp +4 -0
  727. package/src/duckdb/src/parser/statement/prepare_statement.cpp +13 -0
  728. package/src/duckdb/src/parser/statement/relation_statement.cpp +4 -0
  729. package/src/duckdb/src/parser/statement/set_statement.cpp +33 -4
  730. package/src/duckdb/src/parser/statement/transaction_statement.cpp +4 -0
  731. package/src/duckdb/src/parser/statement/update_extensions_statement.cpp +34 -0
  732. package/src/duckdb/src/parser/statement/vacuum_statement.cpp +4 -0
  733. package/src/duckdb/src/parser/tableref/column_data_ref.cpp +81 -0
  734. package/src/duckdb/src/parser/tableref.cpp +1 -0
  735. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +2 -2
  736. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +1 -1
  737. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +6 -1
  738. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +1 -1
  739. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +1 -1
  740. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +16 -0
  741. package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +2 -0
  742. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +97 -63
  743. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +2 -0
  744. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +1 -1
  745. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -2
  746. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +19 -0
  747. package/src/duckdb/src/parser/transformer.cpp +5 -2
  748. package/src/duckdb/src/planner/bind_context.cpp +2 -2
  749. package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +35 -8
  750. package/src/duckdb/src/planner/binder/expression/bind_cast_expression.cpp +1 -1
  751. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +13 -7
  752. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +1 -1
  753. package/src/duckdb/src/planner/binder/query_node/plan_setop.cpp +35 -2
  754. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +0 -2
  755. package/src/duckdb/src/planner/binder/statement/bind_attach.cpp +2 -0
  756. package/src/duckdb/src/planner/binder/statement/bind_call.cpp +2 -0
  757. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +7 -3
  758. package/src/duckdb/src/planner/binder/statement/bind_copy_database.cpp +21 -68
  759. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +141 -28
  760. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +115 -57
  761. package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +4 -0
  762. package/src/duckdb/src/planner/binder/statement/bind_detach.cpp +2 -0
  763. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +2 -0
  764. package/src/duckdb/src/planner/binder/statement/bind_execute.cpp +4 -2
  765. package/src/duckdb/src/planner/binder/statement/bind_explain.cpp +2 -0
  766. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +15 -4
  767. package/src/duckdb/src/planner/binder/statement/bind_extension.cpp +1 -0
  768. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +5 -1
  769. package/src/duckdb/src/planner/binder/statement/bind_load.cpp +13 -0
  770. package/src/duckdb/src/planner/binder/statement/bind_logical_plan.cpp +2 -0
  771. package/src/duckdb/src/planner/binder/statement/bind_pragma.cpp +2 -0
  772. package/src/duckdb/src/planner/binder/statement/bind_prepare.cpp +1 -0
  773. package/src/duckdb/src/planner/binder/statement/bind_select.cpp +1 -0
  774. package/src/duckdb/src/planner/binder/statement/bind_set.cpp +4 -0
  775. package/src/duckdb/src/planner/binder/statement/bind_simple.cpp +6 -4
  776. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +5 -1
  777. package/src/duckdb/src/planner/binder/statement/bind_update_extensions.cpp +28 -0
  778. package/src/duckdb/src/planner/binder/statement/bind_vacuum.cpp +2 -0
  779. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +32 -29
  780. package/src/duckdb/src/planner/binder/tableref/bind_column_data_ref.cpp +16 -0
  781. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +7 -4
  782. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +32 -22
  783. package/src/duckdb/src/planner/binder/tableref/plan_column_data_ref.cpp +15 -0
  784. package/src/duckdb/src/planner/binder.cpp +50 -30
  785. package/src/duckdb/src/planner/bound_parameter_map.cpp +1 -1
  786. package/src/duckdb/src/planner/bound_result_modifier.cpp +1 -1
  787. package/src/duckdb/src/planner/expression/bound_expression.cpp +3 -2
  788. package/src/duckdb/src/planner/expression_binder/alter_binder.cpp +24 -7
  789. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +27 -2
  790. package/src/duckdb/src/planner/expression_binder/having_binder.cpp +34 -19
  791. package/src/duckdb/src/planner/expression_binder/index_binder.cpp +33 -0
  792. package/src/duckdb/src/planner/expression_binder/order_binder.cpp +10 -1
  793. package/src/duckdb/src/planner/expression_binder.cpp +4 -0
  794. package/src/duckdb/src/planner/expression_iterator.cpp +3 -1
  795. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  796. package/src/duckdb/src/planner/operator/logical_column_data_get.cpp +16 -2
  797. package/src/duckdb/src/planner/operator/logical_delete.cpp +2 -0
  798. package/src/duckdb/src/planner/operator/logical_get.cpp +4 -1
  799. package/src/duckdb/src/planner/operator/logical_insert.cpp +2 -0
  800. package/src/duckdb/src/planner/operator/logical_top_n.cpp +1 -1
  801. package/src/duckdb/src/planner/operator/logical_update.cpp +2 -0
  802. package/src/duckdb/src/planner/planner.cpp +35 -9
  803. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +34 -9
  804. package/src/duckdb/src/planner/table_binding.cpp +1 -1
  805. package/src/duckdb/src/storage/arena_allocator.cpp +5 -3
  806. package/src/duckdb/src/storage/buffer/block_handle.cpp +3 -3
  807. package/src/duckdb/src/storage/buffer/block_manager.cpp +1 -1
  808. package/src/duckdb/src/storage/buffer/buffer_pool.cpp +83 -22
  809. package/src/duckdb/src/storage/buffer/buffer_pool_reservation.cpp +2 -2
  810. package/src/duckdb/src/storage/buffer_manager.cpp +6 -2
  811. package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +9 -0
  812. package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +7 -2
  813. package/src/duckdb/src/storage/checkpoint_manager.cpp +68 -104
  814. package/src/duckdb/src/storage/compression/bitpacking.cpp +19 -13
  815. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +9 -7
  816. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +1 -1
  817. package/src/duckdb/src/storage/compression/fsst.cpp +11 -7
  818. package/src/duckdb/src/storage/compression/rle.cpp +1 -1
  819. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +5 -4
  820. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +1 -1
  821. package/src/duckdb/src/storage/data_table.cpp +254 -101
  822. package/src/duckdb/src/storage/index.cpp +2 -106
  823. package/src/duckdb/src/storage/local_storage.cpp +38 -50
  824. package/src/duckdb/src/storage/metadata/metadata_manager.cpp +2 -2
  825. package/src/duckdb/src/storage/metadata/metadata_writer.cpp +1 -1
  826. package/src/duckdb/src/storage/optimistic_data_writer.cpp +9 -11
  827. package/src/duckdb/src/storage/partial_block_manager.cpp +6 -6
  828. package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +8 -0
  829. package/src/duckdb/src/storage/serialization/serialize_dependency.cpp +49 -0
  830. package/src/duckdb/src/storage/serialization/serialize_extension_install_info.cpp +28 -0
  831. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +5 -2
  832. package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +78 -2
  833. package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +21 -0
  834. package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +16 -0
  835. package/src/duckdb/src/storage/serialization/serialize_types.cpp +6 -1
  836. package/src/duckdb/src/storage/single_file_block_manager.cpp +22 -19
  837. package/src/duckdb/src/storage/standard_buffer_manager.cpp +68 -40
  838. package/src/duckdb/src/storage/statistics/column_statistics.cpp +3 -3
  839. package/src/duckdb/src/storage/statistics/distinct_statistics.cpp +1 -1
  840. package/src/duckdb/src/storage/storage_info.cpp +67 -23
  841. package/src/duckdb/src/storage/storage_lock.cpp +77 -17
  842. package/src/duckdb/src/storage/storage_manager.cpp +56 -43
  843. package/src/duckdb/src/storage/table/array_column_data.cpp +13 -12
  844. package/src/duckdb/src/storage/table/column_data.cpp +80 -37
  845. package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +1 -1
  846. package/src/duckdb/src/storage/table/column_segment.cpp +6 -5
  847. package/src/duckdb/src/storage/table/list_column_data.cpp +15 -14
  848. package/src/duckdb/src/storage/table/row_group.cpp +38 -23
  849. package/src/duckdb/src/storage/table/row_group_collection.cpp +52 -38
  850. package/src/duckdb/src/storage/table/row_version_manager.cpp +2 -2
  851. package/src/duckdb/src/storage/table/standard_column_data.cpp +28 -16
  852. package/src/duckdb/src/storage/table/struct_column_data.cpp +23 -16
  853. package/src/duckdb/src/storage/table/table_statistics.cpp +27 -8
  854. package/src/duckdb/src/storage/table/update_segment.cpp +6 -6
  855. package/src/duckdb/src/storage/table/validity_column_data.cpp +5 -0
  856. package/src/duckdb/src/storage/table_index_list.cpp +69 -42
  857. package/src/duckdb/src/storage/temporary_file_manager.cpp +111 -17
  858. package/src/duckdb/src/storage/temporary_memory_manager.cpp +4 -4
  859. package/src/duckdb/src/storage/wal_replay.cpp +27 -22
  860. package/src/duckdb/src/storage/write_ahead_log.cpp +42 -22
  861. package/src/duckdb/src/transaction/cleanup_state.cpp +4 -7
  862. package/src/duckdb/src/transaction/commit_state.cpp +17 -8
  863. package/src/duckdb/src/transaction/duck_transaction.cpp +60 -15
  864. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +154 -121
  865. package/src/duckdb/src/transaction/meta_transaction.cpp +19 -1
  866. package/src/duckdb/src/transaction/rollback_state.cpp +2 -0
  867. package/src/duckdb/src/transaction/transaction.cpp +7 -7
  868. package/src/duckdb/src/transaction/undo_buffer.cpp +37 -17
  869. package/src/duckdb/third_party/concurrentqueue/concurrentqueue.h +5 -5
  870. package/src/duckdb/third_party/fsst/fsst.h +1 -1
  871. package/src/duckdb/third_party/jaro_winkler/details/common.hpp +9 -9
  872. package/src/duckdb/third_party/jaro_winkler/details/intrinsics.hpp +1 -1
  873. package/src/duckdb/third_party/jaro_winkler/details/jaro_impl.hpp +18 -18
  874. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +1 -0
  875. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +12 -0
  876. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +555 -1032
  877. package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +3 -0
  878. package/src/duckdb/third_party/libpg_query/include/utils/datetime.hpp +1 -0
  879. package/src/duckdb/third_party/libpg_query/pg_functions.cpp +13 -6
  880. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +23925 -23444
  881. package/src/duckdb/third_party/mbedtls/library/constant_time.cpp +1 -1
  882. package/src/duckdb/third_party/parquet/parquet_types.cpp +3 -0
  883. package/src/duckdb/third_party/parquet/parquet_types.h +2 -1
  884. package/src/duckdb/third_party/re2/re2/compile.cc +2 -2
  885. package/src/duckdb/third_party/re2/re2/dfa.cc +3 -8
  886. package/src/duckdb/third_party/re2/re2/onepass.cc +4 -3
  887. package/src/duckdb/third_party/re2/re2/prog.cc +10 -10
  888. package/src/duckdb/third_party/re2/re2/prog.h +8 -8
  889. package/src/duckdb/third_party/tdigest/t_digest.hpp +6 -6
  890. package/src/duckdb/third_party/utf8proc/include/utf8proc.hpp +1 -1
  891. package/src/duckdb/third_party/yyjson/include/yyjson.hpp +7930 -0
  892. package/src/duckdb/third_party/yyjson/yyjson.cpp +9490 -0
  893. package/src/duckdb/ub_src_catalog.cpp +2 -0
  894. package/src/duckdb/ub_src_common.cpp +2 -0
  895. package/src/duckdb/ub_src_execution_index.cpp +3 -1
  896. package/src/duckdb/ub_src_execution_operator_helper.cpp +2 -0
  897. package/src/duckdb/ub_src_function_table_system.cpp +2 -0
  898. package/src/duckdb/ub_src_main.cpp +4 -0
  899. package/src/duckdb/ub_src_main_relation.cpp +2 -0
  900. package/src/duckdb/ub_src_optimizer.cpp +8 -8
  901. package/src/duckdb/ub_src_optimizer_join_order.cpp +0 -2
  902. package/src/duckdb/ub_src_optimizer_rule.cpp +4 -2
  903. package/src/duckdb/ub_src_parser_parsed_data.cpp +10 -0
  904. package/src/duckdb/ub_src_parser_statement.cpp +2 -0
  905. package/src/duckdb/ub_src_parser_tableref.cpp +2 -0
  906. package/src/duckdb/ub_src_planner_binder_statement.cpp +2 -0
  907. package/src/duckdb/ub_src_planner_binder_tableref.cpp +4 -0
  908. package/src/duckdb/ub_src_storage_serialization.cpp +4 -0
  909. package/src/duckdb/src/catalog/catalog_entry/ub_duckdb_catalog_entries.cpp +0 -16
  910. package/src/duckdb/src/catalog/default/ub_duckdb_catalog_default_entries.cpp +0 -5
  911. package/src/duckdb/src/catalog/ub_duckdb_catalog.cpp +0 -10
  912. package/src/duckdb/src/common/adbc/nanoarrow/ub_duckdb_adbc_nanoarrow.cpp +0 -5
  913. package/src/duckdb/src/common/adbc/ub_duckdb_adbc.cpp +0 -3
  914. package/src/duckdb/src/common/arrow/appender/ub_duckdb_common_arrow_appender.cpp +0 -6
  915. package/src/duckdb/src/common/arrow/ub_duckdb_common_arrow.cpp +0 -4
  916. package/src/duckdb/src/common/crypto/ub_duckdb_common_crypto.cpp +0 -2
  917. package/src/duckdb/src/common/enums/ub_duckdb_common_enums.cpp +0 -12
  918. package/src/duckdb/src/common/operator/ub_duckdb_common_operators.cpp +0 -4
  919. package/src/duckdb/src/common/progress_bar/ub_duckdb_progress_bar.cpp +0 -3
  920. package/src/duckdb/src/common/row_operations/ub_duckdb_row_operations.cpp +0 -9
  921. package/src/duckdb/src/common/serializer/ub_duckdb_common_serializer.cpp +0 -7
  922. package/src/duckdb/src/common/sort/ub_duckdb_sort.cpp +0 -7
  923. package/src/duckdb/src/common/types/column/ub_duckdb_common_types_column.cpp +0 -6
  924. package/src/duckdb/src/common/types/row/ub_duckdb_common_types_row.cpp +0 -11
  925. package/src/duckdb/src/common/types/ub_duckdb_common_types.cpp +0 -28
  926. package/src/duckdb/src/common/ub_duckdb_common.cpp +0 -34
  927. package/src/duckdb/src/common/value_operations/ub_duckdb_value_operations.cpp +0 -2
  928. package/src/duckdb/src/core_functions/aggregate/algebraic/ub_duckdb_aggr_algebraic.cpp +0 -5
  929. package/src/duckdb/src/core_functions/aggregate/distributive/ub_duckdb_aggr_distributive.cpp +0 -13
  930. package/src/duckdb/src/core_functions/aggregate/holistic/ub_duckdb_aggr_holistic.cpp +0 -5
  931. package/src/duckdb/src/core_functions/aggregate/nested/ub_duckdb_aggr_nested.cpp +0 -3
  932. package/src/duckdb/src/core_functions/aggregate/regression/ub_duckdb_aggr_regr.cpp +0 -8
  933. package/src/duckdb/src/core_functions/scalar/bit/ub_duckdb_func_bit.cpp +0 -2
  934. package/src/duckdb/src/core_functions/scalar/blob/ub_duckdb_func_blob.cpp +0 -3
  935. package/src/duckdb/src/core_functions/scalar/date/ub_duckdb_func_date.cpp +0 -12
  936. package/src/duckdb/src/core_functions/scalar/debug/ub_duckdb_func_debug.cpp +0 -2
  937. package/src/duckdb/src/core_functions/scalar/enum/ub_duckdb_func_enum.cpp +0 -2
  938. package/src/duckdb/src/core_functions/scalar/generic/ub_duckdb_func_generic.cpp +0 -9
  939. package/src/duckdb/src/core_functions/scalar/list/ub_duckdb_func_list.cpp +0 -11
  940. package/src/duckdb/src/core_functions/scalar/map/ub_duckdb_func_map_nested.cpp +0 -8
  941. package/src/duckdb/src/core_functions/scalar/math/ub_duckdb_func_math.cpp +0 -1
  942. package/src/duckdb/src/core_functions/scalar/operators/ub_duckdb_func_ops.cpp +0 -1
  943. package/src/duckdb/src/core_functions/scalar/random/ub_duckdb_func_random.cpp +0 -3
  944. package/src/duckdb/src/core_functions/scalar/string/ub_duckdb_func_string.cpp +0 -26
  945. package/src/duckdb/src/core_functions/scalar/struct/ub_duckdb_func_struct.cpp +0 -3
  946. package/src/duckdb/src/core_functions/scalar/union/ub_duckdb_func_union.cpp +0 -4
  947. package/src/duckdb/src/core_functions/ub_duckdb_core_functions.cpp +0 -3
  948. package/src/duckdb/src/execution/expression_executor/ub_duckdb_expression_executor.cpp +0 -11
  949. package/src/duckdb/src/execution/index/art/ub_duckdb_art_index_execution.cpp +0 -12
  950. package/src/duckdb/src/execution/index/art/ub_duckdb_execution_index_art.cpp +0 -11
  951. package/src/duckdb/src/execution/index/ub_duckdb_execution_index.cpp +0 -3
  952. package/src/duckdb/src/execution/nested_loop_join/ub_duckdb_nested_loop_join.cpp +0 -3
  953. package/src/duckdb/src/execution/operator/aggregate/ub_duckdb_operator_aggregate.cpp +0 -9
  954. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/ub_duckdb_operator_csv_sniffer.cpp +0 -7
  955. package/src/duckdb/src/execution/operator/csv_scanner/ub_duckdb_operator_csv_scanner.cpp +0 -10
  956. package/src/duckdb/src/execution/operator/filter/ub_duckdb_operator_filter.cpp +0 -2
  957. package/src/duckdb/src/execution/operator/helper/ub_duckdb_operator_helper.cpp +0 -18
  958. package/src/duckdb/src/execution/operator/join/ub_duckdb_operator_join.cpp +0 -16
  959. package/src/duckdb/src/execution/operator/order/ub_duckdb_operator_order.cpp +0 -3
  960. package/src/duckdb/src/execution/operator/persistent/ub_duckdb_operator_persistent.cpp +0 -10
  961. package/src/duckdb/src/execution/operator/projection/ub_duckdb_operator_projection.cpp +0 -5
  962. package/src/duckdb/src/execution/operator/scan/ub_duckdb_operator_scan.cpp +0 -7
  963. package/src/duckdb/src/execution/operator/schema/ub_duckdb_operator_schema.cpp +0 -12
  964. package/src/duckdb/src/execution/operator/set/ub_duckdb_operator_set.cpp +0 -4
  965. package/src/duckdb/src/execution/physical_plan/ub_duckdb_physical_plan.cpp +0 -44
  966. package/src/duckdb/src/execution/ub_duckdb_execution.cpp +0 -15
  967. package/src/duckdb/src/function/aggregate/algebraic/ub_duckdb_aggr_algebraic.cpp +0 -5
  968. package/src/duckdb/src/function/aggregate/distributive/ub_duckdb_aggr_distr.cpp +0 -3
  969. package/src/duckdb/src/function/aggregate/holistic/ub_duckdb_aggr_holistic.cpp +0 -5
  970. package/src/duckdb/src/function/aggregate/nested/ub_duckdb_aggr_nested.cpp +0 -3
  971. package/src/duckdb/src/function/aggregate/regression/ub_duckdb_aggr_regr.cpp +0 -8
  972. package/src/duckdb/src/function/aggregate/ub_duckdb_func_aggr.cpp +0 -3
  973. package/src/duckdb/src/function/cast/ub_duckdb_func_cast.cpp +0 -17
  974. package/src/duckdb/src/function/cast/union/ub_duckdb_union_cast.cpp +0 -2
  975. package/src/duckdb/src/function/pragma/ub_duckdb_func_pragma.cpp +0 -3
  976. package/src/duckdb/src/function/scalar/bit/ub_duckdb_func_bit.cpp +0 -2
  977. package/src/duckdb/src/function/scalar/blob/ub_duckdb_func_blob.cpp +0 -3
  978. package/src/duckdb/src/function/scalar/compressed_materialization/ub_duckdb_func_compressed_materialization.cpp +0 -3
  979. package/src/duckdb/src/function/scalar/date/ub_duckdb_func_date.cpp +0 -12
  980. package/src/duckdb/src/function/scalar/enum/ub_duckdb_func_enum.cpp +0 -2
  981. package/src/duckdb/src/function/scalar/generic/ub_duckdb_func_generic.cpp +0 -8
  982. package/src/duckdb/src/function/scalar/generic/ub_duckdb_func_generic_main.cpp +0 -2
  983. package/src/duckdb/src/function/scalar/list/ub_duckdb_func_list.cpp +0 -11
  984. package/src/duckdb/src/function/scalar/list/ub_duckdb_func_list_nested.cpp +0 -5
  985. package/src/duckdb/src/function/scalar/map/ub_duckdb_func_map_nested.cpp +0 -7
  986. package/src/duckdb/src/function/scalar/math/ub_duckdb_func_math.cpp +0 -4
  987. package/src/duckdb/src/function/scalar/operators/ub_duckdb_func_ops.cpp +0 -6
  988. package/src/duckdb/src/function/scalar/operators/ub_duckdb_func_ops_main.cpp +0 -5
  989. package/src/duckdb/src/function/scalar/sequence/ub_duckdb_func_seq.cpp +0 -2
  990. package/src/duckdb/src/function/scalar/string/regexp/ub_duckdb_func_string_regexp.cpp +0 -3
  991. package/src/duckdb/src/function/scalar/string/ub_duckdb_func_string.cpp +0 -31
  992. package/src/duckdb/src/function/scalar/string/ub_duckdb_func_string_main.cpp +0 -12
  993. package/src/duckdb/src/function/scalar/struct/ub_duckdb_func_struct.cpp +0 -4
  994. package/src/duckdb/src/function/scalar/struct/ub_duckdb_func_struct_main.cpp +0 -2
  995. package/src/duckdb/src/function/scalar/system/ub_duckdb_func_system.cpp +0 -2
  996. package/src/duckdb/src/function/scalar/ub_duckdb_func_scalar.cpp +0 -9
  997. package/src/duckdb/src/function/scalar/union/ub_duckdb_func_union.cpp +0 -4
  998. package/src/duckdb/src/function/table/arrow/ub_duckdb_arrow_conversion.cpp +0 -2
  999. package/src/duckdb/src/function/table/system/ub_duckdb_table_func_system.cpp +0 -23
  1000. package/src/duckdb/src/function/table/ub_duckdb_func_table.cpp +0 -16
  1001. package/src/duckdb/src/function/table/version/ub_duckdb_func_table_version.cpp +0 -2
  1002. package/src/duckdb/src/function/ub_duckdb_function.cpp +0 -14
  1003. package/src/duckdb/src/main/capi/cast/ub_duckdb_main_capi_cast.cpp +0 -3
  1004. package/src/duckdb/src/main/capi/ub_duckdb_main_capi.cpp +0 -19
  1005. package/src/duckdb/src/main/chunk_scan_state/ub_duckdb_main_chunk_scan_state.cpp +0 -2
  1006. package/src/duckdb/src/main/extension/ub_duckdb_main_extension.cpp +0 -6
  1007. package/src/duckdb/src/main/relation/ub_duckdb_main_relation.cpp +0 -26
  1008. package/src/duckdb/src/main/settings/ub_duckdb_main_settings.cpp +0 -2
  1009. package/src/duckdb/src/main/ub_duckdb_main.cpp +0 -25
  1010. package/src/duckdb/src/optimizer/compressed_materialization/ub_duckdb_optimizer_compressed_materialization.cpp +0 -4
  1011. package/src/duckdb/src/optimizer/join_order/ub_duckdb_optimizer_join_order.cpp +0 -12
  1012. package/src/duckdb/src/optimizer/matcher/ub_duckdb_optimizer_matcher.cpp +0 -2
  1013. package/src/duckdb/src/optimizer/pullup/ub_duckdb_optimizer_pullup.cpp +0 -6
  1014. package/src/duckdb/src/optimizer/pushdown/ub_duckdb_optimizer_pushdown.cpp +0 -12
  1015. package/src/duckdb/src/optimizer/rule/ub_duckdb_optimizer_rules.cpp +0 -16
  1016. package/src/duckdb/src/optimizer/statistics/expression/ub_duckdb_optimizer_statistics_expr.cpp +0 -11
  1017. package/src/duckdb/src/optimizer/statistics/operator/ub_duckdb_optimizer_statistics_op.cpp +0 -11
  1018. package/src/duckdb/src/optimizer/ub_duckdb_optimizer.cpp +0 -20
  1019. package/src/duckdb/src/parallel/ub_duckdb_parallel.cpp +0 -15
  1020. package/src/duckdb/src/parser/constraints/ub_duckdb_constraints.cpp +0 -5
  1021. package/src/duckdb/src/parser/expression/ub_duckdb_expression.cpp +0 -18
  1022. package/src/duckdb/src/parser/parsed_data/ub_duckdb_parsed_data.cpp +0 -24
  1023. package/src/duckdb/src/parser/query_node/ub_duckdb_query_node.cpp +0 -5
  1024. package/src/duckdb/src/parser/statement/ub_duckdb_statement.cpp +0 -25
  1025. package/src/duckdb/src/parser/tableref/ub_duckdb_parser_tableref.cpp +0 -8
  1026. package/src/duckdb/src/parser/transform/constraint/ub_duckdb_transformer_constraint.cpp +0 -2
  1027. package/src/duckdb/src/parser/transform/expression/ub_duckdb_transformer_expression.cpp +0 -20
  1028. package/src/duckdb/src/parser/transform/helpers/ub_duckdb_transformer_helpers.cpp +0 -8
  1029. package/src/duckdb/src/parser/transform/statement/ub_duckdb_transformer_statement.cpp +0 -37
  1030. package/src/duckdb/src/parser/transform/tableref/ub_duckdb_transformer_tableref.cpp +0 -8
  1031. package/src/duckdb/src/parser/ub_duckdb_parser.cpp +0 -15
  1032. package/src/duckdb/src/planner/binder/expression/ub_duckdb_bind_expression.cpp +0 -20
  1033. package/src/duckdb/src/planner/binder/query_node/ub_duckdb_bind_query_node.cpp +0 -12
  1034. package/src/duckdb/src/planner/binder/statement/ub_duckdb_bind_statement.cpp +0 -26
  1035. package/src/duckdb/src/planner/binder/tableref/ub_duckdb_bind_tableref.cpp +0 -17
  1036. package/src/duckdb/src/planner/expression/ub_duckdb_planner_expression.cpp +0 -19
  1037. package/src/duckdb/src/planner/expression_binder/ub_duckdb_expression_binders.cpp +0 -20
  1038. package/src/duckdb/src/planner/filter/ub_duckdb_planner_filter.cpp +0 -4
  1039. package/src/duckdb/src/planner/operator/ub_duckdb_planner_operator.cpp +0 -43
  1040. package/src/duckdb/src/planner/parsed_data/ub_duckdb_planner_parsed_data.cpp +0 -2
  1041. package/src/duckdb/src/planner/subquery/ub_duckdb_planner_subquery.cpp +0 -4
  1042. package/src/duckdb/src/planner/ub_duckdb_planner.cpp +0 -15
  1043. package/src/duckdb/src/storage/buffer/ub_duckdb_storage_buffer.cpp +0 -6
  1044. package/src/duckdb/src/storage/checkpoint/ub_duckdb_storage_checkpoint.cpp +0 -5
  1045. package/src/duckdb/src/storage/compression/chimp/ub_duckdb_storage_compression_chimp.cpp +0 -6
  1046. package/src/duckdb/src/storage/compression/ub_duckdb_storage_compression.cpp +0 -12
  1047. package/src/duckdb/src/storage/metadata/ub_duckdb_storage_metadata.cpp +0 -4
  1048. package/src/duckdb/src/storage/serialization/ub_duckdb_storage_serialization.cpp +0 -16
  1049. package/src/duckdb/src/storage/statistics/ub_duckdb_storage_statistics.cpp +0 -10
  1050. package/src/duckdb/src/storage/table/ub_duckdb_storage_table.cpp +0 -17
  1051. package/src/duckdb/src/storage/ub_duckdb_storage.cpp +0 -20
  1052. package/src/duckdb/src/transaction/ub_duckdb_transaction.cpp +0 -11
@@ -9,11 +9,12 @@
9
9
 
10
10
  namespace duckdb {
11
11
 
12
- template <class DATA_TYPE, class ALLOCATOR_TYPE = std::default_delete<DATA_TYPE>, bool SAFE = true>
13
- class unique_ptr : public std::unique_ptr<DATA_TYPE, ALLOCATOR_TYPE> { // NOLINT: naming
12
+ template <class DATA_TYPE, class DELETER = std::default_delete<DATA_TYPE>, bool SAFE = true>
13
+ class unique_ptr : public std::unique_ptr<DATA_TYPE, DELETER> { // NOLINT: naming
14
14
  public:
15
- using original = std::unique_ptr<DATA_TYPE, ALLOCATOR_TYPE>;
15
+ using original = std::unique_ptr<DATA_TYPE, DELETER>;
16
16
  using original::original; // NOLINT
17
+ using pointer = typename original::pointer;
17
18
 
18
19
  private:
19
20
  static inline void AssertNotNull(const bool null) {
@@ -53,9 +54,9 @@ public:
53
54
  }
54
55
  };
55
56
 
56
- template <class DATA_TYPE, class ALLOCATOR_TYPE, bool SAFE>
57
- class unique_ptr<DATA_TYPE[], ALLOCATOR_TYPE, SAFE>
58
- : public std::unique_ptr<DATA_TYPE[], std::default_delete<DATA_TYPE[]>> {
57
+ // FIXME: DELETER is defined, but we use std::default_delete???
58
+ template <class DATA_TYPE, class DELETER, bool SAFE>
59
+ class unique_ptr<DATA_TYPE[], DELETER, SAFE> : public std::unique_ptr<DATA_TYPE[], std::default_delete<DATA_TYPE[]>> {
59
60
  public:
60
61
  using original = std::unique_ptr<DATA_TYPE[], std::default_delete<DATA_TYPE[]>>;
61
62
  using original::original;
@@ -100,6 +100,17 @@ public:
100
100
  }
101
101
  return get<SAFE>(original::size() - 1);
102
102
  }
103
+
104
+ void unsafe_erase_at(idx_t idx) { // NOLINT: not using camelcase on purpose here
105
+ original::erase(original::begin() + static_cast<typename original::iterator::difference_type>(idx));
106
+ }
107
+
108
+ void erase_at(idx_t idx) { // NOLINT: not using camelcase on purpose here
109
+ if (MemorySafety<SAFE>::ENABLED && idx > original::size()) {
110
+ throw InternalException("Can't remove offset %d from vector of size %d", idx, original::size());
111
+ }
112
+ unsafe_erase_at(idx);
113
+ }
103
114
  };
104
115
 
105
116
  template <typename T>
@@ -13,7 +13,7 @@
13
13
  namespace duckdb {
14
14
 
15
15
  //! The default standard vector size
16
- #define DEFAULT_STANDARD_VECTOR_SIZE 2048
16
+ #define DEFAULT_STANDARD_VECTOR_SIZE 2048U
17
17
 
18
18
  //! The vector size used in the execution engine
19
19
  #ifndef STANDARD_VECTOR_SIZE
@@ -0,0 +1,117 @@
1
+ namespace duckdb {
2
+
3
+ template <typename T, bool SAFE>
4
+ class weak_ptr { // NOLINT: invalid case style
5
+ public:
6
+ using original = std::weak_ptr<T>;
7
+ using element_type = typename original::element_type;
8
+
9
+ private:
10
+ template <class U, bool SAFE_P>
11
+ friend class shared_ptr;
12
+
13
+ private:
14
+ original internal;
15
+
16
+ public:
17
+ // Constructors
18
+ weak_ptr() : internal() {
19
+ }
20
+
21
+ // NOLINTBEGIN
22
+ template <class U, typename std::enable_if<compatible_with_t<U, T>::value, int>::type = 0>
23
+ weak_ptr(shared_ptr<U, SAFE> const &ptr) noexcept : internal(ptr.internal) {
24
+ }
25
+ weak_ptr(weak_ptr const &other) noexcept : internal(other.internal) {
26
+ }
27
+ template <class U, typename std::enable_if<compatible_with_t<U, T>::value, int>::type = 0>
28
+ weak_ptr(weak_ptr<U> const &ptr) noexcept : internal(ptr.internal) {
29
+ }
30
+ #ifdef DUCKDB_CLANG_TIDY
31
+ [[clang::reinitializes]]
32
+ #endif
33
+ weak_ptr(weak_ptr &&ptr) noexcept
34
+ : internal(std::move(ptr.internal)) {
35
+ }
36
+ template <class U, typename std::enable_if<compatible_with_t<U, T>::value, int>::type = 0>
37
+ #ifdef DUCKDB_CLANG_TIDY
38
+ [[clang::reinitializes]]
39
+ #endif
40
+ weak_ptr(weak_ptr<U> &&ptr) noexcept
41
+ : internal(std::move(ptr.internal)) {
42
+ }
43
+ // NOLINTEND
44
+ // Destructor
45
+ ~weak_ptr() = default;
46
+
47
+ // Assignment operators
48
+ weak_ptr &operator=(const weak_ptr &other) {
49
+ if (this == &other) {
50
+ return *this;
51
+ }
52
+ internal = other.internal;
53
+ return *this;
54
+ }
55
+
56
+ template <class U, typename std::enable_if<compatible_with_t<U, T>::value, int>::type = 0>
57
+ weak_ptr &operator=(const shared_ptr<U, SAFE> &ptr) {
58
+ internal = ptr.internal;
59
+ return *this;
60
+ }
61
+
62
+ // Modifiers
63
+ #ifdef DUCKDB_CLANG_TIDY
64
+ // This is necessary to tell clang-tidy that it reinitializes the variable after a move
65
+ [[clang::reinitializes]]
66
+ #endif
67
+ void
68
+ reset() { // NOLINT: invalid case style
69
+ internal.reset();
70
+ }
71
+
72
+ // Observers
73
+ long use_count() const { // NOLINT: invalid case style
74
+ return internal.use_count();
75
+ }
76
+
77
+ bool expired() const { // NOLINT: invalid case style
78
+ return internal.expired();
79
+ }
80
+
81
+ shared_ptr<T, SAFE> lock() const { // NOLINT: invalid case style
82
+ return shared_ptr<T, SAFE>(internal.lock());
83
+ }
84
+
85
+ // Relational operators
86
+ template <typename U>
87
+ bool operator==(const weak_ptr<U> &other) const noexcept {
88
+ return internal == other.internal;
89
+ }
90
+
91
+ template <typename U>
92
+ bool operator!=(const weak_ptr<U> &other) const noexcept {
93
+ return internal != other.internal;
94
+ }
95
+
96
+ template <typename U>
97
+ bool operator<(const weak_ptr<U> &other) const noexcept {
98
+ return internal < other.internal;
99
+ }
100
+
101
+ template <typename U>
102
+ bool operator<=(const weak_ptr<U> &other) const noexcept {
103
+ return internal <= other.internal;
104
+ }
105
+
106
+ template <typename U>
107
+ bool operator>(const weak_ptr<U> &other) const noexcept {
108
+ return internal > other.internal;
109
+ }
110
+
111
+ template <typename U>
112
+ bool operator>=(const weak_ptr<U> &other) const noexcept {
113
+ return internal >= other.internal;
114
+ }
115
+ };
116
+
117
+ } // namespace duckdb
@@ -61,7 +61,7 @@ struct RegularAdd {
61
61
 
62
62
  template <class STATE, class T>
63
63
  static void AddConstant(STATE &state, T input, idx_t count) {
64
- state.value += input * count;
64
+ state.value += input * int64_t(count);
65
65
  }
66
66
  };
67
67
 
@@ -73,7 +73,7 @@ struct HugeintAdd {
73
73
 
74
74
  template <class STATE, class T>
75
75
  static void AddConstant(STATE &state, T input, idx_t count) {
76
- AddNumber(state, Hugeint::Multiply(input, count));
76
+ AddNumber(state, Hugeint::Multiply(input, UnsafeNumericCast<int64_t>(count)));
77
77
  }
78
78
  };
79
79
 
@@ -135,7 +135,7 @@ struct AddToHugeint {
135
135
  AddValue(state.value, uint64_t(input), input >= 0);
136
136
  }
137
137
  } else {
138
- hugeint_t addition = hugeint_t(input) * count;
138
+ hugeint_t addition = hugeint_t(input) * Hugeint::Convert(count);
139
139
  state.value += addition;
140
140
  }
141
141
  }
@@ -435,6 +435,15 @@ struct TimezoneMinuteFun {
435
435
  static ScalarFunctionSet GetFunctions();
436
436
  };
437
437
 
438
+ struct TimeTZSortKeyFun {
439
+ static constexpr const char *Name = "timetz_byte_comparable";
440
+ static constexpr const char *Parameters = "time_tz";
441
+ static constexpr const char *Description = "Converts a TIME WITH TIME ZONE to an integer sort key";
442
+ static constexpr const char *Example = "timetz_byte_comparable('18:18:16.21-07:00'::TIME_TZ)";
443
+
444
+ static ScalarFunction GetFunction();
445
+ };
446
+
438
447
  struct ToCenturiesFun {
439
448
  static constexpr const char *Name = "to_centuries";
440
449
  static constexpr const char *Parameters = "integer";
@@ -516,6 +525,15 @@ struct ToMonthsFun {
516
525
  static ScalarFunction GetFunction();
517
526
  };
518
527
 
528
+ struct ToQuartersFun {
529
+ static constexpr const char *Name = "to_quarters";
530
+ static constexpr const char *Parameters = "integer";
531
+ static constexpr const char *Description = "Construct a quarter interval";
532
+ static constexpr const char *Example = "to_quarters(5)";
533
+
534
+ static ScalarFunction GetFunction();
535
+ };
536
+
519
537
  struct ToSecondsFun {
520
538
  static constexpr const char *Name = "to_seconds";
521
539
  static constexpr const char *Parameters = "double";
@@ -9,6 +9,7 @@
9
9
  #pragma once
10
10
 
11
11
  #include "duckdb/planner/expression/list.hpp"
12
+ #include "duckdb/planner/table_filter.hpp"
12
13
 
13
14
  #include <random>
14
15
  namespace duckdb {
@@ -20,7 +20,7 @@ class ExecutionContext;
20
20
 
21
21
  //! ExpressionExecutor is responsible for executing a set of expressions and storing the result in a data chunk
22
22
  class ExpressionExecutor {
23
- friend class Index;
23
+ friend class BoundIndex;
24
24
  friend class CreateIndexLocalSinkState;
25
25
 
26
26
  public:
@@ -8,7 +8,7 @@
8
8
 
9
9
  #pragma once
10
10
 
11
- #include "duckdb/storage/index.hpp"
11
+ #include "duckdb/execution/index/bound_index.hpp"
12
12
  #include "duckdb/execution/index/art/node.hpp"
13
13
  #include "duckdb/common/array.hpp"
14
14
 
@@ -31,7 +31,7 @@ struct ARTFlags {
31
31
  vector<idx_t> merge_buffer_counts;
32
32
  };
33
33
 
34
- class ART : public Index {
34
+ class ART : public BoundIndex {
35
35
  public:
36
36
  // Index type name for the ART
37
37
  static constexpr const char *TYPE_NAME = "ART";
@@ -64,7 +64,7 @@ public:
64
64
 
65
65
  public:
66
66
  //! Create a index instance of this type
67
- static unique_ptr<Index> Create(CreateIndexInput &input) {
67
+ static unique_ptr<BoundIndex> Create(CreateIndexInput &input) {
68
68
  auto art = make_uniq<ART>(input.name, input.constraint_type, input.column_ids, input.table_io_manager,
69
69
  input.unbound_expressions, input.db, nullptr, input.storage_info);
70
70
  return std::move(art);
@@ -96,7 +96,7 @@ public:
96
96
 
97
97
  //! Merge another index into this index. The lock obtained from InitializeLock must be held, and the other
98
98
  //! index must also be locked during the merge
99
- bool MergeIndexes(IndexLock &state, Index &other_index) override;
99
+ bool MergeIndexes(IndexLock &state, BoundIndex &other_index) override;
100
100
 
101
101
  //! Traverses an ART and vacuums the qualifying nodes. The lock obtained from InitializeLock must be held
102
102
  void Vacuum(IndexLock &state) override;
@@ -117,7 +117,7 @@ public:
117
117
  }
118
118
  //! Set the row ID (8th to 63rd bit)
119
119
  inline void SetRowId(const row_t row_id) {
120
- Set((Get() & AND_METADATA) | row_id);
120
+ Set((Get() & AND_METADATA) | UnsafeNumericCast<idx_t>(row_id));
121
121
  }
122
122
 
123
123
  //! Returns the type of the node, which is held in the metadata
@@ -0,0 +1,145 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/storage/index.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #pragma once
10
+
11
+ #include "duckdb/common/enums/index_constraint_type.hpp"
12
+ #include "duckdb/common/types/constraint_conflict_info.hpp"
13
+ #include "duckdb/common/types/data_chunk.hpp"
14
+ #include "duckdb/common/unordered_set.hpp"
15
+ #include "duckdb/execution/expression_executor.hpp"
16
+ #include "duckdb/parser/parsed_expression.hpp"
17
+ #include "duckdb/planner/expression.hpp"
18
+ #include "duckdb/storage/table_storage_info.hpp"
19
+ #include "duckdb/storage/index.hpp"
20
+
21
+ namespace duckdb {
22
+
23
+ class ClientContext;
24
+ class TableIOManager;
25
+ class Transaction;
26
+ class ConflictManager;
27
+
28
+ struct IndexLock;
29
+ struct IndexScanState;
30
+
31
+ //! The index is an abstract base class that serves as the basis for indexes
32
+ class BoundIndex : public Index {
33
+ public:
34
+ BoundIndex(const string &name, const string &index_type, IndexConstraintType index_constraint_type,
35
+ const vector<column_t> &column_ids, TableIOManager &table_io_manager,
36
+ const vector<unique_ptr<Expression>> &unbound_expressions, AttachedDatabase &db);
37
+
38
+ //! The physical types stored in the index
39
+ vector<PhysicalType> types;
40
+ //! The logical types of the expressions
41
+ vector<LogicalType> logical_types;
42
+
43
+ //! The name of the index
44
+ string name;
45
+ //! The index type (ART, B+-tree, Skip-List, ...)
46
+ string index_type;
47
+ //! The index constraint type
48
+ IndexConstraintType index_constraint_type;
49
+
50
+ public:
51
+ bool IsBound() const override {
52
+ return true;
53
+ }
54
+
55
+ const string &GetIndexType() const override {
56
+ return index_type;
57
+ }
58
+
59
+ const string &GetIndexName() const override {
60
+ return name;
61
+ }
62
+
63
+ IndexConstraintType GetConstraintType() const override {
64
+ return index_constraint_type;
65
+ }
66
+
67
+ public: // Index interface
68
+ //! Obtain a lock on the index
69
+ void InitializeLock(IndexLock &state);
70
+ //! Called when data is appended to the index. The lock obtained from InitializeLock must be held
71
+ virtual ErrorData Append(IndexLock &state, DataChunk &entries, Vector &row_identifiers) = 0;
72
+ //! Obtains a lock and calls Append while holding that lock
73
+ ErrorData Append(DataChunk &entries, Vector &row_identifiers);
74
+ //! Verify that data can be appended to the index without a constraint violation
75
+ virtual void VerifyAppend(DataChunk &chunk) = 0;
76
+ //! Verify that data can be appended to the index without a constraint violation using the conflict manager
77
+ virtual void VerifyAppend(DataChunk &chunk, ConflictManager &conflict_manager) = 0;
78
+ //! Performs constraint checking for a chunk of input data
79
+ virtual void CheckConstraintsForChunk(DataChunk &input, ConflictManager &conflict_manager) = 0;
80
+
81
+ //! Deletes all data from the index. The lock obtained from InitializeLock must be held
82
+ virtual void CommitDrop(IndexLock &index_lock) = 0;
83
+ //! Deletes all data from the index
84
+ void CommitDrop() override;
85
+ //! Delete a chunk of entries from the index. The lock obtained from InitializeLock must be held
86
+ virtual void Delete(IndexLock &state, DataChunk &entries, Vector &row_identifiers) = 0;
87
+ //! Obtains a lock and calls Delete while holding that lock
88
+ void Delete(DataChunk &entries, Vector &row_identifiers);
89
+
90
+ //! Insert a chunk of entries into the index
91
+ virtual ErrorData Insert(IndexLock &lock, DataChunk &input, Vector &row_identifiers) = 0;
92
+
93
+ //! Merge another index into this index. The lock obtained from InitializeLock must be held, and the other
94
+ //! index must also be locked during the merge
95
+ virtual bool MergeIndexes(IndexLock &state, BoundIndex &other_index) = 0;
96
+ //! Obtains a lock and calls MergeIndexes while holding that lock
97
+ bool MergeIndexes(BoundIndex &other_index);
98
+
99
+ //! Traverses an ART and vacuums the qualifying nodes. The lock obtained from InitializeLock must be held
100
+ virtual void Vacuum(IndexLock &state) = 0;
101
+ //! Obtains a lock and calls Vacuum while holding that lock
102
+ void Vacuum();
103
+
104
+ //! Returns the in-memory usage of the index. The lock obtained from InitializeLock must be held
105
+ virtual idx_t GetInMemorySize(IndexLock &state) = 0;
106
+ //! Returns the in-memory usage of the index
107
+ idx_t GetInMemorySize();
108
+
109
+ //! Returns the string representation of an index, or only traverses and verifies the index
110
+ virtual string VerifyAndToString(IndexLock &state, const bool only_verify) = 0;
111
+ //! Obtains a lock and calls VerifyAndToString while holding that lock
112
+ string VerifyAndToString(const bool only_verify);
113
+
114
+ //! Returns true if the index is affected by updates on the specified column IDs, and false otherwise
115
+ bool IndexIsUpdated(const vector<PhysicalIndex> &column_ids) const;
116
+
117
+ //! Returns all index storage information for serialization
118
+ virtual IndexStorageInfo GetStorageInfo(const bool get_buffers);
119
+
120
+ //! Execute the index expressions on an input chunk
121
+ void ExecuteExpressions(DataChunk &input, DataChunk &result);
122
+ static string AppendRowError(DataChunk &input, idx_t index);
123
+
124
+ //! Throw a constraint violation exception
125
+ virtual string GetConstraintViolationMessage(VerifyExistenceType verify_type, idx_t failed_index,
126
+ DataChunk &input) = 0;
127
+
128
+ vector<unique_ptr<Expression>> unbound_expressions;
129
+
130
+ protected:
131
+ //! Lock used for any changes to the index
132
+ mutex lock;
133
+
134
+ //! Bound expressions used during expression execution
135
+ vector<unique_ptr<Expression>> bound_expressions;
136
+
137
+ private:
138
+ //! Expression executor to execute the index expressions
139
+ ExpressionExecutor executor;
140
+
141
+ //! Bind the unbound expressions of the index
142
+ unique_ptr<Expression> BindExpression(unique_ptr<Expression> expr);
143
+ };
144
+
145
+ } // namespace duckdb
@@ -17,7 +17,7 @@
17
17
 
18
18
  namespace duckdb {
19
19
 
20
- class Index;
20
+ class BoundIndex;
21
21
  enum class IndexConstraintType : uint8_t;
22
22
  class Expression;
23
23
  class TableIOManager;
@@ -43,7 +43,7 @@ struct CreateIndexInput {
43
43
  options(options) {};
44
44
  };
45
45
 
46
- typedef unique_ptr<Index> (*index_create_function_t)(CreateIndexInput &input);
46
+ typedef unique_ptr<BoundIndex> (*index_create_function_t)(CreateIndexInput &input);
47
47
  //! A index "type"
48
48
  class IndexType {
49
49
  public:
@@ -0,0 +1,63 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/execution/index/unbound_index.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #pragma once
10
+
11
+ #include "duckdb/storage/index.hpp"
12
+ #include "duckdb/parser/parsed_data/create_index_info.hpp"
13
+
14
+ namespace duckdb {
15
+
16
+ class UnboundIndex final : public Index {
17
+ private:
18
+ // The create info of the index
19
+ unique_ptr<CreateInfo> create_info;
20
+
21
+ // The serialized storage info of the index
22
+ IndexStorageInfo storage_info;
23
+
24
+ public:
25
+ UnboundIndex(unique_ptr<CreateInfo> create_info, IndexStorageInfo storage_info, TableIOManager &table_io_manager,
26
+ AttachedDatabase &db);
27
+
28
+ bool IsBound() const override {
29
+ return false;
30
+ }
31
+
32
+ const string &GetIndexType() const override {
33
+ return GetCreateInfo().index_type;
34
+ }
35
+
36
+ const string &GetIndexName() const override {
37
+ return GetCreateInfo().index_name;
38
+ }
39
+
40
+ IndexConstraintType GetConstraintType() const override {
41
+ return GetCreateInfo().constraint_type;
42
+ }
43
+
44
+ const CreateIndexInfo &GetCreateInfo() const {
45
+ return create_info->Cast<CreateIndexInfo>();
46
+ }
47
+
48
+ const IndexStorageInfo &GetStorageInfo() const {
49
+ return storage_info;
50
+ }
51
+
52
+ const vector<unique_ptr<ParsedExpression>> &GetParsedExpressions() const {
53
+ return GetCreateInfo().parsed_expressions;
54
+ }
55
+
56
+ const string &GetTableName() const {
57
+ return GetCreateInfo().table;
58
+ }
59
+
60
+ void CommitDrop() override;
61
+ };
62
+
63
+ } // namespace duckdb
@@ -349,7 +349,7 @@ idx_t MergeSortTree<E, O, CMP, F, C>::SelectNth(const SubFrames &frames, idx_t n
349
349
  // The first level contains a single run,
350
350
  // so the only thing we need is any cascading pointers
351
351
  auto level_no = tree.size() - 2;
352
- auto level_width = 1;
352
+ idx_t level_width = 1;
353
353
  for (idx_t i = 0; i < level_no; ++i) {
354
354
  level_width *= FANOUT;
355
355
  }
@@ -367,9 +367,11 @@ idx_t MergeSortTree<E, O, CMP, F, C>::SelectNth(const SubFrames &frames, idx_t n
367
367
  for (idx_t f = 0; f < frames.size(); ++f) {
368
368
  const auto &frame = frames[f];
369
369
  auto &cascade_idx = cascades[f];
370
- const auto lower_idx = std::lower_bound(level.begin(), level.end(), frame.start) - level.begin();
370
+ const auto lower_idx =
371
+ UnsafeNumericCast<idx_t>(std::lower_bound(level.begin(), level.end(), frame.start) - level.begin());
371
372
  cascade_idx.first = lower_idx / CASCADING * FANOUT;
372
- const auto upper_idx = std::lower_bound(level.begin(), level.end(), frame.end) - level.begin();
373
+ const auto upper_idx =
374
+ UnsafeNumericCast<idx_t>(std::lower_bound(level.begin(), level.end(), frame.end) - level.begin());
373
375
  cascade_idx.second = upper_idx / CASCADING * FANOUT;
374
376
  }
375
377
 
@@ -390,11 +392,13 @@ idx_t MergeSortTree<E, O, CMP, F, C>::SelectNth(const SubFrames &frames, idx_t n
390
392
 
391
393
  const auto lower_begin = level_data + level_cascades[cascade_idx.first];
392
394
  const auto lower_end = level_data + level_cascades[cascade_idx.first + FANOUT];
393
- match.first = std::lower_bound(lower_begin, lower_end, frame.start) - level_data;
395
+ match.first =
396
+ UnsafeNumericCast<idx_t>(std::lower_bound(lower_begin, lower_end, frame.start) - level_data);
394
397
 
395
398
  const auto upper_begin = level_data + level_cascades[cascade_idx.second];
396
399
  const auto upper_end = level_data + level_cascades[cascade_idx.second + FANOUT];
397
- match.second = std::lower_bound(upper_begin, upper_end, frame.end) - level_data;
400
+ match.second =
401
+ UnsafeNumericCast<idx_t>(std::lower_bound(upper_begin, upper_end, frame.end) - level_data);
398
402
 
399
403
  matched += idx_t(match.second - match.first);
400
404
  }
@@ -426,8 +430,8 @@ idx_t MergeSortTree<E, O, CMP, F, C>::SelectNth(const SubFrames &frames, idx_t n
426
430
  // Continue with the uncascaded levels (except the first)
427
431
  for (; level_no > 0; --level_no) {
428
432
  const auto &level = tree[level_no].first;
429
- auto range_begin = level.begin() + result * level_width;
430
- auto range_end = range_begin + level_width;
433
+ auto range_begin = level.begin() + UnsafeNumericCast<int64_t>(result * level_width);
434
+ auto range_end = range_begin + UnsafeNumericCast<int64_t>(level_width);
431
435
  while (range_end < level.end()) {
432
436
  idx_t matched = 0;
433
437
  for (idx_t f = 0; f < frames.size(); ++f) {
@@ -443,7 +447,7 @@ idx_t MergeSortTree<E, O, CMP, F, C>::SelectNth(const SubFrames &frames, idx_t n
443
447
  }
444
448
  // Not enough in this child, so move right
445
449
  range_begin = range_end;
446
- range_end += level_width;
450
+ range_end += UnsafeNumericCast<int64_t>(level_width);
447
451
  ++result;
448
452
  n -= matched;
449
453
  }
@@ -511,8 +515,8 @@ void MergeSortTree<E, O, CMP, F, C>::AggregateLowerBound(const idx_t lower, cons
511
515
  entry.first = run_idx.first * level_width;
512
516
  entry.second = std::min(entry.first + level_width, static_cast<idx_t>(tree[0].first.size()));
513
517
  auto *level_data = tree[level].first.data();
514
- idx_t entry_idx =
515
- std::lower_bound(level_data + entry.first, level_data + entry.second, needle) - level_data;
518
+ auto entry_idx = NumericCast<idx_t>(
519
+ std::lower_bound(level_data + entry.first, level_data + entry.second, needle) - level_data);
516
520
  cascading_idx.first = cascading_idx.second =
517
521
  (entry_idx / CASCADING + 2 * (entry.first / level_width)) * FANOUT;
518
522
 
@@ -541,7 +545,7 @@ void MergeSortTree<E, O, CMP, F, C>::AggregateLowerBound(const idx_t lower, cons
541
545
  const auto run_pos = std::lower_bound(search_begin, search_end, needle) - level_data;
542
546
  // Compute runBegin and pass it to our callback
543
547
  const auto run_begin = curr.first - level_width;
544
- aggregate(level, run_begin, run_pos);
548
+ aggregate(level, run_begin, NumericCast<idx_t>(run_pos));
545
549
  // Update state for next round
546
550
  curr.first -= level_width;
547
551
  --cascading_idx.first;
@@ -550,7 +554,7 @@ void MergeSortTree<E, O, CMP, F, C>::AggregateLowerBound(const idx_t lower, cons
550
554
  if (curr.first != lower) {
551
555
  const auto *search_begin = level_data + cascading_idcs[cascading_idx.first];
552
556
  const auto *search_end = level_data + cascading_idcs[cascading_idx.first + FANOUT];
553
- auto idx = std::lower_bound(search_begin, search_end, needle) - level_data;
557
+ auto idx = NumericCast<idx_t>(std::lower_bound(search_begin, search_end, needle) - level_data);
554
558
  cascading_idx.first = (idx / CASCADING + 2 * (lower / level_width)) * FANOUT;
555
559
  }
556
560
 
@@ -563,7 +567,7 @@ void MergeSortTree<E, O, CMP, F, C>::AggregateLowerBound(const idx_t lower, cons
563
567
  const auto run_pos = std::lower_bound(search_begin, search_end, needle) - level_data;
564
568
  // Compute runBegin and pass it to our callback
565
569
  const auto run_begin = curr.second;
566
- aggregate(level, run_begin, run_pos);
570
+ aggregate(level, run_begin, NumericCast<idx_t>(run_pos));
567
571
  // Update state for next round
568
572
  curr.second += level_width;
569
573
  ++cascading_idx.second;
@@ -572,7 +576,7 @@ void MergeSortTree<E, O, CMP, F, C>::AggregateLowerBound(const idx_t lower, cons
572
576
  if (curr.second != upper) {
573
577
  const auto *search_begin = level_data + cascading_idcs[cascading_idx.second];
574
578
  const auto *search_end = level_data + cascading_idcs[cascading_idx.second + FANOUT];
575
- auto idx = std::lower_bound(search_begin, search_end, needle) - level_data;
579
+ auto idx = NumericCast<idx_t>(std::lower_bound(search_begin, search_end, needle) - level_data);
576
580
  cascading_idx.second = (idx / CASCADING + 2 * (upper / level_width)) * FANOUT;
577
581
  }
578
582
  } while (level >= LowestCascadingLevel());
@@ -587,8 +591,9 @@ void MergeSortTree<E, O, CMP, F, C>::AggregateLowerBound(const idx_t lower, cons
587
591
  while (curr.first - lower >= level_width) {
588
592
  const auto *search_end = level_data + curr.first;
589
593
  const auto *search_begin = search_end - level_width;
590
- const auto run_pos = std::lower_bound(search_begin, search_end, needle) - level_data;
591
- const auto run_begin = search_begin - level_data;
594
+ const auto run_pos =
595
+ NumericCast<idx_t>(std::lower_bound(search_begin, search_end, needle) - level_data);
596
+ const auto run_begin = NumericCast<idx_t>(search_begin - level_data);
592
597
  aggregate(level, run_begin, run_pos);
593
598
  curr.first -= level_width;
594
599
  }
@@ -596,8 +601,9 @@ void MergeSortTree<E, O, CMP, F, C>::AggregateLowerBound(const idx_t lower, cons
596
601
  while (upper - curr.second >= level_width) {
597
602
  const auto *search_begin = level_data + curr.second;
598
603
  const auto *search_end = search_begin + level_width;
599
- const auto run_pos = std::lower_bound(search_begin, search_end, needle) - level_data;
600
- const auto run_begin = search_begin - level_data;
604
+ const auto run_pos =
605
+ NumericCast<idx_t>(std::lower_bound(search_begin, search_end, needle) - level_data);
606
+ const auto run_begin = NumericCast<idx_t>(search_begin - level_data);
601
607
  aggregate(level, run_begin, run_pos);
602
608
  curr.second += level_width;
603
609
  }
@@ -18,6 +18,8 @@ class PhysicalStreamingWindow : public PhysicalOperator {
18
18
  public:
19
19
  static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::STREAMING_WINDOW;
20
20
 
21
+ static bool IsStreamingFunction(unique_ptr<Expression> &expr);
22
+
21
23
  public:
22
24
  PhysicalStreamingWindow(vector<LogicalType> types, vector<unique_ptr<Expression>> select_list,
23
25
  idx_t estimated_cardinality,
@@ -50,6 +50,8 @@ public:
50
50
  bool SupportsBatchIndex() const override;
51
51
  OrderPreservationType SourceOrder() const override;
52
52
 
53
+ double GetProgress(ClientContext &context, GlobalSourceState &gstate_p) const override;
54
+
53
55
  public:
54
56
  // Sink interface
55
57
  SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;