duckdb 1.3.2 → 1.3.3-dev4.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 (1367) hide show
  1. package/.github/workflows/NodeJS.yml +8 -20
  2. package/binding.gyp +9 -1
  3. package/package.json +1 -1
  4. package/src/connection.cpp +1 -1
  5. package/src/duckdb/extension/core_functions/aggregate/algebraic/avg.cpp +4 -0
  6. package/src/duckdb/extension/core_functions/aggregate/distributive/approx_count.cpp +8 -4
  7. package/src/duckdb/extension/core_functions/aggregate/distributive/arg_min_max.cpp +16 -12
  8. package/src/duckdb/extension/core_functions/aggregate/distributive/bitagg.cpp +5 -1
  9. package/src/duckdb/extension/core_functions/aggregate/distributive/bitstring_agg.cpp +5 -1
  10. package/src/duckdb/extension/core_functions/aggregate/distributive/bool.cpp +4 -0
  11. package/src/duckdb/extension/core_functions/aggregate/distributive/kurtosis.cpp +4 -0
  12. package/src/duckdb/extension/core_functions/aggregate/distributive/product.cpp +4 -0
  13. package/src/duckdb/extension/core_functions/aggregate/distributive/skew.cpp +4 -0
  14. package/src/duckdb/extension/core_functions/aggregate/distributive/string_agg.cpp +6 -2
  15. package/src/duckdb/extension/core_functions/aggregate/distributive/sum.cpp +64 -0
  16. package/src/duckdb/extension/core_functions/aggregate/holistic/approx_top_k.cpp +7 -3
  17. package/src/duckdb/extension/core_functions/aggregate/holistic/approximate_quantile.cpp +7 -4
  18. package/src/duckdb/extension/core_functions/aggregate/holistic/mad.cpp +6 -3
  19. package/src/duckdb/extension/core_functions/aggregate/holistic/mode.cpp +8 -1
  20. package/src/duckdb/extension/core_functions/aggregate/holistic/quantile.cpp +7 -46
  21. package/src/duckdb/extension/core_functions/aggregate/holistic/reservoir_quantile.cpp +9 -15
  22. package/src/duckdb/extension/core_functions/aggregate/nested/binned_histogram.cpp +12 -8
  23. package/src/duckdb/extension/core_functions/aggregate/nested/histogram.cpp +7 -5
  24. package/src/duckdb/extension/core_functions/aggregate/nested/list.cpp +14 -24
  25. package/src/duckdb/extension/core_functions/aggregate/regression/regr_avg.cpp +5 -0
  26. package/src/duckdb/extension/core_functions/aggregate/regression/regr_intercept.cpp +3 -0
  27. package/src/duckdb/extension/core_functions/aggregate/regression/regr_r2.cpp +5 -0
  28. package/src/duckdb/extension/core_functions/aggregate/regression/regr_sxx_syy.cpp +3 -0
  29. package/src/duckdb/extension/core_functions/aggregate/regression/regr_sxy.cpp +4 -0
  30. package/src/duckdb/extension/core_functions/core_functions_extension.cpp +6 -18
  31. package/src/duckdb/extension/core_functions/function_list.cpp +6 -3
  32. package/src/duckdb/extension/core_functions/include/core_functions/aggregate/algebraic/stddev.hpp +1 -1
  33. package/src/duckdb/extension/core_functions/include/core_functions/aggregate/algebraic_functions.hpp +2 -2
  34. package/src/duckdb/extension/core_functions/include/core_functions/aggregate/distributive_functions.hpp +4 -4
  35. package/src/duckdb/extension/core_functions/include/core_functions/aggregate/holistic_functions.hpp +1 -1
  36. package/src/duckdb/extension/core_functions/include/core_functions/aggregate/quantile_sort_tree.hpp +32 -45
  37. package/src/duckdb/extension/core_functions/include/core_functions/aggregate/quantile_state.hpp +1 -1
  38. package/src/duckdb/extension/core_functions/include/core_functions/aggregate/regression_functions.hpp +8 -8
  39. package/src/duckdb/extension/core_functions/include/core_functions/aggregate/sum_helpers.hpp +1 -1
  40. package/src/duckdb/extension/core_functions/include/core_functions/scalar/array_functions.hpp +22 -22
  41. package/src/duckdb/extension/core_functions/include/core_functions/scalar/blob_functions.hpp +2 -2
  42. package/src/duckdb/extension/core_functions/include/core_functions/scalar/date_functions.hpp +15 -5
  43. package/src/duckdb/extension/core_functions/include/core_functions/scalar/generic_functions.hpp +22 -12
  44. package/src/duckdb/extension/core_functions/include/core_functions/scalar/list_functions.hpp +56 -56
  45. package/src/duckdb/extension/core_functions/include/core_functions/scalar/map_functions.hpp +2 -2
  46. package/src/duckdb/extension/core_functions/include/core_functions/scalar/math_functions.hpp +3 -3
  47. package/src/duckdb/extension/core_functions/include/core_functions/scalar/string_functions.hpp +118 -118
  48. package/src/duckdb/extension/core_functions/include/core_functions/scalar/struct_functions.hpp +10 -0
  49. package/src/duckdb/extension/core_functions/include/core_functions_extension.hpp +1 -1
  50. package/src/duckdb/extension/core_functions/lambda_functions.cpp +4 -4
  51. package/src/duckdb/extension/core_functions/scalar/array/array_functions.cpp +2 -1
  52. package/src/duckdb/extension/core_functions/scalar/array/array_value.cpp +7 -3
  53. package/src/duckdb/extension/core_functions/scalar/bit/bitstring.cpp +7 -0
  54. package/src/duckdb/extension/core_functions/scalar/blob/base64.cpp +5 -2
  55. package/src/duckdb/extension/core_functions/scalar/blob/encode.cpp +6 -2
  56. package/src/duckdb/extension/core_functions/scalar/date/date_diff.cpp +7 -3
  57. package/src/duckdb/extension/core_functions/scalar/date/date_part.cpp +187 -33
  58. package/src/duckdb/extension/core_functions/scalar/date/date_sub.cpp +7 -3
  59. package/src/duckdb/extension/core_functions/scalar/date/date_trunc.cpp +12 -8
  60. package/src/duckdb/extension/core_functions/scalar/date/epoch.cpp +16 -12
  61. package/src/duckdb/extension/core_functions/scalar/date/make_date.cpp +11 -7
  62. package/src/duckdb/extension/core_functions/scalar/date/time_bucket.cpp +7 -3
  63. package/src/duckdb/extension/core_functions/scalar/date/to_interval.cpp +4 -0
  64. package/src/duckdb/extension/core_functions/scalar/enum/enum_functions.cpp +6 -6
  65. package/src/duckdb/extension/core_functions/scalar/generic/binning.cpp +8 -4
  66. package/src/duckdb/extension/core_functions/scalar/generic/can_implicitly_cast.cpp +6 -2
  67. package/src/duckdb/extension/core_functions/scalar/generic/cast_to_type.cpp +4 -1
  68. package/src/duckdb/extension/core_functions/scalar/generic/current_setting.cpp +9 -3
  69. package/src/duckdb/extension/core_functions/scalar/generic/least.cpp +5 -2
  70. package/src/duckdb/extension/core_functions/scalar/generic/replace_type.cpp +34 -0
  71. package/src/duckdb/extension/core_functions/scalar/generic/stats.cpp +5 -2
  72. package/src/duckdb/extension/core_functions/scalar/generic/system_functions.cpp +13 -9
  73. package/src/duckdb/extension/core_functions/scalar/generic/typeof.cpp +5 -1
  74. package/src/duckdb/extension/core_functions/scalar/list/array_slice.cpp +29 -26
  75. package/src/duckdb/extension/core_functions/scalar/list/flatten.cpp +9 -49
  76. package/src/duckdb/extension/core_functions/scalar/list/list_aggregates.cpp +17 -34
  77. package/src/duckdb/extension/core_functions/scalar/list/list_has_any_or_all.cpp +4 -50
  78. package/src/duckdb/extension/core_functions/scalar/list/list_reduce.cpp +46 -42
  79. package/src/duckdb/extension/core_functions/scalar/list/list_sort.cpp +48 -51
  80. package/src/duckdb/extension/core_functions/scalar/list/list_value.cpp +224 -144
  81. package/src/duckdb/extension/core_functions/scalar/list/range.cpp +5 -1
  82. package/src/duckdb/extension/core_functions/scalar/map/map.cpp +13 -41
  83. package/src/duckdb/extension/core_functions/scalar/map/map_concat.cpp +6 -6
  84. package/src/duckdb/extension/core_functions/scalar/map/map_entries.cpp +6 -42
  85. package/src/duckdb/extension/core_functions/scalar/map/map_extract.cpp +10 -59
  86. package/src/duckdb/extension/core_functions/scalar/map/map_from_entries.cpp +7 -32
  87. package/src/duckdb/extension/core_functions/scalar/map/map_keys_values.cpp +10 -45
  88. package/src/duckdb/extension/core_functions/scalar/math/numeric.cpp +364 -139
  89. package/src/duckdb/extension/core_functions/scalar/operators/bitwise.cpp +29 -7
  90. package/src/duckdb/extension/core_functions/scalar/random/random.cpp +18 -14
  91. package/src/duckdb/extension/core_functions/scalar/random/setseed.cpp +5 -1
  92. package/src/duckdb/extension/core_functions/scalar/string/hex.cpp +2 -2
  93. package/src/duckdb/extension/core_functions/scalar/string/instr.cpp +5 -3
  94. package/src/duckdb/extension/core_functions/scalar/string/printf.cpp +16 -0
  95. package/src/duckdb/extension/core_functions/scalar/string/repeat.cpp +2 -17
  96. package/src/duckdb/extension/core_functions/scalar/struct/struct_insert.cpp +1 -1
  97. package/src/duckdb/extension/core_functions/scalar/struct/struct_update.cpp +161 -0
  98. package/src/duckdb/extension/core_functions/scalar/union/union_extract.cpp +7 -3
  99. package/src/duckdb/extension/core_functions/scalar/union/union_tag.cpp +7 -3
  100. package/src/duckdb/extension/core_functions/scalar/union/union_value.cpp +7 -3
  101. package/src/duckdb/extension/icu/icu-current.cpp +5 -5
  102. package/src/duckdb/extension/icu/icu-dateadd.cpp +11 -11
  103. package/src/duckdb/extension/icu/icu-datepart.cpp +44 -44
  104. package/src/duckdb/extension/icu/icu-datesub.cpp +10 -10
  105. package/src/duckdb/extension/icu/icu-datetrunc.cpp +6 -6
  106. package/src/duckdb/extension/icu/icu-list-range.cpp +7 -6
  107. package/src/duckdb/extension/icu/icu-makedate.cpp +8 -11
  108. package/src/duckdb/extension/icu/icu-strptime.cpp +23 -29
  109. package/src/duckdb/extension/icu/icu-table-range.cpp +8 -6
  110. package/src/duckdb/extension/icu/icu-timebucket.cpp +5 -5
  111. package/src/duckdb/extension/icu/icu-timezone.cpp +24 -30
  112. package/src/duckdb/extension/icu/icu_extension.cpp +22 -34
  113. package/src/duckdb/extension/icu/include/icu-casts.hpp +2 -2
  114. package/src/duckdb/extension/icu/include/icu-current.hpp +3 -3
  115. package/src/duckdb/extension/icu/include/icu-dateadd.hpp +3 -3
  116. package/src/duckdb/extension/icu/include/icu-datepart.hpp +3 -3
  117. package/src/duckdb/extension/icu/include/icu-datesub.hpp +3 -3
  118. package/src/duckdb/extension/icu/include/icu-datetrunc.hpp +3 -3
  119. package/src/duckdb/extension/icu/include/icu-list-range.hpp +3 -3
  120. package/src/duckdb/extension/icu/include/icu-makedate.hpp +3 -3
  121. package/src/duckdb/extension/icu/include/icu-strptime.hpp +3 -3
  122. package/src/duckdb/extension/icu/include/icu-table-range.hpp +3 -3
  123. package/src/duckdb/extension/icu/include/icu-timebucket.hpp +3 -3
  124. package/src/duckdb/extension/icu/include/icu-timezone.hpp +3 -3
  125. package/src/duckdb/extension/icu/include/icu_extension.hpp +1 -1
  126. package/src/duckdb/extension/json/include/json_common.hpp +10 -2
  127. package/src/duckdb/extension/json/include/json_enums.hpp +3 -1
  128. package/src/duckdb/extension/json/include/json_extension.hpp +1 -1
  129. package/src/duckdb/extension/json/include/json_functions.hpp +4 -4
  130. package/src/duckdb/extension/json/include/json_multi_file_info.hpp +2 -2
  131. package/src/duckdb/extension/json/include/json_reader.hpp +3 -1
  132. package/src/duckdb/extension/json/json_enums.cpp +5 -0
  133. package/src/duckdb/extension/json/json_extension.cpp +27 -38
  134. package/src/duckdb/extension/json/json_functions/copy_json.cpp +8 -3
  135. package/src/duckdb/extension/json/json_functions/json_create.cpp +9 -6
  136. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +3 -20
  137. package/src/duckdb/extension/json/json_functions/json_pretty.cpp +3 -3
  138. package/src/duckdb/extension/json/json_functions/json_serialize_plan.cpp +6 -4
  139. package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +6 -4
  140. package/src/duckdb/extension/json/json_functions/json_table_in_out.cpp +6 -2
  141. package/src/duckdb/extension/json/json_functions/json_transform.cpp +5 -3
  142. package/src/duckdb/extension/json/json_functions/read_json.cpp +4 -3
  143. package/src/duckdb/extension/json/json_functions.cpp +135 -8
  144. package/src/duckdb/extension/json/json_multi_file_info.cpp +5 -2
  145. package/src/duckdb/extension/json/json_reader.cpp +7 -6
  146. package/src/duckdb/extension/parquet/column_reader.cpp +46 -21
  147. package/src/duckdb/extension/parquet/column_writer.cpp +16 -105
  148. package/src/duckdb/extension/parquet/geo_parquet.cpp +231 -171
  149. package/src/duckdb/extension/parquet/include/column_reader.hpp +0 -2
  150. package/src/duckdb/extension/parquet/include/column_writer.hpp +2 -1
  151. package/src/duckdb/extension/parquet/include/geo_parquet.hpp +160 -66
  152. package/src/duckdb/extension/parquet/include/parquet_column_schema.hpp +6 -4
  153. package/src/duckdb/extension/parquet/include/parquet_crypto.hpp +0 -3
  154. package/src/duckdb/extension/parquet/include/parquet_extension.hpp +1 -1
  155. package/src/duckdb/extension/parquet/include/parquet_file_metadata_cache.hpp +5 -2
  156. package/src/duckdb/extension/parquet/include/parquet_multi_file_info.hpp +2 -2
  157. package/src/duckdb/extension/parquet/include/parquet_reader.hpp +10 -2
  158. package/src/duckdb/extension/parquet/include/parquet_rle_bp_encoder.hpp +3 -0
  159. package/src/duckdb/extension/parquet/include/parquet_statistics.hpp +0 -2
  160. package/src/duckdb/extension/parquet/include/parquet_timestamp.hpp +10 -6
  161. package/src/duckdb/extension/parquet/include/parquet_writer.hpp +4 -3
  162. package/src/duckdb/extension/parquet/include/reader/row_number_column_reader.hpp +0 -2
  163. package/src/duckdb/extension/parquet/include/reader/uuid_column_reader.hpp +3 -13
  164. package/src/duckdb/extension/parquet/include/reader/variant/variant_binary_decoder.hpp +150 -0
  165. package/src/duckdb/extension/parquet/include/reader/variant/variant_shredded_conversion.hpp +23 -0
  166. package/src/duckdb/extension/parquet/include/reader/variant/variant_value.hpp +54 -0
  167. package/src/duckdb/extension/parquet/include/reader/variant_column_reader.hpp +44 -0
  168. package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +0 -2
  169. package/src/duckdb/extension/parquet/include/thrift_tools.hpp +3 -3
  170. package/src/duckdb/extension/parquet/include/writer/array_column_writer.hpp +2 -1
  171. package/src/duckdb/extension/parquet/include/writer/list_column_writer.hpp +2 -1
  172. package/src/duckdb/extension/parquet/include/writer/parquet_write_operators.hpp +47 -10
  173. package/src/duckdb/extension/parquet/include/writer/parquet_write_stats.hpp +55 -1
  174. package/src/duckdb/extension/parquet/include/writer/primitive_column_writer.hpp +4 -3
  175. package/src/duckdb/extension/parquet/include/writer/struct_column_writer.hpp +2 -1
  176. package/src/duckdb/extension/parquet/include/writer/templated_column_writer.hpp +6 -3
  177. package/src/duckdb/extension/parquet/include/zstd_file_system.hpp +1 -3
  178. package/src/duckdb/extension/parquet/parquet_crypto.cpp +11 -11
  179. package/src/duckdb/extension/parquet/parquet_extension.cpp +84 -68
  180. package/src/duckdb/extension/parquet/parquet_file_metadata_cache.cpp +4 -4
  181. package/src/duckdb/extension/parquet/parquet_float16.cpp +0 -3
  182. package/src/duckdb/extension/parquet/parquet_metadata.cpp +115 -17
  183. package/src/duckdb/extension/parquet/parquet_multi_file_info.cpp +25 -10
  184. package/src/duckdb/extension/parquet/parquet_reader.cpp +181 -56
  185. package/src/duckdb/extension/parquet/parquet_statistics.cpp +26 -8
  186. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +14 -4
  187. package/src/duckdb/extension/parquet/parquet_writer.cpp +117 -16
  188. package/src/duckdb/extension/parquet/reader/decimal_column_reader.cpp +1 -1
  189. package/src/duckdb/extension/parquet/reader/variant/variant_binary_decoder.cpp +367 -0
  190. package/src/duckdb/extension/parquet/reader/variant/variant_shredded_conversion.cpp +565 -0
  191. package/src/duckdb/extension/parquet/reader/variant/variant_value.cpp +85 -0
  192. package/src/duckdb/extension/parquet/reader/variant_column_reader.cpp +161 -0
  193. package/src/duckdb/extension/parquet/writer/array_column_writer.cpp +5 -2
  194. package/src/duckdb/extension/parquet/writer/enum_column_writer.cpp +1 -1
  195. package/src/duckdb/extension/parquet/writer/list_column_writer.cpp +6 -3
  196. package/src/duckdb/extension/parquet/writer/primitive_column_writer.cpp +24 -8
  197. package/src/duckdb/extension/parquet/writer/struct_column_writer.cpp +4 -2
  198. package/src/duckdb/extension/parquet/zstd_file_system.cpp +7 -6
  199. package/src/duckdb/src/catalog/catalog.cpp +92 -62
  200. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +8 -8
  201. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +14 -8
  202. package/src/duckdb/src/catalog/catalog_set.cpp +1 -0
  203. package/src/duckdb/src/catalog/default/default_functions.cpp +4 -4
  204. package/src/duckdb/src/catalog/default/default_table_functions.cpp +5 -4
  205. package/src/duckdb/src/catalog/default/default_views.cpp +1 -1
  206. package/src/duckdb/src/catalog/duck_catalog.cpp +28 -0
  207. package/src/duckdb/src/common/adbc/adbc.cpp +243 -125
  208. package/src/duckdb/src/common/adbc/driver_manager.cpp +3 -3
  209. package/src/duckdb/src/common/arrow/appender/append_data.cpp +29 -0
  210. package/src/duckdb/src/common/arrow/appender/bool_data.cpp +6 -7
  211. package/src/duckdb/src/common/arrow/appender/fixed_size_list_data.cpp +1 -1
  212. package/src/duckdb/src/common/arrow/appender/struct_data.cpp +1 -1
  213. package/src/duckdb/src/common/arrow/appender/union_data.cpp +0 -1
  214. package/src/duckdb/src/common/arrow/arrow_appender.cpp +13 -17
  215. package/src/duckdb/src/common/arrow/arrow_converter.cpp +14 -6
  216. package/src/duckdb/src/common/arrow/arrow_type_extension.cpp +6 -6
  217. package/src/duckdb/src/common/arrow/physical_arrow_collector.cpp +16 -10
  218. package/src/duckdb/src/common/arrow/schema_metadata.cpp +2 -2
  219. package/src/duckdb/src/common/bignum.cpp +362 -0
  220. package/src/duckdb/src/common/box_renderer.cpp +83 -32
  221. package/src/duckdb/src/common/complex_json.cpp +20 -5
  222. package/src/duckdb/src/common/compressed_file_system.cpp +6 -5
  223. package/src/duckdb/src/common/csv_writer.cpp +381 -0
  224. package/src/duckdb/src/common/encryption_functions.cpp +228 -0
  225. package/src/duckdb/src/common/encryption_key_manager.cpp +143 -0
  226. package/src/duckdb/src/common/encryption_state.cpp +56 -9
  227. package/src/duckdb/src/common/enum_util.cpp +405 -51
  228. package/src/duckdb/src/common/enums/expression_type.cpp +2 -0
  229. package/src/duckdb/src/common/enums/logical_operator_type.cpp +2 -0
  230. package/src/duckdb/src/common/enums/metric_type.cpp +6 -0
  231. package/src/duckdb/src/common/enums/optimizer_type.cpp +1 -0
  232. package/src/duckdb/src/common/enums/physical_operator_type.cpp +2 -0
  233. package/src/duckdb/src/common/enums/statement_type.cpp +2 -0
  234. package/src/duckdb/src/common/error_data.cpp +11 -0
  235. package/src/duckdb/src/common/exception_format_value.cpp +15 -1
  236. package/src/duckdb/src/common/extra_type_info.cpp +43 -0
  237. package/src/duckdb/src/common/file_buffer.cpp +11 -8
  238. package/src/duckdb/src/common/file_system.cpp +82 -12
  239. package/src/duckdb/src/common/gzip_file_system.cpp +13 -11
  240. package/src/duckdb/src/common/local_file_system.cpp +25 -16
  241. package/src/duckdb/src/common/multi_file/base_file_reader.cpp +4 -0
  242. package/src/duckdb/src/common/multi_file/multi_file_column_mapper.cpp +7 -11
  243. package/src/duckdb/src/common/multi_file/multi_file_function.cpp +8 -0
  244. package/src/duckdb/src/common/multi_file/multi_file_list.cpp +8 -4
  245. package/src/duckdb/src/common/multi_file/multi_file_reader.cpp +9 -5
  246. package/src/duckdb/src/common/operator/cast_operators.cpp +147 -6
  247. package/src/duckdb/src/common/operator/string_cast.cpp +41 -12
  248. package/src/duckdb/src/common/pipe_file_system.cpp +10 -5
  249. package/src/duckdb/src/common/progress_bar/progress_bar.cpp +2 -2
  250. package/src/duckdb/src/common/progress_bar/terminal_progress_bar_display.cpp +81 -7
  251. package/src/duckdb/src/common/progress_bar/unscented_kalman_filter.cpp +288 -0
  252. package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
  253. package/src/duckdb/src/common/row_operations/row_aggregate.cpp +8 -11
  254. package/src/duckdb/src/common/row_operations/row_external.cpp +0 -7
  255. package/src/duckdb/src/common/row_operations/row_gather.cpp +0 -5
  256. package/src/duckdb/src/common/row_operations/row_matcher.cpp +55 -37
  257. package/src/duckdb/src/common/row_operations/row_scatter.cpp +0 -6
  258. package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +4 -0
  259. package/src/duckdb/src/common/serializer/buffered_file_writer.cpp +4 -0
  260. package/src/duckdb/src/common/serializer/memory_stream.cpp +4 -0
  261. package/src/duckdb/src/common/sort/partition_state.cpp +3 -3
  262. package/src/duckdb/src/common/sorting/hashed_sort.cpp +724 -0
  263. package/src/duckdb/src/common/sorting/sort.cpp +513 -0
  264. package/src/duckdb/src/common/sorting/sorted_run.cpp +341 -0
  265. package/src/duckdb/src/common/sorting/sorted_run_merger.cpp +969 -0
  266. package/src/duckdb/src/common/string_util.cpp +64 -44
  267. package/src/duckdb/src/common/tree_renderer/text_tree_renderer.cpp +40 -3
  268. package/src/duckdb/src/common/tree_renderer/yaml_tree_renderer.cpp +144 -0
  269. package/src/duckdb/src/common/tree_renderer.cpp +3 -0
  270. package/src/duckdb/src/common/types/bignum.cpp +350 -0
  271. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +27 -29
  272. package/src/duckdb/src/common/types/column/column_data_collection.cpp +216 -68
  273. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +3 -2
  274. package/src/duckdb/src/common/types/conflict_info.cpp +1 -2
  275. package/src/duckdb/src/common/types/conflict_manager.cpp +82 -207
  276. package/src/duckdb/src/common/types/data_chunk.cpp +10 -3
  277. package/src/duckdb/src/common/types/date.cpp +8 -10
  278. package/src/duckdb/src/common/types/hash.cpp +7 -7
  279. package/src/duckdb/src/common/types/row/block_iterator.cpp +34 -0
  280. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +38 -29
  281. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +272 -54
  282. package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +156 -45
  283. package/src/duckdb/src/common/types/row/tuple_data_iterator.cpp +5 -5
  284. package/src/duckdb/src/common/types/row/tuple_data_layout.cpp +122 -18
  285. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +466 -83
  286. package/src/duckdb/src/common/types/row/tuple_data_segment.cpp +8 -28
  287. package/src/duckdb/src/common/types/time.cpp +2 -2
  288. package/src/duckdb/src/common/types/timestamp.cpp +26 -14
  289. package/src/duckdb/src/common/types/uuid.cpp +33 -2
  290. package/src/duckdb/src/common/types/value.cpp +79 -16
  291. package/src/duckdb/src/common/types/vector.cpp +190 -22
  292. package/src/duckdb/src/common/types/vector_buffer.cpp +4 -0
  293. package/src/duckdb/src/common/types/vector_cache.cpp +4 -0
  294. package/src/duckdb/src/common/types.cpp +110 -22
  295. package/src/duckdb/src/common/value_operations/comparison_operations.cpp +24 -27
  296. package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +12 -9
  297. package/src/duckdb/src/common/vector_operations/comparison_operators.cpp +5 -4
  298. package/src/duckdb/src/common/vector_operations/generators.cpp +1 -1
  299. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +70 -135
  300. package/src/duckdb/src/common/vector_operations/null_operations.cpp +1 -1
  301. package/src/duckdb/src/common/vector_operations/vector_copy.cpp +5 -2
  302. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +110 -55
  303. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +14 -10
  304. package/src/duckdb/src/common/virtual_file_system.cpp +12 -3
  305. package/src/duckdb/src/execution/aggregate_hashtable.cpp +88 -50
  306. package/src/duckdb/src/execution/column_binding_resolver.cpp +7 -6
  307. package/src/duckdb/src/execution/expression_executor/execute_function.cpp +113 -2
  308. package/src/duckdb/src/execution/expression_executor.cpp +44 -4
  309. package/src/duckdb/src/execution/index/art/art.cpp +78 -216
  310. package/src/duckdb/src/execution/index/art/art_builder.cpp +91 -0
  311. package/src/duckdb/src/execution/index/art/art_key.cpp +0 -23
  312. package/src/duckdb/src/execution/index/art/art_merger.cpp +3 -4
  313. package/src/duckdb/src/execution/index/art/base_leaf.cpp +10 -11
  314. package/src/duckdb/src/execution/index/art/base_node.cpp +103 -75
  315. package/src/duckdb/src/execution/index/art/iterator.cpp +3 -3
  316. package/src/duckdb/src/execution/index/art/leaf.cpp +9 -11
  317. package/src/duckdb/src/execution/index/art/node.cpp +54 -53
  318. package/src/duckdb/src/execution/index/art/node256.cpp +30 -56
  319. package/src/duckdb/src/execution/index/art/node256_leaf.cpp +43 -30
  320. package/src/duckdb/src/execution/index/art/node48.cpp +69 -101
  321. package/src/duckdb/src/execution/index/art/plan_art.cpp +2 -1
  322. package/src/duckdb/src/execution/index/art/prefix.cpp +115 -125
  323. package/src/duckdb/src/execution/index/bound_index.cpp +39 -10
  324. package/src/duckdb/src/execution/index/fixed_size_allocator.cpp +23 -8
  325. package/src/duckdb/src/execution/index/fixed_size_buffer.cpp +35 -23
  326. package/src/duckdb/src/execution/index/unbound_index.cpp +26 -6
  327. package/src/duckdb/src/execution/join_hashtable.cpp +52 -55
  328. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +3 -0
  329. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +6 -4
  330. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +27 -18
  331. package/src/duckdb/src/execution/operator/aggregate/physical_partitioned_aggregate.cpp +4 -2
  332. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +4 -2
  333. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +8 -2
  334. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +6 -4
  335. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +433 -387
  336. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer.cpp +5 -4
  337. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_file_handle.cpp +12 -4
  338. package/src/duckdb/src/execution/operator/csv_scanner/encode/csv_encoder.cpp +8 -7
  339. package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +7 -5
  340. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +15 -2
  341. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +1 -1
  342. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +4 -4
  343. package/src/duckdb/src/execution/operator/csv_scanner/table_function/csv_multi_file_info.cpp +12 -3
  344. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +7 -2
  345. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +4 -0
  346. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +14 -12
  347. package/src/duckdb/src/execution/operator/helper/physical_batch_collector.cpp +2 -1
  348. package/src/duckdb/src/execution/operator/helper/physical_buffered_batch_collector.cpp +2 -2
  349. package/src/duckdb/src/execution/operator/helper/physical_buffered_collector.cpp +3 -2
  350. package/src/duckdb/src/execution/operator/helper/physical_execute.cpp +2 -2
  351. package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +3 -3
  352. package/src/duckdb/src/execution/operator/helper/physical_limit_percent.cpp +4 -3
  353. package/src/duckdb/src/execution/operator/helper/physical_materialized_collector.cpp +3 -2
  354. package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +29 -9
  355. package/src/duckdb/src/execution/operator/helper/physical_result_collector.cpp +23 -20
  356. package/src/duckdb/src/execution/operator/helper/physical_set.cpp +28 -11
  357. package/src/duckdb/src/execution/operator/helper/physical_set_variable.cpp +3 -2
  358. package/src/duckdb/src/execution/operator/helper/physical_streaming_limit.cpp +4 -3
  359. package/src/duckdb/src/execution/operator/helper/physical_streaming_sample.cpp +3 -3
  360. package/src/duckdb/src/execution/operator/helper/physical_transaction.cpp +4 -4
  361. package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +7 -3
  362. package/src/duckdb/src/execution/operator/helper/physical_verify_vector.cpp +4 -2
  363. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +11 -10
  364. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +3 -2
  365. package/src/duckdb/src/execution/operator/join/physical_comparison_join.cpp +4 -4
  366. package/src/duckdb/src/execution/operator/join/physical_cross_product.cpp +4 -3
  367. package/src/duckdb/src/execution/operator/join/physical_delim_join.cpp +2 -2
  368. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +13 -8
  369. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +15 -14
  370. package/src/duckdb/src/execution/operator/join/physical_join.cpp +3 -3
  371. package/src/duckdb/src/execution/operator/join/physical_left_delim_join.cpp +5 -4
  372. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +7 -7
  373. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +20 -21
  374. package/src/duckdb/src/execution/operator/join/physical_positional_join.cpp +4 -3
  375. package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +18 -6
  376. package/src/duckdb/src/execution/operator/join/physical_right_delim_join.cpp +5 -4
  377. package/src/duckdb/src/execution/operator/order/physical_order.cpp +62 -203
  378. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +5 -4
  379. package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +5 -3
  380. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +9 -7
  381. package/src/duckdb/src/execution/operator/persistent/physical_copy_database.cpp +7 -5
  382. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +12 -7
  383. package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +34 -5
  384. package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +6 -20
  385. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +91 -74
  386. package/src/duckdb/src/execution/operator/persistent/physical_merge_into.cpp +516 -0
  387. package/src/duckdb/src/execution/operator/persistent/physical_update.cpp +11 -9
  388. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +7 -4
  389. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +3 -36
  390. package/src/duckdb/src/execution/operator/projection/physical_tableinout_function.cpp +26 -4
  391. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +5 -3
  392. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +9 -7
  393. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +3 -3
  394. package/src/duckdb/src/execution/operator/scan/physical_table_scan.cpp +6 -5
  395. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +11 -9
  396. package/src/duckdb/src/execution/operator/schema/physical_create_art_index.cpp +5 -4
  397. package/src/duckdb/src/execution/operator/schema/physical_create_table.cpp +3 -3
  398. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +3 -2
  399. package/src/duckdb/src/execution/operator/schema/physical_drop.cpp +3 -2
  400. package/src/duckdb/src/execution/operator/set/physical_cte.cpp +5 -4
  401. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +5 -3
  402. package/src/duckdb/src/execution/operator/set/physical_union.cpp +3 -3
  403. package/src/duckdb/src/execution/physical_operator.cpp +42 -32
  404. package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +24 -12
  405. package/src/duckdb/src/execution/physical_plan/plan_asof_join.cpp +5 -3
  406. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +12 -18
  407. package/src/duckdb/src/execution/physical_plan/plan_get.cpp +3 -1
  408. package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +11 -10
  409. package/src/duckdb/src/execution/physical_plan/plan_merge_into.cpp +132 -0
  410. package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +16 -18
  411. package/src/duckdb/src/execution/physical_plan_generator.cpp +8 -5
  412. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +16 -27
  413. package/src/duckdb/src/execution/sample/base_reservoir_sample.cpp +22 -22
  414. package/src/duckdb/src/function/aggregate/distributive/count.cpp +14 -11
  415. package/src/duckdb/src/function/aggregate/distributive/first_last_any.cpp +23 -19
  416. package/src/duckdb/src/function/aggregate/distributive/minmax.cpp +14 -7
  417. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +185 -234
  418. package/src/duckdb/src/function/cast/bignum_casts.cpp +315 -0
  419. package/src/duckdb/src/function/cast/blob_cast.cpp +3 -0
  420. package/src/duckdb/src/function/cast/cast_function_set.cpp +24 -4
  421. package/src/duckdb/src/function/cast/decimal_cast.cpp +3 -3
  422. package/src/duckdb/src/function/cast/default_casts.cpp +12 -4
  423. package/src/duckdb/src/function/cast/enum_casts.cpp +4 -3
  424. package/src/duckdb/src/function/cast/numeric_casts.cpp +3 -3
  425. package/src/duckdb/src/function/cast/string_cast.cpp +14 -11
  426. package/src/duckdb/src/function/cast/struct_cast.cpp +127 -2
  427. package/src/duckdb/src/function/cast/time_casts.cpp +18 -0
  428. package/src/duckdb/src/function/cast/union_casts.cpp +7 -6
  429. package/src/duckdb/src/function/cast/uuid_casts.cpp +3 -0
  430. package/src/duckdb/src/function/cast/variant/from_variant.cpp +697 -0
  431. package/src/duckdb/src/function/cast/variant/to_json.cpp +272 -0
  432. package/src/duckdb/src/function/cast/variant/to_variant.cpp +193 -0
  433. package/src/duckdb/src/function/cast_rules.cpp +38 -4
  434. package/src/duckdb/src/function/copy_blob.cpp +157 -0
  435. package/src/duckdb/src/function/copy_function.cpp +15 -0
  436. package/src/duckdb/src/function/function.cpp +2 -0
  437. package/src/duckdb/src/function/function_binder.cpp +239 -13
  438. package/src/duckdb/src/function/function_list.cpp +8 -0
  439. package/src/duckdb/src/function/macro_function.cpp +263 -70
  440. package/src/duckdb/src/function/pragma/pragma_functions.cpp +6 -38
  441. package/src/duckdb/src/function/pragma/pragma_queries.cpp +37 -22
  442. package/src/duckdb/src/function/register_function_list.cpp +5 -5
  443. package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +43 -34
  444. package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +61 -38
  445. package/src/duckdb/src/function/scalar/create_sort_key.cpp +374 -154
  446. package/src/duckdb/src/function/scalar/date/strftime.cpp +31 -28
  447. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +18 -14
  448. package/src/duckdb/src/function/scalar/generic/error.cpp +18 -7
  449. package/src/duckdb/src/function/scalar/generic/getvariable.cpp +5 -2
  450. package/src/duckdb/src/function/scalar/list/contains_or_position.cpp +4 -52
  451. package/src/duckdb/src/function/scalar/list/list_extract.cpp +5 -12
  452. package/src/duckdb/src/function/scalar/list/list_resize.cpp +1 -1
  453. package/src/duckdb/src/function/scalar/list/list_select.cpp +11 -27
  454. package/src/duckdb/src/function/scalar/map/map_contains.cpp +5 -31
  455. package/src/duckdb/src/function/scalar/operator/add.cpp +6 -1
  456. package/src/duckdb/src/function/scalar/operator/arithmetic.cpp +130 -10
  457. package/src/duckdb/src/function/scalar/operator/multiply.cpp +4 -2
  458. package/src/duckdb/src/function/scalar/operator/subtract.cpp +3 -1
  459. package/src/duckdb/src/function/scalar/sequence/nextval.cpp +7 -3
  460. package/src/duckdb/src/function/scalar/strftime_format.cpp +2 -2
  461. package/src/duckdb/src/function/scalar/string/caseconvert.cpp +4 -0
  462. package/src/duckdb/src/function/scalar/string/concat.cpp +18 -19
  463. package/src/duckdb/src/function/scalar/string/contains.cpp +14 -7
  464. package/src/duckdb/src/function/scalar/string/length.cpp +13 -9
  465. package/src/duckdb/src/function/scalar/string/like.cpp +146 -143
  466. package/src/duckdb/src/function/scalar/string/md5.cpp +6 -2
  467. package/src/duckdb/src/function/scalar/string/nfc_normalize.cpp +5 -1
  468. package/src/duckdb/src/function/scalar/string/prefix.cpp +11 -8
  469. package/src/duckdb/src/function/scalar/string/regexp_escape.cpp +5 -1
  470. package/src/duckdb/src/function/scalar/string/sha1.cpp +5 -1
  471. package/src/duckdb/src/function/scalar/string/sha256.cpp +5 -1
  472. package/src/duckdb/src/function/scalar/string/string_split.cpp +7 -3
  473. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +5 -1
  474. package/src/duckdb/src/function/scalar/string/substring.cpp +10 -6
  475. package/src/duckdb/src/function/scalar/string/suffix.cpp +10 -8
  476. package/src/duckdb/src/function/scalar/struct/remap_struct.cpp +20 -17
  477. package/src/duckdb/src/function/scalar/struct/struct_concat.cpp +1 -1
  478. package/src/duckdb/src/function/scalar/struct/struct_contains.cpp +255 -0
  479. package/src/duckdb/src/function/scalar/struct/struct_pack.cpp +2 -2
  480. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +34 -31
  481. package/src/duckdb/src/function/scalar/system/current_connection_id.cpp +5 -1
  482. package/src/duckdb/src/function/scalar/system/current_query_id.cpp +5 -1
  483. package/src/duckdb/src/function/scalar/system/current_transaction_id.cpp +5 -1
  484. package/src/duckdb/src/function/scalar/system/parse_log_message.cpp +5 -1
  485. package/src/duckdb/src/function/scalar/system/write_log.cpp +11 -13
  486. package/src/duckdb/src/function/scalar/variant/variant_extract.cpp +234 -0
  487. package/src/duckdb/src/function/scalar/variant/variant_typeof.cpp +70 -0
  488. package/src/duckdb/src/function/scalar/variant/variant_utils.cpp +412 -0
  489. package/src/duckdb/src/function/scalar_macro_function.cpp +8 -11
  490. package/src/duckdb/src/function/table/arrow/arrow_array_scan_state.cpp +2 -3
  491. package/src/duckdb/src/function/table/arrow/arrow_duck_schema.cpp +27 -2
  492. package/src/duckdb/src/function/table/arrow.cpp +37 -17
  493. package/src/duckdb/src/function/table/arrow_conversion.cpp +186 -236
  494. package/src/duckdb/src/function/table/copy_csv.cpp +76 -245
  495. package/src/duckdb/src/function/table/direct_file_reader.cpp +172 -0
  496. package/src/duckdb/src/function/table/read_file.cpp +90 -220
  497. package/src/duckdb/src/function/table/sniff_csv.cpp +0 -1
  498. package/src/duckdb/src/function/table/system/duckdb_approx_database_count.cpp +43 -0
  499. package/src/duckdb/src/function/table/system/duckdb_columns.cpp +2 -2
  500. package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +3 -7
  501. package/src/duckdb/src/function/table/system/duckdb_databases.cpp +20 -5
  502. package/src/duckdb/src/function/table/system/duckdb_extensions.cpp +10 -5
  503. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +6 -22
  504. package/src/duckdb/src/function/table/system/duckdb_log.cpp +41 -5
  505. package/src/duckdb/src/function/table/system/duckdb_log_contexts.cpp +15 -6
  506. package/src/duckdb/src/function/table/system/duckdb_settings.cpp +29 -6
  507. package/src/duckdb/src/function/table/system/duckdb_types.cpp +4 -0
  508. package/src/duckdb/src/function/table/system/logging_utils.cpp +154 -0
  509. package/src/duckdb/src/function/table/system/pragma_database_size.cpp +2 -2
  510. package/src/duckdb/src/function/table/system/test_all_types.cpp +30 -6
  511. package/src/duckdb/src/function/table/system_functions.cpp +2 -0
  512. package/src/duckdb/src/function/table/table_scan.cpp +82 -48
  513. package/src/duckdb/src/function/table/version/pragma_version.cpp +7 -4
  514. package/src/duckdb/src/function/window/window_aggregate_function.cpp +56 -46
  515. package/src/duckdb/src/function/window/window_aggregator.cpp +33 -19
  516. package/src/duckdb/src/function/window/window_boundaries_state.cpp +12 -2
  517. package/src/duckdb/src/function/window/window_collection.cpp +30 -0
  518. package/src/duckdb/src/function/window/window_constant_aggregator.cpp +32 -24
  519. package/src/duckdb/src/function/window/window_custom_aggregator.cpp +54 -40
  520. package/src/duckdb/src/function/window/window_distinct_aggregator.cpp +200 -251
  521. package/src/duckdb/src/function/window/window_executor.cpp +44 -36
  522. package/src/duckdb/src/function/window/window_index_tree.cpp +26 -16
  523. package/src/duckdb/src/function/window/window_merge_sort_tree.cpp +98 -151
  524. package/src/duckdb/src/function/window/window_naive_aggregator.cpp +94 -72
  525. package/src/duckdb/src/function/window/window_rank_function.cpp +57 -63
  526. package/src/duckdb/src/function/window/window_rownumber_function.cpp +45 -47
  527. package/src/duckdb/src/function/window/window_segment_tree.cpp +28 -22
  528. package/src/duckdb/src/function/window/window_token_tree.cpp +46 -41
  529. package/src/duckdb/src/function/window/window_value_function.cpp +632 -93
  530. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +24 -5
  531. package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +5 -2
  532. package/src/duckdb/src/include/duckdb/catalog/duck_catalog.hpp +16 -0
  533. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +68 -1
  534. package/src/duckdb/src/include/duckdb/common/allocator.hpp +3 -0
  535. package/src/duckdb/src/include/duckdb/common/arena_linked_list.hpp +169 -0
  536. package/src/duckdb/src/include/duckdb/common/arrow/appender/append_data.hpp +31 -55
  537. package/src/duckdb/src/include/duckdb/common/arrow/appender/enum_data.hpp +1 -1
  538. package/src/duckdb/src/include/duckdb/common/arrow/appender/list_data.hpp +1 -1
  539. package/src/duckdb/src/include/duckdb/common/arrow/appender/list_view_data.hpp +1 -1
  540. package/src/duckdb/src/include/duckdb/common/arrow/appender/map_data.hpp +1 -1
  541. package/src/duckdb/src/include/duckdb/common/arrow/appender/scalar_data.hpp +1 -1
  542. package/src/duckdb/src/include/duckdb/common/arrow/appender/varchar_data.hpp +6 -6
  543. package/src/duckdb/src/include/duckdb/common/arrow/arrow_wrapper.hpp +10 -0
  544. package/src/duckdb/src/include/duckdb/common/arrow/physical_arrow_batch_collector.hpp +2 -2
  545. package/src/duckdb/src/include/duckdb/common/arrow/physical_arrow_collector.hpp +3 -4
  546. package/src/duckdb/src/include/duckdb/common/bignum.hpp +85 -0
  547. package/src/duckdb/src/include/duckdb/common/box_renderer.hpp +4 -4
  548. package/src/duckdb/src/include/duckdb/common/chrono.hpp +1 -0
  549. package/src/duckdb/src/include/duckdb/common/complex_json.hpp +15 -4
  550. package/src/duckdb/src/include/duckdb/common/compressed_file_system.hpp +2 -2
  551. package/src/duckdb/src/include/duckdb/common/csv_writer.hpp +153 -0
  552. package/src/duckdb/src/include/duckdb/common/encryption_functions.hpp +54 -0
  553. package/src/duckdb/src/include/duckdb/common/encryption_key_manager.hpp +80 -0
  554. package/src/duckdb/src/include/duckdb/common/encryption_state.hpp +25 -9
  555. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +120 -0
  556. package/src/duckdb/src/include/duckdb/common/enums/arrow_format_version.hpp +33 -0
  557. package/src/duckdb/src/include/duckdb/common/enums/checkpoint_abort.hpp +22 -0
  558. package/src/duckdb/src/include/duckdb/common/enums/checkpoint_type.hpp +3 -1
  559. package/src/duckdb/src/include/duckdb/common/enums/copy_option_mode.hpp +17 -0
  560. package/src/duckdb/src/include/duckdb/common/enums/debug_vector_verification.hpp +2 -1
  561. package/src/duckdb/src/include/duckdb/common/enums/explain_format.hpp +1 -1
  562. package/src/duckdb/src/include/duckdb/common/enums/expression_type.hpp +1 -0
  563. package/src/duckdb/src/include/duckdb/common/enums/file_glob_options.hpp +11 -3
  564. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +1 -0
  565. package/src/duckdb/src/include/duckdb/common/enums/merge_action_type.hpp +19 -0
  566. package/src/duckdb/src/include/duckdb/common/enums/metric_type.hpp +3 -0
  567. package/src/duckdb/src/include/duckdb/common/enums/optimizer_type.hpp +2 -1
  568. package/src/duckdb/src/include/duckdb/common/enums/ordinality_request_type.hpp +16 -0
  569. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +1 -0
  570. package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +1 -0
  571. package/src/duckdb/src/include/duckdb/common/enums/tableref_type.hpp +2 -1
  572. package/src/duckdb/src/include/duckdb/common/enums/thread_pin_mode.hpp +17 -0
  573. package/src/duckdb/src/include/duckdb/common/enums/tuple_data_layout_enums.hpp +25 -0
  574. package/src/duckdb/src/include/duckdb/common/enums/undo_flags.hpp +2 -1
  575. package/src/duckdb/src/include/duckdb/common/error_data.hpp +4 -2
  576. package/src/duckdb/src/include/duckdb/common/exception_format_value.hpp +9 -1
  577. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +25 -1
  578. package/src/duckdb/src/include/duckdb/common/file_buffer.hpp +15 -6
  579. package/src/duckdb/src/include/duckdb/common/file_open_flags.hpp +14 -0
  580. package/src/duckdb/src/include/duckdb/common/file_opener.hpp +2 -1
  581. package/src/duckdb/src/include/duckdb/common/file_system.hpp +14 -6
  582. package/src/duckdb/src/include/duckdb/common/fsst.hpp +3 -2
  583. package/src/duckdb/src/include/duckdb/common/gzip_file_system.hpp +1 -1
  584. package/src/duckdb/src/include/duckdb/common/helper.hpp +21 -3
  585. package/src/duckdb/src/include/duckdb/common/local_file_system.hpp +1 -1
  586. package/src/duckdb/src/include/duckdb/common/multi_file/base_file_reader.hpp +4 -0
  587. package/src/duckdb/src/include/duckdb/common/multi_file/multi_file_function.hpp +43 -14
  588. package/src/duckdb/src/include/duckdb/common/multi_file/multi_file_list.hpp +4 -3
  589. package/src/duckdb/src/include/duckdb/common/multi_file/multi_file_reader.hpp +10 -3
  590. package/src/duckdb/src/include/duckdb/common/multi_file/multi_file_states.hpp +2 -0
  591. package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +57 -0
  592. package/src/duckdb/src/include/duckdb/common/opener_file_system.hpp +7 -3
  593. package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +84 -0
  594. package/src/duckdb/src/include/duckdb/common/operator/interpolate.hpp +39 -0
  595. package/src/duckdb/src/include/duckdb/common/operator/string_cast.hpp +6 -0
  596. package/src/duckdb/src/include/duckdb/common/optionally_owned_ptr.hpp +18 -2
  597. package/src/duckdb/src/include/duckdb/common/owning_string_map.hpp +8 -0
  598. package/src/duckdb/src/include/duckdb/common/pipe_file_system.hpp +1 -1
  599. package/src/duckdb/src/include/duckdb/common/progress_bar/display/terminal_progress_bar_display.hpp +44 -5
  600. package/src/duckdb/src/include/duckdb/common/progress_bar/progress_bar.hpp +1 -1
  601. package/src/duckdb/src/include/duckdb/common/progress_bar/unscented_kalman_filter.hpp +65 -0
  602. package/src/duckdb/src/include/duckdb/common/row_operations/row_matcher.hpp +8 -14
  603. package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +0 -12
  604. package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_reader.hpp +2 -0
  605. package/src/duckdb/src/include/duckdb/common/serializer/deserializer.hpp +17 -2
  606. package/src/duckdb/src/include/duckdb/common/serializer/memory_stream.hpp +1 -0
  607. package/src/duckdb/src/include/duckdb/common/serializer/read_stream.hpp +9 -1
  608. package/src/duckdb/src/include/duckdb/common/serializer/varint.hpp +62 -0
  609. package/src/duckdb/src/include/duckdb/common/sorting/hashed_sort.hpp +76 -0
  610. package/src/duckdb/src/include/duckdb/common/sorting/sort.hpp +85 -0
  611. package/src/duckdb/src/include/duckdb/common/sorting/sort_key.hpp +442 -0
  612. package/src/duckdb/src/include/duckdb/common/sorting/sort_projection_column.hpp +21 -0
  613. package/src/duckdb/src/include/duckdb/common/sorting/sorted_run.hpp +55 -0
  614. package/src/duckdb/src/include/duckdb/common/sorting/sorted_run_merger.hpp +62 -0
  615. package/src/duckdb/src/include/duckdb/common/tree_renderer/text_tree_renderer.hpp +5 -0
  616. package/src/duckdb/src/include/duckdb/common/tree_renderer/yaml_tree_renderer.hpp +40 -0
  617. package/src/duckdb/src/include/duckdb/common/type_util.hpp +34 -4
  618. package/src/duckdb/src/include/duckdb/common/type_visitor.hpp +36 -6
  619. package/src/duckdb/src/include/duckdb/common/types/bignum.hpp +159 -0
  620. package/src/duckdb/src/include/duckdb/common/types/column/column_data_allocator.hpp +3 -2
  621. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection_segment.hpp +4 -2
  622. package/src/duckdb/src/include/duckdb/common/types/conflict_manager.hpp +202 -56
  623. package/src/duckdb/src/include/duckdb/common/types/constraint_conflict_info.hpp +7 -5
  624. package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +3 -1
  625. package/src/duckdb/src/include/duckdb/common/types/date.hpp +9 -5
  626. package/src/duckdb/src/include/duckdb/common/types/datetime.hpp +11 -2
  627. package/src/duckdb/src/include/duckdb/common/types/double_na_equal.hpp +65 -0
  628. package/src/duckdb/src/include/duckdb/common/types/hash.hpp +22 -10
  629. package/src/duckdb/src/include/duckdb/common/types/hugeint.hpp +6 -6
  630. package/src/duckdb/src/include/duckdb/common/types/row/block_iterator.hpp +360 -0
  631. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +1 -1
  632. package/src/duckdb/src/include/duckdb/common/types/row/row_data_collection.hpp +1 -2
  633. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_allocator.hpp +7 -0
  634. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_collection.hpp +26 -2
  635. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_layout.hpp +43 -5
  636. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_segment.hpp +4 -11
  637. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +10 -1
  638. package/src/duckdb/src/include/duckdb/common/types/selection_vector.hpp +8 -58
  639. package/src/duckdb/src/include/duckdb/common/types/string.hpp +338 -0
  640. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +7 -1
  641. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +7 -3
  642. package/src/duckdb/src/include/duckdb/common/types/uhugeint.hpp +4 -4
  643. package/src/duckdb/src/include/duckdb/common/types/uuid.hpp +5 -0
  644. package/src/duckdb/src/include/duckdb/common/types/validity_mask.hpp +14 -5
  645. package/src/duckdb/src/include/duckdb/common/types/value.hpp +15 -2
  646. package/src/duckdb/src/include/duckdb/common/types/variant.hpp +202 -0
  647. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +118 -5
  648. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +8 -0
  649. package/src/duckdb/src/include/duckdb/common/types.hpp +26 -6
  650. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +50 -11
  651. package/src/duckdb/src/include/duckdb/common/virtual_file_system.hpp +2 -3
  652. package/src/duckdb/src/include/duckdb/common/winapi.hpp +0 -4
  653. package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +8 -6
  654. package/src/duckdb/src/include/duckdb/execution/executor.hpp +0 -2
  655. package/src/duckdb/src/include/duckdb/execution/expression_executor.hpp +4 -0
  656. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +21 -2
  657. package/src/duckdb/src/include/duckdb/execution/ht_entry.hpp +4 -0
  658. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +15 -16
  659. package/src/duckdb/src/include/duckdb/execution/index/art/art_builder.hpp +55 -0
  660. package/src/duckdb/src/include/duckdb/execution/index/art/art_key.hpp +0 -13
  661. package/src/duckdb/src/include/duckdb/execution/index/art/art_merger.hpp +1 -0
  662. package/src/duckdb/src/include/duckdb/execution/index/art/art_operator.hpp +113 -1
  663. package/src/duckdb/src/include/duckdb/execution/index/art/art_scanner.hpp +5 -2
  664. package/src/duckdb/src/include/duckdb/execution/index/art/base_leaf.hpp +2 -1
  665. package/src/duckdb/src/include/duckdb/execution/index/art/base_node.hpp +18 -15
  666. package/src/duckdb/src/include/duckdb/execution/index/art/iterator.hpp +1 -1
  667. package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +1 -1
  668. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +30 -3
  669. package/src/duckdb/src/include/duckdb/execution/index/art/node256.hpp +30 -8
  670. package/src/duckdb/src/include/duckdb/execution/index/art/node256_leaf.hpp +8 -5
  671. package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +36 -9
  672. package/src/duckdb/src/include/duckdb/execution/index/art/prefix.hpp +9 -20
  673. package/src/duckdb/src/include/duckdb/execution/index/bound_index.hpp +8 -6
  674. package/src/duckdb/src/include/duckdb/execution/index/fixed_size_allocator.hpp +21 -4
  675. package/src/duckdb/src/include/duckdb/execution/index/fixed_size_buffer.hpp +95 -11
  676. package/src/duckdb/src/include/duckdb/execution/index/unbound_index.hpp +22 -11
  677. package/src/duckdb/src/include/duckdb/execution/join_hashtable.hpp +6 -1
  678. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/distinct_aggregate_data.hpp +3 -2
  679. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_hash_aggregate.hpp +12 -8
  680. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_partitioned_aggregate.hpp +1 -1
  681. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_perfecthash_aggregate.hpp +1 -1
  682. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_streaming_window.hpp +2 -2
  683. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_ungrouped_aggregate.hpp +3 -2
  684. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_window.hpp +4 -2
  685. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_error.hpp +1 -1
  686. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_file_handle.hpp +3 -0
  687. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_multi_file_info.hpp +3 -3
  688. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_reader_options.hpp +1 -1
  689. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state.hpp +1 -1
  690. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state_machine.hpp +1 -1
  691. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/encode/csv_encoder.hpp +3 -0
  692. package/src/duckdb/src/include/duckdb/execution/operator/filter/physical_filter.hpp +2 -1
  693. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_batch_collector.hpp +1 -1
  694. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_buffered_batch_collector.hpp +1 -1
  695. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_buffered_collector.hpp +1 -1
  696. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_create_secret.hpp +3 -2
  697. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_execute.hpp +1 -1
  698. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_explain_analyze.hpp +2 -2
  699. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit.hpp +2 -2
  700. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit_percent.hpp +2 -2
  701. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_load.hpp +2 -2
  702. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_materialized_collector.hpp +1 -1
  703. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_pragma.hpp +2 -2
  704. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_prepare.hpp +3 -2
  705. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_reservoir_sample.hpp +4 -2
  706. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_reset.hpp +5 -4
  707. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +2 -2
  708. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_set.hpp +6 -3
  709. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_set_variable.hpp +1 -1
  710. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_streaming_limit.hpp +2 -2
  711. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_streaming_sample.hpp +2 -1
  712. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_transaction.hpp +4 -2
  713. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_update_extensions.hpp +3 -2
  714. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_vacuum.hpp +1 -1
  715. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_verify_vector.hpp +1 -1
  716. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_asof_join.hpp +2 -1
  717. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_blockwise_nl_join.hpp +3 -2
  718. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_comparison_join.hpp +2 -2
  719. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_cross_product.hpp +2 -2
  720. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_delim_join.hpp +4 -3
  721. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_hash_join.hpp +4 -4
  722. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_iejoin.hpp +5 -4
  723. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_join.hpp +2 -1
  724. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_left_delim_join.hpp +4 -3
  725. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_nested_loop_join.hpp +6 -5
  726. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp +3 -3
  727. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_positional_join.hpp +2 -2
  728. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_range_join.hpp +3 -3
  729. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_right_delim_join.hpp +4 -3
  730. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_order.hpp +13 -9
  731. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_top_n.hpp +2 -2
  732. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_copy_to_file.hpp +2 -2
  733. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +3 -3
  734. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_database.hpp +2 -1
  735. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +2 -2
  736. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_delete.hpp +2 -2
  737. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_export.hpp +2 -2
  738. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_insert.hpp +3 -3
  739. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_merge_into.hpp +87 -0
  740. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_update.hpp +2 -2
  741. package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_pivot.hpp +2 -1
  742. package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_projection.hpp +2 -7
  743. package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_tableinout_function.hpp +6 -1
  744. package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_unnest.hpp +2 -2
  745. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +4 -4
  746. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_dummy_scan.hpp +2 -2
  747. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_empty_result.hpp +2 -2
  748. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_expression_scan.hpp +4 -3
  749. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_positional_scan.hpp +2 -1
  750. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_table_scan.hpp +4 -3
  751. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_alter.hpp +2 -2
  752. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_attach.hpp +2 -2
  753. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_art_index.hpp +4 -4
  754. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_function.hpp +4 -2
  755. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_schema.hpp +4 -2
  756. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_sequence.hpp +4 -2
  757. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_table.hpp +2 -2
  758. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_type.hpp +1 -1
  759. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_view.hpp +4 -2
  760. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_detach.hpp +2 -2
  761. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_drop.hpp +2 -2
  762. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +2 -2
  763. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +2 -2
  764. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_union.hpp +2 -2
  765. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +23 -22
  766. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +7 -2
  767. package/src/duckdb/src/include/duckdb/execution/radix_partitioned_hashtable.hpp +4 -1
  768. package/src/duckdb/src/include/duckdb/execution/reservoir_sample.hpp +0 -1
  769. package/src/duckdb/src/include/duckdb/function/aggregate/distributive_functions.hpp +3 -3
  770. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +36 -11
  771. package/src/duckdb/src/include/duckdb/function/built_in_functions.hpp +1 -0
  772. package/src/duckdb/src/include/duckdb/function/cast/bound_cast_data.hpp +28 -0
  773. package/src/duckdb/src/include/duckdb/function/cast/cast_function_set.hpp +6 -1
  774. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +5 -1
  775. package/src/duckdb/src/include/duckdb/function/cast/variant/array_to_variant.hpp +66 -0
  776. package/src/duckdb/src/include/duckdb/function/cast/variant/json_to_variant.hpp +283 -0
  777. package/src/duckdb/src/include/duckdb/function/cast/variant/list_to_variant.hpp +70 -0
  778. package/src/duckdb/src/include/duckdb/function/cast/variant/primitive_to_variant.hpp +399 -0
  779. package/src/duckdb/src/include/duckdb/function/cast/variant/struct_to_variant.hpp +111 -0
  780. package/src/duckdb/src/include/duckdb/function/cast/variant/to_variant.hpp +66 -0
  781. package/src/duckdb/src/include/duckdb/function/cast/variant/to_variant_fwd.hpp +179 -0
  782. package/src/duckdb/src/include/duckdb/function/cast/variant/union_to_variant.hpp +59 -0
  783. package/src/duckdb/src/include/duckdb/function/cast/variant/variant_to_variant.hpp +275 -0
  784. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +2 -3
  785. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +28 -10
  786. package/src/duckdb/src/include/duckdb/function/create_sort_key.hpp +13 -0
  787. package/src/duckdb/src/include/duckdb/function/function_binder.hpp +3 -0
  788. package/src/duckdb/src/include/duckdb/function/function_list.hpp +1 -1
  789. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +25 -3
  790. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +18 -6
  791. package/src/duckdb/src/include/duckdb/function/pragma/pragma_functions.hpp +1 -1
  792. package/src/duckdb/src/include/duckdb/function/register_function_list_helper.hpp +34 -2
  793. package/src/duckdb/src/include/duckdb/function/scalar/compressed_materialization_functions.hpp +10 -0
  794. package/src/duckdb/src/include/duckdb/function/scalar/date_functions.hpp +6 -6
  795. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +5 -5
  796. package/src/duckdb/src/include/duckdb/function/scalar/list_functions.hpp +19 -19
  797. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +103 -103
  798. package/src/duckdb/src/include/duckdb/function/scalar/struct_functions.hpp +32 -0
  799. package/src/duckdb/src/include/duckdb/function/scalar/system_functions.hpp +1 -1
  800. package/src/duckdb/src/include/duckdb/function/scalar/variant_functions.hpp +38 -0
  801. package/src/duckdb/src/include/duckdb/function/scalar/variant_utils.hpp +85 -0
  802. package/src/duckdb/src/include/duckdb/function/table/arrow/arrow_duck_schema.hpp +8 -2
  803. package/src/duckdb/src/include/duckdb/function/table/arrow/arrow_type_info.hpp +2 -0
  804. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +26 -11
  805. package/src/duckdb/src/include/duckdb/function/table/direct_file_reader.hpp +39 -0
  806. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +2 -12
  807. package/src/duckdb/src/include/duckdb/function/table/read_file.hpp +83 -0
  808. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +9 -1
  809. package/src/duckdb/src/include/duckdb/function/table_function.hpp +8 -5
  810. package/src/duckdb/src/include/duckdb/function/window/window_aggregate_function.hpp +10 -10
  811. package/src/duckdb/src/include/duckdb/function/window/window_aggregator.hpp +25 -48
  812. package/src/duckdb/src/include/duckdb/function/window/window_collection.hpp +142 -0
  813. package/src/duckdb/src/include/duckdb/function/window/window_constant_aggregator.hpp +11 -12
  814. package/src/duckdb/src/include/duckdb/function/window/window_custom_aggregator.hpp +8 -8
  815. package/src/duckdb/src/include/duckdb/function/window/window_distinct_aggregator.hpp +10 -10
  816. package/src/duckdb/src/include/duckdb/function/window/window_executor.hpp +26 -40
  817. package/src/duckdb/src/include/duckdb/function/window/window_index_tree.hpp +2 -2
  818. package/src/duckdb/src/include/duckdb/function/window/window_merge_sort_tree.hpp +32 -30
  819. package/src/duckdb/src/include/duckdb/function/window/window_naive_aggregator.hpp +5 -3
  820. package/src/duckdb/src/include/duckdb/function/window/window_rank_function.hpp +17 -16
  821. package/src/duckdb/src/include/duckdb/function/window/window_rownumber_function.hpp +10 -9
  822. package/src/duckdb/src/include/duckdb/function/window/window_segment_tree.hpp +8 -8
  823. package/src/duckdb/src/include/duckdb/function/window/window_token_tree.hpp +6 -6
  824. package/src/duckdb/src/include/duckdb/function/window/window_value_function.hpp +44 -21
  825. package/src/duckdb/src/include/duckdb/logging/log_manager.hpp +12 -4
  826. package/src/duckdb/src/include/duckdb/logging/log_storage.hpp +271 -50
  827. package/src/duckdb/src/include/duckdb/main/appender.hpp +37 -16
  828. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +18 -4
  829. package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +23 -6
  830. package/src/duckdb/src/include/duckdb/main/capi/extension_api.hpp +92 -8
  831. package/src/duckdb/src/include/duckdb/main/client_config.hpp +11 -70
  832. package/src/duckdb/src/include/duckdb/main/client_context.hpp +28 -5
  833. package/src/duckdb/src/include/duckdb/main/client_data.hpp +21 -23
  834. package/src/duckdb/src/include/duckdb/main/client_properties.hpp +3 -19
  835. package/src/duckdb/src/include/duckdb/main/config.hpp +48 -111
  836. package/src/duckdb/src/include/duckdb/main/database.hpp +23 -27
  837. package/src/duckdb/src/include/duckdb/main/database_file_opener.hpp +1 -0
  838. package/src/duckdb/src/include/duckdb/main/database_file_path_manager.hpp +39 -0
  839. package/src/duckdb/src/include/duckdb/main/database_manager.hpp +19 -21
  840. package/src/duckdb/src/include/duckdb/main/database_path_and_type.hpp +3 -1
  841. package/src/duckdb/src/include/duckdb/main/db_instance_cache.hpp +8 -4
  842. package/src/duckdb/src/include/duckdb/main/error_manager.hpp +3 -1
  843. package/src/duckdb/src/include/duckdb/main/extension/extension_loader.hpp +120 -0
  844. package/src/duckdb/src/include/duckdb/main/extension.hpp +2 -2
  845. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +35 -0
  846. package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +2 -0
  847. package/src/duckdb/src/include/duckdb/main/extension_manager.hpp +59 -0
  848. package/src/duckdb/src/include/duckdb/main/extension_util.hpp +6 -77
  849. package/src/duckdb/src/include/duckdb/main/query_profiler.hpp +41 -23
  850. package/src/duckdb/src/include/duckdb/main/relation.hpp +1 -1
  851. package/src/duckdb/src/include/duckdb/main/secret/secret.hpp +1 -0
  852. package/src/duckdb/src/include/duckdb/main/secret/secret_manager.hpp +18 -18
  853. package/src/duckdb/src/include/duckdb/main/setting_info.hpp +109 -0
  854. package/src/duckdb/src/include/duckdb/main/settings.hpp +168 -184
  855. package/src/duckdb/src/include/duckdb/main/valid_checker.hpp +5 -2
  856. package/src/duckdb/src/include/duckdb/optimizer/build_probe_side_optimizer.hpp +1 -1
  857. package/src/duckdb/src/include/duckdb/optimizer/column_lifetime_analyzer.hpp +1 -1
  858. package/src/duckdb/src/include/duckdb/optimizer/compressed_materialization.hpp +4 -0
  859. package/src/duckdb/src/include/duckdb/optimizer/cte_inlining.hpp +50 -0
  860. package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +4 -1
  861. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_order_optimizer.hpp +3 -0
  862. package/src/duckdb/src/include/duckdb/optimizer/late_materialization.hpp +1 -1
  863. package/src/duckdb/src/include/duckdb/optimizer/rule/date_trunc_simplification.hpp +73 -0
  864. package/src/duckdb/src/include/duckdb/optimizer/rule/list.hpp +1 -0
  865. package/src/duckdb/src/include/duckdb/parallel/interrupt.hpp +9 -3
  866. package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +1 -0
  867. package/src/duckdb/src/include/duckdb/parser/common_table_expression_info.hpp +3 -1
  868. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +18 -8
  869. package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +3 -4
  870. package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_info.hpp +6 -4
  871. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +2 -0
  872. package/src/duckdb/src/include/duckdb/parser/parsed_expression_iterator.hpp +14 -0
  873. package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
  874. package/src/duckdb/src/include/duckdb/parser/qualified_name.hpp +2 -0
  875. package/src/duckdb/src/include/duckdb/parser/query_node/cte_node.hpp +2 -0
  876. package/src/duckdb/src/include/duckdb/parser/statement/list.hpp +1 -0
  877. package/src/duckdb/src/include/duckdb/parser/statement/merge_into_statement.hpp +72 -0
  878. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -4
  879. package/src/duckdb/src/include/duckdb/parser/statement/update_statement.hpp +1 -0
  880. package/src/duckdb/src/include/duckdb/parser/tableref/bound_ref_wrapper.hpp +38 -0
  881. package/src/duckdb/src/include/duckdb/parser/tableref/column_data_ref.hpp +4 -9
  882. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +2 -0
  883. package/src/duckdb/src/include/duckdb/parser/tableref/list.hpp +1 -0
  884. package/src/duckdb/src/include/duckdb/parser/tableref/showref.hpp +5 -1
  885. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +4 -0
  886. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +3 -0
  887. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +9 -2
  888. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +5 -0
  889. package/src/duckdb/src/include/duckdb/planner/binder.hpp +45 -8
  890. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -0
  891. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +1 -0
  892. package/src/duckdb/src/include/duckdb/planner/bound_tokens.hpp +3 -0
  893. package/src/duckdb/src/include/duckdb/planner/constraints/bound_check_constraint.hpp +8 -0
  894. package/src/duckdb/src/include/duckdb/planner/constraints/bound_foreign_key_constraint.hpp +4 -0
  895. package/src/duckdb/src/include/duckdb/planner/constraints/bound_not_null_constraint.hpp +4 -0
  896. package/src/duckdb/src/include/duckdb/planner/constraints/bound_unique_constraint.hpp +5 -0
  897. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +2 -2
  898. package/src/duckdb/src/include/duckdb/planner/expression_binder/projection_binder.hpp +37 -0
  899. package/src/duckdb/src/include/duckdb/planner/expression_binder/table_function_binder.hpp +3 -1
  900. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +3 -8
  901. package/src/duckdb/src/include/duckdb/planner/expression_iterator.hpp +18 -0
  902. package/src/duckdb/src/include/duckdb/planner/extension_callback.hpp +8 -0
  903. package/src/duckdb/src/include/duckdb/planner/logical_operator_deep_copy.hpp +67 -0
  904. package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +1 -0
  905. package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +1 -0
  906. package/src/duckdb/src/include/duckdb/planner/operator/logical_aggregate.hpp +3 -0
  907. package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +1 -1
  908. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +2 -0
  909. package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +28 -22
  910. package/src/duckdb/src/include/duckdb/planner/operator/logical_join.hpp +1 -1
  911. package/src/duckdb/src/include/duckdb/planner/operator/logical_materialized_cte.hpp +5 -2
  912. package/src/duckdb/src/include/duckdb/planner/operator/logical_merge_into.hpp +75 -0
  913. package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +2 -0
  914. package/src/duckdb/src/include/duckdb/planner/operator/logical_update.hpp +1 -1
  915. package/src/duckdb/src/include/duckdb/planner/query_node/bound_cte_node.hpp +2 -0
  916. package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +26 -0
  917. package/src/duckdb/src/include/duckdb/storage/block.hpp +1 -1
  918. package/src/duckdb/src/include/duckdb/storage/block_manager.hpp +24 -8
  919. package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +3 -1
  920. package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +55 -36
  921. package/src/duckdb/src/include/duckdb/storage/caching_file_system.hpp +10 -4
  922. package/src/duckdb/src/include/duckdb/storage/checkpoint/row_group_writer.hpp +19 -6
  923. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_reader.hpp +1 -1
  924. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +15 -8
  925. package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +6 -8
  926. package/src/duckdb/src/include/duckdb/storage/compression/alp/algorithm/alp.hpp +2 -1
  927. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_fetch.hpp +1 -1
  928. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_analyze.hpp +4 -2
  929. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_fetch.hpp +1 -1
  930. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_scan.hpp +1 -1
  931. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/packed_data.hpp +3 -1
  932. package/src/duckdb/src/include/duckdb/storage/compression/dict_fsst/compression.hpp +1 -1
  933. package/src/duckdb/src/include/duckdb/storage/compression/dict_fsst/decompression.hpp +1 -1
  934. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas.hpp +1 -1
  935. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_fetch.hpp +1 -1
  936. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_scan.hpp +7 -2
  937. package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +5 -0
  938. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +14 -9
  939. package/src/duckdb/src/include/duckdb/storage/external_file_cache.hpp +6 -5
  940. package/src/duckdb/src/include/duckdb/storage/in_memory_block_manager.hpp +7 -2
  941. package/src/duckdb/src/include/duckdb/storage/magic_bytes.hpp +2 -1
  942. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_manager.hpp +15 -0
  943. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_reader.hpp +7 -0
  944. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_writer.hpp +1 -0
  945. package/src/duckdb/src/include/duckdb/storage/optimistic_data_writer.hpp +10 -3
  946. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +14 -3
  947. package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +65 -20
  948. package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +6 -6
  949. package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +2 -2
  950. package/src/duckdb/src/include/duckdb/storage/storage_extension.hpp +4 -4
  951. package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +80 -20
  952. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +43 -17
  953. package/src/duckdb/src/include/duckdb/storage/storage_options.hpp +21 -0
  954. package/src/duckdb/src/include/duckdb/storage/table/array_column_data.hpp +1 -0
  955. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +2 -2
  956. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +7 -1
  957. package/src/duckdb/src/include/duckdb/storage/table/column_data_checkpointer.hpp +5 -2
  958. package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +10 -7
  959. package/src/duckdb/src/include/duckdb/storage/table/data_table_info.hpp +3 -3
  960. package/src/duckdb/src/include/duckdb/storage/table/in_memory_checkpoint.hpp +93 -0
  961. package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +1 -0
  962. package/src/duckdb/src/include/duckdb/storage/table/persistent_table_data.hpp +1 -0
  963. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +17 -2
  964. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +11 -1
  965. package/src/duckdb/src/include/duckdb/storage/table/row_group_segment_tree.hpp +5 -0
  966. package/src/duckdb/src/include/duckdb/storage/table/row_id_column_data.hpp +68 -0
  967. package/src/duckdb/src/include/duckdb/storage/table/segment_lock.hpp +4 -0
  968. package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +34 -14
  969. package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +1 -0
  970. package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +1 -0
  971. package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +55 -46
  972. package/src/duckdb/src/include/duckdb/storage/table/update_segment.hpp +3 -0
  973. package/src/duckdb/src/include/duckdb/storage/temporary_file_manager.hpp +17 -6
  974. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +2 -1
  975. package/src/duckdb/src/include/duckdb/transaction/duck_transaction.hpp +3 -0
  976. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +1 -0
  977. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +3 -1
  978. package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +22 -1
  979. package/src/duckdb/src/include/duckdb/transaction/undo_buffer_allocator.hpp +2 -0
  980. package/src/duckdb/src/include/duckdb/verification/explain_statement_verifier.hpp +23 -0
  981. package/src/duckdb/src/include/duckdb/verification/statement_verifier.hpp +14 -7
  982. package/src/duckdb/src/include/duckdb.h +537 -121
  983. package/src/duckdb/src/include/duckdb_extension.h +122 -14
  984. package/src/duckdb/src/logging/log_manager.cpp +59 -15
  985. package/src/duckdb/src/logging/log_storage.cpp +672 -128
  986. package/src/duckdb/src/main/appender.cpp +129 -88
  987. package/src/duckdb/src/main/attached_database.cpp +47 -52
  988. package/src/duckdb/src/main/capi/aggregate_function-c.cpp +18 -9
  989. package/src/duckdb/src/main/capi/appender-c.cpp +82 -28
  990. package/src/duckdb/src/main/capi/arrow-c.cpp +181 -17
  991. package/src/duckdb/src/main/capi/config-c.cpp +18 -3
  992. package/src/duckdb/src/main/capi/data_chunk-c.cpp +22 -10
  993. package/src/duckdb/src/main/capi/duckdb-c.cpp +64 -21
  994. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +13 -7
  995. package/src/duckdb/src/main/capi/error_data-c.cpp +46 -0
  996. package/src/duckdb/src/main/capi/expression-c.cpp +57 -0
  997. package/src/duckdb/src/main/capi/helper-c.cpp +227 -39
  998. package/src/duckdb/src/main/capi/logical_types-c.cpp +48 -28
  999. package/src/duckdb/src/main/capi/prepared-c.cpp +68 -10
  1000. package/src/duckdb/src/main/capi/profiling_info-c.cpp +6 -4
  1001. package/src/duckdb/src/main/capi/result-c.cpp +16 -95
  1002. package/src/duckdb/src/main/capi/scalar_function-c.cpp +43 -1
  1003. package/src/duckdb/src/main/capi/table_function-c.cpp +9 -0
  1004. package/src/duckdb/src/main/client_config.cpp +21 -0
  1005. package/src/duckdb/src/main/client_context.cpp +153 -77
  1006. package/src/duckdb/src/main/client_context_file_opener.cpp +1 -0
  1007. package/src/duckdb/src/main/client_data.cpp +139 -1
  1008. package/src/duckdb/src/main/client_verify.cpp +14 -6
  1009. package/src/duckdb/src/main/config.cpp +214 -121
  1010. package/src/duckdb/src/main/database.cpp +31 -58
  1011. package/src/duckdb/src/main/database_file_path_manager.cpp +42 -0
  1012. package/src/duckdb/src/main/database_manager.cpp +134 -108
  1013. package/src/duckdb/src/main/database_path_and_type.cpp +4 -3
  1014. package/src/duckdb/src/main/db_instance_cache.cpp +64 -35
  1015. package/src/duckdb/src/main/error_manager.cpp +2 -1
  1016. package/src/duckdb/src/main/extension/extension_helper.cpp +3 -22
  1017. package/src/duckdb/src/main/extension/extension_install.cpp +6 -6
  1018. package/src/duckdb/src/main/extension/extension_load.cpp +24 -9
  1019. package/src/duckdb/src/main/extension/extension_loader.cpp +234 -0
  1020. package/src/duckdb/src/main/extension_manager.cpp +115 -0
  1021. package/src/duckdb/src/main/http/http_util.cpp +18 -5
  1022. package/src/duckdb/src/main/profiling_info.cpp +8 -2
  1023. package/src/duckdb/src/main/query_profiler.cpp +65 -30
  1024. package/src/duckdb/src/main/query_result.cpp +1 -1
  1025. package/src/duckdb/src/main/relation/query_relation.cpp +23 -0
  1026. package/src/duckdb/src/main/secret/secret_manager.cpp +8 -7
  1027. package/src/duckdb/src/main/settings/autogenerated_settings.cpp +50 -645
  1028. package/src/duckdb/src/main/settings/custom_settings.cpp +111 -152
  1029. package/src/duckdb/src/main/valid_checker.cpp +10 -4
  1030. package/src/duckdb/src/optimizer/build_probe_side_optimizer.cpp +7 -5
  1031. package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +7 -7
  1032. package/src/duckdb/src/optimizer/compressed_materialization/compress_comparison_join.cpp +11 -7
  1033. package/src/duckdb/src/optimizer/compressed_materialization.cpp +56 -39
  1034. package/src/duckdb/src/optimizer/cte_inlining.cpp +225 -0
  1035. package/src/duckdb/src/optimizer/empty_result_pullup.cpp +8 -1
  1036. package/src/duckdb/src/optimizer/filter_combiner.cpp +5 -7
  1037. package/src/duckdb/src/optimizer/filter_pushdown.cpp +3 -0
  1038. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +18 -2
  1039. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +1 -0
  1040. package/src/duckdb/src/optimizer/join_order/plan_enumerator.cpp +4 -3
  1041. package/src/duckdb/src/optimizer/join_order/query_graph_manager.cpp +11 -15
  1042. package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +40 -23
  1043. package/src/duckdb/src/optimizer/late_materialization.cpp +16 -23
  1044. package/src/duckdb/src/optimizer/optimizer.cpp +15 -0
  1045. package/src/duckdb/src/optimizer/pushdown/pushdown_aggregate.cpp +15 -20
  1046. package/src/duckdb/src/optimizer/pushdown/pushdown_left_join.cpp +11 -13
  1047. package/src/duckdb/src/optimizer/pushdown/pushdown_outer_join.cpp +201 -0
  1048. package/src/duckdb/src/optimizer/pushdown/pushdown_projection.cpp +20 -26
  1049. package/src/duckdb/src/optimizer/pushdown/pushdown_set_operation.cpp +11 -14
  1050. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +2 -1
  1051. package/src/duckdb/src/optimizer/rule/date_trunc_simplification.cpp +446 -0
  1052. package/src/duckdb/src/optimizer/rule/join_dependent_filter.cpp +3 -9
  1053. package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +1 -6
  1054. package/src/duckdb/src/optimizer/rule/timestamp_comparison.cpp +3 -6
  1055. package/src/duckdb/src/optimizer/statistics/operator/propagate_aggregate.cpp +33 -1
  1056. package/src/duckdb/src/parallel/event.cpp +1 -3
  1057. package/src/duckdb/src/parallel/executor.cpp +0 -7
  1058. package/src/duckdb/src/parallel/pipeline.cpp +2 -2
  1059. package/src/duckdb/src/parallel/pipeline_executor.cpp +2 -2
  1060. package/src/duckdb/src/parallel/task_scheduler.cpp +146 -34
  1061. package/src/duckdb/src/parallel/thread_context.cpp +2 -9
  1062. package/src/duckdb/src/parser/column_definition.cpp +3 -6
  1063. package/src/duckdb/src/parser/expression/window_expression.cpp +3 -0
  1064. package/src/duckdb/src/parser/parsed_data/attach_info.cpp +8 -35
  1065. package/src/duckdb/src/parser/parsed_data/copy_info.cpp +27 -7
  1066. package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +8 -13
  1067. package/src/duckdb/src/parser/parsed_data/create_info.cpp +16 -0
  1068. package/src/duckdb/src/parser/parsed_data/create_macro_info.cpp +7 -17
  1069. package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +1 -14
  1070. package/src/duckdb/src/parser/parsed_data/create_type_info.cpp +1 -12
  1071. package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +1 -13
  1072. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +22 -0
  1073. package/src/duckdb/src/parser/parser.cpp +5 -0
  1074. package/src/duckdb/src/parser/qualified_name.cpp +26 -0
  1075. package/src/duckdb/src/parser/query_node/cte_node.cpp +1 -0
  1076. package/src/duckdb/src/parser/query_node/select_node.cpp +1 -0
  1077. package/src/duckdb/src/parser/query_node.cpp +1 -0
  1078. package/src/duckdb/src/parser/statement/export_statement.cpp +1 -3
  1079. package/src/duckdb/src/parser/statement/merge_into_statement.cpp +167 -0
  1080. package/src/duckdb/src/parser/statement/update_statement.cpp +19 -16
  1081. package/src/duckdb/src/parser/tableref/bound_ref_wrapper.cpp +29 -0
  1082. package/src/duckdb/src/parser/tableref/column_data_ref.cpp +26 -1
  1083. package/src/duckdb/src/parser/tableref/joinref.cpp +3 -2
  1084. package/src/duckdb/src/parser/tableref/showref.cpp +14 -0
  1085. package/src/duckdb/src/parser/tableref/table_function.cpp +6 -1
  1086. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +0 -1
  1087. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +6 -1
  1088. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +8 -11
  1089. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +3 -0
  1090. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +7 -5
  1091. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +4 -4
  1092. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +16 -80
  1093. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +27 -22
  1094. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +0 -1
  1095. package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +1 -2
  1096. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +22 -14
  1097. package/src/duckdb/src/parser/transform/statement/transform_merge_into.cpp +111 -0
  1098. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +2 -0
  1099. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +1 -1
  1100. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +22 -4
  1101. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +3 -1
  1102. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +12 -6
  1103. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +3 -3
  1104. package/src/duckdb/src/parser/transformer.cpp +8 -7
  1105. package/src/duckdb/src/planner/bind_context.cpp +19 -2
  1106. package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +13 -6
  1107. package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +3 -0
  1108. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +18 -4
  1109. package/src/duckdb/src/planner/binder/expression/bind_macro_expression.cpp +8 -25
  1110. package/src/duckdb/src/planner/binder/expression/bind_operator_expression.cpp +31 -4
  1111. package/src/duckdb/src/planner/binder/expression/bind_unnest_expression.cpp +2 -0
  1112. package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +48 -11
  1113. package/src/duckdb/src/planner/binder/query_node/bind_cte_node.cpp +9 -1
  1114. package/src/duckdb/src/planner/binder/query_node/bind_recursive_cte_node.cpp +4 -0
  1115. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +6 -6
  1116. package/src/duckdb/src/planner/binder/query_node/bind_table_macro_node.cpp +11 -26
  1117. package/src/duckdb/src/planner/binder/query_node/plan_cte_node.cpp +4 -3
  1118. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +10 -4
  1119. package/src/duckdb/src/planner/binder/statement/bind_attach.cpp +15 -0
  1120. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +239 -58
  1121. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +157 -55
  1122. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +30 -25
  1123. package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +2 -3
  1124. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +28 -3
  1125. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +36 -0
  1126. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +282 -322
  1127. package/src/duckdb/src/planner/binder/statement/bind_merge_into.cpp +335 -0
  1128. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +23 -14
  1129. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +37 -27
  1130. package/src/duckdb/src/planner/binder/tableref/bind_bound_table_ref.cpp +13 -0
  1131. package/src/duckdb/src/planner/binder/tableref/bind_column_data_ref.cpp +4 -1
  1132. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +120 -36
  1133. package/src/duckdb/src/planner/binder/tableref/bind_showref.cpp +30 -0
  1134. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +72 -1
  1135. package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +7 -12
  1136. package/src/duckdb/src/planner/binder/tableref/plan_table_function.cpp +15 -1
  1137. package/src/duckdb/src/planner/binder.cpp +42 -175
  1138. package/src/duckdb/src/planner/bound_result_modifier.cpp +8 -0
  1139. package/src/duckdb/src/planner/collation_binding.cpp +2 -1
  1140. package/src/duckdb/src/planner/expression.cpp +1 -1
  1141. package/src/duckdb/src/planner/expression_binder/order_binder.cpp +4 -2
  1142. package/src/duckdb/src/planner/expression_binder/projection_binder.cpp +46 -0
  1143. package/src/duckdb/src/planner/expression_binder/table_function_binder.cpp +8 -6
  1144. package/src/duckdb/src/planner/expression_iterator.cpp +31 -0
  1145. package/src/duckdb/src/planner/logical_operator_deep_copy.cpp +264 -0
  1146. package/src/duckdb/src/planner/logical_operator_visitor.cpp +18 -4
  1147. package/src/duckdb/src/planner/operator/logical_aggregate.cpp +2 -1
  1148. package/src/duckdb/src/planner/operator/logical_comparison_join.cpp +4 -2
  1149. package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +3 -0
  1150. package/src/duckdb/src/planner/operator/logical_get.cpp +7 -2
  1151. package/src/duckdb/src/planner/operator/logical_insert.cpp +5 -2
  1152. package/src/duckdb/src/planner/operator/logical_join.cpp +6 -7
  1153. package/src/duckdb/src/planner/operator/logical_materialized_cte.cpp +1 -0
  1154. package/src/duckdb/src/planner/operator/logical_merge_into.cpp +43 -0
  1155. package/src/duckdb/src/planner/operator/logical_recursive_cte.cpp +8 -0
  1156. package/src/duckdb/src/planner/planner.cpp +4 -2
  1157. package/src/duckdb/src/planner/pragma_handler.cpp +1 -1
  1158. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +76 -7
  1159. package/src/duckdb/src/planner/table_binding.cpp +6 -12
  1160. package/src/duckdb/src/storage/block.cpp +2 -1
  1161. package/src/duckdb/src/storage/buffer/block_handle.cpp +7 -4
  1162. package/src/duckdb/src/storage/buffer/block_manager.cpp +14 -6
  1163. package/src/duckdb/src/storage/buffer/buffer_pool.cpp +2 -2
  1164. package/src/duckdb/src/storage/buffer_manager.cpp +45 -13
  1165. package/src/duckdb/src/storage/caching_file_system.cpp +20 -12
  1166. package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +26 -3
  1167. package/src/duckdb/src/storage/checkpoint/table_data_reader.cpp +3 -1
  1168. package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +56 -35
  1169. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +1 -1
  1170. package/src/duckdb/src/storage/checkpoint_manager.cpp +12 -11
  1171. package/src/duckdb/src/storage/compression/bitpacking.cpp +4 -1
  1172. package/src/duckdb/src/storage/compression/dict_fsst/compression.cpp +48 -25
  1173. package/src/duckdb/src/storage/compression/dict_fsst/decompression.cpp +10 -13
  1174. package/src/duckdb/src/storage/compression/dict_fsst.cpp +2 -2
  1175. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +10 -5
  1176. package/src/duckdb/src/storage/compression/fsst.cpp +3 -2
  1177. package/src/duckdb/src/storage/compression/rle.cpp +1 -1
  1178. package/src/duckdb/src/storage/compression/zstd.cpp +5 -6
  1179. package/src/duckdb/src/storage/data_table.cpp +167 -144
  1180. package/src/duckdb/src/storage/external_file_cache.cpp +6 -6
  1181. package/src/duckdb/src/storage/local_storage.cpp +132 -68
  1182. package/src/duckdb/src/storage/magic_bytes.cpp +3 -2
  1183. package/src/duckdb/src/storage/metadata/metadata_manager.cpp +88 -17
  1184. package/src/duckdb/src/storage/metadata/metadata_reader.cpp +26 -3
  1185. package/src/duckdb/src/storage/metadata/metadata_writer.cpp +7 -0
  1186. package/src/duckdb/src/storage/open_file_storage_extension.cpp +3 -3
  1187. package/src/duckdb/src/storage/optimistic_data_writer.cpp +5 -3
  1188. package/src/duckdb/src/storage/partial_block_manager.cpp +26 -5
  1189. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +72 -22
  1190. package/src/duckdb/src/storage/serialization/serialize_macro_function.cpp +9 -3
  1191. package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +2 -0
  1192. package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +12 -2
  1193. package/src/duckdb/src/storage/serialization/serialize_types.cpp +14 -0
  1194. package/src/duckdb/src/storage/single_file_block_manager.cpp +381 -86
  1195. package/src/duckdb/src/storage/standard_buffer_manager.cpp +86 -30
  1196. package/src/duckdb/src/storage/statistics/base_statistics.cpp +3 -3
  1197. package/src/duckdb/src/storage/statistics/string_stats.cpp +2 -2
  1198. package/src/duckdb/src/storage/statistics/struct_stats.cpp +1 -1
  1199. package/src/duckdb/src/storage/storage_info.cpp +13 -7
  1200. package/src/duckdb/src/storage/storage_manager.cpp +110 -35
  1201. package/src/duckdb/src/storage/table/array_column_data.cpp +4 -0
  1202. package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +22 -15
  1203. package/src/duckdb/src/storage/table/column_data.cpp +53 -14
  1204. package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +17 -17
  1205. package/src/duckdb/src/storage/table/column_segment.cpp +23 -21
  1206. package/src/duckdb/src/storage/table/in_memory_checkpoint.cpp +136 -0
  1207. package/src/duckdb/src/storage/table/list_column_data.cpp +6 -1
  1208. package/src/duckdb/src/storage/table/row_group.cpp +226 -154
  1209. package/src/duckdb/src/storage/table/row_group_collection.cpp +146 -47
  1210. package/src/duckdb/src/storage/table/row_id_column_data.cpp +173 -0
  1211. package/src/duckdb/src/storage/table/row_version_manager.cpp +1 -1
  1212. package/src/duckdb/src/storage/table/standard_column_data.cpp +14 -2
  1213. package/src/duckdb/src/storage/table/struct_column_data.cpp +15 -0
  1214. package/src/duckdb/src/storage/table/update_segment.cpp +111 -5
  1215. package/src/duckdb/src/storage/table_index_list.cpp +137 -73
  1216. package/src/duckdb/src/storage/temporary_file_manager.cpp +103 -28
  1217. package/src/duckdb/src/storage/wal_replay.cpp +158 -36
  1218. package/src/duckdb/src/storage/write_ahead_log.cpp +102 -17
  1219. package/src/duckdb/src/transaction/commit_state.cpp +2 -0
  1220. package/src/duckdb/src/transaction/duck_transaction.cpp +12 -2
  1221. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +66 -35
  1222. package/src/duckdb/src/transaction/meta_transaction.cpp +85 -23
  1223. package/src/duckdb/src/transaction/rollback_state.cpp +7 -0
  1224. package/src/duckdb/src/transaction/transaction_context.cpp +3 -4
  1225. package/src/duckdb/src/transaction/undo_buffer.cpp +5 -4
  1226. package/src/duckdb/src/transaction/undo_buffer_allocator.cpp +1 -0
  1227. package/src/duckdb/src/transaction/wal_write_state.cpp +2 -0
  1228. package/src/duckdb/src/verification/explain_statement_verifier.cpp +16 -0
  1229. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
  1230. package/src/duckdb/src/verification/statement_verifier.cpp +10 -5
  1231. package/src/duckdb/third_party/brotli/common/shared_dictionary.cpp +4 -4
  1232. package/src/duckdb/third_party/fmt/include/fmt/core.h +6 -12
  1233. package/src/duckdb/third_party/fmt/include/fmt/format-inl.h +5 -1
  1234. package/src/duckdb/third_party/fmt/include/fmt/format.h +34 -24
  1235. package/src/duckdb/third_party/fmt/include/fmt/printf.h +49 -21
  1236. package/src/duckdb/third_party/httplib/httplib.hpp +13 -5
  1237. package/src/duckdb/third_party/jaro_winkler/details/jaro_impl.hpp +4 -4
  1238. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +3 -0
  1239. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +56 -1
  1240. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +744 -733
  1241. package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +6 -1
  1242. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +19098 -18654
  1243. package/src/duckdb/third_party/mbedtls/include/des_alt.h +1 -1
  1244. package/src/duckdb/third_party/mbedtls/include/mbedtls/aes_alt.h +1 -1
  1245. package/src/duckdb/third_party/mbedtls/include/mbedtls/aria_alt.h +1 -1
  1246. package/src/duckdb/third_party/mbedtls/include/mbedtls/block_cipher.h +1 -1
  1247. package/src/duckdb/third_party/mbedtls/include/mbedtls/build_info.h +4 -4
  1248. package/src/duckdb/third_party/mbedtls/include/mbedtls/camellia_alt.h +1 -1
  1249. package/src/duckdb/third_party/mbedtls/include/mbedtls/ccm_alt.h +1 -1
  1250. package/src/duckdb/third_party/mbedtls/include/mbedtls/chacha20.h +1 -1
  1251. package/src/duckdb/third_party/mbedtls/include/mbedtls/chachapoly.h +1 -1
  1252. package/src/duckdb/third_party/mbedtls/include/mbedtls/cmac.h +1 -1
  1253. package/src/duckdb/third_party/mbedtls/include/mbedtls/config_psa.h +1 -1
  1254. package/src/duckdb/third_party/mbedtls/include/mbedtls/ecdsa.h +1 -1
  1255. package/src/duckdb/third_party/mbedtls/include/mbedtls/gcm_alt.h +1 -1
  1256. package/src/duckdb/third_party/mbedtls/include/mbedtls/mbedtls_config.h +5 -1
  1257. package/src/duckdb/third_party/mbedtls/include/mbedtls/md5.h +1 -1
  1258. package/src/duckdb/third_party/mbedtls/include/mbedtls/nist_kw.h +1 -1
  1259. package/src/duckdb/third_party/mbedtls/include/mbedtls/pkcs12.h +1 -1
  1260. package/src/duckdb/third_party/mbedtls/include/mbedtls/pkcs5.h +1 -1
  1261. package/src/duckdb/third_party/mbedtls/include/mbedtls/psa_util.h +1 -1
  1262. package/src/duckdb/third_party/mbedtls/include/mbedtls/ripemd160.h +1 -1
  1263. package/src/duckdb/third_party/mbedtls/include/mbedtls/sha3.h +1 -1
  1264. package/src/duckdb/third_party/mbedtls/include/mbedtls/threading.h +1 -1
  1265. package/src/duckdb/third_party/mbedtls/include/mbedtls/timing.h +1 -1
  1266. package/src/duckdb/third_party/mbedtls/include/mbedtls_wrapper.hpp +16 -7
  1267. package/src/duckdb/third_party/mbedtls/include/platform_alt.h +1 -1
  1268. package/src/duckdb/third_party/mbedtls/include/psa/build_info.h +20 -0
  1269. package/src/duckdb/third_party/mbedtls/include/psa/crypto.h +1 -1
  1270. package/src/duckdb/third_party/mbedtls/include/psa/crypto_config.h +1 -1
  1271. package/src/duckdb/third_party/mbedtls/include/psa/crypto_se_driver.h +1 -0
  1272. package/src/duckdb/third_party/mbedtls/include/rsa_alt.h +1 -1
  1273. package/src/duckdb/third_party/mbedtls/include/sha1_alt.h +1 -1
  1274. package/src/duckdb/third_party/mbedtls/include/sha256_alt.h +1 -1
  1275. package/src/duckdb/third_party/mbedtls/include/sha512_alt.h +1 -1
  1276. package/src/duckdb/third_party/mbedtls/include/ssl_misc.h +1 -1
  1277. package/src/duckdb/third_party/mbedtls/library/aes.cpp +1 -1
  1278. package/src/duckdb/third_party/mbedtls/library/aesce.h +136 -1
  1279. package/src/duckdb/third_party/mbedtls/library/alignment.h +9 -9
  1280. package/src/duckdb/third_party/mbedtls/library/asn1parse.cpp +1 -1
  1281. package/src/duckdb/third_party/mbedtls/library/asn1write.cpp +6 -3
  1282. package/src/duckdb/third_party/mbedtls/library/base64.cpp +48 -24
  1283. package/src/duckdb/third_party/mbedtls/library/base64_internal.h +45 -1
  1284. package/src/duckdb/third_party/mbedtls/library/bignum.cpp +3 -3
  1285. package/src/duckdb/third_party/mbedtls/library/bignum_core.cpp +16 -14
  1286. package/src/duckdb/third_party/mbedtls/library/bignum_core.h +10 -18
  1287. package/src/duckdb/third_party/mbedtls/library/block_cipher_internal.h +99 -1
  1288. package/src/duckdb/third_party/mbedtls/library/check_crypto_config.h +141 -1
  1289. package/src/duckdb/third_party/mbedtls/library/cipher.cpp +18 -12
  1290. package/src/duckdb/third_party/mbedtls/library/cipher_invasive.h +1 -0
  1291. package/src/duckdb/third_party/mbedtls/library/cipher_wrap.cpp +110 -10
  1292. package/src/duckdb/third_party/mbedtls/library/cipher_wrap.h +1 -1
  1293. package/src/duckdb/third_party/mbedtls/library/common.h +20 -4
  1294. package/src/duckdb/third_party/mbedtls/library/constant_time.cpp +1 -1
  1295. package/src/duckdb/third_party/mbedtls/library/constant_time_impl.h +28 -43
  1296. package/src/duckdb/third_party/mbedtls/library/constant_time_internal.h +24 -24
  1297. package/src/duckdb/third_party/mbedtls/library/ctr.h +35 -1
  1298. package/src/duckdb/third_party/mbedtls/library/gcm.cpp +2 -2
  1299. package/src/duckdb/third_party/mbedtls/library/md.cpp +11 -11
  1300. package/src/duckdb/third_party/mbedtls/library/md_psa.h +1 -1
  1301. package/src/duckdb/third_party/mbedtls/library/oid.cpp +2 -2
  1302. package/src/duckdb/third_party/mbedtls/library/pem.cpp +5 -2
  1303. package/src/duckdb/third_party/mbedtls/library/pk.cpp +1 -5
  1304. package/src/duckdb/third_party/mbedtls/library/pk_internal.h +4 -4
  1305. package/src/duckdb/third_party/mbedtls/library/pk_wrap.cpp +16 -18
  1306. package/src/duckdb/third_party/mbedtls/library/pkwrite.h +121 -1
  1307. package/src/duckdb/third_party/mbedtls/library/psa_crypto_core.h +995 -1
  1308. package/src/duckdb/third_party/mbedtls/library/psa_util_internal.h +100 -1
  1309. package/src/duckdb/third_party/mbedtls/library/rsa.cpp +4 -4
  1310. package/src/duckdb/third_party/mbedtls/mbedtls_wrapper.cpp +114 -42
  1311. package/src/duckdb/third_party/parquet/parquet_types.cpp +2340 -769
  1312. package/src/duckdb/third_party/parquet/parquet_types.h +400 -4
  1313. package/src/duckdb/third_party/pdqsort/pdqsort.h +550 -0
  1314. package/src/duckdb/third_party/ska_sort/ska_sort.hpp +1494 -0
  1315. package/src/duckdb/third_party/snappy/snappy-stubs-internal.h +18 -18
  1316. package/src/duckdb/third_party/snappy/snappy.cc +6 -6
  1317. package/src/duckdb/third_party/thrift/thrift/protocol/TCompactProtocol.h +4 -4
  1318. package/src/duckdb/third_party/thrift/thrift/protocol/TCompactProtocol.tcc +36 -36
  1319. package/src/duckdb/third_party/utf8proc/include/utf8proc_wrapper.hpp +1 -1
  1320. package/src/duckdb/third_party/utf8proc/utf8proc_wrapper.cpp +1 -1
  1321. package/src/duckdb/third_party/vergesort/detail/insertion_sort.h +56 -0
  1322. package/src/duckdb/third_party/vergesort/detail/is_sorted_until.h +51 -0
  1323. package/src/duckdb/third_party/vergesort/detail/iter_sort3.h +48 -0
  1324. package/src/duckdb/third_party/vergesort/detail/log2.h +41 -0
  1325. package/src/duckdb/third_party/vergesort/detail/prevnext.h +68 -0
  1326. package/src/duckdb/third_party/vergesort/detail/quicksort.h +138 -0
  1327. package/src/duckdb/third_party/vergesort/vergesort.h +352 -0
  1328. package/src/duckdb/ub_extension_core_functions_scalar_generic.cpp +2 -0
  1329. package/src/duckdb/ub_extension_core_functions_scalar_struct.cpp +2 -0
  1330. package/src/duckdb/ub_extension_parquet_reader.cpp +2 -0
  1331. package/src/duckdb/ub_extension_parquet_reader_variant.cpp +6 -0
  1332. package/src/duckdb/ub_src_common.cpp +8 -0
  1333. package/src/duckdb/ub_src_common_arrow_appender.cpp +2 -0
  1334. package/src/duckdb/ub_src_common_progress_bar.cpp +2 -0
  1335. package/src/duckdb/ub_src_common_sorting.cpp +8 -0
  1336. package/src/duckdb/ub_src_common_tree_renderer.cpp +2 -0
  1337. package/src/duckdb/ub_src_common_types.cpp +1 -1
  1338. package/src/duckdb/ub_src_common_types_row.cpp +2 -0
  1339. package/src/duckdb/ub_src_execution_index_art.cpp +11 -9
  1340. package/src/duckdb/ub_src_execution_operator_persistent.cpp +2 -0
  1341. package/src/duckdb/ub_src_execution_physical_plan.cpp +2 -0
  1342. package/src/duckdb/ub_src_function.cpp +2 -0
  1343. package/src/duckdb/ub_src_function_cast.cpp +1 -1
  1344. package/src/duckdb/ub_src_function_cast_variant.cpp +6 -0
  1345. package/src/duckdb/ub_src_function_scalar_struct.cpp +2 -0
  1346. package/src/duckdb/ub_src_function_scalar_variant.cpp +6 -0
  1347. package/src/duckdb/ub_src_function_table.cpp +2 -0
  1348. package/src/duckdb/ub_src_function_table_system.cpp +4 -0
  1349. package/src/duckdb/ub_src_main.cpp +4 -0
  1350. package/src/duckdb/ub_src_main_capi.cpp +4 -0
  1351. package/src/duckdb/ub_src_optimizer.cpp +2 -0
  1352. package/src/duckdb/ub_src_optimizer_pushdown.cpp +2 -0
  1353. package/src/duckdb/ub_src_optimizer_rule.cpp +2 -0
  1354. package/src/duckdb/ub_src_parser_statement.cpp +2 -0
  1355. package/src/duckdb/ub_src_parser_tableref.cpp +2 -0
  1356. package/src/duckdb/ub_src_parser_transform_statement.cpp +2 -0
  1357. package/src/duckdb/ub_src_planner.cpp +2 -0
  1358. package/src/duckdb/ub_src_planner_binder_statement.cpp +2 -0
  1359. package/src/duckdb/ub_src_planner_binder_tableref.cpp +2 -0
  1360. package/src/duckdb/ub_src_planner_expression_binder.cpp +2 -0
  1361. package/src/duckdb/ub_src_planner_operator.cpp +2 -0
  1362. package/src/duckdb/ub_src_storage_table.cpp +4 -0
  1363. package/test/columns.test.ts +1 -1
  1364. package/test/exec.test.ts +3 -3
  1365. package/test/jsdoc.test.ts +2 -1
  1366. package/test/syntax_error.test.ts +1 -1
  1367. package/test/test_all_types.test.ts +1 -1
