duckdb 0.10.2 → 0.10.3-dev10.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 (1055) 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/lib/duckdb.js +11 -0
  5. package/package.json +1 -1
  6. package/src/database.cpp +3 -3
  7. package/src/duckdb/extension/icu/icu_extension.cpp +44 -15
  8. package/src/duckdb/extension/icu/include/icu_extension.hpp +1 -0
  9. package/src/duckdb/extension/icu/third_party/icu/i18n/basictz.cpp +5 -5
  10. package/src/duckdb/extension/json/include/json_common.hpp +6 -1
  11. package/src/duckdb/extension/json/include/json_executors.hpp +5 -5
  12. package/src/duckdb/extension/json/include/json_extension.hpp +1 -0
  13. package/src/duckdb/extension/json/include/json_functions.hpp +2 -2
  14. package/src/duckdb/extension/json/include/json_serializer.hpp +2 -2
  15. package/src/duckdb/extension/json/json_common.cpp +69 -43
  16. package/src/duckdb/extension/json/json_extension.cpp +8 -0
  17. package/src/duckdb/extension/json/json_functions/copy_json.cpp +17 -16
  18. package/src/duckdb/extension/json/json_functions/json_create.cpp +3 -1
  19. package/src/duckdb/extension/json/json_functions/json_structure.cpp +18 -13
  20. package/src/duckdb/extension/json/json_functions/json_transform.cpp +4 -0
  21. package/src/duckdb/extension/json/json_functions/json_type.cpp +2 -2
  22. package/src/duckdb/extension/json/json_functions/read_json.cpp +14 -11
  23. package/src/duckdb/extension/json/json_functions/read_json_objects.cpp +11 -8
  24. package/src/duckdb/extension/json/json_functions.cpp +4 -3
  25. package/src/duckdb/extension/json/json_scan.cpp +21 -11
  26. package/src/duckdb/extension/parquet/column_reader.cpp +9 -5
  27. package/src/duckdb/extension/parquet/column_writer.cpp +31 -18
  28. package/src/duckdb/extension/parquet/include/column_writer.hpp +1 -0
  29. package/src/duckdb/extension/parquet/include/null_column_reader.hpp +54 -0
  30. package/src/duckdb/extension/parquet/include/parquet_extension.hpp +1 -0
  31. package/src/duckdb/extension/parquet/include/parquet_reader.hpp +1 -1
  32. package/src/duckdb/extension/parquet/include/parquet_writer.hpp +7 -2
  33. package/src/duckdb/extension/parquet/include/templated_column_reader.hpp +6 -1
  34. package/src/duckdb/extension/parquet/parquet_crypto.cpp +8 -6
  35. package/src/duckdb/extension/parquet/parquet_extension.cpp +271 -126
  36. package/src/duckdb/extension/parquet/parquet_metadata.cpp +39 -37
  37. package/src/duckdb/extension/parquet/parquet_reader.cpp +7 -4
  38. package/src/duckdb/extension/parquet/parquet_statistics.cpp +5 -4
  39. package/src/duckdb/extension/parquet/parquet_writer.cpp +55 -2
  40. package/src/duckdb/extension/parquet/serialize_parquet.cpp +2 -2
  41. package/src/duckdb/src/catalog/catalog.cpp +19 -39
  42. package/src/duckdb/src/catalog/catalog_entry/duck_index_entry.cpp +6 -6
  43. package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +47 -31
  44. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +84 -52
  45. package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +4 -2
  46. package/src/duckdb/src/catalog/catalog_entry/macro_catalog_entry.cpp +4 -0
  47. package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +7 -0
  48. package/src/duckdb/src/catalog/catalog_entry/sequence_catalog_entry.cpp +4 -1
  49. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +36 -15
  50. package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +7 -1
  51. package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +5 -1
  52. package/src/duckdb/src/catalog/catalog_entry.cpp +7 -0
  53. package/src/duckdb/src/catalog/catalog_entry_retriever.cpp +64 -0
  54. package/src/duckdb/src/catalog/catalog_set.cpp +32 -17
  55. package/src/duckdb/src/catalog/default/default_functions.cpp +2 -1
  56. package/src/duckdb/src/catalog/default/default_views.cpp +1 -1
  57. package/src/duckdb/src/catalog/dependency_manager.cpp +129 -9
  58. package/src/duckdb/src/catalog/duck_catalog.cpp +5 -0
  59. package/src/duckdb/src/common/adbc/nanoarrow/allocator.cpp +2 -2
  60. package/src/duckdb/src/common/adbc/nanoarrow/metadata.cpp +3 -3
  61. package/src/duckdb/src/common/adbc/nanoarrow/schema.cpp +7 -6
  62. package/src/duckdb/src/common/allocator.cpp +6 -2
  63. package/src/duckdb/src/common/arrow/appender/bool_data.cpp +1 -0
  64. package/src/duckdb/src/common/arrow/appender/struct_data.cpp +1 -1
  65. package/src/duckdb/src/common/arrow/appender/union_data.cpp +2 -1
  66. package/src/duckdb/src/common/arrow/arrow_appender.cpp +7 -5
  67. package/src/duckdb/src/common/arrow/arrow_converter.cpp +3 -5
  68. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +1 -1
  69. package/src/duckdb/src/common/box_renderer.cpp +6 -3
  70. package/src/duckdb/src/common/compressed_file_system.cpp +11 -7
  71. package/src/duckdb/src/common/enum_util.cpp +230 -17
  72. package/src/duckdb/src/common/enums/logical_operator_type.cpp +2 -0
  73. package/src/duckdb/src/common/enums/physical_operator_type.cpp +2 -0
  74. package/src/duckdb/src/common/enums/relation_type.cpp +2 -0
  75. package/src/duckdb/src/common/enums/statement_type.cpp +2 -0
  76. package/src/duckdb/src/common/error_data.cpp +12 -0
  77. package/src/duckdb/src/common/exception_format_value.cpp +1 -0
  78. package/src/duckdb/src/common/extra_type_info.cpp +86 -8
  79. package/src/duckdb/src/common/file_system.cpp +39 -7
  80. package/src/duckdb/src/common/gzip_file_system.cpp +38 -14
  81. package/src/duckdb/src/common/hive_partitioning.cpp +28 -76
  82. package/src/duckdb/src/common/http_state.cpp +4 -4
  83. package/src/duckdb/src/common/local_file_system.cpp +29 -12
  84. package/src/duckdb/src/common/multi_file_list.cpp +285 -0
  85. package/src/duckdb/src/common/multi_file_reader.cpp +112 -80
  86. package/src/duckdb/src/common/operator/cast_operators.cpp +27 -225
  87. package/src/duckdb/src/common/operator/string_cast.cpp +13 -14
  88. package/src/duckdb/src/common/pipe_file_system.cpp +3 -2
  89. package/src/duckdb/src/common/progress_bar/progress_bar.cpp +1 -1
  90. package/src/duckdb/src/common/random_engine.cpp +2 -1
  91. package/src/duckdb/src/common/re2_regex.cpp +6 -4
  92. package/src/duckdb/src/common/row_operations/row_aggregate.cpp +10 -10
  93. package/src/duckdb/src/common/row_operations/row_external.cpp +4 -3
  94. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +5 -3
  95. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +17 -4
  96. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +1 -1
  97. package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +4 -4
  98. package/src/duckdb/src/common/serializer/buffered_file_writer.cpp +9 -8
  99. package/src/duckdb/src/common/serializer/memory_stream.cpp +6 -3
  100. package/src/duckdb/src/common/serializer/serializer.cpp +1 -1
  101. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  102. package/src/duckdb/src/common/sort/merge_sorter.cpp +2 -2
  103. package/src/duckdb/src/common/sort/partition_state.cpp +6 -6
  104. package/src/duckdb/src/common/sort/radix_sort.cpp +1 -1
  105. package/src/duckdb/src/common/sort/sort_state.cpp +3 -3
  106. package/src/duckdb/src/common/sort/sorted_block.cpp +5 -5
  107. package/src/duckdb/src/common/string_util.cpp +69 -162
  108. package/src/duckdb/src/common/types/bit.cpp +1 -1
  109. package/src/duckdb/src/common/types/blob.cpp +3 -3
  110. package/src/duckdb/src/common/types/cast_helpers.cpp +197 -0
  111. package/src/duckdb/src/common/types/column/column_data_collection.cpp +17 -9
  112. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  113. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +13 -5
  114. package/src/duckdb/src/common/types/conflict_info.cpp +1 -1
  115. package/src/duckdb/src/common/types/conflict_manager.cpp +1 -1
  116. package/src/duckdb/src/common/types/data_chunk.cpp +1 -1
  117. package/src/duckdb/src/common/types/date.cpp +2 -2
  118. package/src/duckdb/src/common/types/decimal.cpp +12 -12
  119. package/src/duckdb/src/common/types/hash.cpp +1 -1
  120. package/src/duckdb/src/common/types/hugeint.cpp +10 -9
  121. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +4 -4
  122. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +6 -5
  123. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +21 -18
  124. package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +2 -2
  125. package/src/duckdb/src/common/types/row/tuple_data_segment.cpp +7 -0
  126. package/src/duckdb/src/common/types/string_heap.cpp +4 -0
  127. package/src/duckdb/src/common/types/timestamp.cpp +23 -1
  128. package/src/duckdb/src/common/types/uhugeint.cpp +1 -1
  129. package/src/duckdb/src/common/types/uuid.cpp +7 -6
  130. package/src/duckdb/src/common/types/value.cpp +54 -30
  131. package/src/duckdb/src/common/types/vector.cpp +71 -96
  132. package/src/duckdb/src/common/types/vector_buffer.cpp +4 -0
  133. package/src/duckdb/src/common/types/vector_cache.cpp +3 -3
  134. package/src/duckdb/src/common/types.cpp +124 -18
  135. package/src/duckdb/src/common/vector_operations/generators.cpp +4 -16
  136. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +20 -0
  137. package/src/duckdb/src/common/vector_operations/null_operations.cpp +1 -1
  138. package/src/duckdb/src/common/vector_operations/numeric_inplace_operators.cpp +2 -2
  139. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +1 -1
  140. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +13 -6
  141. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +8 -5
  142. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +2 -2
  143. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +2 -2
  144. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +2 -0
  145. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +2 -2
  146. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +8 -5
  147. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +14 -8
  148. package/src/duckdb/src/core_functions/function_list.cpp +2 -1
  149. package/src/duckdb/src/core_functions/lambda_functions.cpp +2 -2
  150. package/src/duckdb/src/core_functions/scalar/array/array_functions.cpp +5 -0
  151. package/src/duckdb/src/core_functions/scalar/bit/bitstring.cpp +4 -4
  152. package/src/duckdb/src/core_functions/scalar/blob/create_sort_key.cpp +3 -2
  153. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +2 -2
  154. package/src/duckdb/src/core_functions/scalar/date/epoch.cpp +17 -0
  155. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +1 -1
  156. package/src/duckdb/src/core_functions/scalar/date/to_interval.cpp +19 -0
  157. package/src/duckdb/src/core_functions/scalar/debug/vector_type.cpp +6 -5
  158. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +2 -3
  159. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +2 -2
  160. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +30 -21
  161. package/src/duckdb/src/core_functions/scalar/list/list_reduce.cpp +1 -1
  162. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +3 -3
  163. package/src/duckdb/src/core_functions/scalar/list/list_value.cpp +1 -1
  164. package/src/duckdb/src/core_functions/scalar/list/range.cpp +2 -2
  165. package/src/duckdb/src/core_functions/scalar/map/map.cpp +44 -14
  166. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +17 -4
  167. package/src/duckdb/src/core_functions/scalar/map/map_entries.cpp +30 -13
  168. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +25 -12
  169. package/src/duckdb/src/core_functions/scalar/map/map_keys_values.cpp +16 -4
  170. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +2 -2
  171. package/src/duckdb/src/core_functions/scalar/operators/bitwise.cpp +2 -2
  172. package/src/duckdb/src/core_functions/scalar/random/setseed.cpp +1 -1
  173. package/src/duckdb/src/core_functions/scalar/string/bar.cpp +1 -1
  174. package/src/duckdb/src/core_functions/scalar/string/chr.cpp +2 -2
  175. package/src/duckdb/src/core_functions/scalar/string/hex.cpp +13 -13
  176. package/src/duckdb/src/core_functions/scalar/string/instr.cpp +1 -1
  177. package/src/duckdb/src/core_functions/scalar/string/pad.cpp +8 -8
  178. package/src/duckdb/src/core_functions/scalar/string/repeat.cpp +15 -7
  179. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +1 -1
  180. package/src/duckdb/src/core_functions/scalar/string/to_base.cpp +1 -1
  181. package/src/duckdb/src/core_functions/scalar/string/translate.cpp +4 -4
  182. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +13 -9
  183. package/src/duckdb/src/core_functions/scalar/string/unicode.cpp +1 -1
  184. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  185. package/src/duckdb/src/execution/aggregate_hashtable.cpp +17 -8
  186. package/src/duckdb/src/execution/index/art/art.cpp +6 -6
  187. package/src/duckdb/src/execution/index/bound_index.cpp +115 -0
  188. package/src/duckdb/src/execution/index/unbound_index.cpp +30 -0
  189. package/src/duckdb/src/execution/join_hashtable.cpp +2 -1
  190. package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +1 -1
  191. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  192. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +3 -3
  193. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +40 -5
  194. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +2 -2
  195. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +16 -3
  196. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer.cpp +4 -4
  197. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.cpp +2 -12
  198. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_file_handle.cpp +2 -1
  199. package/src/duckdb/src/execution/operator/csv_scanner/scanner/base_scanner.cpp +21 -5
  200. package/src/duckdb/src/execution/operator/csv_scanner/scanner/column_count_scanner.cpp +1 -1
  201. package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +312 -260
  202. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/csv_sniffer.cpp +2 -2
  203. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +45 -16
  204. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +19 -18
  205. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +200 -55
  206. package/src/duckdb/src/execution/operator/csv_scanner/table_function/csv_file_scanner.cpp +26 -23
  207. package/src/duckdb/src/execution/operator/csv_scanner/table_function/global_csv_state.cpp +12 -12
  208. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +7 -7
  209. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +31 -22
  210. package/src/duckdb/src/execution/operator/helper/physical_buffered_collector.cpp +1 -1
  211. package/src/duckdb/src/execution/operator/helper/physical_execute.cpp +1 -1
  212. package/src/duckdb/src/execution/operator/helper/physical_load.cpp +24 -2
  213. package/src/duckdb/src/execution/operator/helper/physical_reservoir_sample.cpp +1 -1
  214. package/src/duckdb/src/execution/operator/helper/physical_update_extensions.cpp +57 -0
  215. package/src/duckdb/src/execution/operator/helper/physical_verify_vector.cpp +13 -8
  216. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  217. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +9 -9
  218. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +4 -4
  219. package/src/duckdb/src/execution/operator/join/physical_left_delim_join.cpp +1 -1
  220. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +2 -2
  221. package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +2 -2
  222. package/src/duckdb/src/execution/operator/order/physical_order.cpp +3 -2
  223. package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +4 -4
  224. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +20 -13
  225. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +70 -60
  226. package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +18 -7
  227. package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +88 -12
  228. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +47 -27
  229. package/src/duckdb/src/execution/operator/persistent/physical_update.cpp +34 -9
  230. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -0
  231. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -3
  232. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +22 -7
  233. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +1 -1
  234. package/src/duckdb/src/execution/operator/schema/physical_create_art_index.cpp +9 -9
  235. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +1 -1
  236. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +5 -4
  237. package/src/duckdb/src/execution/physical_operator.cpp +2 -2
  238. package/src/duckdb/src/execution/physical_plan/plan_column_data_get.cpp +2 -4
  239. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  240. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +2 -2
  241. package/src/duckdb/src/execution/physical_plan/plan_cte.cpp +1 -1
  242. package/src/duckdb/src/execution/physical_plan/plan_delete.cpp +2 -2
  243. package/src/duckdb/src/execution/physical_plan/plan_delim_get.cpp +2 -2
  244. package/src/duckdb/src/execution/physical_plan/plan_distinct.cpp +1 -0
  245. package/src/duckdb/src/execution/physical_plan/plan_expression_get.cpp +4 -5
  246. package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +6 -5
  247. package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +1 -1
  248. package/src/duckdb/src/execution/physical_plan/plan_simple.cpp +4 -0
  249. package/src/duckdb/src/execution/physical_plan/plan_top_n.cpp +2 -2
  250. package/src/duckdb/src/execution/physical_plan/plan_update.cpp +3 -3
  251. package/src/duckdb/src/execution/physical_plan/plan_window.cpp +1 -24
  252. package/src/duckdb/src/execution/physical_plan_generator.cpp +3 -0
  253. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +38 -33
  254. package/src/duckdb/src/execution/reservoir_sample.cpp +42 -31
  255. package/src/duckdb/src/execution/window_executor.cpp +39 -39
  256. package/src/duckdb/src/execution/window_segment_tree.cpp +5 -2
  257. package/src/duckdb/src/function/aggregate/distributive/first.cpp +1 -1
  258. package/src/duckdb/src/function/cast/string_cast.cpp +3 -3
  259. package/src/duckdb/src/function/cast_rules.cpp +1 -0
  260. package/src/duckdb/src/function/function.cpp +2 -2
  261. package/src/duckdb/src/function/function_binder.cpp +9 -4
  262. package/src/duckdb/src/function/pragma/pragma_functions.cpp +2 -1
  263. package/src/duckdb/src/function/pragma/pragma_queries.cpp +4 -3
  264. package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +1 -1
  265. package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -2
  266. package/src/duckdb/src/function/scalar/list/list_resize.cpp +1 -1
  267. package/src/duckdb/src/function/scalar/list/list_select.cpp +11 -4
  268. package/src/duckdb/src/function/scalar/list/list_zip.cpp +3 -1
  269. package/src/duckdb/src/function/scalar/operators/add.cpp +19 -9
  270. package/src/duckdb/src/function/scalar/sequence/nextval.cpp +77 -48
  271. package/src/duckdb/src/function/scalar/strftime_format.cpp +61 -39
  272. package/src/duckdb/src/function/scalar/string/caseconvert.cpp +12 -12
  273. package/src/duckdb/src/function/scalar/string/contains.cpp +2 -2
  274. package/src/duckdb/src/function/scalar/string/length.cpp +9 -9
  275. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +2 -2
  276. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +2 -1
  277. package/src/duckdb/src/function/scalar/string/substring.cpp +11 -9
  278. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +2 -2
  279. package/src/duckdb/src/function/scalar_function.cpp +2 -1
  280. package/src/duckdb/src/function/table/arrow.cpp +18 -4
  281. package/src/duckdb/src/function/table/arrow_conversion.cpp +88 -66
  282. package/src/duckdb/src/function/table/copy_csv.cpp +94 -28
  283. package/src/duckdb/src/function/table/glob.cpp +17 -9
  284. package/src/duckdb/src/function/table/read_csv.cpp +37 -14
  285. package/src/duckdb/src/function/table/read_file.cpp +6 -2
  286. package/src/duckdb/src/function/table/repeat.cpp +5 -1
  287. package/src/duckdb/src/function/table/repeat_row.cpp +1 -1
  288. package/src/duckdb/src/function/table/sniff_csv.cpp +9 -3
  289. package/src/duckdb/src/function/table/system/duckdb_columns.cpp +3 -3
  290. package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +31 -16
  291. package/src/duckdb/src/function/table/system/duckdb_databases.cpp +6 -1
  292. package/src/duckdb/src/function/table/system/duckdb_dependencies.cpp +2 -2
  293. package/src/duckdb/src/function/table/system/duckdb_extensions.cpp +48 -6
  294. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +8 -2
  295. package/src/duckdb/src/function/table/system/duckdb_indexes.cpp +9 -4
  296. package/src/duckdb/src/function/table/system/duckdb_memory.cpp +2 -2
  297. package/src/duckdb/src/function/table/system/duckdb_schemas.cpp +7 -2
  298. package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +8 -3
  299. package/src/duckdb/src/function/table/system/duckdb_tables.cpp +18 -10
  300. package/src/duckdb/src/function/table/system/duckdb_temporary_files.cpp +1 -1
  301. package/src/duckdb/src/function/table/system/duckdb_types.cpp +12 -5
  302. package/src/duckdb/src/function/table/system/duckdb_views.cpp +9 -4
  303. package/src/duckdb/src/function/table/system/duckdb_which_secret.cpp +75 -0
  304. package/src/duckdb/src/function/table/system/pragma_database_size.cpp +4 -4
  305. package/src/duckdb/src/function/table/system/pragma_metadata_info.cpp +3 -3
  306. package/src/duckdb/src/function/table/system/pragma_storage_info.cpp +6 -6
  307. package/src/duckdb/src/function/table/system_functions.cpp +1 -0
  308. package/src/duckdb/src/function/table/table_scan.cpp +11 -20
  309. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  310. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  311. package/src/duckdb/src/function/table_function.cpp +5 -4
  312. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +1 -10
  313. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_index_entry.hpp +1 -1
  314. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_schema_entry.hpp +2 -2
  315. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +6 -8
  316. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/function_entry.hpp +1 -0
  317. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +3 -2
  318. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +2 -5
  319. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +3 -4
  320. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +2 -0
  321. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +4 -0
  322. package/src/duckdb/src/include/duckdb/catalog/catalog_entry_retriever.hpp +72 -0
  323. package/src/duckdb/src/include/duckdb/catalog/catalog_transaction.hpp +3 -0
  324. package/src/duckdb/src/include/duckdb/catalog/dependency.hpp +4 -0
  325. package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +7 -1
  326. package/src/duckdb/src/include/duckdb/catalog/dependency_manager.hpp +2 -2
  327. package/src/duckdb/src/include/duckdb/catalog/standard_entry.hpp +2 -0
  328. package/src/duckdb/src/include/duckdb/common/arrow/appender/append_data.hpp +1 -0
  329. package/src/duckdb/src/include/duckdb/common/arrow/appender/enum_data.hpp +3 -3
  330. package/src/duckdb/src/include/duckdb/common/arrow/appender/map_data.hpp +1 -1
  331. package/src/duckdb/src/include/duckdb/common/arrow/appender/scalar_data.hpp +15 -0
  332. package/src/duckdb/src/include/duckdb/common/arrow/appender/varchar_data.hpp +3 -2
  333. package/src/duckdb/src/include/duckdb/common/bit_utils.hpp +63 -98
  334. package/src/duckdb/src/include/duckdb/common/bitpacking.hpp +4 -4
  335. package/src/duckdb/src/include/duckdb/common/constants.hpp +2 -0
  336. package/src/duckdb/src/include/duckdb/common/enable_shared_from_this.ipp +42 -0
  337. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +43 -3
  338. package/src/duckdb/src/include/duckdb/common/enums/checkpoint_type.hpp +38 -0
  339. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +1 -0
  340. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +1 -0
  341. package/src/duckdb/src/include/duckdb/common/enums/relation_type.hpp +1 -0
  342. package/src/duckdb/src/include/duckdb/common/enums/scan_options.hpp +3 -1
  343. package/src/duckdb/src/include/duckdb/common/enums/scan_vector_type.hpp +17 -0
  344. package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +1 -0
  345. package/src/duckdb/src/include/duckdb/common/enums/tableref_type.hpp +2 -1
  346. package/src/duckdb/src/include/duckdb/common/enums/undo_flags.hpp +2 -1
  347. package/src/duckdb/src/include/duckdb/common/exception.hpp +0 -1
  348. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +15 -1
  349. package/src/duckdb/src/include/duckdb/common/file_opener.hpp +4 -0
  350. package/src/duckdb/src/include/duckdb/common/file_system.hpp +3 -0
  351. package/src/duckdb/src/include/duckdb/common/gzip_file_system.hpp +3 -0
  352. package/src/duckdb/src/include/duckdb/common/helper.hpp +22 -1
  353. package/src/duckdb/src/include/duckdb/common/hive_partitioning.hpp +3 -17
  354. package/src/duckdb/src/include/duckdb/common/http_state.hpp +1 -1
  355. package/src/duckdb/src/include/duckdb/common/insertion_order_preserving_map.hpp +129 -0
  356. package/src/duckdb/src/include/duckdb/common/multi_file_list.hpp +151 -0
  357. package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +132 -56
  358. package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +7 -3
  359. package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +3 -0
  360. package/src/duckdb/src/include/duckdb/common/operator/add.hpp +2 -0
  361. package/src/duckdb/src/include/duckdb/common/operator/decimal_cast_operators.hpp +233 -0
  362. package/src/duckdb/src/include/duckdb/common/operator/integer_cast_operator.hpp +5 -4
  363. package/src/duckdb/src/include/duckdb/common/operator/numeric_cast.hpp +2 -2
  364. package/src/duckdb/src/include/duckdb/common/optional_ptr.hpp +5 -0
  365. package/src/duckdb/src/include/duckdb/common/optionally_owned_ptr.hpp +91 -0
  366. package/src/duckdb/src/include/duckdb/common/platform.h +6 -1
  367. package/src/duckdb/src/include/duckdb/common/radix.hpp +12 -4
  368. package/src/duckdb/src/include/duckdb/common/re2_regex.hpp +3 -2
  369. package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +2 -0
  370. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +2 -1
  371. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +8 -6
  372. package/src/duckdb/src/include/duckdb/common/serializer/deserializer.hpp +36 -0
  373. package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +65 -0
  374. package/src/duckdb/src/include/duckdb/common/serializer/serializer.hpp +52 -6
  375. package/src/duckdb/src/include/duckdb/common/shared_ptr.hpp +36 -3
  376. package/src/duckdb/src/include/duckdb/common/shared_ptr.ipp +268 -0
  377. package/src/duckdb/src/include/duckdb/common/sort/duckdb_pdqsort.hpp +3 -3
  378. package/src/duckdb/src/include/duckdb/common/string.hpp +3 -2
  379. package/src/duckdb/src/include/duckdb/common/string_util.hpp +11 -7
  380. package/src/duckdb/src/include/duckdb/common/types/bit.hpp +1 -1
  381. package/src/duckdb/src/include/duckdb/common/types/cast_helpers.hpp +43 -215
  382. package/src/duckdb/src/include/duckdb/common/types/datetime.hpp +36 -11
  383. package/src/duckdb/src/include/duckdb/common/types/hash.hpp +1 -1
  384. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_segment.hpp +7 -1
  385. package/src/duckdb/src/include/duckdb/common/types/selection_vector.hpp +1 -1
  386. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +2 -0
  387. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +2 -0
  388. package/src/duckdb/src/include/duckdb/common/types/validity_mask.hpp +1 -1
  389. package/src/duckdb/src/include/duckdb/common/types/value.hpp +4 -0
  390. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +20 -15
  391. package/src/duckdb/src/include/duckdb/common/types.hpp +14 -2
  392. package/src/duckdb/src/include/duckdb/common/unique_ptr.hpp +7 -6
  393. package/src/duckdb/src/include/duckdb/common/vector.hpp +11 -0
  394. package/src/duckdb/src/include/duckdb/common/vector_size.hpp +1 -1
  395. package/src/duckdb/src/include/duckdb/common/weak_ptr.ipp +117 -0
  396. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +3 -3
  397. package/src/duckdb/src/include/duckdb/core_functions/scalar/date_functions.hpp +18 -0
  398. package/src/duckdb/src/include/duckdb/execution/adaptive_filter.hpp +1 -0
  399. package/src/duckdb/src/include/duckdb/execution/expression_executor.hpp +1 -1
  400. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +4 -4
  401. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +1 -1
  402. package/src/duckdb/src/include/duckdb/execution/index/bound_index.hpp +145 -0
  403. package/src/duckdb/src/include/duckdb/execution/index/index_type.hpp +2 -2
  404. package/src/duckdb/src/include/duckdb/execution/index/unbound_index.hpp +63 -0
  405. package/src/duckdb/src/include/duckdb/execution/merge_sort_tree.hpp +24 -18
  406. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_streaming_window.hpp +2 -0
  407. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_window.hpp +2 -0
  408. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/base_scanner.hpp +10 -3
  409. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/column_count_scanner.hpp +1 -0
  410. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_error.hpp +6 -6
  411. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_reader_options.hpp +7 -6
  412. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_sniffer.hpp +24 -4
  413. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/string_value_scanner.hpp +90 -20
  414. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_update_extensions.hpp +52 -0
  415. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +3 -1
  416. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_delete.hpp +5 -5
  417. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_export.hpp +1 -0
  418. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_insert.hpp +8 -5
  419. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_update.hpp +4 -1
  420. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +4 -5
  421. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_expression_scan.hpp +6 -2
  422. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +1 -1
  423. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +1 -1
  424. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +1 -1
  425. package/src/duckdb/src/include/duckdb/execution/reservoir_sample.hpp +63 -8
  426. package/src/duckdb/src/include/duckdb/function/function.hpp +0 -5
  427. package/src/duckdb/src/include/duckdb/function/function_binder.hpp +6 -3
  428. package/src/duckdb/src/include/duckdb/function/replacement_scan.hpp +25 -2
  429. package/src/duckdb/src/include/duckdb/function/scalar/regexp.hpp +1 -1
  430. package/src/duckdb/src/include/duckdb/function/scalar/sequence_functions.hpp +3 -4
  431. package/src/duckdb/src/include/duckdb/function/scalar/strftime_format.hpp +5 -0
  432. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +1 -1
  433. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +13 -0
  434. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +7 -3
  435. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +3 -0
  436. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +4 -0
  437. package/src/duckdb/src/include/duckdb/function/table_function.hpp +15 -2
  438. package/src/duckdb/src/include/duckdb/logging/http_logger.hpp +81 -0
  439. package/src/duckdb/src/include/duckdb/main/appender.hpp +1 -3
  440. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +1 -1
  441. package/src/duckdb/src/include/duckdb/main/buffered_data/buffered_data.hpp +1 -0
  442. package/src/duckdb/src/include/duckdb/main/capi/cast/generic.hpp +2 -2
  443. package/src/duckdb/src/include/duckdb/main/client_config.hpp +8 -0
  444. package/src/duckdb/src/include/duckdb/main/client_context.hpp +1 -19
  445. package/src/duckdb/src/include/duckdb/main/client_context_state.hpp +11 -1
  446. package/src/duckdb/src/include/duckdb/main/client_context_wrapper.hpp +27 -0
  447. package/src/duckdb/src/include/duckdb/main/client_data.hpp +4 -0
  448. package/src/duckdb/src/include/duckdb/main/config.hpp +36 -3
  449. package/src/duckdb/src/include/duckdb/main/connection_manager.hpp +7 -17
  450. package/src/duckdb/src/include/duckdb/main/database.hpp +25 -20
  451. package/src/duckdb/src/include/duckdb/main/extension.hpp +25 -0
  452. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +155 -10
  453. package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +79 -12
  454. package/src/duckdb/src/include/duckdb/main/extension_install_info.hpp +89 -0
  455. package/src/duckdb/src/include/duckdb/main/extension_util.hpp +3 -1
  456. package/src/duckdb/src/include/duckdb/main/external_dependencies.hpp +46 -4
  457. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  458. package/src/duckdb/src/include/duckdb/main/relation/materialized_relation.hpp +35 -0
  459. package/src/duckdb/src/include/duckdb/main/relation/query_relation.hpp +1 -1
  460. package/src/duckdb/src/include/duckdb/main/relation/table_function_relation.hpp +2 -2
  461. package/src/duckdb/src/include/duckdb/main/relation/table_relation.hpp +1 -1
  462. package/src/duckdb/src/include/duckdb/main/relation/value_relation.hpp +3 -3
  463. package/src/duckdb/src/include/duckdb/main/relation/view_relation.hpp +1 -1
  464. package/src/duckdb/src/include/duckdb/main/relation.hpp +5 -6
  465. package/src/duckdb/src/include/duckdb/main/settings.hpp +47 -0
  466. package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +4 -4
  467. package/src/duckdb/src/include/duckdb/optimizer/join_order/cost_model.hpp +1 -1
  468. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_node.hpp +8 -15
  469. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_order_optimizer.hpp +0 -51
  470. package/src/duckdb/src/include/duckdb/optimizer/join_order/plan_enumerator.hpp +10 -17
  471. package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph_manager.hpp +5 -7
  472. package/src/duckdb/src/include/duckdb/optimizer/matcher/set_matcher.hpp +2 -1
  473. package/src/duckdb/src/include/duckdb/optimizer/optimizer_extension.hpp +10 -2
  474. package/src/duckdb/src/include/duckdb/optimizer/rule/list.hpp +1 -0
  475. package/src/duckdb/src/include/duckdb/optimizer/rule/timestamp_comparison.hpp +30 -0
  476. package/src/duckdb/src/include/duckdb/parallel/event.hpp +1 -1
  477. package/src/duckdb/src/include/duckdb/parallel/interrupt.hpp +1 -0
  478. package/src/duckdb/src/include/duckdb/parallel/meta_pipeline.hpp +1 -1
  479. package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +1 -1
  480. package/src/duckdb/src/include/duckdb/parallel/task.hpp +1 -1
  481. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +1 -1
  482. package/src/duckdb/src/include/duckdb/parser/column_definition.hpp +2 -0
  483. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +1 -0
  484. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_scalar_function_info.hpp +1 -0
  485. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_function_info.hpp +1 -0
  486. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +12 -0
  487. package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +1 -0
  488. package/src/duckdb/src/include/duckdb/parser/parsed_data/comment_on_column_info.hpp +3 -1
  489. package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_info.hpp +10 -12
  490. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +6 -2
  491. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_schema_info.hpp +3 -30
  492. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_sequence_info.hpp +2 -0
  493. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_type_info.hpp +12 -1
  494. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +1 -0
  495. package/src/duckdb/src/include/duckdb/parser/parsed_data/detach_info.hpp +1 -0
  496. package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +1 -0
  497. package/src/duckdb/src/include/duckdb/parser/parsed_data/exported_table_data.hpp +5 -2
  498. package/src/duckdb/src/include/duckdb/parser/parsed_data/load_info.hpp +4 -7
  499. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +7 -1
  500. package/src/duckdb/src/include/duckdb/parser/parsed_data/pragma_info.hpp +2 -11
  501. package/src/duckdb/src/include/duckdb/parser/parsed_data/transaction_info.hpp +2 -0
  502. package/src/duckdb/src/include/duckdb/parser/parsed_data/update_extensions_info.hpp +36 -0
  503. package/src/duckdb/src/include/duckdb/parser/parsed_data/vacuum_info.hpp +1 -0
  504. package/src/duckdb/src/include/duckdb/parser/parser_extension.hpp +1 -0
  505. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  506. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +1 -4
  507. package/src/duckdb/src/include/duckdb/parser/statement/alter_statement.hpp +1 -0
  508. package/src/duckdb/src/include/duckdb/parser/statement/attach_statement.hpp +1 -0
  509. package/src/duckdb/src/include/duckdb/parser/statement/call_statement.hpp +1 -0
  510. package/src/duckdb/src/include/duckdb/parser/statement/copy_database_statement.hpp +1 -2
  511. package/src/duckdb/src/include/duckdb/parser/statement/copy_statement.hpp +1 -3
  512. package/src/duckdb/src/include/duckdb/parser/statement/detach_statement.hpp +1 -0
  513. package/src/duckdb/src/include/duckdb/parser/statement/drop_statement.hpp +1 -0
  514. package/src/duckdb/src/include/duckdb/parser/statement/execute_statement.hpp +1 -0
  515. package/src/duckdb/src/include/duckdb/parser/statement/explain_statement.hpp +1 -0
  516. package/src/duckdb/src/include/duckdb/parser/statement/export_statement.hpp +1 -0
  517. package/src/duckdb/src/include/duckdb/parser/statement/extension_statement.hpp +1 -0
  518. package/src/duckdb/src/include/duckdb/parser/statement/insert_statement.hpp +1 -0
  519. package/src/duckdb/src/include/duckdb/parser/statement/list.hpp +1 -0
  520. package/src/duckdb/src/include/duckdb/parser/statement/load_statement.hpp +1 -0
  521. package/src/duckdb/src/include/duckdb/parser/statement/logical_plan_statement.hpp +3 -0
  522. package/src/duckdb/src/include/duckdb/parser/statement/multi_statement.hpp +1 -0
  523. package/src/duckdb/src/include/duckdb/parser/statement/pragma_statement.hpp +1 -0
  524. package/src/duckdb/src/include/duckdb/parser/statement/prepare_statement.hpp +1 -0
  525. package/src/duckdb/src/include/duckdb/parser/statement/relation_statement.hpp +1 -0
  526. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -0
  527. package/src/duckdb/src/include/duckdb/parser/statement/set_statement.hpp +6 -4
  528. package/src/duckdb/src/include/duckdb/parser/statement/transaction_statement.hpp +1 -0
  529. package/src/duckdb/src/include/duckdb/parser/statement/update_extensions_statement.hpp +36 -0
  530. package/src/duckdb/src/include/duckdb/parser/statement/vacuum_statement.hpp +1 -0
  531. package/src/duckdb/src/include/duckdb/parser/tableref/column_data_ref.hpp +46 -0
  532. package/src/duckdb/src/include/duckdb/parser/tableref/list.hpp +1 -0
  533. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +0 -4
  534. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +3 -0
  535. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +2 -0
  536. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +5 -0
  537. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +4 -4
  538. package/src/duckdb/src/include/duckdb/planner/binder.hpp +42 -16
  539. package/src/duckdb/src/include/duckdb/planner/bound_tokens.hpp +1 -0
  540. package/src/duckdb/src/include/duckdb/planner/expression_binder/alter_binder.hpp +7 -6
  541. package/src/duckdb/src/include/duckdb/planner/expression_binder/having_binder.hpp +2 -1
  542. package/src/duckdb/src/include/duckdb/planner/expression_binder/index_binder.hpp +5 -1
  543. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +5 -0
  544. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +0 -1
  545. package/src/duckdb/src/include/duckdb/planner/operator/logical_column_data_get.hpp +6 -2
  546. package/src/duckdb/src/include/duckdb/planner/operator/logical_delete.hpp +2 -0
  547. package/src/duckdb/src/include/duckdb/planner/operator/logical_export.hpp +7 -0
  548. package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +2 -0
  549. package/src/duckdb/src/include/duckdb/planner/operator/logical_top_n.hpp +3 -3
  550. package/src/duckdb/src/include/duckdb/planner/operator/logical_update.hpp +2 -0
  551. package/src/duckdb/src/include/duckdb/planner/parsed_data/bound_create_table_info.hpp +0 -4
  552. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +4 -4
  553. package/src/duckdb/src/include/duckdb/planner/tableref/bound_column_data_ref.hpp +30 -0
  554. package/src/duckdb/src/include/duckdb/planner/tableref/list.hpp +1 -0
  555. package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +6 -3
  556. package/src/duckdb/src/include/duckdb/storage/buffer/buffer_pool.hpp +16 -7
  557. package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +15 -3
  558. package/src/duckdb/src/include/duckdb/storage/checkpoint/row_group_writer.hpp +10 -7
  559. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +2 -0
  560. package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +24 -15
  561. package/src/duckdb/src/include/duckdb/storage/compression/alp/algorithm/alp.hpp +8 -7
  562. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_compress.hpp +2 -2
  563. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_constants.hpp +5 -4
  564. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_fetch.hpp +1 -1
  565. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_utils.hpp +3 -3
  566. package/src/duckdb/src/include/duckdb/storage/compression/alprd/algorithm/alprd.hpp +2 -1
  567. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_analyze.hpp +5 -3
  568. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_compress.hpp +2 -2
  569. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_fetch.hpp +1 -1
  570. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/bit_reader.hpp +1 -1
  571. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_fetch.hpp +1 -1
  572. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_fetch.hpp +1 -1
  573. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +55 -16
  574. package/src/duckdb/src/include/duckdb/storage/index.hpp +33 -97
  575. package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +3 -3
  576. package/src/duckdb/src/include/duckdb/storage/optimistic_data_writer.hpp +1 -1
  577. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +3 -3
  578. package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +22 -9
  579. package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +6 -3
  580. package/src/duckdb/src/include/duckdb/storage/storage_lock.hpp +17 -13
  581. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +27 -8
  582. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +3 -2
  583. package/src/duckdb/src/include/duckdb/storage/table/append_state.hpp +12 -0
  584. package/src/duckdb/src/include/duckdb/storage/table/array_column_data.hpp +5 -4
  585. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +29 -10
  586. package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +2 -1
  587. package/src/duckdb/src/include/duckdb/storage/table/data_table_info.hpp +32 -6
  588. package/src/duckdb/src/include/duckdb/storage/table/delete_state.hpp +23 -0
  589. package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +5 -4
  590. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +14 -3
  591. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +3 -2
  592. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +4 -0
  593. package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +5 -5
  594. package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +6 -6
  595. package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +5 -4
  596. package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +25 -1
  597. package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +5 -2
  598. package/src/duckdb/src/include/duckdb/storage/table/update_state.hpp +20 -0
  599. package/src/duckdb/src/include/duckdb/storage/table/validity_column_data.hpp +1 -0
  600. package/src/duckdb/src/include/duckdb/storage/temporary_file_manager.hpp +20 -4
  601. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +10 -5
  602. package/src/duckdb/src/include/duckdb/transaction/duck_transaction.hpp +19 -4
  603. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +30 -7
  604. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +8 -5
  605. package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +1 -0
  606. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +8 -0
  607. package/src/duckdb/src/include/duckdb/transaction/undo_buffer.hpp +9 -1
  608. package/src/duckdb/src/include/duckdb.h +15 -11
  609. package/src/duckdb/src/main/appender.cpp +3 -1
  610. package/src/duckdb/src/main/attached_database.cpp +5 -3
  611. package/src/duckdb/src/main/capi/appender-c.cpp +4 -3
  612. package/src/duckdb/src/main/capi/arrow-c.cpp +4 -4
  613. package/src/duckdb/src/main/capi/helper-c.cpp +3 -3
  614. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -5
  615. package/src/duckdb/src/main/capi/result-c.cpp +19 -5
  616. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  617. package/src/duckdb/src/main/client_context.cpp +32 -23
  618. package/src/duckdb/src/main/client_context_file_opener.cpp +31 -0
  619. package/src/duckdb/src/main/client_context_wrapper.cpp +22 -0
  620. package/src/duckdb/src/main/client_data.cpp +5 -3
  621. package/src/duckdb/src/main/config.cpp +71 -2
  622. package/src/duckdb/src/main/connection.cpp +11 -10
  623. package/src/duckdb/src/main/connection_manager.cpp +9 -23
  624. package/src/duckdb/src/main/database.cpp +26 -30
  625. package/src/duckdb/src/main/db_instance_cache.cpp +1 -1
  626. package/src/duckdb/src/main/extension/extension_helper.cpp +396 -17
  627. package/src/duckdb/src/main/extension/extension_install.cpp +297 -89
  628. package/src/duckdb/src/main/extension/extension_load.cpp +137 -135
  629. package/src/duckdb/src/main/extension/extension_util.cpp +8 -2
  630. package/src/duckdb/src/main/extension.cpp +56 -0
  631. package/src/duckdb/src/main/extension_install_info.cpp +116 -0
  632. package/src/duckdb/src/main/materialized_query_result.cpp +11 -0
  633. package/src/duckdb/src/main/query_profiler.cpp +1 -1
  634. package/src/duckdb/src/main/relation/create_view_relation.cpp +6 -0
  635. package/src/duckdb/src/main/relation/materialized_relation.cpp +58 -0
  636. package/src/duckdb/src/main/relation/query_relation.cpp +20 -1
  637. package/src/duckdb/src/main/relation/read_csv_relation.cpp +5 -3
  638. package/src/duckdb/src/main/relation/table_relation.cpp +4 -4
  639. package/src/duckdb/src/main/relation/value_relation.cpp +2 -2
  640. package/src/duckdb/src/main/relation/view_relation.cpp +1 -1
  641. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  642. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  643. package/src/duckdb/src/main/relation.cpp +36 -32
  644. package/src/duckdb/src/main/secret/secret.cpp +1 -1
  645. package/src/duckdb/src/main/settings/settings.cpp +137 -11
  646. package/src/duckdb/src/optimizer/common_aggregate_optimizer.cpp +1 -1
  647. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  648. package/src/duckdb/src/optimizer/filter_pushdown.cpp +3 -2
  649. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +3 -3
  650. package/src/duckdb/src/optimizer/join_order/cost_model.cpp +1 -1
  651. package/src/duckdb/src/optimizer/join_order/join_node.cpp +4 -27
  652. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +5 -8
  653. package/src/duckdb/src/optimizer/join_order/plan_enumerator.cpp +32 -107
  654. package/src/duckdb/src/optimizer/join_order/query_graph_manager.cpp +68 -61
  655. package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +4 -2
  656. package/src/duckdb/src/optimizer/join_order/relation_statistics_helper.cpp +3 -3
  657. package/src/duckdb/src/optimizer/optimizer.cpp +3 -1
  658. package/src/duckdb/src/optimizer/pushdown/pushdown_aggregate.cpp +2 -2
  659. package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +1 -1
  660. package/src/duckdb/src/optimizer/pushdown/pushdown_left_join.cpp +2 -2
  661. package/src/duckdb/src/optimizer/pushdown/pushdown_mark_join.cpp +6 -6
  662. package/src/duckdb/src/optimizer/pushdown/pushdown_projection.cpp +1 -1
  663. package/src/duckdb/src/optimizer/pushdown/pushdown_semi_anti_join.cpp +1 -1
  664. package/src/duckdb/src/optimizer/pushdown/pushdown_set_operation.cpp +1 -1
  665. package/src/duckdb/src/optimizer/pushdown/pushdown_single_join.cpp +2 -2
  666. package/src/duckdb/src/optimizer/remove_duplicate_groups.cpp +1 -1
  667. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +1 -1
  668. package/src/duckdb/src/optimizer/rule/arithmetic_simplification.cpp +1 -1
  669. package/src/duckdb/src/optimizer/rule/case_simplification.cpp +2 -2
  670. package/src/duckdb/src/optimizer/rule/conjunction_simplification.cpp +2 -1
  671. package/src/duckdb/src/optimizer/rule/constant_folding.cpp +1 -0
  672. package/src/duckdb/src/optimizer/rule/distributivity.cpp +1 -1
  673. package/src/duckdb/src/optimizer/rule/empty_needle_removal.cpp +1 -0
  674. package/src/duckdb/src/optimizer/rule/enum_comparison.cpp +1 -0
  675. package/src/duckdb/src/optimizer/rule/in_clause_simplification_rule.cpp +1 -0
  676. package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +1 -2
  677. package/src/duckdb/src/optimizer/rule/timestamp_comparison.cpp +107 -0
  678. package/src/duckdb/src/optimizer/statistics/expression/propagate_conjunction.cpp +1 -1
  679. package/src/duckdb/src/optimizer/statistics/expression/propagate_operator.cpp +4 -4
  680. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +3 -3
  681. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +1 -1
  682. package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +6 -3
  683. package/src/duckdb/src/optimizer/statistics/operator/propagate_set_operation.cpp +2 -1
  684. package/src/duckdb/src/optimizer/topn_optimizer.cpp +2 -2
  685. package/src/duckdb/src/parallel/executor.cpp +12 -9
  686. package/src/duckdb/src/parallel/meta_pipeline.cpp +2 -2
  687. package/src/duckdb/src/parallel/pipeline.cpp +2 -2
  688. package/src/duckdb/src/parallel/task_scheduler.cpp +9 -3
  689. package/src/duckdb/src/parser/column_definition.cpp +1 -0
  690. package/src/duckdb/src/parser/constraints/foreign_key_constraint.cpp +9 -7
  691. package/src/duckdb/src/parser/expression/star_expression.cpp +2 -2
  692. package/src/duckdb/src/parser/parsed_data/alter_scalar_function_info.cpp +4 -0
  693. package/src/duckdb/src/parser/parsed_data/alter_table_function_info.cpp +4 -0
  694. package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +183 -0
  695. package/src/duckdb/src/parser/parsed_data/attach_info.cpp +23 -0
  696. package/src/duckdb/src/parser/parsed_data/comment_on_column_info.cpp +15 -2
  697. package/src/duckdb/src/parser/parsed_data/copy_info.cpp +100 -0
  698. package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +16 -2
  699. package/src/duckdb/src/parser/parsed_data/create_info.cpp +2 -0
  700. package/src/duckdb/src/parser/parsed_data/create_schema_info.cpp +40 -0
  701. package/src/duckdb/src/parser/parsed_data/create_sequence_info.cpp +22 -0
  702. package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +12 -4
  703. package/src/duckdb/src/parser/parsed_data/create_type_info.cpp +37 -14
  704. package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +4 -4
  705. package/src/duckdb/src/parser/parsed_data/detach_info.cpp +12 -0
  706. package/src/duckdb/src/parser/parsed_data/drop_info.cpp +21 -0
  707. package/src/duckdb/src/parser/parsed_data/load_info.cpp +46 -0
  708. package/src/duckdb/src/parser/parsed_data/parse_info.cpp +50 -0
  709. package/src/duckdb/src/parser/parsed_data/pragma_info.cpp +33 -0
  710. package/src/duckdb/src/parser/parsed_data/transaction_info.cpp +22 -0
  711. package/src/duckdb/src/parser/parsed_data/vacuum_info.cpp +20 -0
  712. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +1 -0
  713. package/src/duckdb/src/parser/parser.cpp +5 -4
  714. package/src/duckdb/src/parser/query_node.cpp +6 -2
  715. package/src/duckdb/src/parser/statement/alter_statement.cpp +4 -0
  716. package/src/duckdb/src/parser/statement/attach_statement.cpp +4 -0
  717. package/src/duckdb/src/parser/statement/call_statement.cpp +8 -0
  718. package/src/duckdb/src/parser/statement/copy_statement.cpp +1 -91
  719. package/src/duckdb/src/parser/statement/detach_statement.cpp +4 -0
  720. package/src/duckdb/src/parser/statement/drop_statement.cpp +4 -0
  721. package/src/duckdb/src/parser/statement/execute_statement.cpp +15 -0
  722. package/src/duckdb/src/parser/statement/explain_statement.cpp +19 -0
  723. package/src/duckdb/src/parser/statement/export_statement.cpp +18 -0
  724. package/src/duckdb/src/parser/statement/extension_statement.cpp +4 -0
  725. package/src/duckdb/src/parser/statement/load_statement.cpp +4 -0
  726. package/src/duckdb/src/parser/statement/multi_statement.cpp +8 -0
  727. package/src/duckdb/src/parser/statement/pragma_statement.cpp +4 -0
  728. package/src/duckdb/src/parser/statement/prepare_statement.cpp +13 -0
  729. package/src/duckdb/src/parser/statement/relation_statement.cpp +4 -0
  730. package/src/duckdb/src/parser/statement/set_statement.cpp +33 -4
  731. package/src/duckdb/src/parser/statement/transaction_statement.cpp +4 -0
  732. package/src/duckdb/src/parser/statement/update_extensions_statement.cpp +34 -0
  733. package/src/duckdb/src/parser/statement/vacuum_statement.cpp +4 -0
  734. package/src/duckdb/src/parser/tableref/column_data_ref.cpp +81 -0
  735. package/src/duckdb/src/parser/tableref.cpp +1 -0
  736. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +2 -2
  737. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +1 -1
  738. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +6 -1
  739. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +1 -1
  740. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +1 -1
  741. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +16 -0
  742. package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +2 -0
  743. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +97 -63
  744. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +2 -0
  745. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +1 -1
  746. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -2
  747. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +19 -0
  748. package/src/duckdb/src/parser/transformer.cpp +5 -2
  749. package/src/duckdb/src/planner/bind_context.cpp +2 -2
  750. package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +35 -8
  751. package/src/duckdb/src/planner/binder/expression/bind_cast_expression.cpp +1 -1
  752. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +13 -7
  753. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +1 -1
  754. package/src/duckdb/src/planner/binder/query_node/plan_setop.cpp +35 -2
  755. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +0 -2
  756. package/src/duckdb/src/planner/binder/statement/bind_attach.cpp +2 -0
  757. package/src/duckdb/src/planner/binder/statement/bind_call.cpp +2 -0
  758. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +7 -3
  759. package/src/duckdb/src/planner/binder/statement/bind_copy_database.cpp +21 -68
  760. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +141 -28
  761. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +115 -57
  762. package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +4 -0
  763. package/src/duckdb/src/planner/binder/statement/bind_detach.cpp +2 -0
  764. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +2 -0
  765. package/src/duckdb/src/planner/binder/statement/bind_execute.cpp +4 -2
  766. package/src/duckdb/src/planner/binder/statement/bind_explain.cpp +2 -0
  767. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +15 -4
  768. package/src/duckdb/src/planner/binder/statement/bind_extension.cpp +1 -0
  769. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +5 -1
  770. package/src/duckdb/src/planner/binder/statement/bind_load.cpp +13 -0
  771. package/src/duckdb/src/planner/binder/statement/bind_logical_plan.cpp +2 -0
  772. package/src/duckdb/src/planner/binder/statement/bind_pragma.cpp +2 -0
  773. package/src/duckdb/src/planner/binder/statement/bind_prepare.cpp +1 -0
  774. package/src/duckdb/src/planner/binder/statement/bind_select.cpp +1 -0
  775. package/src/duckdb/src/planner/binder/statement/bind_set.cpp +4 -0
  776. package/src/duckdb/src/planner/binder/statement/bind_simple.cpp +6 -4
  777. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +5 -1
  778. package/src/duckdb/src/planner/binder/statement/bind_update_extensions.cpp +28 -0
  779. package/src/duckdb/src/planner/binder/statement/bind_vacuum.cpp +2 -0
  780. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +32 -29
  781. package/src/duckdb/src/planner/binder/tableref/bind_column_data_ref.cpp +16 -0
  782. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +7 -4
  783. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +32 -22
  784. package/src/duckdb/src/planner/binder/tableref/plan_column_data_ref.cpp +15 -0
  785. package/src/duckdb/src/planner/binder.cpp +50 -30
  786. package/src/duckdb/src/planner/bound_parameter_map.cpp +1 -1
  787. package/src/duckdb/src/planner/bound_result_modifier.cpp +1 -1
  788. package/src/duckdb/src/planner/expression/bound_expression.cpp +3 -2
  789. package/src/duckdb/src/planner/expression_binder/alter_binder.cpp +24 -7
  790. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +27 -2
  791. package/src/duckdb/src/planner/expression_binder/having_binder.cpp +34 -19
  792. package/src/duckdb/src/planner/expression_binder/index_binder.cpp +33 -0
  793. package/src/duckdb/src/planner/expression_binder/order_binder.cpp +10 -1
  794. package/src/duckdb/src/planner/expression_binder.cpp +4 -0
  795. package/src/duckdb/src/planner/expression_iterator.cpp +3 -1
  796. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  797. package/src/duckdb/src/planner/operator/logical_column_data_get.cpp +16 -2
  798. package/src/duckdb/src/planner/operator/logical_delete.cpp +2 -0
  799. package/src/duckdb/src/planner/operator/logical_get.cpp +4 -1
  800. package/src/duckdb/src/planner/operator/logical_insert.cpp +2 -0
  801. package/src/duckdb/src/planner/operator/logical_top_n.cpp +1 -1
  802. package/src/duckdb/src/planner/operator/logical_update.cpp +2 -0
  803. package/src/duckdb/src/planner/planner.cpp +35 -9
  804. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +34 -9
  805. package/src/duckdb/src/planner/table_binding.cpp +1 -1
  806. package/src/duckdb/src/storage/arena_allocator.cpp +5 -3
  807. package/src/duckdb/src/storage/buffer/block_handle.cpp +3 -3
  808. package/src/duckdb/src/storage/buffer/block_manager.cpp +1 -1
  809. package/src/duckdb/src/storage/buffer/buffer_pool.cpp +83 -22
  810. package/src/duckdb/src/storage/buffer/buffer_pool_reservation.cpp +2 -2
  811. package/src/duckdb/src/storage/buffer_manager.cpp +6 -2
  812. package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +9 -0
  813. package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +7 -2
  814. package/src/duckdb/src/storage/checkpoint_manager.cpp +68 -104
  815. package/src/duckdb/src/storage/compression/bitpacking.cpp +19 -13
  816. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +9 -7
  817. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +1 -1
  818. package/src/duckdb/src/storage/compression/fsst.cpp +11 -7
  819. package/src/duckdb/src/storage/compression/rle.cpp +1 -1
  820. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +5 -4
  821. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +1 -1
  822. package/src/duckdb/src/storage/data_table.cpp +254 -101
  823. package/src/duckdb/src/storage/index.cpp +2 -106
  824. package/src/duckdb/src/storage/local_storage.cpp +38 -50
  825. package/src/duckdb/src/storage/metadata/metadata_manager.cpp +2 -2
  826. package/src/duckdb/src/storage/metadata/metadata_writer.cpp +1 -1
  827. package/src/duckdb/src/storage/optimistic_data_writer.cpp +9 -11
  828. package/src/duckdb/src/storage/partial_block_manager.cpp +6 -6
  829. package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +8 -0
  830. package/src/duckdb/src/storage/serialization/serialize_dependency.cpp +49 -0
  831. package/src/duckdb/src/storage/serialization/serialize_extension_install_info.cpp +28 -0
  832. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +5 -2
  833. package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +78 -2
  834. package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +21 -0
  835. package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +16 -0
  836. package/src/duckdb/src/storage/serialization/serialize_types.cpp +6 -1
  837. package/src/duckdb/src/storage/single_file_block_manager.cpp +22 -19
  838. package/src/duckdb/src/storage/standard_buffer_manager.cpp +68 -40
  839. package/src/duckdb/src/storage/statistics/column_statistics.cpp +3 -3
  840. package/src/duckdb/src/storage/statistics/distinct_statistics.cpp +1 -1
  841. package/src/duckdb/src/storage/storage_info.cpp +67 -23
  842. package/src/duckdb/src/storage/storage_lock.cpp +77 -17
  843. package/src/duckdb/src/storage/storage_manager.cpp +56 -43
  844. package/src/duckdb/src/storage/table/array_column_data.cpp +13 -12
  845. package/src/duckdb/src/storage/table/column_data.cpp +80 -37
  846. package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +1 -1
  847. package/src/duckdb/src/storage/table/column_segment.cpp +6 -5
  848. package/src/duckdb/src/storage/table/list_column_data.cpp +15 -14
  849. package/src/duckdb/src/storage/table/row_group.cpp +38 -23
  850. package/src/duckdb/src/storage/table/row_group_collection.cpp +52 -38
  851. package/src/duckdb/src/storage/table/row_version_manager.cpp +2 -2
  852. package/src/duckdb/src/storage/table/standard_column_data.cpp +28 -16
  853. package/src/duckdb/src/storage/table/struct_column_data.cpp +23 -16
  854. package/src/duckdb/src/storage/table/table_statistics.cpp +27 -8
  855. package/src/duckdb/src/storage/table/update_segment.cpp +6 -6
  856. package/src/duckdb/src/storage/table/validity_column_data.cpp +5 -0
  857. package/src/duckdb/src/storage/table_index_list.cpp +69 -42
  858. package/src/duckdb/src/storage/temporary_file_manager.cpp +111 -17
  859. package/src/duckdb/src/storage/temporary_memory_manager.cpp +4 -4
  860. package/src/duckdb/src/storage/wal_replay.cpp +27 -22
  861. package/src/duckdb/src/storage/write_ahead_log.cpp +42 -22
  862. package/src/duckdb/src/transaction/cleanup_state.cpp +4 -7
  863. package/src/duckdb/src/transaction/commit_state.cpp +17 -8
  864. package/src/duckdb/src/transaction/duck_transaction.cpp +60 -15
  865. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +154 -121
  866. package/src/duckdb/src/transaction/meta_transaction.cpp +19 -1
  867. package/src/duckdb/src/transaction/rollback_state.cpp +2 -0
  868. package/src/duckdb/src/transaction/transaction.cpp +7 -7
  869. package/src/duckdb/src/transaction/undo_buffer.cpp +37 -17
  870. package/src/duckdb/third_party/concurrentqueue/concurrentqueue.h +5 -5
  871. package/src/duckdb/third_party/fsst/fsst.h +1 -1
  872. package/src/duckdb/third_party/jaro_winkler/details/common.hpp +9 -9
  873. package/src/duckdb/third_party/jaro_winkler/details/intrinsics.hpp +1 -1
  874. package/src/duckdb/third_party/jaro_winkler/details/jaro_impl.hpp +18 -18
  875. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +1 -0
  876. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +12 -0
  877. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +555 -1032
  878. package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +3 -0
  879. package/src/duckdb/third_party/libpg_query/include/utils/datetime.hpp +1 -0
  880. package/src/duckdb/third_party/libpg_query/pg_functions.cpp +13 -6
  881. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +23925 -23444
  882. package/src/duckdb/third_party/mbedtls/library/constant_time.cpp +1 -1
  883. package/src/duckdb/third_party/parquet/parquet_types.cpp +3 -0
  884. package/src/duckdb/third_party/parquet/parquet_types.h +2 -1
  885. package/src/duckdb/third_party/re2/re2/compile.cc +2 -2
  886. package/src/duckdb/third_party/re2/re2/dfa.cc +3 -8
  887. package/src/duckdb/third_party/re2/re2/onepass.cc +4 -3
  888. package/src/duckdb/third_party/re2/re2/prog.cc +10 -10
  889. package/src/duckdb/third_party/re2/re2/prog.h +8 -8
  890. package/src/duckdb/third_party/tdigest/t_digest.hpp +6 -6
  891. package/src/duckdb/third_party/utf8proc/include/utf8proc.hpp +1 -1
  892. package/src/duckdb/third_party/yyjson/include/yyjson.hpp +7930 -0
  893. package/src/duckdb/third_party/yyjson/yyjson.cpp +9490 -0
  894. package/src/duckdb/ub_src_catalog.cpp +2 -0
  895. package/src/duckdb/ub_src_common.cpp +2 -0
  896. package/src/duckdb/ub_src_execution_index.cpp +3 -1
  897. package/src/duckdb/ub_src_execution_operator_helper.cpp +2 -0
  898. package/src/duckdb/ub_src_function_table_system.cpp +2 -0
  899. package/src/duckdb/ub_src_main.cpp +4 -0
  900. package/src/duckdb/ub_src_main_relation.cpp +2 -0
  901. package/src/duckdb/ub_src_optimizer.cpp +8 -8
  902. package/src/duckdb/ub_src_optimizer_join_order.cpp +0 -2
  903. package/src/duckdb/ub_src_optimizer_rule.cpp +4 -2
  904. package/src/duckdb/ub_src_parser_parsed_data.cpp +10 -0
  905. package/src/duckdb/ub_src_parser_statement.cpp +2 -0
  906. package/src/duckdb/ub_src_parser_tableref.cpp +2 -0
  907. package/src/duckdb/ub_src_planner_binder_statement.cpp +2 -0
  908. package/src/duckdb/ub_src_planner_binder_tableref.cpp +4 -0
  909. package/src/duckdb/ub_src_storage_serialization.cpp +4 -0
  910. package/test/query_result.test.ts +9 -0
  911. package/test/replacement_scan.test.ts +2 -0
  912. package/src/duckdb/src/catalog/catalog_entry/ub_duckdb_catalog_entries.cpp +0 -16
  913. package/src/duckdb/src/catalog/default/ub_duckdb_catalog_default_entries.cpp +0 -5
  914. package/src/duckdb/src/catalog/ub_duckdb_catalog.cpp +0 -10
  915. package/src/duckdb/src/common/adbc/nanoarrow/ub_duckdb_adbc_nanoarrow.cpp +0 -5
  916. package/src/duckdb/src/common/adbc/ub_duckdb_adbc.cpp +0 -3
  917. package/src/duckdb/src/common/arrow/appender/ub_duckdb_common_arrow_appender.cpp +0 -6
  918. package/src/duckdb/src/common/arrow/ub_duckdb_common_arrow.cpp +0 -4
  919. package/src/duckdb/src/common/crypto/ub_duckdb_common_crypto.cpp +0 -2
  920. package/src/duckdb/src/common/enums/ub_duckdb_common_enums.cpp +0 -12
  921. package/src/duckdb/src/common/operator/ub_duckdb_common_operators.cpp +0 -4
  922. package/src/duckdb/src/common/progress_bar/ub_duckdb_progress_bar.cpp +0 -3
  923. package/src/duckdb/src/common/row_operations/ub_duckdb_row_operations.cpp +0 -9
  924. package/src/duckdb/src/common/serializer/ub_duckdb_common_serializer.cpp +0 -7
  925. package/src/duckdb/src/common/sort/ub_duckdb_sort.cpp +0 -7
  926. package/src/duckdb/src/common/types/column/ub_duckdb_common_types_column.cpp +0 -6
  927. package/src/duckdb/src/common/types/row/ub_duckdb_common_types_row.cpp +0 -11
  928. package/src/duckdb/src/common/types/ub_duckdb_common_types.cpp +0 -28
  929. package/src/duckdb/src/common/ub_duckdb_common.cpp +0 -34
  930. package/src/duckdb/src/common/value_operations/ub_duckdb_value_operations.cpp +0 -2
  931. package/src/duckdb/src/core_functions/aggregate/algebraic/ub_duckdb_aggr_algebraic.cpp +0 -5
  932. package/src/duckdb/src/core_functions/aggregate/distributive/ub_duckdb_aggr_distributive.cpp +0 -13
  933. package/src/duckdb/src/core_functions/aggregate/holistic/ub_duckdb_aggr_holistic.cpp +0 -5
  934. package/src/duckdb/src/core_functions/aggregate/nested/ub_duckdb_aggr_nested.cpp +0 -3
  935. package/src/duckdb/src/core_functions/aggregate/regression/ub_duckdb_aggr_regr.cpp +0 -8
  936. package/src/duckdb/src/core_functions/scalar/bit/ub_duckdb_func_bit.cpp +0 -2
  937. package/src/duckdb/src/core_functions/scalar/blob/ub_duckdb_func_blob.cpp +0 -3
  938. package/src/duckdb/src/core_functions/scalar/date/ub_duckdb_func_date.cpp +0 -12
  939. package/src/duckdb/src/core_functions/scalar/debug/ub_duckdb_func_debug.cpp +0 -2
  940. package/src/duckdb/src/core_functions/scalar/enum/ub_duckdb_func_enum.cpp +0 -2
  941. package/src/duckdb/src/core_functions/scalar/generic/ub_duckdb_func_generic.cpp +0 -9
  942. package/src/duckdb/src/core_functions/scalar/list/ub_duckdb_func_list.cpp +0 -11
  943. package/src/duckdb/src/core_functions/scalar/map/ub_duckdb_func_map_nested.cpp +0 -8
  944. package/src/duckdb/src/core_functions/scalar/math/ub_duckdb_func_math.cpp +0 -1
  945. package/src/duckdb/src/core_functions/scalar/operators/ub_duckdb_func_ops.cpp +0 -1
  946. package/src/duckdb/src/core_functions/scalar/random/ub_duckdb_func_random.cpp +0 -3
  947. package/src/duckdb/src/core_functions/scalar/string/ub_duckdb_func_string.cpp +0 -26
  948. package/src/duckdb/src/core_functions/scalar/struct/ub_duckdb_func_struct.cpp +0 -3
  949. package/src/duckdb/src/core_functions/scalar/union/ub_duckdb_func_union.cpp +0 -4
  950. package/src/duckdb/src/core_functions/ub_duckdb_core_functions.cpp +0 -3
  951. package/src/duckdb/src/execution/expression_executor/ub_duckdb_expression_executor.cpp +0 -11
  952. package/src/duckdb/src/execution/index/art/ub_duckdb_art_index_execution.cpp +0 -12
  953. package/src/duckdb/src/execution/index/art/ub_duckdb_execution_index_art.cpp +0 -11
  954. package/src/duckdb/src/execution/index/ub_duckdb_execution_index.cpp +0 -3
  955. package/src/duckdb/src/execution/nested_loop_join/ub_duckdb_nested_loop_join.cpp +0 -3
  956. package/src/duckdb/src/execution/operator/aggregate/ub_duckdb_operator_aggregate.cpp +0 -9
  957. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/ub_duckdb_operator_csv_sniffer.cpp +0 -7
  958. package/src/duckdb/src/execution/operator/csv_scanner/ub_duckdb_operator_csv_scanner.cpp +0 -10
  959. package/src/duckdb/src/execution/operator/filter/ub_duckdb_operator_filter.cpp +0 -2
  960. package/src/duckdb/src/execution/operator/helper/ub_duckdb_operator_helper.cpp +0 -18
  961. package/src/duckdb/src/execution/operator/join/ub_duckdb_operator_join.cpp +0 -16
  962. package/src/duckdb/src/execution/operator/order/ub_duckdb_operator_order.cpp +0 -3
  963. package/src/duckdb/src/execution/operator/persistent/ub_duckdb_operator_persistent.cpp +0 -10
  964. package/src/duckdb/src/execution/operator/projection/ub_duckdb_operator_projection.cpp +0 -5
  965. package/src/duckdb/src/execution/operator/scan/ub_duckdb_operator_scan.cpp +0 -7
  966. package/src/duckdb/src/execution/operator/schema/ub_duckdb_operator_schema.cpp +0 -12
  967. package/src/duckdb/src/execution/operator/set/ub_duckdb_operator_set.cpp +0 -4
  968. package/src/duckdb/src/execution/physical_plan/ub_duckdb_physical_plan.cpp +0 -44
  969. package/src/duckdb/src/execution/ub_duckdb_execution.cpp +0 -15
  970. package/src/duckdb/src/function/aggregate/algebraic/ub_duckdb_aggr_algebraic.cpp +0 -5
  971. package/src/duckdb/src/function/aggregate/distributive/ub_duckdb_aggr_distr.cpp +0 -3
  972. package/src/duckdb/src/function/aggregate/holistic/ub_duckdb_aggr_holistic.cpp +0 -5
  973. package/src/duckdb/src/function/aggregate/nested/ub_duckdb_aggr_nested.cpp +0 -3
  974. package/src/duckdb/src/function/aggregate/regression/ub_duckdb_aggr_regr.cpp +0 -8
  975. package/src/duckdb/src/function/aggregate/ub_duckdb_func_aggr.cpp +0 -3
  976. package/src/duckdb/src/function/cast/ub_duckdb_func_cast.cpp +0 -17
  977. package/src/duckdb/src/function/cast/union/ub_duckdb_union_cast.cpp +0 -2
  978. package/src/duckdb/src/function/pragma/ub_duckdb_func_pragma.cpp +0 -3
  979. package/src/duckdb/src/function/scalar/bit/ub_duckdb_func_bit.cpp +0 -2
  980. package/src/duckdb/src/function/scalar/blob/ub_duckdb_func_blob.cpp +0 -3
  981. package/src/duckdb/src/function/scalar/compressed_materialization/ub_duckdb_func_compressed_materialization.cpp +0 -3
  982. package/src/duckdb/src/function/scalar/date/ub_duckdb_func_date.cpp +0 -12
  983. package/src/duckdb/src/function/scalar/enum/ub_duckdb_func_enum.cpp +0 -2
  984. package/src/duckdb/src/function/scalar/generic/ub_duckdb_func_generic.cpp +0 -8
  985. package/src/duckdb/src/function/scalar/generic/ub_duckdb_func_generic_main.cpp +0 -2
  986. package/src/duckdb/src/function/scalar/list/ub_duckdb_func_list.cpp +0 -11
  987. package/src/duckdb/src/function/scalar/list/ub_duckdb_func_list_nested.cpp +0 -5
  988. package/src/duckdb/src/function/scalar/map/ub_duckdb_func_map_nested.cpp +0 -7
  989. package/src/duckdb/src/function/scalar/math/ub_duckdb_func_math.cpp +0 -4
  990. package/src/duckdb/src/function/scalar/operators/ub_duckdb_func_ops.cpp +0 -6
  991. package/src/duckdb/src/function/scalar/operators/ub_duckdb_func_ops_main.cpp +0 -5
  992. package/src/duckdb/src/function/scalar/sequence/ub_duckdb_func_seq.cpp +0 -2
  993. package/src/duckdb/src/function/scalar/string/regexp/ub_duckdb_func_string_regexp.cpp +0 -3
  994. package/src/duckdb/src/function/scalar/string/ub_duckdb_func_string.cpp +0 -31
  995. package/src/duckdb/src/function/scalar/string/ub_duckdb_func_string_main.cpp +0 -12
  996. package/src/duckdb/src/function/scalar/struct/ub_duckdb_func_struct.cpp +0 -4
  997. package/src/duckdb/src/function/scalar/struct/ub_duckdb_func_struct_main.cpp +0 -2
  998. package/src/duckdb/src/function/scalar/system/ub_duckdb_func_system.cpp +0 -2
  999. package/src/duckdb/src/function/scalar/ub_duckdb_func_scalar.cpp +0 -9
  1000. package/src/duckdb/src/function/scalar/union/ub_duckdb_func_union.cpp +0 -4
  1001. package/src/duckdb/src/function/table/arrow/ub_duckdb_arrow_conversion.cpp +0 -2
  1002. package/src/duckdb/src/function/table/system/ub_duckdb_table_func_system.cpp +0 -23
  1003. package/src/duckdb/src/function/table/ub_duckdb_func_table.cpp +0 -16
  1004. package/src/duckdb/src/function/table/version/ub_duckdb_func_table_version.cpp +0 -2
  1005. package/src/duckdb/src/function/ub_duckdb_function.cpp +0 -14
  1006. package/src/duckdb/src/main/capi/cast/ub_duckdb_main_capi_cast.cpp +0 -3
  1007. package/src/duckdb/src/main/capi/ub_duckdb_main_capi.cpp +0 -19
  1008. package/src/duckdb/src/main/chunk_scan_state/ub_duckdb_main_chunk_scan_state.cpp +0 -2
  1009. package/src/duckdb/src/main/extension/ub_duckdb_main_extension.cpp +0 -6
  1010. package/src/duckdb/src/main/relation/ub_duckdb_main_relation.cpp +0 -26
  1011. package/src/duckdb/src/main/settings/ub_duckdb_main_settings.cpp +0 -2
  1012. package/src/duckdb/src/main/ub_duckdb_main.cpp +0 -25
  1013. package/src/duckdb/src/optimizer/compressed_materialization/ub_duckdb_optimizer_compressed_materialization.cpp +0 -4
  1014. package/src/duckdb/src/optimizer/join_order/ub_duckdb_optimizer_join_order.cpp +0 -12
  1015. package/src/duckdb/src/optimizer/matcher/ub_duckdb_optimizer_matcher.cpp +0 -2
  1016. package/src/duckdb/src/optimizer/pullup/ub_duckdb_optimizer_pullup.cpp +0 -6
  1017. package/src/duckdb/src/optimizer/pushdown/ub_duckdb_optimizer_pushdown.cpp +0 -12
  1018. package/src/duckdb/src/optimizer/rule/ub_duckdb_optimizer_rules.cpp +0 -16
  1019. package/src/duckdb/src/optimizer/statistics/expression/ub_duckdb_optimizer_statistics_expr.cpp +0 -11
  1020. package/src/duckdb/src/optimizer/statistics/operator/ub_duckdb_optimizer_statistics_op.cpp +0 -11
  1021. package/src/duckdb/src/optimizer/ub_duckdb_optimizer.cpp +0 -20
  1022. package/src/duckdb/src/parallel/ub_duckdb_parallel.cpp +0 -15
  1023. package/src/duckdb/src/parser/constraints/ub_duckdb_constraints.cpp +0 -5
  1024. package/src/duckdb/src/parser/expression/ub_duckdb_expression.cpp +0 -18
  1025. package/src/duckdb/src/parser/parsed_data/ub_duckdb_parsed_data.cpp +0 -24
  1026. package/src/duckdb/src/parser/query_node/ub_duckdb_query_node.cpp +0 -5
  1027. package/src/duckdb/src/parser/statement/ub_duckdb_statement.cpp +0 -25
  1028. package/src/duckdb/src/parser/tableref/ub_duckdb_parser_tableref.cpp +0 -8
  1029. package/src/duckdb/src/parser/transform/constraint/ub_duckdb_transformer_constraint.cpp +0 -2
  1030. package/src/duckdb/src/parser/transform/expression/ub_duckdb_transformer_expression.cpp +0 -20
  1031. package/src/duckdb/src/parser/transform/helpers/ub_duckdb_transformer_helpers.cpp +0 -8
  1032. package/src/duckdb/src/parser/transform/statement/ub_duckdb_transformer_statement.cpp +0 -37
  1033. package/src/duckdb/src/parser/transform/tableref/ub_duckdb_transformer_tableref.cpp +0 -8
  1034. package/src/duckdb/src/parser/ub_duckdb_parser.cpp +0 -15
  1035. package/src/duckdb/src/planner/binder/expression/ub_duckdb_bind_expression.cpp +0 -20
  1036. package/src/duckdb/src/planner/binder/query_node/ub_duckdb_bind_query_node.cpp +0 -12
  1037. package/src/duckdb/src/planner/binder/statement/ub_duckdb_bind_statement.cpp +0 -26
  1038. package/src/duckdb/src/planner/binder/tableref/ub_duckdb_bind_tableref.cpp +0 -17
  1039. package/src/duckdb/src/planner/expression/ub_duckdb_planner_expression.cpp +0 -19
  1040. package/src/duckdb/src/planner/expression_binder/ub_duckdb_expression_binders.cpp +0 -20
  1041. package/src/duckdb/src/planner/filter/ub_duckdb_planner_filter.cpp +0 -4
  1042. package/src/duckdb/src/planner/operator/ub_duckdb_planner_operator.cpp +0 -43
  1043. package/src/duckdb/src/planner/parsed_data/ub_duckdb_planner_parsed_data.cpp +0 -2
  1044. package/src/duckdb/src/planner/subquery/ub_duckdb_planner_subquery.cpp +0 -4
  1045. package/src/duckdb/src/planner/ub_duckdb_planner.cpp +0 -15
  1046. package/src/duckdb/src/storage/buffer/ub_duckdb_storage_buffer.cpp +0 -6
  1047. package/src/duckdb/src/storage/checkpoint/ub_duckdb_storage_checkpoint.cpp +0 -5
  1048. package/src/duckdb/src/storage/compression/chimp/ub_duckdb_storage_compression_chimp.cpp +0 -6
  1049. package/src/duckdb/src/storage/compression/ub_duckdb_storage_compression.cpp +0 -12
  1050. package/src/duckdb/src/storage/metadata/ub_duckdb_storage_metadata.cpp +0 -4
  1051. package/src/duckdb/src/storage/serialization/ub_duckdb_storage_serialization.cpp +0 -16
  1052. package/src/duckdb/src/storage/statistics/ub_duckdb_storage_statistics.cpp +0 -10
  1053. package/src/duckdb/src/storage/table/ub_duckdb_storage_table.cpp +0 -17
  1054. package/src/duckdb/src/storage/ub_duckdb_storage.cpp +0 -20
  1055. package/src/duckdb/src/transaction/ub_duckdb_transaction.cpp +0 -11