@@ -13,22 +13,6 @@
13
13
 
14
14
  namespace duckdb {
15
15
 
16
- namespace {
17
-
18
- enum class ArrowArrayPhysicalType : uint8_t { DICTIONARY_ENCODED, RUN_END_ENCODED, DEFAULT };
19
-
20
- ArrowArrayPhysicalType GetArrowArrayPhysicalType(const ArrowType &type) {
21
- if (type.HasDictionary()) {
22
- return ArrowArrayPhysicalType::DICTIONARY_ENCODED;
23
- }
24
- if (type.RunEndEncoded()) {
25
- return ArrowArrayPhysicalType::RUN_END_ENCODED;
26
- }
27
- return ArrowArrayPhysicalType::DEFAULT;
28
- }
29
-
30
- } // namespace
31
-
32
16
  #if STANDARD_VECTOR_SIZE > 64
33
17
  static void ShiftRight(unsigned char *ar, int size, int shift) {
34
18
  int carry = 0;
@@ -42,7 +26,7 @@ static void ShiftRight(unsigned char *ar, int size, int shift) {
42
26
  }
43
27
  #endif
44
28
 
45
- idx_t GetEffectiveOffset(const ArrowArray &array, int64_t parent_offset, const ArrowScanLocalState &state,
29
+ idx_t GetEffectiveOffset(const ArrowArray &array, int64_t parent_offset, idx_t chunk_offset,
46
30
  int64_t nested_offset = -1) {
47
31
  if (nested_offset != -1) {
48
32
  // The parent of this array is a list
@@ -52,7 +36,7 @@ idx_t GetEffectiveOffset(const ArrowArray &array, int64_t parent_offset, const A
52
36
  // Parent offset is set in the case of a struct, it applies to all child arrays
53
37
  // 'chunk_offset' is how much of the chunk we've already scanned, in case the chunk size exceeds
54
38
  // STANDARD_VECTOR_SIZE
55
- return UnsafeNumericCast<idx_t>(array.offset + parent_offset) + state.chunk_offset;
39
+ return UnsafeNumericCast<idx_t>(array.offset + parent_offset) + chunk_offset;
56
40
  }
57
41
 
58
42
  template <class T>
@@ -60,7 +44,7 @@ T *ArrowBufferData(ArrowArray &array, idx_t buffer_idx) {
60
44
  return (T *)array.buffers[buffer_idx]; // NOLINT
61
45
  }
62
46
 
63
- static void GetValidityMask(ValidityMask &mask, ArrowArray &array, const ArrowScanLocalState &scan_state, idx_t size,
47
+ static void GetValidityMask(ValidityMask &mask, ArrowArray &array, idx_t chunk_offset, idx_t size,
64
48
  int64_t parent_offset, int64_t nested_offset = -1, bool add_null = false) {
65
49
  // In certains we don't need to or cannot copy arrow's validity mask to duckdb.
66
50
  //
@@ -69,7 +53,7 @@ static void GetValidityMask(ValidityMask &mask, ArrowArray &array, const ArrowSc
69
53
  // 2. n_buffers > 0, meaning the array's arrow type is not `null`
70
54
  // 3. the validity buffer (the first buffer) is not a nullptr
71
55
  if (array.null_count != 0 && array.n_buffers > 0 && array.buffers[0]) {
72
- auto bit_offset = GetEffectiveOffset(array, parent_offset, scan_state, nested_offset);
56
+ auto bit_offset = GetEffectiveOffset(array, parent_offset, chunk_offset, nested_offset);
73
57
  mask.EnsureWritable();
74
58
  #if STANDARD_VECTOR_SIZE > 64
75
59
  auto n_bitmask_bytes = (size + 8 - 1) / 8;
@@ -107,26 +91,13 @@ static void GetValidityMask(ValidityMask &mask, ArrowArray &array, const ArrowSc
107
91
  }
108
92
  }
109
93
 
110
- static void SetValidityMask(Vector &vector, ArrowArray &array, const ArrowScanLocalState &scan_state, idx_t size,
111
- int64_t parent_offset, int64_t nested_offset, bool add_null = false) {
94
+ void ArrowToDuckDBConversion::SetValidityMask(Vector &vector, ArrowArray &array, idx_t chunk_offset, idx_t size,
95
+ int64_t parent_offset, int64_t nested_offset, bool add_null) {
112
96
  D_ASSERT(vector.GetVectorType() == VectorType::FLAT_VECTOR);
113
97
  auto &mask = FlatVector::Validity(vector);
114
- GetValidityMask(mask, array, scan_state, size, parent_offset, nested_offset, add_null);
98
+ GetValidityMask(mask, array, chunk_offset, size, parent_offset, nested_offset, add_null);
115
99
  }
116
100
 
117
- static void ColumnArrowToDuckDBRunEndEncoded(Vector &vector, const ArrowArray &array, ArrowArrayScanState &array_state,
118
- idx_t size, const ArrowType &arrow_type, int64_t nested_offset = -1,
119
- ValidityMask *parent_mask = nullptr, uint64_t parent_offset = 0);
120
-
121
- static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowArrayScanState &array_state, idx_t size,
122
- const ArrowType &arrow_type, int64_t nested_offset = -1,
123
- ValidityMask *parent_mask = nullptr, uint64_t parent_offset = 0,
124
- bool ignore_extensions = false);
125
-
126
- static void ColumnArrowToDuckDBDictionary(Vector &vector, ArrowArray &array, ArrowArrayScanState &array_state,
127
- idx_t size, const ArrowType &arrow_type, int64_t nested_offset = -1,
128
- const ValidityMask *parent_mask = nullptr, uint64_t parent_offset = 0);
129
-
130
101
  namespace {
131
102
 
132
103
  struct ArrowListOffsetData {
@@ -223,15 +194,13 @@ static ArrowListOffsetData ConvertArrowListOffsets(Vector &vector, ArrowArray &a
223
194
  }
224
195
  }
225
196
 
226
- static void ArrowToDuckDBList(Vector &vector, ArrowArray &array, ArrowArrayScanState &array_state, idx_t size,
227
- const ArrowType &arrow_type, int64_t nested_offset, const ValidityMask *parent_mask,
228
- int64_t parent_offset) {
229
- auto &scan_state = array_state.state;
230
-
197
+ static void ArrowToDuckDBList(Vector &vector, ArrowArray &array, idx_t chunk_offset, ArrowArrayScanState &array_state,
198
+ idx_t size, const ArrowType &arrow_type, int64_t nested_offset,
199
+ const ValidityMask *parent_mask, int64_t parent_offset) {
231
200
  auto &list_info = arrow_type.GetTypeInfo<ArrowListInfo>();
232
- SetValidityMask(vector, array, scan_state, size, parent_offset, nested_offset);
201
+ ArrowToDuckDBConversion::SetValidityMask(vector, array, chunk_offset, size, parent_offset, nested_offset);
233
202
 
234
- auto effective_offset = GetEffectiveOffset(array, parent_offset, scan_state, nested_offset);
203
+ auto effective_offset = GetEffectiveOffset(array, parent_offset, chunk_offset, nested_offset);
235
204
  auto list_data = ConvertArrowListOffsets(vector, array, size, arrow_type, effective_offset);
236
205
  auto &start_offset = list_data.start_offset;
237
206
  auto &list_size = list_data.list_size;
@@ -239,8 +208,8 @@ static void ArrowToDuckDBList(Vector &vector, ArrowArray &array, ArrowArrayScanS
239
208
  ListVector::Reserve(vector, list_size);
240
209
  ListVector::SetListSize(vector, list_size);
241
210
  auto &child_vector = ListVector::GetEntry(vector);
242
- SetValidityMask(child_vector, *array.children[0], scan_state, list_size, array.offset,
243
- NumericCast<int64_t>(start_offset));
211
+ ArrowToDuckDBConversion::SetValidityMask(child_vector, *array.children[0], chunk_offset, list_size, array.offset,
212
+ NumericCast<int64_t>(start_offset));
244
213
  auto &list_mask = FlatVector::Validity(vector);
245
214
  if (parent_mask) {
246
215
  //! Since this List is owned by a struct we must guarantee their validity map matches on Null
@@ -258,45 +227,47 @@ static void ArrowToDuckDBList(Vector &vector, ArrowArray &array, ArrowArrayScanS
258
227
 
259
228
  if (list_size == 0 && start_offset == 0) {
260
229
  D_ASSERT(!child_array.dictionary);
261
- ColumnArrowToDuckDB(child_vector, child_array, child_state, list_size, child_type, -1);
230
+ ArrowToDuckDBConversion::ColumnArrowToDuckDB(child_vector, child_array, chunk_offset, child_state, list_size,
231
+ child_type, -1);
262
232
  return;
263
233
  }
264
234
 
265
- auto array_physical_type = GetArrowArrayPhysicalType(child_type);
235
+ auto array_physical_type = child_type.GetPhysicalType();
266
236
  switch (array_physical_type) {
267
237
  case ArrowArrayPhysicalType::DICTIONARY_ENCODED:
268
238
  // TODO: add support for offsets
269
- ColumnArrowToDuckDBDictionary(child_vector, child_array, child_state, list_size, child_type,
270
- NumericCast<int64_t>(start_offset));
239
+ ArrowToDuckDBConversion::ColumnArrowToDuckDBDictionary(child_vector, child_array, chunk_offset, child_state,
240
+ list_size, child_type,
241
+ NumericCast<int64_t>(start_offset));
271
242
  break;
272
243
  case ArrowArrayPhysicalType::RUN_END_ENCODED:
273
- ColumnArrowToDuckDBRunEndEncoded(child_vector, child_array, child_state, list_size, child_type,
274
- NumericCast<int64_t>(start_offset));
244
+ ArrowToDuckDBConversion::ColumnArrowToDuckDBRunEndEncoded(child_vector, child_array, chunk_offset, child_state,
245
+ list_size, child_type,
246
+ NumericCast<int64_t>(start_offset));
275
247
  break;
276
248
  case ArrowArrayPhysicalType::DEFAULT:
277
- ColumnArrowToDuckDB(child_vector, child_array, child_state, list_size, child_type,
278
- NumericCast<int64_t>(start_offset));
249
+ ArrowToDuckDBConversion::ColumnArrowToDuckDB(child_vector, child_array, chunk_offset, child_state, list_size,
250
+ child_type, NumericCast<int64_t>(start_offset));
279
251
  break;
280
252
  default:
281
253
  throw NotImplementedException("ArrowArrayPhysicalType not recognized");
282
254
  }
283
255
  }
284
256
 
285
- static void ArrowToDuckDBArray(Vector &vector, ArrowArray &array, ArrowArrayScanState &array_state, idx_t size,
286
- const ArrowType &arrow_type, int64_t nested_offset, const ValidityMask *parent_mask,
287
- int64_t parent_offset) {
257
+ static void ArrowToDuckDBArray(Vector &vector, ArrowArray &array, idx_t chunk_offset, ArrowArrayScanState &array_state,
258
+ idx_t size, const ArrowType &arrow_type, int64_t nested_offset,
259
+ const ValidityMask *parent_mask, int64_t parent_offset) {
288
260
 
289
261
  auto &array_info = arrow_type.GetTypeInfo<ArrowArrayInfo>();
290
- auto &scan_state = array_state.state;
291
262
  auto array_size = array_info.FixedSize();
292
263
  auto child_count = array_size * size;
293
- auto child_offset = GetEffectiveOffset(array, parent_offset, scan_state, nested_offset) * array_size;
264
+ auto child_offset = GetEffectiveOffset(array, parent_offset, chunk_offset, nested_offset) * array_size;
294
265
 
295
- SetValidityMask(vector, array, scan_state, size, parent_offset, nested_offset);
266
+ ArrowToDuckDBConversion::SetValidityMask(vector, array, chunk_offset, size, parent_offset, nested_offset);
296
267
 
297
268
  auto &child_vector = ArrayVector::GetEntry(vector);
298
- SetValidityMask(child_vector, *array.children[0], scan_state, child_count, array.offset,
299
- NumericCast<int64_t>(child_offset));
269
+ ArrowToDuckDBConversion::SetValidityMask(child_vector, *array.children[0], chunk_offset, child_count, array.offset,
270
+ NumericCast<int64_t>(child_offset));
300
271
 
301
272
  auto &array_mask = FlatVector::Validity(vector);
302
273
  if (parent_mask) {
@@ -327,68 +298,16 @@ static void ArrowToDuckDBArray(Vector &vector, ArrowArray &array, ArrowArrayScan
327
298
  auto &child_type = array_info.GetChild();
328
299
  if (child_count == 0 && child_offset == 0) {
329
300
  D_ASSERT(!child_array.dictionary);
330
- ColumnArrowToDuckDB(child_vector, child_array, child_state, child_count, child_type, -1);
301
+ ArrowToDuckDBConversion::ColumnArrowToDuckDB(child_vector, child_array, chunk_offset, child_state, child_count,
302
+ child_type, -1);
331
303
  } else {
332
304
  if (child_array.dictionary) {
333
- ColumnArrowToDuckDBDictionary(child_vector, child_array, child_state, child_count, child_type,
334
- NumericCast<int64_t>(child_offset));
305
+ ArrowToDuckDBConversion::ColumnArrowToDuckDBDictionary(child_vector, child_array, chunk_offset, child_state,
306
+ child_count, child_type,
307
+ NumericCast<int64_t>(child_offset));
335
308
  } else {
336
- ColumnArrowToDuckDB(child_vector, child_array, child_state, child_count, child_type,
337
- NumericCast<int64_t>(child_offset));
338
- }
339
- }
340
- }
341
-
342
- static void ArrowToDuckDBBlob(Vector &vector, ArrowArray &array, const ArrowScanLocalState &scan_state, idx_t size,
343
- const ArrowType &arrow_type, int64_t nested_offset, int64_t parent_offset) {
344
- SetValidityMask(vector, array, scan_state, size, parent_offset, nested_offset);
345
- auto &string_info = arrow_type.GetTypeInfo<ArrowStringInfo>();
346
- auto size_type = string_info.GetSizeType();
347
- if (size_type == ArrowVariableSizeType::FIXED_SIZE) {
348
- auto fixed_size = string_info.FixedSize();
349
- //! Have to check validity mask before setting this up
350
- idx_t offset = GetEffectiveOffset(array, parent_offset, scan_state, nested_offset) * fixed_size;
351
- auto cdata = ArrowBufferData<char>(array, 1);
352
- auto blob_len = fixed_size;
353
- auto result = FlatVector::GetData<string_t>(vector);
354
- for (idx_t row_idx = 0; row_idx < size; row_idx++) {
355
- if (FlatVector::IsNull(vector, row_idx)) {
356
- offset += blob_len;
357
- continue;
358
- }
359
- auto bptr = cdata + offset;
360
- result[row_idx] = StringVector::AddStringOrBlob(vector, bptr, blob_len);
361
- offset += blob_len;
362
- }
363
- } else if (size_type == ArrowVariableSizeType::NORMAL) {
364
- auto offsets =
365
- ArrowBufferData<uint32_t>(array, 1) + GetEffectiveOffset(array, parent_offset, scan_state, nested_offset);
366
- auto cdata = ArrowBufferData<char>(array, 2);
367
- auto result = FlatVector::GetData<string_t>(vector);
368
- for (idx_t row_idx = 0; row_idx < size; row_idx++) {
369
- if (FlatVector::IsNull(vector, row_idx)) {
370
- continue;
371
- }
372
- auto bptr = cdata + offsets[row_idx];
373
- auto blob_len = offsets[row_idx + 1] - offsets[row_idx];
374
- result[row_idx] = StringVector::AddStringOrBlob(vector, bptr, blob_len);
375
- }
376
- } else {
377
- //! Check if last offset is higher than max uint32
378
- if (ArrowBufferData<uint64_t>(array, 1)[array.length] > NumericLimits<uint32_t>::Maximum()) { // LCOV_EXCL_START
379
- throw ConversionException("DuckDB does not support Blobs over 4GB");
380
- } // LCOV_EXCL_STOP
381
- auto offsets =
382
- ArrowBufferData<uint64_t>(array, 1) + GetEffectiveOffset(array, parent_offset, scan_state, nested_offset);
383
- auto cdata = ArrowBufferData<char>(array, 2);
384
- auto result = FlatVector::GetData<string_t>(vector);
385
- for (idx_t row_idx = 0; row_idx < size; row_idx++) {
386
- if (FlatVector::IsNull(vector, row_idx)) {
387
- continue;
388
- }
389
- auto bptr = cdata + offsets[row_idx];
390
- auto blob_len = offsets[row_idx + 1] - offsets[row_idx];
391
- result[row_idx] = StringVector::AddStringOrBlob(vector, bptr, blob_len);
309
+ ArrowToDuckDBConversion::ColumnArrowToDuckDB(child_vector, child_array, chunk_offset, child_state,
310
+ child_count, child_type, NumericCast<int64_t>(child_offset));
392
311
  }
393
312
  }
394
313
  }
@@ -455,22 +374,22 @@ static void SetVectorStringView(Vector &vector, idx_t size, ArrowArray &array, i
455
374
  }
456
375
  }
457
376
 
458
- static void DirectConversion(Vector &vector, ArrowArray &array, const ArrowScanLocalState &scan_state,
459
- int64_t nested_offset, uint64_t parent_offset) {
377
+ static void DirectConversion(Vector &vector, ArrowArray &array, idx_t chunk_offset, int64_t nested_offset,
378
+ uint64_t parent_offset) {
460
379
  auto internal_type = GetTypeIdSize(vector.GetType().InternalType());
461
380
  auto data_ptr =
462
381
  ArrowBufferData<data_t>(array, 1) +
463
- internal_type * GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), scan_state, nested_offset);
382
+ internal_type * GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), chunk_offset, nested_offset);
464
383
  FlatVector::SetData(vector, data_ptr);
465
384
  }
466
385
 
467
386
  template <class T>
468
- static void TimeConversion(Vector &vector, ArrowArray &array, const ArrowScanLocalState &scan_state,
469
- int64_t nested_offset, int64_t parent_offset, idx_t size, int64_t conversion) {
387
+ static void TimeConversion(Vector &vector, ArrowArray &array, idx_t chunk_offset, int64_t nested_offset,
388
+ int64_t parent_offset, idx_t size, int64_t conversion) {
470
389
  auto tgt_ptr = FlatVector::GetData<dtime_t>(vector);
471
390
  auto &validity_mask = FlatVector::Validity(vector);
472
- auto src_ptr =
473
- static_cast<const T *>(array.buffers[1]) + GetEffectiveOffset(array, parent_offset, scan_state, nested_offset);
391
+ auto src_ptr = static_cast<const T *>(array.buffers[1]) +
392
+ GetEffectiveOffset(array, parent_offset, chunk_offset, nested_offset);
474
393
  for (idx_t row = 0; row < size; row++) {
475
394
  if (!validity_mask.RowIsValid(row)) {
476
395
  continue;
@@ -481,12 +400,12 @@ static void TimeConversion(Vector &vector, ArrowArray &array, const ArrowScanLoc
481
400
  }
482
401
  }
483
402
 
484
- static void UUIDConversion(Vector &vector, const ArrowArray &array, const ArrowScanLocalState &scan_state,
485
- int64_t nested_offset, int64_t parent_offset, idx_t size) {
403
+ static void UUIDConversion(Vector &vector, const ArrowArray &array, idx_t chunk_offset, int64_t nested_offset,
404
+ int64_t parent_offset, idx_t size) {
486
405
  auto tgt_ptr = FlatVector::GetData<hugeint_t>(vector);
487
406
  auto &validity_mask = FlatVector::Validity(vector);
488
407
  auto src_ptr = static_cast<const hugeint_t *>(array.buffers[1]) +
489
- GetEffectiveOffset(array, parent_offset, scan_state, nested_offset);
408
+ GetEffectiveOffset(array, parent_offset, chunk_offset, nested_offset);
490
409
  for (idx_t row = 0; row < size; row++) {
491
410
  if (!validity_mask.RowIsValid(row)) {
492
411
  continue;
@@ -498,12 +417,12 @@ static void UUIDConversion(Vector &vector, const ArrowArray &array, const ArrowS
498
417
  }
499
418
  }
500
419
 
501
- static void TimestampTZConversion(Vector &vector, ArrowArray &array, const ArrowScanLocalState &scan_state,
502
- int64_t nested_offset, int64_t parent_offset, idx_t size, int64_t conversion) {
420
+ static void TimestampTZConversion(Vector &vector, ArrowArray &array, idx_t chunk_offset, int64_t nested_offset,
421
+ int64_t parent_offset, idx_t size, int64_t conversion) {
503
422
  auto tgt_ptr = FlatVector::GetData<timestamp_t>(vector);
504
423
  auto &validity_mask = FlatVector::Validity(vector);
505
424
  auto src_ptr =
506
- ArrowBufferData<int64_t>(array, 1) + GetEffectiveOffset(array, parent_offset, scan_state, nested_offset);
425
+ ArrowBufferData<int64_t>(array, 1) + GetEffectiveOffset(array, parent_offset, chunk_offset, nested_offset);
507
426
  for (idx_t row = 0; row < size; row++) {
508
427
  if (!validity_mask.RowIsValid(row)) {
509
428
  continue;
@@ -514,11 +433,11 @@ static void TimestampTZConversion(Vector &vector, ArrowArray &array, const Arrow
514
433
  }
515
434
  }
516
435
 
517
- static void IntervalConversionUs(Vector &vector, ArrowArray &array, const ArrowScanLocalState &scan_state,
518
- int64_t nested_offset, int64_t parent_offset, idx_t size, int64_t conversion) {
436
+ static void IntervalConversionUs(Vector &vector, ArrowArray &array, idx_t chunk_offset, int64_t nested_offset,
437
+ int64_t parent_offset, idx_t size, int64_t conversion) {
519
438
  auto tgt_ptr = FlatVector::GetData<interval_t>(vector);
520
439
  auto src_ptr =
521
- ArrowBufferData<int64_t>(array, 1) + GetEffectiveOffset(array, parent_offset, scan_state, nested_offset);
440
+ ArrowBufferData<int64_t>(array, 1) + GetEffectiveOffset(array, parent_offset, chunk_offset, nested_offset);
522
441
  for (idx_t row = 0; row < size; row++) {
523
442
  tgt_ptr[row].days = 0;
524
443
  tgt_ptr[row].months = 0;
@@ -528,11 +447,11 @@ static void IntervalConversionUs(Vector &vector, ArrowArray &array, const ArrowS
528
447
  }
529
448
  }
530
449
 
531
- static void IntervalConversionMonths(Vector &vector, ArrowArray &array, const ArrowScanLocalState &scan_state,
532
- int64_t nested_offset, int64_t parent_offset, idx_t size) {
450
+ static void IntervalConversionMonths(Vector &vector, ArrowArray &array, idx_t chunk_offset, int64_t nested_offset,
451
+ int64_t parent_offset, idx_t size) {
533
452
  auto tgt_ptr = FlatVector::GetData<interval_t>(vector);
534
453
  auto src_ptr =
535
- ArrowBufferData<int32_t>(array, 1) + GetEffectiveOffset(array, parent_offset, scan_state, nested_offset);
454
+ ArrowBufferData<int32_t>(array, 1) + GetEffectiveOffset(array, parent_offset, chunk_offset, nested_offset);
536
455
  for (idx_t row = 0; row < size; row++) {
537
456
  tgt_ptr[row].days = 0;
538
457
  tgt_ptr[row].micros = 0;
@@ -540,11 +459,11 @@ static void IntervalConversionMonths(Vector &vector, ArrowArray &array, const Ar
540
459
  }
541
460
  }
542
461
 
543
- static void IntervalConversionMonthDayNanos(Vector &vector, ArrowArray &array, const ArrowScanLocalState &scan_state,
462
+ static void IntervalConversionMonthDayNanos(Vector &vector, ArrowArray &array, idx_t chunk_offset,
544
463
  int64_t nested_offset, int64_t parent_offset, idx_t size) {
545
464
  auto tgt_ptr = FlatVector::GetData<interval_t>(vector);
546
- auto src_ptr =
547
- ArrowBufferData<ArrowInterval>(array, 1) + GetEffectiveOffset(array, parent_offset, scan_state, nested_offset);
465
+ auto src_ptr = ArrowBufferData<ArrowInterval>(array, 1) +
466
+ GetEffectiveOffset(array, parent_offset, chunk_offset, nested_offset);
548
467
  for (idx_t row = 0; row < size; row++) {
549
468
  tgt_ptr[row].days = src_ptr[row].days;
550
469
  tgt_ptr[row].micros = src_ptr[row].nanoseconds / Interval::NANOS_PER_MICRO;
@@ -718,9 +637,11 @@ static void FlattenRunEndsSwitch(Vector &result, ArrowRunEndEncodingState &run_e
718
637
  }
719
638
  }
720
639
 
721
- static void ColumnArrowToDuckDBRunEndEncoded(Vector &vector, const ArrowArray &array, ArrowArrayScanState &array_state,
722
- idx_t size, const ArrowType &arrow_type, int64_t nested_offset,
723
- ValidityMask *parent_mask, uint64_t parent_offset) {
640
+ void ArrowToDuckDBConversion::ColumnArrowToDuckDBRunEndEncoded(Vector &vector, const ArrowArray &array,
641
+ idx_t chunk_offset, ArrowArrayScanState &array_state,
642
+ idx_t size, const ArrowType &arrow_type,
643
+ int64_t nested_offset, ValidityMask *parent_mask,
644
+ uint64_t parent_offset) {
724
645
  // Scan the 'run_ends' array
725
646
  D_ASSERT(array.n_children == 2);
726
647
  auto &run_ends_array = *array.children[0];
@@ -731,7 +652,6 @@ static void ColumnArrowToDuckDBRunEndEncoded(Vector &vector, const ArrowArray &a
731
652
  auto &values_type = struct_info.GetChild(1);
732
653
  D_ASSERT(vector.GetType() == values_type.GetDuckType());
733
654
 
734
- auto &scan_state = array_state.state;
735
655
  if (vector.GetBuffer()) {
736
656
  vector.GetBuffer()->SetAuxiliaryData(make_uniq<ArrowAuxiliaryData>(array_state.owned_data));
737
657
  }
@@ -746,14 +666,16 @@ static void ColumnArrowToDuckDBRunEndEncoded(Vector &vector, const ArrowArray &a
746
666
  run_end_encoding.run_ends = make_uniq<Vector>(run_ends_type.GetDuckType(), compressed_size);
747
667
  run_end_encoding.values = make_uniq<Vector>(values_type.GetDuckType(), compressed_size);
748
668
 
749
- ColumnArrowToDuckDB(*run_end_encoding.run_ends, run_ends_array, array_state, compressed_size, run_ends_type);
669
+ ArrowToDuckDBConversion::ColumnArrowToDuckDB(*run_end_encoding.run_ends, run_ends_array, chunk_offset,
670
+ array_state, compressed_size, run_ends_type);
750
671
  auto &values = *run_end_encoding.values;
751
- SetValidityMask(values, values_array, scan_state, compressed_size, NumericCast<int64_t>(parent_offset),
752
- nested_offset);
753
- ColumnArrowToDuckDB(values, values_array, array_state, compressed_size, values_type);
672
+ ArrowToDuckDBConversion::SetValidityMask(values, values_array, chunk_offset, compressed_size,
673
+ NumericCast<int64_t>(parent_offset), nested_offset);
674
+ ArrowToDuckDBConversion::ColumnArrowToDuckDB(values, values_array, chunk_offset, array_state, compressed_size,
675
+ values_type);
754
676
  }
755
677
 
756
- idx_t scan_offset = GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), scan_state, nested_offset);
678
+ idx_t scan_offset = GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), chunk_offset, nested_offset);
757
679
  auto physical_type = run_ends_type.GetDuckType().InternalType();
758
680
  switch (physical_type) {
759
681
  case PhysicalType::INT16:
@@ -771,7 +693,7 @@ static void ColumnArrowToDuckDBRunEndEncoded(Vector &vector, const ArrowArray &a
771
693
  }
772
694
  template <class SRC>
773
695
  void ConvertDecimal(SRC src_ptr, Vector &vector, ArrowArray &array, idx_t size, int64_t nested_offset,
774
- uint64_t parent_offset, ArrowScanLocalState &scan_state, ValidityMask &val_mask,
696
+ uint64_t parent_offset, idx_t chunk_offset, ValidityMask &val_mask,
775
697
  DecimalBitWidth arrow_bit_width) {
776
698
 
777
699
  switch (vector.GetType().InternalType()) {
@@ -791,7 +713,7 @@ void ConvertDecimal(SRC src_ptr, Vector &vector, ArrowArray &array, idx_t size,
791
713
  FlatVector::SetData(vector, ArrowBufferData<data_t>(array, 1) +
792
714
  GetTypeIdSize(vector.GetType().InternalType()) *
793
715
  GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset),
794
- scan_state, nested_offset));
716
+ chunk_offset, nested_offset));
795
717
  } else {
796
718
  auto tgt_ptr = FlatVector::GetData<int32_t>(vector);
797
719
  for (idx_t row = 0; row < size; row++) {
@@ -809,7 +731,7 @@ void ConvertDecimal(SRC src_ptr, Vector &vector, ArrowArray &array, idx_t size,
809
731
  FlatVector::SetData(vector, ArrowBufferData<data_t>(array, 1) +
810
732
  GetTypeIdSize(vector.GetType().InternalType()) *
811
733
  GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset),
812
- scan_state, nested_offset));
734
+ chunk_offset, nested_offset));
813
735
  } else {
814
736
  auto tgt_ptr = FlatVector::GetData<int64_t>(vector);
815
737
  for (idx_t row = 0; row < size; row++) {
@@ -827,7 +749,7 @@ void ConvertDecimal(SRC src_ptr, Vector &vector, ArrowArray &array, idx_t size,
827
749
  FlatVector::SetData(vector, ArrowBufferData<data_t>(array, 1) +
828
750
  GetTypeIdSize(vector.GetType().InternalType()) *
829
751
  GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset),
830
- scan_state, nested_offset));
752
+ chunk_offset, nested_offset));
831
753
  } else {
832
754
  auto tgt_ptr = FlatVector::GetData<hugeint_t>(vector);
833
755
  for (idx_t row = 0; row < size; row++) {
@@ -847,17 +769,18 @@ void ConvertDecimal(SRC src_ptr, Vector &vector, ArrowArray &array, idx_t size,
847
769
  }
848
770
  }
849
771
 
850
- static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowArrayScanState &array_state, idx_t size,
851
- const ArrowType &arrow_type, int64_t nested_offset, ValidityMask *parent_mask,
852
- uint64_t parent_offset, bool ignore_extensions) {
853
- auto &scan_state = array_state.state;
772
+ void ArrowToDuckDBConversion::ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, idx_t chunk_offset,
773
+ ArrowArrayScanState &array_state, idx_t size,
774
+ const ArrowType &arrow_type, int64_t nested_offset,
775
+ ValidityMask *parent_mask, uint64_t parent_offset,
776
+ bool ignore_extensions) {
854
777
  D_ASSERT(!array.dictionary);
855
778
  if (!ignore_extensions && arrow_type.HasExtension()) {
856
779
  if (arrow_type.extension_data->arrow_to_duckdb) {
857
780
  // Convert the storage and then call the cast function
858
781
  Vector input_data(arrow_type.extension_data->GetInternalType());
859
- ColumnArrowToDuckDB(input_data, array, array_state, size, arrow_type, nested_offset, parent_mask,
860
- parent_offset, /*ignore_extensions*/ true);
782
+ ColumnArrowToDuckDB(input_data, array, chunk_offset, array_state, size, arrow_type, nested_offset,
783
+ parent_mask, parent_offset, /*ignore_extensions*/ true);
861
784
  arrow_type.extension_data->arrow_to_duckdb(array_state.context, input_data, vector, size);
862
785
  return;
863
786
  }
@@ -874,7 +797,7 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowArraySca
874
797
  //! Arrow bit-packs boolean values
875
798
  //! Lets first figure out where we are in the source array
876
799
  auto effective_offset =
877
- GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), scan_state, nested_offset);
800
+ GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), chunk_offset, nested_offset);
878
801
  auto src_ptr = ArrowBufferData<uint8_t>(array, 1) + effective_offset / 8;
879
802
  auto tgt_ptr = (uint8_t *)FlatVector::GetData(vector);
880
803
  int src_pos = 0;
@@ -910,12 +833,15 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowArraySca
910
833
  case LogicalTypeId::TIMESTAMP_MS:
911
834
  case LogicalTypeId::TIMESTAMP_NS:
912
835
  case LogicalTypeId::TIME_TZ: {
913
- DirectConversion(vector, array, scan_state, nested_offset, parent_offset);
836
+ DirectConversion(vector, array, chunk_offset, nested_offset, parent_offset);
914
837
  break;
915
838
  }
916
839
  case LogicalTypeId::UUID:
917
- UUIDConversion(vector, array, scan_state, nested_offset, NumericCast<int64_t>(parent_offset), size);
840
+ UUIDConversion(vector, array, chunk_offset, nested_offset, NumericCast<int64_t>(parent_offset), size);
918
841
  break;
842
+ case LogicalTypeId::BLOB:
843
+ case LogicalTypeId::BIT:
844
+ case LogicalTypeId::BIGNUM:
919
845
  case LogicalTypeId::VARCHAR: {
920
846
  auto &string_info = arrow_type.GetTypeInfo<ArrowStringInfo>();
921
847
  auto size_type = string_info.GetSizeType();
@@ -923,24 +849,42 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowArraySca
923
849
  case ArrowVariableSizeType::SUPER_SIZE: {
924
850
  auto cdata = ArrowBufferData<char>(array, 2);
925
851
  auto offsets = ArrowBufferData<uint64_t>(array, 1) +
926
- GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), scan_state, nested_offset);
852
+ GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), chunk_offset, nested_offset);
927
853
  SetVectorString(vector, size, cdata, offsets);
928
854
  break;
929
855
  }
930
- case ArrowVariableSizeType::NORMAL:
931
- case ArrowVariableSizeType::FIXED_SIZE: {
856
+ case ArrowVariableSizeType::NORMAL: {
932
857
  auto cdata = ArrowBufferData<char>(array, 2);
933
858
  auto offsets = ArrowBufferData<uint32_t>(array, 1) +
934
- GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), scan_state, nested_offset);
859
+ GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), chunk_offset, nested_offset);
935
860
  SetVectorString(vector, size, cdata, offsets);
936
861
  break;
937
862
  }
938
863
  case ArrowVariableSizeType::VIEW: {
939
864
  SetVectorStringView(
940
865
  vector, size, array,
941
- GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), scan_state, nested_offset));
866
+ GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), chunk_offset, nested_offset));
942
867
  break;
943
868
  }
869
+ case ArrowVariableSizeType::FIXED_SIZE: {
870
+ SetValidityMask(vector, array, chunk_offset, size, NumericCast<int64_t>(parent_offset), nested_offset);
871
+ auto fixed_size = string_info.FixedSize();
872
+ // Have to check validity mask before setting this up
873
+ idx_t offset = GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), chunk_offset, nested_offset) *
874
+ fixed_size;
875
+ auto cdata = ArrowBufferData<char>(array, 1);
876
+ auto blob_len = fixed_size;
877
+ auto result = FlatVector::GetData<string_t>(vector);
878
+ for (idx_t row_idx = 0; row_idx < size; row_idx++) {
879
+ if (FlatVector::IsNull(vector, row_idx)) {
880
+ offset += blob_len;
881
+ continue;
882
+ }
883
+ auto bptr = cdata + offset;
884
+ result[row_idx] = StringVector::AddStringOrBlob(vector, bptr, blob_len);
885
+ offset += blob_len;
886
+ }
887
+ }
944
888
  }
945
889
  break;
946
890
  }
@@ -949,13 +893,13 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowArraySca
949
893
  auto precision = datetime_info.GetDateTimeType();
950
894
  switch (precision) {
951
895
  case ArrowDateTimeType::DAYS: {
952
- DirectConversion(vector, array, scan_state, nested_offset, parent_offset);
896
+ DirectConversion(vector, array, chunk_offset, nested_offset, parent_offset);
953
897
  break;
954
898
  }
955
899
  case ArrowDateTimeType::MILLISECONDS: {
956
900
  //! convert date from nanoseconds to days
957
901
  auto src_ptr = ArrowBufferData<uint64_t>(array, 1) +
958
- GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), scan_state, nested_offset);
902
+ GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), chunk_offset, nested_offset);
959
903
  auto tgt_ptr = FlatVector::GetData<date_t>(vector);
960
904
  for (idx_t row = 0; row < size; row++) {
961
905
  tgt_ptr[row] = date_t(UnsafeNumericCast<int32_t>(static_cast<int64_t>(src_ptr[row]) /
@@ -973,24 +917,24 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowArraySca
973
917
  auto precision = datetime_info.GetDateTimeType();
974
918
  switch (precision) {
975
919
  case ArrowDateTimeType::SECONDS: {
976
- TimeConversion<int32_t>(vector, array, scan_state, nested_offset, NumericCast<int64_t>(parent_offset), size,
977
- 1000000);
920
+ TimeConversion<int32_t>(vector, array, chunk_offset, nested_offset, NumericCast<int64_t>(parent_offset),
921
+ size, 1000000);
978
922
  break;
979
923
  }
980
924
  case ArrowDateTimeType::MILLISECONDS: {
981
- TimeConversion<int32_t>(vector, array, scan_state, nested_offset, NumericCast<int64_t>(parent_offset), size,
982
- 1000);
925
+ TimeConversion<int32_t>(vector, array, chunk_offset, nested_offset, NumericCast<int64_t>(parent_offset),
926
+ size, 1000);
983
927
  break;
984
928
  }
985
929
  case ArrowDateTimeType::MICROSECONDS: {
986
- TimeConversion<int64_t>(vector, array, scan_state, nested_offset, NumericCast<int64_t>(parent_offset), size,
987
- 1);
930
+ TimeConversion<int64_t>(vector, array, chunk_offset, nested_offset, NumericCast<int64_t>(parent_offset),
931
+ size, 1);
988
932
  break;
989
933
  }
990
934
  case ArrowDateTimeType::NANOSECONDS: {
991
935
  auto tgt_ptr = FlatVector::GetData<dtime_t>(vector);
992
936
  auto src_ptr = ArrowBufferData<int64_t>(array, 1) +
993
- GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), scan_state, nested_offset);
937
+ GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), chunk_offset, nested_offset);
994
938
  for (idx_t row = 0; row < size; row++) {
995
939
  tgt_ptr[row].micros = src_ptr[row] / 1000;
996
940
  }
@@ -1006,23 +950,23 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowArraySca
1006
950
  auto precision = datetime_info.GetDateTimeType();
1007
951
  switch (precision) {
1008
952
  case ArrowDateTimeType::SECONDS: {
1009
- TimestampTZConversion(vector, array, scan_state, nested_offset, NumericCast<int64_t>(parent_offset), size,
953
+ TimestampTZConversion(vector, array, chunk_offset, nested_offset, NumericCast<int64_t>(parent_offset), size,
1010
954
  1000000);
1011
955
  break;
1012
956
  }
1013
957
  case ArrowDateTimeType::MILLISECONDS: {
1014
- TimestampTZConversion(vector, array, scan_state, nested_offset, NumericCast<int64_t>(parent_offset), size,
958
+ TimestampTZConversion(vector, array, chunk_offset, nested_offset, NumericCast<int64_t>(parent_offset), size,
1015
959
  1000);
1016
960
  break;
1017
961
  }
1018
962
  case ArrowDateTimeType::MICROSECONDS: {
1019
- DirectConversion(vector, array, scan_state, nested_offset, parent_offset);
963
+ DirectConversion(vector, array, chunk_offset, nested_offset, parent_offset);
1020
964
  break;
1021
965
  }
1022
966
  case ArrowDateTimeType::NANOSECONDS: {
1023
967
  auto tgt_ptr = FlatVector::GetData<timestamp_t>(vector);
1024
968
  auto src_ptr = ArrowBufferData<int64_t>(array, 1) +
1025
- GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), scan_state, nested_offset);
969
+ GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), chunk_offset, nested_offset);
1026
970
  for (idx_t row = 0; row < size; row++) {
1027
971
  tgt_ptr[row].value = src_ptr[row] / 1000;
1028
972
  }
@@ -1038,25 +982,25 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowArraySca
1038
982
  auto precision = datetime_info.GetDateTimeType();
1039
983
  switch (precision) {
1040
984
  case ArrowDateTimeType::SECONDS: {
1041
- IntervalConversionUs(vector, array, scan_state, nested_offset, NumericCast<int64_t>(parent_offset), size,
985
+ IntervalConversionUs(vector, array, chunk_offset, nested_offset, NumericCast<int64_t>(parent_offset), size,
1042
986
  1000000);
1043
987
  break;
1044
988
  }
1045
989
  case ArrowDateTimeType::DAYS:
1046
990
  case ArrowDateTimeType::MILLISECONDS: {
1047
- IntervalConversionUs(vector, array, scan_state, nested_offset, NumericCast<int64_t>(parent_offset), size,
991
+ IntervalConversionUs(vector, array, chunk_offset, nested_offset, NumericCast<int64_t>(parent_offset), size,
1048
992
  1000);
1049
993
  break;
1050
994
  }
1051
995
  case ArrowDateTimeType::MICROSECONDS: {
1052
- IntervalConversionUs(vector, array, scan_state, nested_offset, NumericCast<int64_t>(parent_offset), size,
996
+ IntervalConversionUs(vector, array, chunk_offset, nested_offset, NumericCast<int64_t>(parent_offset), size,
1053
997
  1);
1054
998
  break;
1055
999
  }
1056
1000
  case ArrowDateTimeType::NANOSECONDS: {
1057
1001
  auto tgt_ptr = FlatVector::GetData<interval_t>(vector);
1058
1002
  auto src_ptr = ArrowBufferData<int64_t>(array, 1) +
1059
- GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), scan_state, nested_offset);
1003
+ GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), chunk_offset, nested_offset);
1060
1004
  for (idx_t row = 0; row < size; row++) {
1061
1005
  tgt_ptr[row].micros = src_ptr[row] / 1000;
1062
1006
  tgt_ptr[row].days = 0;
@@ -1065,12 +1009,12 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowArraySca
1065
1009
  break;
1066
1010
  }
1067
1011
  case ArrowDateTimeType::MONTHS: {
1068
- IntervalConversionMonths(vector, array, scan_state, nested_offset, NumericCast<int64_t>(parent_offset),
1012
+ IntervalConversionMonths(vector, array, chunk_offset, nested_offset, NumericCast<int64_t>(parent_offset),
1069
1013
  size);
1070
1014
  break;
1071
1015
  }
1072
1016
  case ArrowDateTimeType::MONTH_DAY_NANO: {
1073
- IntervalConversionMonthDayNanos(vector, array, scan_state, nested_offset,
1017
+ IntervalConversionMonthDayNanos(vector, array, chunk_offset, nested_offset,
1074
1018
  NumericCast<int64_t>(parent_offset), size);
1075
1019
  break;
1076
1020
  }
@@ -1087,22 +1031,25 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowArraySca
1087
1031
  switch (bit_width) {
1088
1032
  case DecimalBitWidth::DECIMAL_32: {
1089
1033
  auto src_ptr = ArrowBufferData<int32_t>(array, 1) +
1090
- GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), scan_state, nested_offset);
1091
- ConvertDecimal(src_ptr, vector, array, size, nested_offset, parent_offset, scan_state, val_mask, bit_width);
1034
+ GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), chunk_offset, nested_offset);
1035
+ ConvertDecimal(src_ptr, vector, array, size, nested_offset, parent_offset, chunk_offset, val_mask,
1036
+ bit_width);
1092
1037
  break;
1093
1038
  }
1094
1039
 
1095
1040
  case DecimalBitWidth::DECIMAL_64: {
1096
1041
  auto src_ptr = ArrowBufferData<int64_t>(array, 1) +
1097
- GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), scan_state, nested_offset);
1098
- ConvertDecimal(src_ptr, vector, array, size, nested_offset, parent_offset, scan_state, val_mask, bit_width);
1042
+ GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), chunk_offset, nested_offset);
1043
+ ConvertDecimal(src_ptr, vector, array, size, nested_offset, parent_offset, chunk_offset, val_mask,
1044
+ bit_width);
1099
1045
  break;
1100
1046
  }
1101
1047
 
1102
1048
  case DecimalBitWidth::DECIMAL_128: {
1103
1049
  auto src_ptr = ArrowBufferData<hugeint_t>(array, 1) +
1104
- GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), scan_state, nested_offset);
1105
- ConvertDecimal(src_ptr, vector, array, size, nested_offset, parent_offset, scan_state, val_mask, bit_width);
1050
+ GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), chunk_offset, nested_offset);
1051
+ ConvertDecimal(src_ptr, vector, array, size, nested_offset, parent_offset, chunk_offset, val_mask,
1052
+ bit_width);
1106
1053
  break;
1107
1054
  }
1108
1055
  default:
@@ -1110,25 +1057,18 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowArraySca
1110
1057
  }
1111
1058
  break;
1112
1059
  }
1113
- case LogicalTypeId::BLOB:
1114
- case LogicalTypeId::BIT:
1115
- case LogicalTypeId::VARINT: {
1116
- ArrowToDuckDBBlob(vector, array, scan_state, size, arrow_type, nested_offset,
1117
- NumericCast<int64_t>(parent_offset));
1118
- break;
1119
- }
1120
1060
  case LogicalTypeId::LIST: {
1121
- ArrowToDuckDBList(vector, array, array_state, size, arrow_type, nested_offset, parent_mask,
1061
+ ArrowToDuckDBList(vector, array, chunk_offset, array_state, size, arrow_type, nested_offset, parent_mask,
1122
1062
  NumericCast<int64_t>(parent_offset));
1123
1063
  break;
1124
1064
  }
1125
1065
  case LogicalTypeId::ARRAY: {
1126
- ArrowToDuckDBArray(vector, array, array_state, size, arrow_type, nested_offset, parent_mask,
1066
+ ArrowToDuckDBArray(vector, array, chunk_offset, array_state, size, arrow_type, nested_offset, parent_mask,
1127
1067
  NumericCast<int64_t>(parent_offset));
1128
1068
  break;
1129
1069
  }
1130
1070
  case LogicalTypeId::MAP: {
1131
- ArrowToDuckDBList(vector, array, array_state, size, arrow_type, nested_offset, parent_mask,
1071
+ ArrowToDuckDBList(vector, array, chunk_offset, array_state, size, arrow_type, nested_offset, parent_mask,
1132
1072
  NumericCast<int64_t>(parent_offset));
1133
1073
  ArrowToDuckDBMapVerify(vector, size);
1134
1074
  break;
@@ -1144,7 +1084,8 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowArraySca
1144
1084
  auto &child_type = struct_info.GetChild(child_idx);
1145
1085
  auto &child_state = array_state.GetChild(child_idx);
1146
1086
 
1147
- SetValidityMask(child_entry, child_array, scan_state, size, array.offset, nested_offset);
1087
+ ArrowToDuckDBConversion::SetValidityMask(child_entry, child_array, chunk_offset, size, array.offset,
1088
+ nested_offset);
1148
1089
  if (!struct_validity_mask.AllValid()) {
1149
1090
  auto &child_validity_mark = FlatVector::Validity(child_entry);
1150
1091
  for (idx_t i = 0; i < size; i++) {
@@ -1154,19 +1095,21 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowArraySca
1154
1095
  }
1155
1096
  }
1156
1097
 
1157
- auto array_physical_type = GetArrowArrayPhysicalType(child_type);
1098
+ auto array_physical_type = child_type.GetPhysicalType();
1158
1099
  switch (array_physical_type) {
1159
1100
  case ArrowArrayPhysicalType::DICTIONARY_ENCODED:
1160
- ColumnArrowToDuckDBDictionary(child_entry, child_array, child_state, size, child_type, nested_offset,
1161
- &struct_validity_mask, NumericCast<uint64_t>(array.offset));
1101
+ ArrowToDuckDBConversion::ColumnArrowToDuckDBDictionary(
1102
+ child_entry, child_array, chunk_offset, child_state, size, child_type, nested_offset,
1103
+ &struct_validity_mask, NumericCast<uint64_t>(array.offset));
1162
1104
  break;
1163
1105
  case ArrowArrayPhysicalType::RUN_END_ENCODED:
1164
- ColumnArrowToDuckDBRunEndEncoded(child_entry, child_array, child_state, size, child_type, nested_offset,
1165
- &struct_validity_mask, NumericCast<uint64_t>(array.offset));
1106
+ ColumnArrowToDuckDBRunEndEncoded(child_entry, child_array, chunk_offset, child_state, size, child_type,
1107
+ nested_offset, &struct_validity_mask,
1108
+ NumericCast<uint64_t>(array.offset));
1166
1109
  break;
1167
1110
  case ArrowArrayPhysicalType::DEFAULT:
1168
- ColumnArrowToDuckDB(child_entry, child_array, child_state, size, child_type, nested_offset,
1169
- &struct_validity_mask, NumericCast<uint64_t>(array.offset), false);
1111
+ ColumnArrowToDuckDB(child_entry, child_array, chunk_offset, child_state, size, child_type,
1112
+ nested_offset, &struct_validity_mask, NumericCast<uint64_t>(array.offset), false);
1170
1113
  break;
1171
1114
  default:
1172
1115
  throw NotImplementedException("ArrowArrayPhysicalType not recognized");
@@ -1188,19 +1131,22 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowArraySca
1188
1131
  auto &child_state = array_state.GetChild(child_idx);
1189
1132
  auto &child_type = union_info.GetChild(child_idx);
1190
1133
 
1191
- SetValidityMask(child, child_array, scan_state, size, NumericCast<int64_t>(parent_offset), nested_offset);
1192
- auto array_physical_type = GetArrowArrayPhysicalType(child_type);
1134
+ ArrowToDuckDBConversion::SetValidityMask(child, child_array, chunk_offset, size,
1135
+ NumericCast<int64_t>(parent_offset), nested_offset);
1136
+ auto array_physical_type = child_type.GetPhysicalType();
1193
1137
 
1194
1138
  switch (array_physical_type) {
1195
1139
  case ArrowArrayPhysicalType::DICTIONARY_ENCODED:
1196
- ColumnArrowToDuckDBDictionary(child, child_array, child_state, size, child_type);
1140
+ ArrowToDuckDBConversion::ColumnArrowToDuckDBDictionary(child, child_array, chunk_offset, child_state,
1141
+ size, child_type);
1197
1142
  break;
1198
1143
  case ArrowArrayPhysicalType::RUN_END_ENCODED:
1199
- ColumnArrowToDuckDBRunEndEncoded(child, child_array, child_state, size, child_type);
1144
+ ArrowToDuckDBConversion::ColumnArrowToDuckDBRunEndEncoded(child, child_array, chunk_offset, child_state,
1145
+ size, child_type);
1200
1146
  break;
1201
1147
  case ArrowArrayPhysicalType::DEFAULT:
1202
- ColumnArrowToDuckDB(child, child_array, child_state, size, child_type, nested_offset, &validity_mask,
1203
- false);
1148
+ ArrowToDuckDBConversion::ColumnArrowToDuckDB(child, child_array, chunk_offset, child_state, size,
1149
+ child_type, nested_offset, &validity_mask, false);
1204
1150
  break;
1205
1151
  default:
1206
1152
  throw NotImplementedException("ArrowArrayPhysicalType not recognized");
@@ -1361,33 +1307,34 @@ static bool CanContainNull(const ArrowArray &array, const ValidityMask *parent_m
1361
1307
  return !parent_mask->AllValid();
1362
1308
  }
1363
1309
 
1364
- static void ColumnArrowToDuckDBDictionary(Vector &vector, ArrowArray &array, ArrowArrayScanState &array_state,
1365
- idx_t size, const ArrowType &arrow_type, int64_t nested_offset,
1366
- const ValidityMask *parent_mask, uint64_t parent_offset) {
1310
+ void ArrowToDuckDBConversion::ColumnArrowToDuckDBDictionary(Vector &vector, ArrowArray &array, idx_t chunk_offset,
1311
+ ArrowArrayScanState &array_state, idx_t size,
1312
+ const ArrowType &arrow_type, int64_t nested_offset,
1313
+ const ValidityMask *parent_mask, uint64_t parent_offset) {
1367
1314
  if (vector.GetBuffer()) {
1368
1315
  vector.GetBuffer()->SetAuxiliaryData(make_uniq<ArrowAuxiliaryData>(array_state.owned_data));
1369
1316
  }
1370
1317
  D_ASSERT(arrow_type.HasDictionary());
1371
- auto &scan_state = array_state.state;
1372
1318
  const bool has_nulls = CanContainNull(array, parent_mask);
1373
1319
  if (array_state.CacheOutdated(array.dictionary)) {
1374
1320
  //! We need to set the dictionary data for this column
1375
1321
  auto base_vector = make_uniq<Vector>(vector.GetType(), NumericCast<idx_t>(array.dictionary->length));
1376
- SetValidityMask(*base_vector, *array.dictionary, scan_state, NumericCast<idx_t>(array.dictionary->length), 0, 0,
1377
- has_nulls);
1322
+ ArrowToDuckDBConversion::SetValidityMask(*base_vector, *array.dictionary, chunk_offset,
1323
+ NumericCast<idx_t>(array.dictionary->length), 0, 0, has_nulls);
1378
1324
  auto &dictionary_type = arrow_type.GetDictionary();
1379
- auto arrow_physical_type = GetArrowArrayPhysicalType(dictionary_type);
1325
+ auto arrow_physical_type = dictionary_type.GetPhysicalType();
1326
+ ;
1380
1327
  switch (arrow_physical_type) {
1381
1328
  case ArrowArrayPhysicalType::DICTIONARY_ENCODED:
1382
- ColumnArrowToDuckDBDictionary(*base_vector, *array.dictionary, array_state,
1329
+ ColumnArrowToDuckDBDictionary(*base_vector, *array.dictionary, chunk_offset, array_state,
1383
1330
  NumericCast<idx_t>(array.dictionary->length), dictionary_type);
1384
1331
  break;
1385
1332
  case ArrowArrayPhysicalType::RUN_END_ENCODED:
1386
- ColumnArrowToDuckDBRunEndEncoded(*base_vector, *array.dictionary, array_state,
1333
+ ColumnArrowToDuckDBRunEndEncoded(*base_vector, *array.dictionary, chunk_offset, array_state,
1387
1334
  NumericCast<idx_t>(array.dictionary->length), dictionary_type);
1388
1335
  break;
1389
1336
  case ArrowArrayPhysicalType::DEFAULT:
1390
- ColumnArrowToDuckDB(*base_vector, *array.dictionary, array_state,
1337
+ ColumnArrowToDuckDB(*base_vector, *array.dictionary, chunk_offset, array_state,
1391
1338
  NumericCast<idx_t>(array.dictionary->length), dictionary_type);
1392
1339
  break;
1393
1340
  default:
@@ -1399,12 +1346,12 @@ static void ColumnArrowToDuckDBDictionary(Vector &vector, ArrowArray &array, Arr
1399
1346
  //! Get Pointer to Indices of Dictionary
1400
1347
  auto indices = ArrowBufferData<data_t>(array, 1) +
1401
1348
  GetTypeIdSize(offset_type.InternalType()) *
1402
- GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), scan_state, nested_offset);
1349
+ GetEffectiveOffset(array, NumericCast<int64_t>(parent_offset), chunk_offset, nested_offset);
1403
1350
 
1404
1351
  SelectionVector sel;
1405
1352
  if (has_nulls) {
1406
1353
  ValidityMask indices_validity;
1407
- GetValidityMask(indices_validity, array, scan_state, size, NumericCast<int64_t>(parent_offset));
1354
+ GetValidityMask(indices_validity, array, chunk_offset, size, NumericCast<int64_t>(parent_offset));
1408
1355
  if (parent_mask && !parent_mask->AllValid()) {
1409
1356
  auto &struct_validity_mask = *parent_mask;
1410
1357
  for (idx_t i = 0; i < size; i++) {
@@ -1467,19 +1414,22 @@ void ArrowTableFunction::ArrowToDuckDB(ArrowScanLocalState &scan_state, const ar
1467
1414
  if (!array_state.owned_data) {
1468
1415
  array_state.owned_data = scan_state.chunk;
1469
1416
  }
1470
-
1471
- auto array_physical_type = GetArrowArrayPhysicalType(arrow_type);
1417
+ auto array_physical_type = arrow_type.GetPhysicalType();
1472
1418
 
1473
1419
  switch (array_physical_type) {
1474
1420
  case ArrowArrayPhysicalType::DICTIONARY_ENCODED:
1475
- ColumnArrowToDuckDBDictionary(output.data[idx], array, array_state, output.size(), arrow_type);
1421
+ ArrowToDuckDBConversion::ColumnArrowToDuckDBDictionary(output.data[idx], array, scan_state.chunk_offset,
1422
+ array_state, output.size(), arrow_type);
1476
1423
  break;
1477
1424
  case ArrowArrayPhysicalType::RUN_END_ENCODED:
1478
- ColumnArrowToDuckDBRunEndEncoded(output.data[idx], array, array_state, output.size(), arrow_type);
1425
+ ArrowToDuckDBConversion::ColumnArrowToDuckDBRunEndEncoded(output.data[idx], array, scan_state.chunk_offset,
1426
+ array_state, output.size(), arrow_type);
1479
1427
  break;
1480
1428
  case ArrowArrayPhysicalType::DEFAULT:
1481
- SetValidityMask(output.data[idx], array, scan_state, output.size(), parent_array.offset, -1);
1482
- ColumnArrowToDuckDB(output.data[idx], array, array_state, output.size(), arrow_type);
1429
+ ArrowToDuckDBConversion::SetValidityMask(output.data[idx], array, scan_state.chunk_offset, output.size(),
1430
+ parent_array.offset, -1);
1431
+ ArrowToDuckDBConversion::ColumnArrowToDuckDB(output.data[idx], array, scan_state.chunk_offset, array_state,
1432
+ output.size(), arrow_type);
1483
1433
  break;
1484
1434
  default:
1485
1435
  throw NotImplementedException("ArrowArrayPhysicalType not recognized");