@@ -30,6 +30,7 @@ public:
30
30
  public:
31
31
  template <class T>
32
32
  static int UnsignedLength(T value);
33
+
33
34
  template <class SIGNED, class UNSIGNED>
34
35
  static int SignedLength(SIGNED value) {
35
36
  int sign = -(value < 0);
@@ -59,11 +60,12 @@ public:
59
60
  return ptr;
60
61
  }
61
62
 
62
- template <class SIGNED, class UNSIGNED>
63
- static string_t FormatSigned(SIGNED value, Vector &vector) {
64
- int sign = -(value < 0);
65
- UNSIGNED unsigned_value = UnsafeNumericCast<UNSIGNED>(UNSIGNED(value ^ sign) - sign);
66
- int length = UnsignedLength<UNSIGNED>(unsigned_value) - sign;
63
+ template <class T>
64
+ static string_t FormatSigned(T value, Vector &vector) {
65
+ typedef typename MakeUnsigned<T>::type unsigned_t;
66
+ int8_t sign = -(value < 0);
67
+ unsigned_t unsigned_value = unsigned_t(value ^ T(sign)) + unsigned_t(AbsValue(sign));
68
+ auto length = UnsafeNumericCast<idx_t>(UnsignedLength<unsigned_t>(unsigned_value) + AbsValue(sign));
67
69
  string_t result = StringVector::EmptyString(vector, length);
68
70
  auto dataptr = result.GetDataWriteable();
69
71
  auto endptr = dataptr + length;
@@ -89,6 +91,11 @@ template <>
89
91
  int NumericHelper::UnsignedLength(uint32_t value);
90
92
  template <>
91
93
  int NumericHelper::UnsignedLength(uint64_t value);
94
+ template <>
95
+ int NumericHelper::UnsignedLength(hugeint_t value);
96
+
97
+ template <>
98
+ char *NumericHelper::FormatUnsigned(hugeint_t value, char *ptr);
92
99
 
93
100
  template <>
94
101
  std::string NumericHelper::ToString(hugeint_t value);
@@ -96,9 +103,13 @@ std::string NumericHelper::ToString(hugeint_t value);
96
103
  template <>
97
104
  std::string NumericHelper::ToString(uhugeint_t value);
98
105
 
106
+ template <>
107
+ string_t NumericHelper::FormatSigned(hugeint_t value, Vector &vector);
108
+
99
109
  struct DecimalToString {
100
- template <class SIGNED, class UNSIGNED>
110
+ template <class SIGNED>
101
111
  static int DecimalLength(SIGNED value, uint8_t width, uint8_t scale) {
112
+ using UNSIGNED = typename MakeUnsigned<SIGNED>::type;
102
113
  if (scale == 0) {
103
114
  // scale is 0: regular number
104
115
  return NumericHelper::SignedLength<SIGNED, UNSIGNED>(value);
@@ -115,24 +126,27 @@ struct DecimalToString {
115
126
  NumericHelper::SignedLength<SIGNED, UNSIGNED>(value) + 1);
116
127
  }
117
128
 
118
- template <class SIGNED, class UNSIGNED>
129
+ template <class SIGNED>
119
130
  static void FormatDecimal(SIGNED value, uint8_t width, uint8_t scale, char *dst, idx_t len) {
131
+ using UNSIGNED = typename MakeUnsigned<SIGNED>::type;
120
132
  char *end = dst + len;
121
133
  if (value < 0) {
122
134
  value = -value;
123
135
  *dst = '-';
124
136
  }
125
137
  if (scale == 0) {
126
- NumericHelper::FormatUnsigned<UNSIGNED>(value, end);
138
+ NumericHelper::FormatUnsigned<UNSIGNED>(UnsafeNumericCast<UNSIGNED>(value), end);
127
139
  return;
128
140
  }
129
141
  // we write two numbers:
130
142
  // the numbers BEFORE the decimal (major)
131
143
  // and the numbers AFTER the decimal (minor)
132
- UNSIGNED minor = value % (UNSIGNED)NumericHelper::POWERS_OF_TEN[scale];
133
- UNSIGNED major = value / (UNSIGNED)NumericHelper::POWERS_OF_TEN[scale];
144
+ auto minor =
145
+ UnsafeNumericCast<UNSIGNED>(value) % UnsafeNumericCast<UNSIGNED>(NumericHelper::POWERS_OF_TEN[scale]);
146
+ auto major =
147
+ UnsafeNumericCast<UNSIGNED>(value) / UnsafeNumericCast<UNSIGNED>(NumericHelper::POWERS_OF_TEN[scale]);
134
148
  // write the number after the decimal
135
- dst = NumericHelper::FormatUnsigned<UNSIGNED>(minor, end);
149
+ dst = NumericHelper::FormatUnsigned<UNSIGNED>(UnsafeNumericCast<UNSIGNED>(minor), end);
136
150
  // (optionally) pad with zeros and add the decimal point
137
151
  while (dst > (end - scale)) {
138
152
  *--dst = '0';
@@ -142,213 +156,28 @@ struct DecimalToString {
142
156
  D_ASSERT(width > scale || major == 0);
143
157
  if (width > scale) {
144
158
  // there are numbers after the comma
145
- dst = NumericHelper::FormatUnsigned<UNSIGNED>(major, dst);
159
+ dst = NumericHelper::FormatUnsigned<UNSIGNED>(UnsafeNumericCast<UNSIGNED>(major), dst);
146
160
  }
147
161
  }
148
162
 
149
- template <class SIGNED, class UNSIGNED>
163
+ template <class SIGNED>
150
164
  static string_t Format(SIGNED value, uint8_t width, uint8_t scale, Vector &vector) {
151
- int len = DecimalLength<SIGNED, UNSIGNED>(value, width, scale);
152
- string_t result = StringVector::EmptyString(vector, len);
153
- FormatDecimal<SIGNED, UNSIGNED>(value, width, scale, result.GetDataWriteable(), len);
165
+ int len = DecimalLength<SIGNED>(value, width, scale);
166
+ string_t result = StringVector::EmptyString(vector, NumericCast<size_t>(len));
167
+ FormatDecimal<SIGNED>(value, width, scale, result.GetDataWriteable(), UnsafeNumericCast<idx_t>(len));
154
168
  result.Finalize();
155
169
  return result;
156
170
  }
157
171
  };
158
172
 
159
- struct HugeintToStringCast {
160
- static int UnsignedLength(hugeint_t value) {
161
- D_ASSERT(value.upper >= 0);
162
- if (value.upper == 0) {
163
- return NumericHelper::UnsignedLength<uint64_t>(value.lower);
164
- }
165
- // search the length using the POWERS_OF_TEN array
166
- // the length has to be between [17] and [38], because the hugeint is bigger than 2^63
167
- // we use the same approach as above, but split a bit more because comparisons for hugeints are more expensive
168
- if (value >= Hugeint::POWERS_OF_TEN[27]) {
169
- // [27..38]
170
- if (value >= Hugeint::POWERS_OF_TEN[32]) {
171
- if (value >= Hugeint::POWERS_OF_TEN[36]) {
172
- int length = 37;
173
- length += value >= Hugeint::POWERS_OF_TEN[37];
174
- length += value >= Hugeint::POWERS_OF_TEN[38];
175
- return length;
176
- } else {
177
- int length = 33;
178
- length += value >= Hugeint::POWERS_OF_TEN[33];
179
- length += value >= Hugeint::POWERS_OF_TEN[34];
180
- length += value >= Hugeint::POWERS_OF_TEN[35];
181
- return length;
182
- }
183
- } else {
184
- if (value >= Hugeint::POWERS_OF_TEN[30]) {
185
- int length = 31;
186
- length += value >= Hugeint::POWERS_OF_TEN[31];
187
- length += value >= Hugeint::POWERS_OF_TEN[32];
188
- return length;
189
- } else {
190
- int length = 28;
191
- length += value >= Hugeint::POWERS_OF_TEN[28];
192
- length += value >= Hugeint::POWERS_OF_TEN[29];
193
- return length;
194
- }
195
- }
196
- } else {
197
- // [17..27]
198
- if (value >= Hugeint::POWERS_OF_TEN[22]) {
199
- // [22..27]
200
- if (value >= Hugeint::POWERS_OF_TEN[25]) {
201
- int length = 26;
202
- length += value >= Hugeint::POWERS_OF_TEN[26];
203
- return length;
204
- } else {
205
- int length = 23;
206
- length += value >= Hugeint::POWERS_OF_TEN[23];
207
- length += value >= Hugeint::POWERS_OF_TEN[24];
208
- return length;
209
- }
210
- } else {
211
- // [17..22]
212
- if (value >= Hugeint::POWERS_OF_TEN[20]) {
213
- int length = 21;
214
- length += value >= Hugeint::POWERS_OF_TEN[21];
215
- return length;
216
- } else {
217
- int length = 18;
218
- length += value >= Hugeint::POWERS_OF_TEN[18];
219
- length += value >= Hugeint::POWERS_OF_TEN[19];
220
- return length;
221
- }
222
- }
223
- }
224
- }
225
-
226
- // Formats value in reverse and returns a pointer to the beginning.
227
- static char *FormatUnsigned(hugeint_t value, char *ptr) {
228
- while (value.upper > 0) {
229
- // while integer division is slow, hugeint division is MEGA slow
230
- // we want to avoid doing as many divisions as possible
231
- // for that reason we start off doing a division by a large power of ten that uint64_t can hold
232
- // (100000000000000000) - this is the third largest
233
- // the reason we don't use the largest is because that can result in an overflow inside the division
234
- // function
235
- uint64_t remainder;
236
- value = Hugeint::DivModPositive(value, 100000000000000000ULL, remainder);
237
-
238
- auto startptr = ptr;
239
- // now we format the remainder: note that we need to pad with zero's in case
240
- // the remainder is small (i.e. less than 10000000000000000)
241
- ptr = NumericHelper::FormatUnsigned<uint64_t>(remainder, ptr);
242
-
243
- int format_length = UnsafeNumericCast<int>(startptr - ptr);
244
- // pad with zero
245
- for (int i = format_length; i < 17; i++) {
246
- *--ptr = '0';
247
- }
248
- }
249
- // once the value falls in the range of a uint64_t, fallback to formatting as uint64_t to avoid hugeint division
250
- return NumericHelper::FormatUnsigned<uint64_t>(value.lower, ptr);
251
- }
252
-
253
- static string_t FormatSigned(hugeint_t value, Vector &vector) {
254
- int negative = value.upper < 0;
255
- if (negative) {
256
- if (value == NumericLimits<hugeint_t>::Minimum()) {
257
- string_t result = StringVector::AddString(vector, Hugeint::HUGEINT_MINIMUM_STRING);
258
- return result;
259
- }
260
- Hugeint::NegateInPlace(value);
261
- }
262
- int length = UnsignedLength(value) + negative;
263
- string_t result = StringVector::EmptyString(vector, length);
264
- auto dataptr = result.GetDataWriteable();
265
- auto endptr = dataptr + length;
266
- if (value.upper == 0) {
267
- // small value: format as uint64_t
268
- endptr = NumericHelper::FormatUnsigned<uint64_t>(value.lower, endptr);
269
- } else {
270
- endptr = FormatUnsigned(value, endptr);
271
- }
272
- if (negative) {
273
- *--endptr = '-';
274
- }
275
- D_ASSERT(endptr == dataptr);
276
- result.Finalize();
277
- return result;
278
- }
279
-
280
- static int DecimalLength(hugeint_t value, uint8_t width, uint8_t scale) {
281
- D_ASSERT(value > NumericLimits<hugeint_t>::Minimum());
282
- int negative;
283
-
284
- if (value.upper < 0) {
285
- Hugeint::NegateInPlace(value);
286
- negative = 1;
287
- } else {
288
- negative = 0;
289
- }
290
- if (scale == 0) {
291
- // scale is 0: regular number
292
- return UnsignedLength(value) + negative;
293
- }
294
- // length is max of either:
295
- // scale + 2 OR
296
- // integer length + 1
297
- // scale + 2 happens when the number is in the range of (-1, 1)
298
- // in that case we print "0.XXX", which is the scale, plus "0." (2 chars)
299
- // integer length + 1 happens when the number is outside of that range
300
- // in that case we print the integer number, but with one extra character ('.')
301
- auto extra_numbers = width > scale ? 2 : 1;
302
- return MaxValue(scale + extra_numbers, UnsignedLength(value) + 1) + negative;
303
- }
304
-
305
- static void FormatDecimal(hugeint_t value, uint8_t width, uint8_t scale, char *dst, int len) {
306
- auto endptr = dst + len;
307
-
308
- int negative = value.upper < 0;
309
- if (negative) {
310
- Hugeint::NegateInPlace(value);
311
- *dst = '-';
312
- dst++;
313
- }
314
- if (scale == 0) {
315
- // with scale=0 we format the number as a regular number
316
- FormatUnsigned(value, endptr);
317
- return;
318
- }
319
-
320
- // we write two numbers:
321
- // the numbers BEFORE the decimal (major)
322
- // and the numbers AFTER the decimal (minor)
323
- hugeint_t minor;
324
- hugeint_t major = Hugeint::DivMod(value, Hugeint::POWERS_OF_TEN[scale], minor);
325
-
326
- // write the number after the decimal
327
- dst = FormatUnsigned(minor, endptr);
328
- // (optionally) pad with zeros and add the decimal point
329
- while (dst > (endptr - scale)) {
330
- *--dst = '0';
331
- }
332
- *--dst = '.';
333
- // now write the part before the decimal
334
- D_ASSERT(width > scale || major == 0);
335
- if (width > scale) {
336
- dst = FormatUnsigned(major, dst);
337
- }
338
- }
339
-
340
- static string_t FormatDecimal(hugeint_t value, uint8_t width, uint8_t scale, Vector &vector) {
341
- int length = DecimalLength(value, width, scale);
342
- string_t result = StringVector::EmptyString(vector, length);
343
-
344
- auto dst = result.GetDataWriteable();
173
+ template <>
174
+ int DecimalToString::DecimalLength(hugeint_t value, uint8_t width, uint8_t scale);
345
175
 
346
- FormatDecimal(value, width, scale, dst, length);
176
+ template <>
177
+ string_t DecimalToString::Format(hugeint_t value, uint8_t width, uint8_t scale, Vector &vector);
347
178
 
348
- result.Finalize();
349
- return result;
350
- }
351
- };
179
+ template <>
180
+ void DecimalToString::FormatDecimal(hugeint_t value, uint8_t width, uint8_t scale, char *dst, idx_t len);
352
181
 
353
182
  struct UhugeintToStringCast {
354
183
  static string_t Format(uhugeint_t value, Vector &vector) {
@@ -416,9 +245,9 @@ struct DateToStringCast {
416
245
 
417
246
  struct TimeToStringCast {
418
247
  //! Format microseconds to a buffer of length 6. Returns the number of trailing zeros
419
- static int32_t FormatMicros(uint32_t microseconds, char micro_buffer[]) {
248
+ static int32_t FormatMicros(int32_t microseconds, char micro_buffer[]) {
420
249
  char *endptr = micro_buffer + 6;
421
- endptr = NumericHelper::FormatUnsigned<uint32_t>(microseconds, endptr);
250
+ endptr = NumericHelper::FormatUnsigned<int32_t>(microseconds, endptr);
422
251
  while (endptr > micro_buffer) {
423
252
  *--endptr = '0';
424
253
  }
@@ -447,7 +276,7 @@ struct TimeToStringCast {
447
276
  // we write backwards and pad with zeros to the left
448
277
  // now we figure out how many digits we need to include by looking backwards
449
278
  // and checking how many zeros we encounter
450
- length -= FormatMicros(time[3], micro_buffer);
279
+ length -= NumericCast<idx_t>(FormatMicros(time[3], micro_buffer));
451
280
  }
452
281
  return length;
453
282
  }
@@ -484,8 +313,8 @@ struct TimeToStringCast {
484
313
  struct IntervalToStringCast {
485
314
  static void FormatSignedNumber(int64_t value, char buffer[], idx_t &length) {
486
315
  int sign = -(value < 0);
487
- uint64_t unsigned_value = (value ^ sign) - sign;
488
- length += NumericHelper::UnsignedLength<uint64_t>(unsigned_value) - sign;
316
+ auto unsigned_value = NumericCast<uint64_t>((value ^ sign) - sign);
317
+ length += NumericCast<idx_t>(NumericHelper::UnsignedLength<uint64_t>(unsigned_value) - sign);
489
318
  auto endptr = buffer + length;
490
319
  endptr = NumericHelper::FormatUnsigned<uint64_t>(unsigned_value, endptr);
491
320
  if (sign) {
@@ -566,9 +395,8 @@ struct IntervalToStringCast {
566
395
  FormatTwoDigits(sec, buffer, length);
567
396
  if (micros != 0) {
568
397
  buffer[length++] = '.';
569
- auto trailing_zeros =
570
- TimeToStringCast::FormatMicros(UnsafeNumericCast<uint32_t>(micros), buffer + length);
571
- length += 6 - trailing_zeros;
398
+ auto trailing_zeros = TimeToStringCast::FormatMicros(NumericCast<int32_t>(micros), buffer + length);
399
+ length += NumericCast<idx_t>(6 - trailing_zeros);
572
400
  }
573
401
  } else if (length == 0) {
574
402
  // empty interval: default to 00:00:00
@@ -1,6 +1,7 @@
1
1
  #pragma once
2
2
 
3
3
  #include "duckdb/common/common.hpp"
4
+ #include "duckdb/common/numeric_utils.hpp"
4
5
 
5
6
  #include <functional>
6
7
 
@@ -57,10 +58,10 @@ struct dtime_t { // NOLINT
57
58
  return dtime_t(this->micros - micros);
58
59
  };
59
60
  inline dtime_t operator*(const idx_t &copies) const {
60
- return dtime_t(this->micros * copies);
61
+ return dtime_t(this->micros * UnsafeNumericCast<int64_t>(copies));
61
62
  };
62
63
  inline dtime_t operator/(const idx_t &copies) const {
63
- return dtime_t(this->micros / copies);
64
+ return dtime_t(this->micros / UnsafeNumericCast<int64_t>(copies));
64
65
  };
65
66
  inline int64_t operator-(const dtime_t &other) const {
66
67
  return this->micros - other.micros;
@@ -92,23 +93,47 @@ struct dtime_tz_t { // NOLINT
92
93
  static constexpr const uint64_t OFFSET_MASK = ~uint64_t(0) >> TIME_BITS;
93
94
  static constexpr const int32_t MAX_OFFSET = 16 * 60 * 60 - 1; // ±15:59:59
94
95
  static constexpr const int32_t MIN_OFFSET = -MAX_OFFSET;
96
+ static constexpr const uint64_t OFFSET_MICROS = 1000000;
95
97
 
96
98
  uint64_t bits;
97
99
 
100
+ // Offsets are reverse ordered e.g., 13:00:00+01 < 12:00:00+00 < 11:00:00-01
101
+ // Because we encode them as the low order bits,
102
+ // they are also biased into an unsigned integer: (-16, 16) => (32, 0)
103
+ static inline uint64_t encode_offset(int32_t offset) { // NOLINT
104
+ return uint64_t(MAX_OFFSET - offset);
105
+ }
106
+ static inline int32_t decode_offset(uint64_t bits) { // NOLINT
107
+ return MAX_OFFSET - int32_t(bits & OFFSET_MASK);
108
+ }
109
+
110
+ static inline uint64_t encode_micros(int64_t micros) { // NOLINT
111
+ return uint64_t(micros) << OFFSET_BITS;
112
+ }
113
+ static inline int64_t decode_micros(uint64_t bits) { // NOLINT
114
+ return int64_t(bits >> OFFSET_BITS);
115
+ }
116
+
98
117
  dtime_tz_t() = default;
99
118
 
100
- inline dtime_tz_t(dtime_t t, int32_t offset)
101
- : bits((uint64_t(t.micros) << OFFSET_BITS) | uint64_t(MAX_OFFSET - offset)) {
119
+ inline dtime_tz_t(dtime_t t, int32_t offset) : bits(encode_micros(t.micros) | encode_offset(offset)) {
102
120
  }
103
121
  explicit inline dtime_tz_t(uint64_t bits_p) : bits(bits_p) {
104
122
  }
105
123
 
106
124
  inline dtime_t time() const { // NOLINT
107
- return dtime_t(bits >> OFFSET_BITS);
125
+ return dtime_t(decode_micros(bits));
108
126
  }
109
127
 
110
128
  inline int32_t offset() const { // NOLINT
111
- return MAX_OFFSET - int32_t(bits & OFFSET_MASK);
129
+ return decode_offset(bits);
130
+ }
131
+
132
+ // Times are compared after adjusting to offset +00:00:00, e.g., 13:01:00+01 > 12:00:00+00
133
+ // Because we encode them as the high order bits,
134
+ // they are biased by the maximum offset: (0, 24) => (0, 56)
135
+ inline uint64_t sort_key() const { // NOLINT
136
+ return bits + encode_micros((bits & OFFSET_MASK) * OFFSET_MICROS);
112
137
  }
113
138
 
114
139
  // comparison operators
@@ -119,16 +144,16 @@ struct dtime_tz_t { // NOLINT
119
144
  return bits != rhs.bits;
120
145
  };
121
146
  inline bool operator<=(const dtime_tz_t &rhs) const {
122
- return bits <= rhs.bits;
147
+ return sort_key() <= rhs.sort_key();
123
148
  };
124
149
  inline bool operator<(const dtime_tz_t &rhs) const {
125
- return bits < rhs.bits;
150
+ return sort_key() < rhs.sort_key();
126
151
  };
127
152
  inline bool operator>(const dtime_tz_t &rhs) const {
128
- return bits > rhs.bits;
153
+ return sort_key() > rhs.sort_key();
129
154
  };
130
155
  inline bool operator>=(const dtime_tz_t &rhs) const {
131
- return bits >= rhs.bits;
156
+ return sort_key() >= rhs.sort_key();
132
157
  };
133
158
  };
134
159
 
@@ -149,7 +174,7 @@ template <>
149
174
  struct hash<duckdb::dtime_tz_t> {
150
175
  std::size_t operator()(const duckdb::dtime_tz_t &k) const {
151
176
  using std::hash;
152
- return hash<int64_t>()(k.bits);
177
+ return hash<uint64_t>()(k.bits);
153
178
  }
154
179
  };
155
180
  } // namespace std
@@ -35,7 +35,7 @@ inline hash_t MurmurHash32(uint32_t x) {
35
35
 
36
36
  template <class T>
37
37
  hash_t Hash(T value) {
38
- return MurmurHash32(value);
38
+ return MurmurHash32(static_cast<uint32_t>(value));
39
39
  }
40
40
 
41
41
  //! Combine two hashes by XORing them
@@ -32,7 +32,9 @@ public:
32
32
  TupleDataChunkPart(TupleDataChunkPart &&other) noexcept;
33
33
  TupleDataChunkPart &operator=(TupleDataChunkPart &&) noexcept;
34
34
 
35
- static constexpr const uint32_t INVALID_INDEX = (uint32_t)-1;
35
+ public:
36
+ //! Mark heap as empty
37
+ void SetHeapEmpty();
36
38
 
37
39
  public:
38
40
  //! Index/offset of the row block
@@ -48,6 +50,10 @@ public:
48
50
  uint32_t count;
49
51
  //! Lock for recomputing heap pointers (owned by TupleDataChunk)
50
52
  reference<mutex> lock;
53
+
54
+ private:
55
+ //! Marker for empty heaps
56
+ static constexpr const uint32_t INVALID_INDEX = (uint32_t)-1;
51
57
  };
52
58
 
53
59
  struct TupleDataChunk {
@@ -71,7 +71,7 @@ public:
71
71
  sel_vector = sel;
72
72
  }
73
73
  void Initialize(idx_t count = STANDARD_VECTOR_SIZE) {
74
- selection_data = make_shared<SelectionData>(count);
74
+ selection_data = make_shared_ptr<SelectionData>(count);
75
75
  sel_vector = selection_data->owned_data.get();
76
76
  }
77
77
  void Initialize(buffer_ptr<SelectionData> data) {
@@ -12,6 +12,7 @@
12
12
  #include "duckdb/common/constants.hpp"
13
13
  #include "duckdb/common/helper.hpp"
14
14
  #include "duckdb/common/numeric_utils.hpp"
15
+ #include "duckdb/common/limits.hpp"
15
16
 
16
17
  #include <cstring>
17
18
  #include <algorithm>
@@ -26,6 +27,7 @@ public:
26
27
  static constexpr idx_t PREFIX_BYTES = 4 * sizeof(char);
27
28
  static constexpr idx_t INLINE_BYTES = 12 * sizeof(char);
28
29
  static constexpr idx_t HEADER_SIZE = sizeof(uint32_t) + PREFIX_BYTES;
30
+ static constexpr idx_t MAX_STRING_SIZE = NumericLimits<uint32_t>::Maximum();
29
31
  #ifndef DUCKDB_DEBUG_NO_INLINE
30
32
  static constexpr idx_t PREFIX_LENGTH = PREFIX_BYTES;
31
33
  static constexpr idx_t INLINE_LENGTH = INLINE_BYTES;
@@ -158,6 +158,8 @@ public:
158
158
  DUCKDB_API static int64_t GetEpochMicroSeconds(timestamp_t timestamp);
159
159
  //! Convert a timestamp to epoch (in nanoseconds)
160
160
  DUCKDB_API static int64_t GetEpochNanoSeconds(timestamp_t timestamp);
161
+ //! Convert a timestamp to a rounded epoch at a given resolution.
162
+ DUCKDB_API static int64_t GetEpochRounded(timestamp_t timestamp, const int64_t power_of_ten);
161
163
  //! Convert a timestamp to a Julian Day
162
164
  DUCKDB_API static double GetJulianDay(timestamp_t timestamp);
163
165
 
@@ -19,7 +19,7 @@ struct ValidityMask;
19
19
  template <typename V>
20
20
  struct TemplatedValidityData {
21
21
  static constexpr const int BITS_PER_VALUE = sizeof(V) * 8;
22
- static constexpr const V MAX_ENTRY = ~V(0);
22
+ static constexpr const V MAX_ENTRY = V(~V(0));
23
23
 
24
24
  public:
25
25
  inline explicit TemplatedValidityData(idx_t count) {
@@ -17,6 +17,7 @@
17
17
  #include "duckdb/common/types/date.hpp"
18
18
  #include "duckdb/common/types/datetime.hpp"
19
19
  #include "duckdb/common/types/interval.hpp"
20
+ #include "duckdb/common/shared_ptr.hpp"
20
21
 
21
22
  namespace duckdb {
22
23
 
@@ -176,6 +177,9 @@ public:
176
177
  //! Create a map value with the given entries
177
178
  DUCKDB_API static Value MAP(const LogicalType &key_type, const LogicalType &value_type, vector<Value> keys,
178
179
  vector<Value> values);
180
+ //! Create a map value from a set of key-value pairs
181
+ DUCKDB_API static Value MAP(const unordered_map<string, string> &kv_pairs);
182
+
179
183
  //! Create a union value from a selected value and a tag from a set of alternatives.
180
184
  DUCKDB_API static Value UNION(child_list_t<LogicalType> members, uint8_t tag, Value value);
181
185
 
@@ -19,6 +19,11 @@
19
19
 
20
20
  namespace duckdb {
21
21
 
22
+ class VectorCache;
23
+ class VectorStructBuffer;
24
+ class VectorListBuffer;
25
+ struct SelCache;
26
+
22
27
  struct UnifiedVectorFormat {
23
28
  DUCKDB_API UnifiedVectorFormat();
24
29
  // disable copy constructors
@@ -49,11 +54,17 @@ struct RecursiveUnifiedVectorFormat {
49
54
  LogicalType logical_type;
50
55
  };
51
56
 
52
- class VectorCache;
53
- class VectorStructBuffer;
54
- class VectorListBuffer;
57
+ //! This is a helper data structure. It contains all fields necessary to resize a vector.
58
+ struct ResizeInfo {
59
+ ResizeInfo(Vector &vec, data_ptr_t data, optional_ptr<VectorBuffer> buffer, const idx_t multiplier)
60
+ : vec(vec), data(data), buffer(buffer), multiplier(multiplier) {
61
+ }
55
62
 
56
- struct SelCache;
63
+ Vector &vec;
64
+ data_ptr_t data;
65
+ optional_ptr<VectorBuffer> buffer;
66
+ idx_t multiplier;
67
+ };
57
68
 
58
69
  struct ConsecutiveChildListInfo {
59
70
  ConsecutiveChildListInfo() : is_constant(true), needs_slicing(false), child_list_info(list_entry_t(0, 0)) {
@@ -63,7 +74,7 @@ struct ConsecutiveChildListInfo {
63
74
  list_entry_t child_list_info;
64
75
  };
65
76
 
66
- //! Vector of values of a specified PhysicalType.
77
+ //! Vector of values of a specified PhysicalType.
67
78
  class Vector {
68
79
  friend struct ConstantVector;
69
80
  friend struct DictionaryVector;
@@ -185,8 +196,10 @@ public:
185
196
  data = other.data;
186
197
  }
187
198
 
188
- //! This functions resizes the vector
199
+ //! Resizes the vector.
189
200
  DUCKDB_API void Resize(idx_t cur_size, idx_t new_size);
201
+ //! Returns a vector of ResizeInfo containing each (nested) vector to resize.
202
+ DUCKDB_API void FindResizeInfos(vector<ResizeInfo> &resize_infos, const idx_t multiplier);
190
203
 
191
204
  DUCKDB_API void Serialize(Serializer &serializer, idx_t count);
192
205
  DUCKDB_API void Deserialize(Deserializer &deserializer, idx_t count);
@@ -464,15 +477,7 @@ struct FSSTVector {
464
477
  DUCKDB_API static idx_t GetCount(Vector &vector);
465
478
  };
466
479
 
467
- enum class MapInvalidReason : uint8_t {
468
- VALID,
469
- NULL_KEY_LIST,
470
- NULL_KEY,
471
- DUPLICATE_KEY,
472
- NULL_VALUE_LIST,
473
- NOT_ALIGNED,
474
- INVALID_PARAMS
475
- };
480
+ enum class MapInvalidReason : uint8_t { VALID, NULL_KEY, DUPLICATE_KEY, NOT_ALIGNED, INVALID_PARAMS };
476
481
 
477
482
  struct MapVector {
478
483
  DUCKDB_API static const Vector &GetKeys(const Vector &vector);
@@ -12,6 +12,7 @@
12
12
  #include "duckdb/common/constants.hpp"
13
13
  #include "duckdb/common/optional_ptr.hpp"
14
14
  #include "duckdb/common/vector.hpp"
15
+ #include "duckdb/common/helper.hpp"
15
16
 
16
17
  #include <limits>
17
18
 
@@ -34,7 +35,7 @@ using buffer_ptr = shared_ptr<T>;
34
35
 
35
36
  template <class T, typename... ARGS>
36
37
  buffer_ptr<T> make_buffer(ARGS &&...args) { // NOLINT: mimic std casing
37
- return make_shared<T>(std::forward<ARGS>(args)...);
38
+ return make_shared_ptr<T>(std::forward<ARGS>(args)...);
38
39
  }
39
40
 
40
41
  struct list_entry_t { // NOLINT: mimic std casing
@@ -272,6 +273,9 @@ struct LogicalType {
272
273
  return type_info_;
273
274
  }
274
275
 
276
+ //! DeepCopy() will make a unique copy of any ExtraTypeInfo as well
277
+ LogicalType DeepCopy() const;
278
+
275
279
  inline void CopyAuxInfo(const LogicalType &other) {
276
280
  type_info_ = other.type_info_;
277
281
  }
@@ -318,6 +322,11 @@ struct LogicalType {
318
322
  DUCKDB_API void SetAlias(string alias);
319
323
  DUCKDB_API bool HasAlias() const;
320
324
  DUCKDB_API string GetAlias() const;
325
+ DUCKDB_API void SetModifiers(vector<Value> modifiers);
326
+ DUCKDB_API bool HasModifiers() const;
327
+ DUCKDB_API vector<Value> GetModifiersCopy() const;
328
+ DUCKDB_API optional_ptr<vector<Value>> GetModifiers();
329
+ DUCKDB_API optional_ptr<const vector<Value>> GetModifiers() const;
321
330
 
322
331
  //! Returns the maximum logical type when combining the two types - or throws an exception if combining is not possible
323
332
  DUCKDB_API static LogicalType MaxLogicalType(ClientContext &context, const LogicalType &left, const LogicalType &right);
@@ -404,7 +413,8 @@ public:
404
413
  // DEPRECATED - provided for backwards compatibility
405
414
  DUCKDB_API static LogicalType ENUM(const string &enum_name, Vector &ordered_data, idx_t size); // NOLINT
406
415
  DUCKDB_API static LogicalType USER(const string &user_type_name); // NOLINT
407
- DUCKDB_API static LogicalType USER(string catalog, string schema, string name); // NOLINT
416
+ DUCKDB_API static LogicalType USER(const string &user_type_name, const vector<Value> &user_type_mods); // NOLINT
417
+ DUCKDB_API static LogicalType USER(string catalog, string schema, string name, vector<Value> user_type_mods); // NOLINT
408
418
  //! A list of all NUMERIC types (integral and floating point types)
409
419
  DUCKDB_API static const vector<LogicalType> Numeric();
410
420
  //! A list of all INTEGRAL types
@@ -439,6 +449,8 @@ struct UserType {
439
449
  DUCKDB_API static const string &GetCatalog(const LogicalType &type);
440
450
  DUCKDB_API static const string &GetSchema(const LogicalType &type);
441
451
  DUCKDB_API static const string &GetTypeName(const LogicalType &type);
452
+ DUCKDB_API static const vector<Value> &GetTypeModifiers(const LogicalType &type);
453
+ DUCKDB_API static vector<Value> &GetTypeModifiers(LogicalType &type);
442
454
  };
443
455
 
444
456
  struct EnumType {