duckdb 0.10.1-dev9.0 → 0.10.2-dev0.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 (702) hide show
  1. package/.github/workflows/NodeJS.yml +9 -16
  2. package/binding.gyp +4 -1
  3. package/package.json +1 -1
  4. package/src/database.cpp +1 -0
  5. package/src/duckdb/extension/icu/icu-strptime.cpp +46 -4
  6. package/src/duckdb/extension/icu/icu-table-range.cpp +5 -0
  7. package/src/duckdb/extension/icu/icu-timezone.cpp +28 -4
  8. package/src/duckdb/extension/json/buffered_json_reader.cpp +6 -5
  9. package/src/duckdb/extension/json/include/buffered_json_reader.hpp +3 -3
  10. package/src/duckdb/extension/json/include/json_transform.hpp +2 -0
  11. package/src/duckdb/extension/json/json_functions/json_create.cpp +6 -0
  12. package/src/duckdb/extension/json/json_functions/json_transform.cpp +8 -9
  13. package/src/duckdb/extension/json/json_functions.cpp +1 -2
  14. package/src/duckdb/extension/json/json_scan.cpp +1 -0
  15. package/src/duckdb/extension/parquet/column_reader.cpp +17 -1
  16. package/src/duckdb/extension/parquet/column_writer.cpp +151 -20
  17. package/src/duckdb/extension/parquet/include/column_writer.hpp +3 -4
  18. package/src/duckdb/extension/parquet/parquet_extension.cpp +14 -9
  19. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +10 -0
  20. package/src/duckdb/extension/parquet/parquet_writer.cpp +4 -0
  21. package/src/duckdb/src/catalog/catalog.cpp +94 -10
  22. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +9 -5
  23. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +1 -0
  24. package/src/duckdb/src/catalog/catalog_entry/ub_duckdb_catalog_entries.cpp +16 -0
  25. package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +28 -0
  26. package/src/duckdb/src/catalog/default/default_functions.cpp +3 -0
  27. package/src/duckdb/src/catalog/default/default_views.cpp +3 -3
  28. package/src/duckdb/src/catalog/default/ub_duckdb_catalog_default_entries.cpp +5 -0
  29. package/src/duckdb/src/catalog/dependency_catalog_set.cpp +1 -3
  30. package/src/duckdb/src/catalog/dependency_manager.cpp +2 -5
  31. package/src/duckdb/src/catalog/ub_duckdb_catalog.cpp +10 -0
  32. package/src/duckdb/src/common/adbc/adbc.cpp +1 -1
  33. package/src/duckdb/src/common/adbc/driver_manager.cpp +2 -1
  34. package/src/duckdb/src/common/adbc/nanoarrow/ub_duckdb_adbc_nanoarrow.cpp +5 -0
  35. package/src/duckdb/src/common/adbc/ub_duckdb_adbc.cpp +3 -0
  36. package/src/duckdb/src/common/allocator.cpp +34 -8
  37. package/src/duckdb/src/common/arrow/appender/fixed_size_list_data.cpp +39 -0
  38. package/src/duckdb/src/common/arrow/appender/ub_duckdb_common_arrow_appender.cpp +6 -0
  39. package/src/duckdb/src/common/arrow/appender/union_data.cpp +2 -1
  40. package/src/duckdb/src/common/arrow/arrow_appender.cpp +5 -5
  41. package/src/duckdb/src/common/arrow/arrow_converter.cpp +17 -0
  42. package/src/duckdb/src/common/arrow/ub_duckdb_common_arrow.cpp +4 -0
  43. package/src/duckdb/src/common/compressed_file_system.cpp +1 -0
  44. package/src/duckdb/src/common/crypto/ub_duckdb_common_crypto.cpp +2 -0
  45. package/src/duckdb/src/common/enum_util.cpp +153 -13
  46. package/src/duckdb/src/common/enums/logical_operator_type.cpp +0 -2
  47. package/src/duckdb/src/common/enums/physical_operator_type.cpp +2 -2
  48. package/src/duckdb/src/common/enums/ub_duckdb_common_enums.cpp +12 -0
  49. package/src/duckdb/src/common/exception/conversion_exception.cpp +23 -0
  50. package/src/duckdb/src/common/exception.cpp +7 -14
  51. package/src/duckdb/src/common/extra_type_info.cpp +6 -5
  52. package/src/duckdb/src/common/gzip_file_system.cpp +5 -4
  53. package/src/duckdb/src/common/local_file_system.cpp +85 -10
  54. package/src/duckdb/src/common/operator/cast_operators.cpp +413 -305
  55. package/src/duckdb/src/common/operator/ub_duckdb_common_operators.cpp +4 -0
  56. package/src/duckdb/src/common/progress_bar/ub_duckdb_progress_bar.cpp +3 -0
  57. package/src/duckdb/src/common/re2_regex.cpp +2 -1
  58. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +2 -2
  59. package/src/duckdb/src/common/row_operations/row_matcher.cpp +1 -0
  60. package/src/duckdb/src/common/row_operations/row_scatter.cpp +2 -2
  61. package/src/duckdb/src/common/row_operations/ub_duckdb_row_operations.cpp +9 -0
  62. package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
  63. package/src/duckdb/src/common/serializer/ub_duckdb_common_serializer.cpp +7 -0
  64. package/src/duckdb/src/common/sort/partition_state.cpp +2 -3
  65. package/src/duckdb/src/common/sort/ub_duckdb_sort.cpp +7 -0
  66. package/src/duckdb/src/common/string_util.cpp +3 -3
  67. package/src/duckdb/src/common/types/bit.cpp +7 -6
  68. package/src/duckdb/src/common/types/blob.cpp +20 -9
  69. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +8 -6
  70. package/src/duckdb/src/common/types/column/column_data_collection.cpp +11 -1
  71. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +5 -0
  72. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +1 -1
  73. package/src/duckdb/src/common/types/column/ub_duckdb_common_types_column.cpp +6 -0
  74. package/src/duckdb/src/common/types/data_chunk.cpp +1 -1
  75. package/src/duckdb/src/common/types/date.cpp +1 -1
  76. package/src/duckdb/src/common/types/hugeint.cpp +3 -2
  77. package/src/duckdb/src/common/types/interval.cpp +1 -1
  78. package/src/duckdb/src/common/types/list_segment.cpp +2 -1
  79. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +3 -9
  80. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +7 -7
  81. package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +10 -27
  82. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +168 -88
  83. package/src/duckdb/src/common/types/row/ub_duckdb_common_types_row.cpp +11 -0
  84. package/src/duckdb/src/common/types/selection_vector.cpp +1 -1
  85. package/src/duckdb/src/common/types/string_heap.cpp +5 -1
  86. package/src/duckdb/src/common/types/string_type.cpp +18 -4
  87. package/src/duckdb/src/common/types/time.cpp +4 -2
  88. package/src/duckdb/src/common/types/timestamp.cpp +32 -6
  89. package/src/duckdb/src/common/types/ub_duckdb_common_types.cpp +28 -0
  90. package/src/duckdb/src/common/types/uhugeint.cpp +3 -2
  91. package/src/duckdb/src/common/types/uuid.cpp +11 -0
  92. package/src/duckdb/src/common/types/validity_mask.cpp +4 -3
  93. package/src/duckdb/src/common/types/value.cpp +17 -6
  94. package/src/duckdb/src/common/types/vector.cpp +243 -68
  95. package/src/duckdb/src/common/types.cpp +7 -5
  96. package/src/duckdb/src/common/ub_duckdb_common.cpp +34 -0
  97. package/src/duckdb/src/common/value_operations/ub_duckdb_value_operations.cpp +2 -0
  98. package/src/duckdb/src/common/vector_operations/generators.cpp +2 -1
  99. package/src/duckdb/src/common/vector_operations/vector_cast.cpp +4 -4
  100. package/src/duckdb/src/common/vector_operations/vector_copy.cpp +2 -2
  101. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +17 -6
  102. package/src/duckdb/src/core_functions/aggregate/algebraic/ub_duckdb_aggr_algebraic.cpp +5 -0
  103. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +30 -6
  104. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +1 -1
  105. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +12 -5
  106. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +2 -2
  107. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +2 -1
  108. package/src/duckdb/src/core_functions/aggregate/distributive/ub_duckdb_aggr_distributive.cpp +13 -0
  109. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +2 -1
  110. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +2 -9
  111. package/src/duckdb/src/core_functions/aggregate/holistic/ub_duckdb_aggr_holistic.cpp +5 -0
  112. package/src/duckdb/src/core_functions/aggregate/nested/ub_duckdb_aggr_nested.cpp +3 -0
  113. package/src/duckdb/src/core_functions/aggregate/regression/ub_duckdb_aggr_regr.cpp +8 -0
  114. package/src/duckdb/src/core_functions/function_list.cpp +1 -0
  115. package/src/duckdb/src/core_functions/scalar/bit/bitstring.cpp +2 -2
  116. package/src/duckdb/src/core_functions/scalar/bit/ub_duckdb_func_bit.cpp +2 -0
  117. package/src/duckdb/src/core_functions/scalar/blob/ub_duckdb_func_blob.cpp +3 -0
  118. package/src/duckdb/src/core_functions/scalar/date/date_diff.cpp +8 -0
  119. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +22 -3
  120. package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +29 -7
  121. package/src/duckdb/src/core_functions/scalar/date/to_interval.cpp +3 -1
  122. package/src/duckdb/src/core_functions/scalar/date/ub_duckdb_func_date.cpp +12 -0
  123. package/src/duckdb/src/core_functions/scalar/debug/ub_duckdb_func_debug.cpp +2 -0
  124. package/src/duckdb/src/core_functions/scalar/enum/ub_duckdb_func_enum.cpp +2 -0
  125. package/src/duckdb/src/core_functions/scalar/generic/ub_duckdb_func_generic.cpp +9 -0
  126. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +12 -8
  127. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +2 -1
  128. package/src/duckdb/src/core_functions/scalar/list/list_reduce.cpp +6 -5
  129. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +5 -3
  130. package/src/duckdb/src/core_functions/scalar/list/list_value.cpp +28 -12
  131. package/src/duckdb/src/core_functions/scalar/list/ub_duckdb_func_list.cpp +11 -0
  132. package/src/duckdb/src/core_functions/scalar/map/map.cpp +129 -160
  133. package/src/duckdb/src/core_functions/scalar/map/ub_duckdb_func_map_nested.cpp +8 -0
  134. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +19 -16
  135. package/src/duckdb/src/core_functions/scalar/math/ub_duckdb_func_math.cpp +1 -0
  136. package/src/duckdb/src/core_functions/scalar/operators/bitwise.cpp +4 -4
  137. package/src/duckdb/src/core_functions/scalar/operators/ub_duckdb_func_ops.cpp +1 -0
  138. package/src/duckdb/src/core_functions/scalar/random/ub_duckdb_func_random.cpp +3 -0
  139. package/src/duckdb/src/core_functions/scalar/string/hex.cpp +2 -1
  140. package/src/duckdb/src/core_functions/scalar/string/pad.cpp +2 -2
  141. package/src/duckdb/src/core_functions/scalar/string/repeat.cpp +1 -1
  142. package/src/duckdb/src/core_functions/scalar/string/replace.cpp +1 -1
  143. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +2 -1
  144. package/src/duckdb/src/core_functions/scalar/string/translate.cpp +1 -1
  145. package/src/duckdb/src/core_functions/scalar/string/ub_duckdb_func_string.cpp +26 -0
  146. package/src/duckdb/src/core_functions/scalar/struct/ub_duckdb_func_struct.cpp +3 -0
  147. package/src/duckdb/src/core_functions/scalar/union/ub_duckdb_func_union.cpp +4 -0
  148. package/src/duckdb/src/core_functions/ub_duckdb_core_functions.cpp +3 -0
  149. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  150. package/src/duckdb/src/execution/aggregate_hashtable.cpp +1 -1
  151. package/src/duckdb/src/execution/column_binding_resolver.cpp +7 -1
  152. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +2 -2
  153. package/src/duckdb/src/execution/expression_executor/execute_cast.cpp +2 -0
  154. package/src/duckdb/src/execution/expression_executor/execute_function.cpp +2 -2
  155. package/src/duckdb/src/execution/expression_executor/execute_operator.cpp +1 -1
  156. package/src/duckdb/src/execution/expression_executor/ub_duckdb_expression_executor.cpp +11 -0
  157. package/src/duckdb/src/execution/expression_executor.cpp +5 -2
  158. package/src/duckdb/src/execution/index/art/art.cpp +12 -6
  159. package/src/duckdb/src/execution/index/art/art_key.cpp +3 -3
  160. package/src/duckdb/src/execution/index/art/leaf.cpp +2 -2
  161. package/src/duckdb/src/execution/index/art/node16.cpp +2 -2
  162. package/src/duckdb/src/execution/index/art/node256.cpp +3 -3
  163. package/src/duckdb/src/execution/index/art/node48.cpp +5 -5
  164. package/src/duckdb/src/execution/index/art/prefix.cpp +1 -1
  165. package/src/duckdb/src/execution/index/art/ub_duckdb_art_index_execution.cpp +12 -0
  166. package/src/duckdb/src/execution/index/art/ub_duckdb_execution_index_art.cpp +11 -0
  167. package/src/duckdb/src/execution/index/fixed_size_buffer.cpp +6 -5
  168. package/src/duckdb/src/execution/index/ub_duckdb_execution_index.cpp +3 -0
  169. package/src/duckdb/src/execution/nested_loop_join/ub_duckdb_nested_loop_join.cpp +3 -0
  170. package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +1 -1
  171. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +3 -4
  172. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +0 -1
  173. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +3 -4
  174. package/src/duckdb/src/execution/operator/aggregate/ub_duckdb_operator_aggregate.cpp +9 -0
  175. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer.cpp +1 -1
  176. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.cpp +8 -3
  177. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_file_handle.cpp +1 -1
  178. package/src/duckdb/src/execution/operator/csv_scanner/scanner/base_scanner.cpp +5 -5
  179. package/src/duckdb/src/execution/operator/csv_scanner/scanner/column_count_scanner.cpp +2 -3
  180. package/src/duckdb/src/execution/operator/csv_scanner/scanner/scanner_boundary.cpp +5 -1
  181. package/src/duckdb/src/execution/operator/csv_scanner/scanner/skip_scanner.cpp +2 -2
  182. package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +151 -79
  183. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/csv_sniffer.cpp +11 -6
  184. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +27 -6
  185. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +71 -18
  186. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +22 -11
  187. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_refinement.cpp +6 -4
  188. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_replacement.cpp +5 -3
  189. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/ub_duckdb_operator_csv_sniffer.cpp +7 -0
  190. package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine.cpp +3 -3
  191. package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine_cache.cpp +30 -5
  192. package/src/duckdb/src/execution/operator/csv_scanner/table_function/csv_file_scanner.cpp +6 -2
  193. package/src/duckdb/src/execution/operator/csv_scanner/table_function/global_csv_state.cpp +47 -46
  194. package/src/duckdb/src/execution/operator/csv_scanner/ub_duckdb_operator_csv_scanner.cpp +10 -0
  195. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +102 -54
  196. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +8 -1
  197. package/src/duckdb/src/execution/operator/filter/ub_duckdb_operator_filter.cpp +2 -0
  198. package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +54 -36
  199. package/src/duckdb/src/execution/operator/helper/physical_limit_percent.cpp +56 -32
  200. package/src/duckdb/src/execution/operator/helper/physical_streaming_limit.cpp +9 -13
  201. package/src/duckdb/src/execution/operator/helper/physical_transaction.cpp +12 -0
  202. package/src/duckdb/src/execution/operator/helper/physical_verify_vector.cpp +221 -0
  203. package/src/duckdb/src/execution/operator/helper/ub_duckdb_operator_helper.cpp +18 -0
  204. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +1 -0
  205. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +23 -8
  206. package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +8 -3
  207. package/src/duckdb/src/execution/operator/join/ub_duckdb_operator_join.cpp +16 -0
  208. package/src/duckdb/src/execution/operator/order/physical_order.cpp +2 -3
  209. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +2 -7
  210. package/src/duckdb/src/execution/operator/order/ub_duckdb_operator_order.cpp +3 -0
  211. package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +451 -55
  212. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +312 -150
  213. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +200 -75
  214. package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +1 -0
  215. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +6 -5
  216. package/src/duckdb/src/execution/operator/persistent/ub_duckdb_operator_persistent.cpp +10 -0
  217. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +3 -2
  218. package/src/duckdb/src/execution/operator/projection/ub_duckdb_operator_projection.cpp +5 -0
  219. package/src/duckdb/src/execution/operator/scan/ub_duckdb_operator_scan.cpp +7 -0
  220. package/src/duckdb/src/execution/operator/schema/ub_duckdb_operator_schema.cpp +12 -0
  221. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +25 -0
  222. package/src/duckdb/src/execution/operator/set/ub_duckdb_operator_set.cpp +4 -0
  223. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +4 -4
  224. package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +2 -2
  225. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +2 -2
  226. package/src/duckdb/src/execution/physical_plan/plan_copy_to_file.cpp +7 -17
  227. package/src/duckdb/src/execution/physical_plan/plan_distinct.cpp +10 -0
  228. package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +7 -0
  229. package/src/duckdb/src/execution/physical_plan/plan_limit.cpp +45 -13
  230. package/src/duckdb/src/execution/physical_plan/ub_duckdb_physical_plan.cpp +44 -0
  231. package/src/duckdb/src/execution/physical_plan_generator.cpp +5 -3
  232. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +13 -12
  233. package/src/duckdb/src/execution/ub_duckdb_execution.cpp +15 -0
  234. package/src/duckdb/src/execution/window_executor.cpp +71 -61
  235. package/src/duckdb/src/execution/window_segment_tree.cpp +6 -6
  236. package/src/duckdb/src/extension_forward_decl/icu.cpp +59 -0
  237. package/src/duckdb/src/function/aggregate/algebraic/ub_duckdb_aggr_algebraic.cpp +5 -0
  238. package/src/duckdb/src/function/aggregate/distributive/first.cpp +2 -2
  239. package/src/duckdb/src/function/aggregate/distributive/ub_duckdb_aggr_distr.cpp +3 -0
  240. package/src/duckdb/src/function/aggregate/holistic/ub_duckdb_aggr_holistic.cpp +5 -0
  241. package/src/duckdb/src/function/aggregate/nested/ub_duckdb_aggr_nested.cpp +3 -0
  242. package/src/duckdb/src/function/aggregate/regression/ub_duckdb_aggr_regr.cpp +8 -0
  243. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +3 -2
  244. package/src/duckdb/src/function/aggregate/ub_duckdb_func_aggr.cpp +3 -0
  245. package/src/duckdb/src/function/cast/array_casts.cpp +2 -4
  246. package/src/duckdb/src/function/cast/bit_cast.cpp +13 -13
  247. package/src/duckdb/src/function/cast/cast_function_set.cpp +2 -0
  248. package/src/duckdb/src/function/cast/decimal_cast.cpp +38 -44
  249. package/src/duckdb/src/function/cast/default_casts.cpp +5 -2
  250. package/src/duckdb/src/function/cast/enum_casts.cpp +5 -5
  251. package/src/duckdb/src/function/cast/list_casts.cpp +24 -14
  252. package/src/duckdb/src/function/cast/string_cast.cpp +48 -30
  253. package/src/duckdb/src/function/cast/struct_cast.cpp +2 -2
  254. package/src/duckdb/src/function/cast/time_casts.cpp +12 -0
  255. package/src/duckdb/src/function/cast/ub_duckdb_func_cast.cpp +17 -0
  256. package/src/duckdb/src/function/cast/union/ub_duckdb_union_cast.cpp +2 -0
  257. package/src/duckdb/src/function/cast/union_casts.cpp +13 -15
  258. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +1 -1
  259. package/src/duckdb/src/function/cast_rules.cpp +2 -1
  260. package/src/duckdb/src/function/pragma/ub_duckdb_func_pragma.cpp +3 -0
  261. package/src/duckdb/src/function/scalar/bit/ub_duckdb_func_bit.cpp +2 -0
  262. package/src/duckdb/src/function/scalar/blob/ub_duckdb_func_blob.cpp +3 -0
  263. package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +7 -6
  264. package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +3 -3
  265. package/src/duckdb/src/function/scalar/compressed_materialization/ub_duckdb_func_compressed_materialization.cpp +3 -0
  266. package/src/duckdb/src/function/scalar/date/ub_duckdb_func_date.cpp +12 -0
  267. package/src/duckdb/src/function/scalar/enum/ub_duckdb_func_enum.cpp +2 -0
  268. package/src/duckdb/src/function/scalar/generic/ub_duckdb_func_generic.cpp +8 -0
  269. package/src/duckdb/src/function/scalar/generic/ub_duckdb_func_generic_main.cpp +2 -0
  270. package/src/duckdb/src/function/scalar/list/list_resize.cpp +3 -1
  271. package/src/duckdb/src/function/scalar/list/list_zip.cpp +3 -4
  272. package/src/duckdb/src/function/scalar/list/ub_duckdb_func_list.cpp +11 -0
  273. package/src/duckdb/src/function/scalar/list/ub_duckdb_func_list_nested.cpp +5 -0
  274. package/src/duckdb/src/function/scalar/map/ub_duckdb_func_map_nested.cpp +7 -0
  275. package/src/duckdb/src/function/scalar/math/ub_duckdb_func_math.cpp +4 -0
  276. package/src/duckdb/src/function/scalar/nested_functions.cpp +7 -3
  277. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +1 -1
  278. package/src/duckdb/src/function/scalar/operators/multiply.cpp +4 -2
  279. package/src/duckdb/src/function/scalar/operators/subtract.cpp +9 -3
  280. package/src/duckdb/src/function/scalar/operators/ub_duckdb_func_ops.cpp +6 -0
  281. package/src/duckdb/src/function/scalar/operators/ub_duckdb_func_ops_main.cpp +5 -0
  282. package/src/duckdb/src/function/scalar/sequence/ub_duckdb_func_seq.cpp +2 -0
  283. package/src/duckdb/src/function/scalar/strftime_format.cpp +21 -20
  284. package/src/duckdb/src/function/scalar/string/like.cpp +14 -3
  285. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -2
  286. package/src/duckdb/src/function/scalar/string/regexp/ub_duckdb_func_string_regexp.cpp +3 -0
  287. package/src/duckdb/src/function/scalar/string/regexp.cpp +6 -4
  288. package/src/duckdb/src/function/scalar/string/suffix.cpp +1 -1
  289. package/src/duckdb/src/function/scalar/string/ub_duckdb_func_string.cpp +31 -0
  290. package/src/duckdb/src/function/scalar/string/ub_duckdb_func_string_main.cpp +12 -0
  291. package/src/duckdb/src/function/scalar/struct/ub_duckdb_func_struct.cpp +4 -0
  292. package/src/duckdb/src/function/scalar/struct/ub_duckdb_func_struct_main.cpp +2 -0
  293. package/src/duckdb/src/function/scalar/system/ub_duckdb_func_system.cpp +2 -0
  294. package/src/duckdb/src/function/scalar/ub_duckdb_func_scalar.cpp +9 -0
  295. package/src/duckdb/src/function/scalar/union/ub_duckdb_func_union.cpp +4 -0
  296. package/src/duckdb/src/function/table/arrow/arrow_array_scan_state.cpp +28 -2
  297. package/src/duckdb/src/function/table/arrow/ub_duckdb_arrow_conversion.cpp +2 -0
  298. package/src/duckdb/src/function/table/arrow.cpp +23 -6
  299. package/src/duckdb/src/function/table/arrow_conversion.cpp +75 -33
  300. package/src/duckdb/src/function/table/copy_csv.cpp +8 -3
  301. package/src/duckdb/src/function/table/range.cpp +5 -0
  302. package/src/duckdb/src/function/table/read_csv.cpp +9 -8
  303. package/src/duckdb/src/function/table/read_file.cpp +1 -1
  304. package/src/duckdb/src/function/table/sniff_csv.cpp +5 -5
  305. package/src/duckdb/src/function/table/system/duckdb_columns.cpp +6 -2
  306. package/src/duckdb/src/function/table/system/duckdb_secrets.cpp +5 -1
  307. package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +3 -1
  308. package/src/duckdb/src/function/table/system/duckdb_settings.cpp +13 -1
  309. package/src/duckdb/src/function/table/system/test_all_types.cpp +64 -0
  310. package/src/duckdb/src/function/table/system/ub_duckdb_table_func_system.cpp +23 -0
  311. package/src/duckdb/src/function/table/ub_duckdb_func_table.cpp +16 -0
  312. package/src/duckdb/src/function/table/version/pragma_version.cpp +11 -2
  313. package/src/duckdb/src/function/table/version/ub_duckdb_func_table_version.cpp +2 -0
  314. package/src/duckdb/src/function/ub_duckdb_function.cpp +14 -0
  315. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +11 -1
  316. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/view_catalog_entry.hpp +2 -0
  317. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +1 -1
  318. package/src/duckdb/src/include/duckdb/common/allocator.hpp +8 -11
  319. package/src/duckdb/src/include/duckdb/common/arrow/appender/enum_data.hpp +2 -2
  320. package/src/duckdb/src/include/duckdb/common/arrow/appender/fixed_size_list_data.hpp +14 -0
  321. package/src/duckdb/src/include/duckdb/common/arrow/appender/list.hpp +1 -0
  322. package/src/duckdb/src/include/duckdb/common/arrow/appender/list_data.hpp +1 -1
  323. package/src/duckdb/src/include/duckdb/common/arrow/appender/varchar_data.hpp +2 -2
  324. package/src/duckdb/src/include/duckdb/common/bitpacking.hpp +2 -2
  325. package/src/duckdb/src/include/duckdb/common/bswap.hpp +6 -2
  326. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +32 -0
  327. package/src/duckdb/src/include/duckdb/common/enums/catalog_lookup_behavior.hpp +21 -0
  328. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +0 -1
  329. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +1 -1
  330. package/src/duckdb/src/include/duckdb/common/enums/prepared_statement_mode.hpp +20 -0
  331. package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +2 -0
  332. package/src/duckdb/src/include/duckdb/common/exception/conversion_exception.hpp +6 -0
  333. package/src/duckdb/src/include/duckdb/common/exception/parser_exception.hpp +4 -0
  334. package/src/duckdb/src/include/duckdb/common/exception.hpp +2 -0
  335. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +3 -3
  336. package/src/duckdb/src/include/duckdb/common/file_opener.hpp +6 -5
  337. package/src/duckdb/src/include/duckdb/common/file_system.hpp +4 -2
  338. package/src/duckdb/src/include/duckdb/common/helper.hpp +7 -0
  339. package/src/duckdb/src/include/duckdb/common/limits.hpp +2 -2
  340. package/src/duckdb/src/include/duckdb/common/local_file_system.hpp +3 -0
  341. package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +64 -0
  342. package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +34 -33
  343. package/src/duckdb/src/include/duckdb/common/operator/decimal_cast_operators.hpp +150 -124
  344. package/src/duckdb/src/include/duckdb/common/operator/integer_cast_operator.hpp +5 -5
  345. package/src/duckdb/src/include/duckdb/common/radix.hpp +1 -1
  346. package/src/duckdb/src/include/duckdb/common/serializer/deserializer.hpp +1 -1
  347. package/src/duckdb/src/include/duckdb/common/sort/duckdb_pdqsort.hpp +4 -4
  348. package/src/duckdb/src/include/duckdb/common/types/bit.hpp +1 -1
  349. package/src/duckdb/src/include/duckdb/common/types/blob.hpp +4 -1
  350. package/src/duckdb/src/include/duckdb/common/types/cast_helpers.hpp +15 -13
  351. package/src/duckdb/src/include/duckdb/common/types/column/column_data_allocator.hpp +5 -0
  352. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection.hpp +2 -0
  353. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection_segment.hpp +3 -0
  354. package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +1 -1
  355. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +1 -1
  356. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +4 -1
  357. package/src/duckdb/src/include/duckdb/common/types/selection_vector.hpp +2 -1
  358. package/src/duckdb/src/include/duckdb/common/types/string_heap.hpp +2 -0
  359. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +11 -4
  360. package/src/duckdb/src/include/duckdb/common/types/time.hpp +1 -1
  361. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +7 -2
  362. package/src/duckdb/src/include/duckdb/common/types/uuid.hpp +3 -0
  363. package/src/duckdb/src/include/duckdb/common/types/value.hpp +7 -0
  364. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +40 -7
  365. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +1 -1
  366. package/src/duckdb/src/include/duckdb/common/types.hpp +1 -1
  367. package/src/duckdb/src/include/duckdb/common/vector_operations/general_cast.hpp +12 -4
  368. package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +6 -6
  369. package/src/duckdb/src/include/duckdb/common/vector_operations/vector_operations.hpp +3 -2
  370. package/src/duckdb/src/include/duckdb/common/windows_undefs.hpp +4 -0
  371. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +1 -1
  372. package/src/duckdb/src/include/duckdb/core_functions/scalar/list_functions.hpp +9 -0
  373. package/src/duckdb/src/include/duckdb/execution/column_binding_resolver.hpp +2 -1
  374. package/src/duckdb/src/include/duckdb/execution/executor.hpp +10 -0
  375. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +1 -1
  376. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/base_scanner.hpp +262 -0
  377. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/column_count_scanner.hpp +70 -0
  378. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_buffer.hpp +103 -0
  379. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_buffer_manager.hpp +74 -0
  380. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_casting.hpp +154 -0
  381. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_error.hpp +130 -0
  382. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_file_handle.hpp +60 -0
  383. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_file_scanner.hpp +70 -0
  384. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_option.hpp +155 -0
  385. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_reader_options.hpp +166 -0
  386. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_sniffer.hpp +191 -0
  387. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state.hpp +30 -0
  388. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state_machine.hpp +99 -0
  389. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state_machine_cache.hpp +91 -0
  390. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/global_csv_state.hpp +80 -0
  391. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/quote_rules.hpp +21 -0
  392. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner_boundary.hpp +93 -0
  393. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/skip_scanner.hpp +60 -0
  394. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/state_machine_options.hpp +35 -0
  395. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/string_value_scanner.hpp +200 -0
  396. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit.hpp +13 -10
  397. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit_percent.hpp +5 -11
  398. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_streaming_limit.hpp +4 -6
  399. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_verify_vector.hpp +51 -0
  400. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_hash_join.hpp +3 -0
  401. package/src/duckdb/src/include/duckdb/execution/operator/persistent/batch_memory_manager.hpp +165 -0
  402. package/src/duckdb/src/include/duckdb/execution/operator/persistent/batch_task_manager.hpp +48 -0
  403. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_copy_to_file.hpp +10 -17
  404. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +4 -0
  405. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +2 -0
  406. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +10 -6
  407. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +0 -2
  408. package/src/duckdb/src/include/duckdb/execution/window_executor.hpp +2 -1
  409. package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +1 -1
  410. package/src/duckdb/src/include/duckdb/function/cast/cast_function_set.hpp +1 -0
  411. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +14 -5
  412. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +27 -43
  413. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +4 -4
  414. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +3 -3
  415. package/src/duckdb/src/include/duckdb/function/function.hpp +1 -1
  416. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +1 -0
  417. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +1 -1
  418. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +1 -1
  419. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +10 -4
  420. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +8 -6
  421. package/src/duckdb/src/include/duckdb/function/table_function.hpp +3 -3
  422. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +3 -0
  423. package/src/duckdb/src/include/duckdb/main/capi/cast/from_decimal.hpp +6 -4
  424. package/src/duckdb/src/include/duckdb/main/capi/cast/to_decimal.hpp +17 -10
  425. package/src/duckdb/src/include/duckdb/main/client_config.hpp +2 -0
  426. package/src/duckdb/src/include/duckdb/main/client_context.hpp +17 -3
  427. package/src/duckdb/src/include/duckdb/main/client_context_file_opener.hpp +2 -2
  428. package/src/duckdb/src/include/duckdb/main/client_context_state.hpp +20 -0
  429. package/src/duckdb/src/include/duckdb/main/client_data.hpp +1 -1
  430. package/src/duckdb/src/include/duckdb/main/database.hpp +3 -2
  431. package/src/duckdb/src/include/duckdb/main/database_manager.hpp +2 -1
  432. package/src/duckdb/src/include/duckdb/main/extension/generated_extension_loader.hpp +1 -1
  433. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +230 -199
  434. package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +18 -0
  435. package/src/duckdb/src/include/duckdb/main/relation/read_csv_relation.hpp +1 -1
  436. package/src/duckdb/src/include/duckdb/main/relation/table_function_relation.hpp +2 -0
  437. package/src/duckdb/src/include/duckdb/main/relation.hpp +1 -1
  438. package/src/duckdb/src/include/duckdb/main/secret/secret_manager.hpp +4 -0
  439. package/src/duckdb/src/include/duckdb/main/settings.hpp +54 -10
  440. package/src/duckdb/src/include/duckdb/optimizer/join_order/relation_manager.hpp +2 -1
  441. package/src/duckdb/src/include/duckdb/optimizer/rule/ordered_aggregate_optimizer.hpp +2 -0
  442. package/src/duckdb/src/include/duckdb/parallel/concurrentqueue.hpp +21 -5
  443. package/src/duckdb/src/include/duckdb/parallel/event.hpp +1 -1
  444. package/src/duckdb/src/include/duckdb/parallel/executor_task.hpp +37 -0
  445. package/src/duckdb/src/include/duckdb/parallel/interrupt.hpp +1 -1
  446. package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +1 -1
  447. package/src/duckdb/src/include/duckdb/parallel/task.hpp +0 -20
  448. package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +4 -2
  449. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +10 -0
  450. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +2 -1
  451. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +0 -24
  452. package/src/duckdb/src/include/duckdb/parser/parsed_data/comment_on_column_info.hpp +46 -0
  453. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +2 -0
  454. package/src/duckdb/src/include/duckdb/parser/parsed_data/extra_drop_info.hpp +1 -1
  455. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +3 -2
  456. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +3 -3
  457. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +3 -3
  458. package/src/duckdb/src/include/duckdb/planner/binder.hpp +11 -4
  459. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +59 -23
  460. package/src/duckdb/src/include/duckdb/planner/expression.hpp +1 -0
  461. package/src/duckdb/src/include/duckdb/planner/expression_binder/column_alias_binder.hpp +2 -2
  462. package/src/duckdb/src/include/duckdb/planner/expression_iterator.hpp +11 -3
  463. package/src/duckdb/src/include/duckdb/planner/extension_callback.hpp +6 -0
  464. package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +0 -1
  465. package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +1 -1
  466. package/src/duckdb/src/include/duckdb/planner/operator/logical_limit.hpp +5 -9
  467. package/src/duckdb/src/include/duckdb/planner/subquery/rewrite_correlated_expressions.hpp +0 -15
  468. package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +5 -0
  469. package/src/duckdb/src/include/duckdb/storage/buffer/buffer_pool.hpp +40 -5
  470. package/src/duckdb/src/include/duckdb/storage/compression/alp/algorithm/alp.hpp +1 -1
  471. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_analyze.hpp +5 -1
  472. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_compress.hpp +4 -4
  473. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_utils.hpp +2 -1
  474. package/src/duckdb/src/include/duckdb/storage/compression/alprd/algorithm/alprd.hpp +10 -8
  475. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_analyze.hpp +5 -1
  476. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_compress.hpp +3 -3
  477. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/bit_reader.hpp +11 -10
  478. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/bit_utils.hpp +3 -1
  479. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/chimp128.hpp +1 -1
  480. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/leading_zero_buffer.hpp +5 -3
  481. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_scan.hpp +2 -1
  482. package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +1 -1
  483. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +3 -1
  484. package/src/duckdb/src/include/duckdb/storage/index.hpp +1 -1
  485. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
  486. package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +3 -0
  487. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +1 -1
  488. package/src/duckdb/src/include/duckdb/storage/table/append_state.hpp +0 -2
  489. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +1 -1
  490. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +5 -3
  491. package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +2 -2
  492. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +5 -0
  493. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +9 -2
  494. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +2 -6
  495. package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +3 -3
  496. package/src/duckdb/src/include/duckdb/storage/temporary_file_manager.hpp +169 -0
  497. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +11 -1
  498. package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +6 -1
  499. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +1 -1
  500. package/src/duckdb/src/include/duckdb.h +119 -67
  501. package/src/duckdb/src/main/appender.cpp +2 -1
  502. package/src/duckdb/src/main/attached_database.cpp +49 -27
  503. package/src/duckdb/src/main/capi/appender-c.cpp +1 -1
  504. package/src/duckdb/src/main/capi/cast/ub_duckdb_main_capi_cast.cpp +3 -0
  505. package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
  506. package/src/duckdb/src/main/capi/data_chunk-c.cpp +9 -1
  507. package/src/duckdb/src/main/capi/datetime-c.cpp +14 -8
  508. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +29 -2
  509. package/src/duckdb/src/main/capi/helper-c.cpp +2 -0
  510. package/src/duckdb/src/main/capi/hugeint-c.cpp +2 -1
  511. package/src/duckdb/src/main/capi/logical_types-c.cpp +35 -1
  512. package/src/duckdb/src/main/capi/result-c.cpp +9 -0
  513. package/src/duckdb/src/main/capi/ub_duckdb_main_capi.cpp +19 -0
  514. package/src/duckdb/src/main/chunk_scan_state/ub_duckdb_main_chunk_scan_state.cpp +2 -0
  515. package/src/duckdb/src/main/client_context.cpp +133 -33
  516. package/src/duckdb/src/main/client_context_file_opener.cpp +8 -7
  517. package/src/duckdb/src/main/config.cpp +2 -0
  518. package/src/duckdb/src/main/connection_manager.cpp +8 -0
  519. package/src/duckdb/src/main/database.cpp +13 -4
  520. package/src/duckdb/src/main/database_manager.cpp +10 -1
  521. package/src/duckdb/src/main/extension/extension_helper.cpp +8 -5
  522. package/src/duckdb/src/main/extension/extension_install.cpp +1 -1
  523. package/src/duckdb/src/main/extension/ub_duckdb_main_extension.cpp +6 -0
  524. package/src/duckdb/src/main/prepared_statement_data.cpp +23 -6
  525. package/src/duckdb/src/main/query_profiler.cpp +9 -7
  526. package/src/duckdb/src/main/relation/read_csv_relation.cpp +17 -12
  527. package/src/duckdb/src/main/relation/ub_duckdb_main_relation.cpp +26 -0
  528. package/src/duckdb/src/main/relation/value_relation.cpp +2 -0
  529. package/src/duckdb/src/main/secret/secret.cpp +1 -1
  530. package/src/duckdb/src/main/secret/secret_manager.cpp +41 -8
  531. package/src/duckdb/src/main/secret/secret_storage.cpp +8 -2
  532. package/src/duckdb/src/main/settings/settings.cpp +42 -2
  533. package/src/duckdb/src/main/settings/ub_duckdb_main_settings.cpp +2 -0
  534. package/src/duckdb/src/main/ub_duckdb_main.cpp +25 -0
  535. package/src/duckdb/src/optimizer/compressed_materialization/ub_duckdb_optimizer_compressed_materialization.cpp +4 -0
  536. package/src/duckdb/src/optimizer/filter_combiner.cpp +20 -14
  537. package/src/duckdb/src/optimizer/in_clause_rewriter.cpp +5 -1
  538. package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +23 -11
  539. package/src/duckdb/src/optimizer/join_order/ub_duckdb_optimizer_join_order.cpp +12 -0
  540. package/src/duckdb/src/optimizer/matcher/ub_duckdb_optimizer_matcher.cpp +2 -0
  541. package/src/duckdb/src/optimizer/pullup/ub_duckdb_optimizer_pullup.cpp +6 -0
  542. package/src/duckdb/src/optimizer/pushdown/pushdown_limit.cpp +1 -1
  543. package/src/duckdb/src/optimizer/pushdown/ub_duckdb_optimizer_pushdown.cpp +12 -0
  544. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +7 -6
  545. package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +8 -6
  546. package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +1 -1
  547. package/src/duckdb/src/optimizer/rule/ub_duckdb_optimizer_rules.cpp +16 -0
  548. package/src/duckdb/src/optimizer/statistics/expression/propagate_cast.cpp +71 -1
  549. package/src/duckdb/src/optimizer/statistics/expression/ub_duckdb_optimizer_statistics_expr.cpp +11 -0
  550. package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +1 -1
  551. package/src/duckdb/src/optimizer/statistics/operator/propagate_limit.cpp +5 -1
  552. package/src/duckdb/src/optimizer/statistics/operator/ub_duckdb_optimizer_statistics_op.cpp +11 -0
  553. package/src/duckdb/src/optimizer/topn_optimizer.cpp +12 -11
  554. package/src/duckdb/src/optimizer/ub_duckdb_optimizer.cpp +20 -0
  555. package/src/duckdb/src/parallel/executor.cpp +8 -19
  556. package/src/duckdb/src/parallel/executor_task.cpp +6 -2
  557. package/src/duckdb/src/parallel/pipeline.cpp +12 -6
  558. package/src/duckdb/src/parallel/pipeline_executor.cpp +1 -1
  559. package/src/duckdb/src/parallel/pipeline_finish_event.cpp +2 -2
  560. package/src/duckdb/src/parallel/pipeline_initialize_event.cpp +1 -2
  561. package/src/duckdb/src/parallel/task_scheduler.cpp +15 -8
  562. package/src/duckdb/src/parallel/ub_duckdb_parallel.cpp +15 -0
  563. package/src/duckdb/src/parser/constraints/ub_duckdb_constraints.cpp +5 -0
  564. package/src/duckdb/src/parser/expression/ub_duckdb_expression.cpp +18 -0
  565. package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +0 -18
  566. package/src/duckdb/src/parser/parsed_data/comment_on_column_info.cpp +44 -0
  567. package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +1 -0
  568. package/src/duckdb/src/parser/parsed_data/extra_drop_info.cpp +2 -0
  569. package/src/duckdb/src/parser/parsed_data/ub_duckdb_parsed_data.cpp +24 -0
  570. package/src/duckdb/src/parser/parser.cpp +1 -1
  571. package/src/duckdb/src/parser/query_error_context.cpp +15 -1
  572. package/src/duckdb/src/parser/query_node/ub_duckdb_query_node.cpp +5 -0
  573. package/src/duckdb/src/parser/statement/export_statement.cpp +2 -1
  574. package/src/duckdb/src/parser/statement/relation_statement.cpp +2 -2
  575. package/src/duckdb/src/parser/statement/ub_duckdb_statement.cpp +25 -0
  576. package/src/duckdb/src/parser/tableref/pivotref.cpp +3 -3
  577. package/src/duckdb/src/parser/tableref/showref.cpp +2 -0
  578. package/src/duckdb/src/parser/tableref/ub_duckdb_parser_tableref.cpp +8 -0
  579. package/src/duckdb/src/parser/transform/constraint/ub_duckdb_transformer_constraint.cpp +2 -0
  580. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +1 -1
  581. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +10 -2
  582. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +7 -7
  583. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +2 -1
  584. package/src/duckdb/src/parser/transform/expression/ub_duckdb_transformer_expression.cpp +20 -0
  585. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +2 -2
  586. package/src/duckdb/src/parser/transform/helpers/ub_duckdb_transformer_helpers.cpp +8 -0
  587. package/src/duckdb/src/parser/transform/statement/transform_comment_on.cpp +3 -8
  588. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +3 -1
  589. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +2 -3
  590. package/src/duckdb/src/parser/transform/statement/ub_duckdb_transformer_statement.cpp +37 -0
  591. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +16 -0
  592. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +49 -32
  593. package/src/duckdb/src/parser/transform/tableref/ub_duckdb_transformer_tableref.cpp +8 -0
  594. package/src/duckdb/src/parser/ub_duckdb_parser.cpp +15 -0
  595. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +11 -4
  596. package/src/duckdb/src/planner/binder/expression/bind_operator_expression.cpp +4 -1
  597. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +71 -5
  598. package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +35 -1
  599. package/src/duckdb/src/planner/binder/expression/ub_duckdb_bind_expression.cpp +20 -0
  600. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +55 -51
  601. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +1 -11
  602. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +2 -2
  603. package/src/duckdb/src/planner/binder/query_node/ub_duckdb_bind_query_node.cpp +12 -0
  604. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +12 -6
  605. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +1 -1
  606. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +8 -2
  607. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +6 -3
  608. package/src/duckdb/src/planner/binder/statement/bind_simple.cpp +13 -2
  609. package/src/duckdb/src/planner/binder/statement/ub_duckdb_bind_statement.cpp +26 -0
  610. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +15 -4
  611. package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +9 -2
  612. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +93 -45
  613. package/src/duckdb/src/planner/binder/tableref/bind_subqueryref.cpp +6 -1
  614. package/src/duckdb/src/planner/binder/tableref/ub_duckdb_bind_tableref.cpp +17 -0
  615. package/src/duckdb/src/planner/binder.cpp +22 -23
  616. package/src/duckdb/src/planner/bound_result_modifier.cpp +67 -4
  617. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +5 -1
  618. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +3 -0
  619. package/src/duckdb/src/planner/expression/ub_duckdb_planner_expression.cpp +19 -0
  620. package/src/duckdb/src/planner/expression_binder/column_alias_binder.cpp +14 -9
  621. package/src/duckdb/src/planner/expression_binder/having_binder.cpp +17 -9
  622. package/src/duckdb/src/planner/expression_binder/lateral_binder.cpp +61 -37
  623. package/src/duckdb/src/planner/expression_binder/qualify_binder.cpp +8 -4
  624. package/src/duckdb/src/planner/expression_binder/ub_duckdb_expression_binders.cpp +20 -0
  625. package/src/duckdb/src/planner/expression_binder/where_binder.cpp +3 -2
  626. package/src/duckdb/src/planner/expression_iterator.cpp +73 -52
  627. package/src/duckdb/src/planner/filter/ub_duckdb_planner_filter.cpp +4 -0
  628. package/src/duckdb/src/planner/logical_operator_visitor.cpp +4 -14
  629. package/src/duckdb/src/planner/operator/logical_limit.cpp +14 -6
  630. package/src/duckdb/src/planner/operator/ub_duckdb_planner_operator.cpp +43 -0
  631. package/src/duckdb/src/planner/parsed_data/ub_duckdb_planner_parsed_data.cpp +2 -0
  632. package/src/duckdb/src/planner/planner.cpp +3 -0
  633. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +46 -18
  634. package/src/duckdb/src/planner/subquery/rewrite_correlated_expressions.cpp +39 -33
  635. package/src/duckdb/src/planner/subquery/ub_duckdb_planner_subquery.cpp +4 -0
  636. package/src/duckdb/src/planner/ub_duckdb_planner.cpp +15 -0
  637. package/src/duckdb/src/storage/arena_allocator.cpp +9 -0
  638. package/src/duckdb/src/storage/buffer/block_handle.cpp +7 -2
  639. package/src/duckdb/src/storage/buffer/block_manager.cpp +7 -3
  640. package/src/duckdb/src/storage/buffer/buffer_pool.cpp +121 -24
  641. package/src/duckdb/src/storage/buffer/ub_duckdb_storage_buffer.cpp +6 -0
  642. package/src/duckdb/src/storage/checkpoint/ub_duckdb_storage_checkpoint.cpp +5 -0
  643. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +4 -4
  644. package/src/duckdb/src/storage/compression/chimp/ub_duckdb_storage_compression_chimp.cpp +6 -0
  645. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +6 -5
  646. package/src/duckdb/src/storage/compression/fsst.cpp +3 -2
  647. package/src/duckdb/src/storage/compression/rle.cpp +1 -1
  648. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +4 -4
  649. package/src/duckdb/src/storage/compression/ub_duckdb_storage_compression.cpp +12 -0
  650. package/src/duckdb/src/storage/data_table.cpp +6 -3
  651. package/src/duckdb/src/storage/local_storage.cpp +5 -2
  652. package/src/duckdb/src/storage/metadata/metadata_manager.cpp +4 -4
  653. package/src/duckdb/src/storage/metadata/metadata_reader.cpp +1 -1
  654. package/src/duckdb/src/storage/metadata/metadata_writer.cpp +1 -1
  655. package/src/duckdb/src/storage/metadata/ub_duckdb_storage_metadata.cpp +4 -0
  656. package/src/duckdb/src/storage/partial_block_manager.cpp +1 -1
  657. package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +2 -0
  658. package/src/duckdb/src/storage/serialization/serialize_expression.cpp +3 -0
  659. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +5 -29
  660. package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +22 -4
  661. package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +12 -32
  662. package/src/duckdb/src/storage/serialization/ub_duckdb_storage_serialization.cpp +16 -0
  663. package/src/duckdb/src/storage/standard_buffer_manager.cpp +29 -397
  664. package/src/duckdb/src/storage/statistics/string_stats.cpp +1 -1
  665. package/src/duckdb/src/storage/statistics/ub_duckdb_storage_statistics.cpp +10 -0
  666. package/src/duckdb/src/storage/storage_info.cpp +1 -1
  667. package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +3 -3
  668. package/src/duckdb/src/storage/table/column_data.cpp +7 -16
  669. package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +4 -1
  670. package/src/duckdb/src/storage/table/column_segment.cpp +68 -78
  671. package/src/duckdb/src/storage/table/list_column_data.cpp +1 -0
  672. package/src/duckdb/src/storage/table/row_group.cpp +17 -7
  673. package/src/duckdb/src/storage/table/row_group_collection.cpp +28 -27
  674. package/src/duckdb/src/storage/table/ub_duckdb_storage_table.cpp +17 -0
  675. package/src/duckdb/src/storage/table/update_segment.cpp +7 -7
  676. package/src/duckdb/src/storage/temporary_file_manager.cpp +334 -0
  677. package/src/duckdb/src/storage/ub_duckdb_storage.cpp +20 -0
  678. package/src/duckdb/src/storage/write_ahead_log.cpp +3 -2
  679. package/src/duckdb/src/transaction/commit_state.cpp +4 -2
  680. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +32 -17
  681. package/src/duckdb/src/transaction/meta_transaction.cpp +24 -0
  682. package/src/duckdb/src/transaction/transaction_context.cpp +0 -9
  683. package/src/duckdb/src/transaction/ub_duckdb_transaction.cpp +11 -0
  684. package/src/duckdb/src/transaction/undo_buffer.cpp +1 -1
  685. package/src/duckdb/third_party/jaro_winkler/details/common.hpp +1 -1
  686. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +2 -0
  687. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +1032 -551
  688. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +24122 -24304
  689. package/src/duckdb/third_party/mbedtls/include/mbedtls/mbedtls_config.h +0 -3
  690. package/src/duckdb/third_party/mbedtls/library/entropy_poll.cpp +32 -4
  691. package/src/duckdb/third_party/miniz/miniz_wrapper.hpp +4 -4
  692. package/src/duckdb/third_party/tdigest/t_digest.hpp +3 -3
  693. package/src/duckdb/ub_src_common_arrow_appender.cpp +2 -0
  694. package/src/duckdb/ub_src_common_exception.cpp +2 -0
  695. package/src/duckdb/ub_src_execution_operator_helper.cpp +2 -0
  696. package/src/duckdb/ub_src_execution_operator_persistent.cpp +0 -2
  697. package/src/duckdb/ub_src_execution_physical_plan.cpp +0 -2
  698. package/src/duckdb/ub_src_parser_parsed_data.cpp +1 -1
  699. package/src/duckdb/ub_src_planner_operator.cpp +0 -2
  700. package/src/duckdb/ub_src_storage.cpp +2 -0
  701. package/test/columns.test.ts +1 -1
  702. package/test/test_all_types.test.ts +1 -1
@@ -27,6 +27,32 @@
27
27
 
28
28
  namespace duckdb {
29
29
 
30
+ UnifiedVectorFormat::UnifiedVectorFormat() : sel(nullptr), data(nullptr) {
31
+ }
32
+
33
+ UnifiedVectorFormat::UnifiedVectorFormat(UnifiedVectorFormat &&other) noexcept {
34
+ bool refers_to_self = other.sel == &other.owned_sel;
35
+ std::swap(sel, other.sel);
36
+ std::swap(data, other.data);
37
+ std::swap(validity, other.validity);
38
+ std::swap(owned_sel, other.owned_sel);
39
+ if (refers_to_self) {
40
+ sel = &owned_sel;
41
+ }
42
+ }
43
+
44
+ UnifiedVectorFormat &UnifiedVectorFormat::operator=(UnifiedVectorFormat &&other) noexcept {
45
+ bool refers_to_self = other.sel == &other.owned_sel;
46
+ std::swap(sel, other.sel);
47
+ std::swap(data, other.data);
48
+ std::swap(validity, other.validity);
49
+ std::swap(owned_sel, other.owned_sel);
50
+ if (refers_to_self) {
51
+ sel = &owned_sel;
52
+ }
53
+ return *this;
54
+ }
55
+
30
56
  Vector::Vector(LogicalType type_p, bool create_data, bool zero_data, idx_t capacity)
31
57
  : vector_type(VectorType::FLAT_VECTOR), type(std::move(type_p)), data(nullptr), validity(capacity) {
32
58
  if (create_data) {
@@ -144,11 +170,22 @@ void Vector::ResetFromCache(const VectorCache &cache) {
144
170
  }
145
171
 
146
172
  void Vector::Slice(const Vector &other, idx_t offset, idx_t end) {
173
+ D_ASSERT(end >= offset);
147
174
  if (other.GetVectorType() == VectorType::CONSTANT_VECTOR) {
148
175
  Reference(other);
149
176
  return;
150
177
  }
151
- D_ASSERT(other.GetVectorType() == VectorType::FLAT_VECTOR);
178
+ if (other.GetVectorType() != VectorType::FLAT_VECTOR) {
179
+ // we can slice the data directly only for flat vectors
180
+ // for non-flat vectors slice using a selection vector instead
181
+ idx_t count = end - offset;
182
+ SelectionVector sel(count);
183
+ for (idx_t i = 0; i < count; i++) {
184
+ sel.set_index(i, offset + i);
185
+ }
186
+ Slice(other, sel, count);
187
+ return;
188
+ }
152
189
 
153
190
  auto internal_type = GetType().InternalType();
154
191
  if (internal_type == PhysicalType::STRUCT) {
@@ -624,11 +661,14 @@ Value Vector::GetValueInternal(const Vector &v_p, idx_t index_p) {
624
661
  auto str = reinterpret_cast<string_t *>(data)[index];
625
662
  return Value(str.GetString());
626
663
  }
627
- case LogicalTypeId::AGGREGATE_STATE:
628
664
  case LogicalTypeId::BLOB: {
629
665
  auto str = reinterpret_cast<string_t *>(data)[index];
630
666
  return Value::BLOB(const_data_ptr_cast(str.GetData()), str.GetSize());
631
667
  }
668
+ case LogicalTypeId::AGGREGATE_STATE: {
669
+ auto str = reinterpret_cast<string_t *>(data)[index];
670
+ return Value::AGGREGATE_STATE(vector->GetType(), const_data_ptr_cast(str.GetData()), str.GetSize());
671
+ }
632
672
  case LogicalTypeId::BIT: {
633
673
  auto str = reinterpret_cast<string_t *>(data)[index];
634
674
  return Value::BIT(const_data_ptr_cast(str.GetData()), str.GetSize());
@@ -643,10 +683,16 @@ Value Vector::GetValueInternal(const Vector &v_p, idx_t index_p) {
643
683
  return Value::MAP(ListType::GetChildType(type), std::move(children));
644
684
  }
645
685
  case LogicalTypeId::UNION: {
646
- auto tag = UnionVector::GetTag(*vector, index);
647
- auto value = UnionVector::GetMember(*vector, tag).GetValue(index);
648
- auto members = UnionType::CopyMemberTypes(type);
649
- return Value::UNION(members, tag, std::move(value));
686
+ // Remember to pass the original index_p here so we dont slice twice when looking up the tag
687
+ // in case this is a dictionary vector
688
+ union_tag_t tag;
689
+ if (UnionVector::TryGetTag(*vector, index_p, tag)) {
690
+ auto value = UnionVector::GetMember(*vector, tag).GetValue(index_p);
691
+ auto members = UnionType::CopyMemberTypes(type);
692
+ return Value::UNION(members, tag, std::move(value));
693
+ } else {
694
+ return Value(vector->GetType());
695
+ }
650
696
  }
651
697
  case LogicalTypeId::STRUCT: {
652
698
  // we can derive the value schema from the vector schema
@@ -831,7 +877,7 @@ void Vector::Flatten(idx_t count) {
831
877
  }
832
878
  data = buffer->GetData();
833
879
  vector_type = VectorType::FLAT_VECTOR;
834
- if (is_null) {
880
+ if (is_null && GetType().InternalType() != PhysicalType::ARRAY) {
835
881
  // constant NULL, set nullmask
836
882
  validity.EnsureWritable();
837
883
  validity.SetAllInvalid(count);
@@ -889,15 +935,20 @@ void Vector::Flatten(idx_t count) {
889
935
  break;
890
936
  }
891
937
  case PhysicalType::ARRAY: {
892
- auto &child = ArrayVector::GetEntry(*this);
938
+ auto &original_child = ArrayVector::GetEntry(*this);
893
939
  auto array_size = ArrayType::GetSize(GetType());
894
-
895
940
  auto flattened_buffer = make_uniq<VectorArrayBuffer>(GetType(), count);
896
941
  auto &new_child = flattened_buffer->GetChild();
897
942
 
898
- // Make sure to initialize a validity mask for the new child vector with the correct size
899
- if (!child.validity.AllValid()) {
900
- new_child.validity.Initialize(array_size * count);
943
+ // Fast path: The array is a constant null
944
+ if (is_null) {
945
+ // Invalidate the parent array
946
+ validity.SetAllInvalid(count);
947
+ // Also invalidate the new child array
948
+ new_child.validity.SetAllInvalid(count * array_size);
949
+ // Attach the flattened buffer and return
950
+ auxiliary = shared_ptr<VectorBuffer>(flattened_buffer.release());
951
+ return;
901
952
  }
902
953
 
903
954
  // Now we need to "unpack" the child vector.
@@ -909,7 +960,8 @@ void Vector::Flatten(idx_t count) {
909
960
  // | 2 |
910
961
  // ...
911
962
 
912
- child.Flatten(count * array_size);
963
+ auto child_vec = make_uniq<Vector>(original_child);
964
+ child_vec->Flatten(count * array_size);
913
965
 
914
966
  // Create a selection vector
915
967
  SelectionVector sel(count * array_size);
@@ -917,7 +969,7 @@ void Vector::Flatten(idx_t count) {
917
969
  for (idx_t elem_idx = 0; elem_idx < array_size; elem_idx++) {
918
970
  auto position = array_idx * array_size + elem_idx;
919
971
  // Broadcast the validity
920
- if (FlatVector::IsNull(child, elem_idx)) {
972
+ if (FlatVector::IsNull(*child_vec, elem_idx)) {
921
973
  FlatVector::SetNull(new_child, position, true);
922
974
  }
923
975
  sel.set_index(position, elem_idx);
@@ -925,7 +977,7 @@ void Vector::Flatten(idx_t count) {
925
977
  }
926
978
 
927
979
  // Copy over the data to the new buffer
928
- VectorOperations::Copy(child, new_child, sel, count * array_size, 0, 0);
980
+ VectorOperations::Copy(*child_vec, new_child, sel, count * array_size, 0, 0);
929
981
  auxiliary = shared_ptr<VectorBuffer>(flattened_buffer.release());
930
982
 
931
983
  } break;
@@ -969,7 +1021,7 @@ void Vector::Flatten(const SelectionVector &sel, idx_t count) {
969
1021
  break;
970
1022
  case VectorType::FSST_VECTOR: {
971
1023
  // create a new flat vector of this type
972
- Vector other(GetType());
1024
+ Vector other(GetType(), count);
973
1025
  // copy the data of this vector to the other vector, removing compression and selection vector in the process
974
1026
  VectorOperations::Copy(*this, other, sel, count, 0, 0);
975
1027
  // create a reference to the data in the other vector
@@ -1067,6 +1119,7 @@ void Vector::Sequence(int64_t start, int64_t increment, idx_t count) {
1067
1119
  auxiliary.reset();
1068
1120
  }
1069
1121
 
1122
+ // FIXME: This should ideally be const
1070
1123
  void Vector::Serialize(Serializer &serializer, idx_t count) {
1071
1124
  auto &logical_type = GetType();
1072
1125
 
@@ -1137,9 +1190,11 @@ void Vector::Serialize(Serializer &serializer, idx_t count) {
1137
1190
  break;
1138
1191
  }
1139
1192
  case PhysicalType::ARRAY: {
1140
- Flatten(count);
1141
- auto &child = ArrayVector::GetEntry(*this);
1142
- auto array_size = ArrayType::GetSize(type);
1193
+ Vector serialized_vector(*this);
1194
+ serialized_vector.Flatten(count);
1195
+
1196
+ auto &child = ArrayVector::GetEntry(serialized_vector);
1197
+ auto array_size = ArrayType::GetSize(serialized_vector.GetType());
1143
1198
  auto child_size = array_size * count;
1144
1199
  serializer.WriteProperty<uint64_t>(103, "array_size", array_size);
1145
1200
  serializer.WriteObject(104, "child", [&](Serializer &object) { child.Serialize(object, child_size); });
@@ -1522,6 +1577,94 @@ void Vector::Verify(idx_t count) {
1522
1577
  Verify(*this, *flat_sel, count);
1523
1578
  }
1524
1579
 
1580
+ void Vector::DebugTransformToDictionary(Vector &vector, idx_t count) {
1581
+ if (vector.GetVectorType() != VectorType::FLAT_VECTOR) {
1582
+ // only supported for flat vectors currently
1583
+ return;
1584
+ }
1585
+ // convert vector to dictionary vector
1586
+ // first create an inverted vector of twice the size with NULL values every other value
1587
+ // i.e. [1, 2, 3] is converted into [NULL, 3, NULL, 2, NULL, 1]
1588
+ idx_t verify_count = count * 2;
1589
+ SelectionVector inverted_sel(verify_count);
1590
+ idx_t offset = 0;
1591
+ for (idx_t i = 0; i < count; i++) {
1592
+ idx_t current_index = count - i - 1;
1593
+ inverted_sel.set_index(offset++, current_index);
1594
+ inverted_sel.set_index(offset++, current_index);
1595
+ }
1596
+ Vector inverted_vector(vector, inverted_sel, verify_count);
1597
+ inverted_vector.Flatten(verify_count);
1598
+ // now insert the NULL values at every other position
1599
+ for (idx_t i = 0; i < count; i++) {
1600
+ FlatVector::SetNull(inverted_vector, i * 2, true);
1601
+ }
1602
+ // construct the selection vector pointing towards the original values
1603
+ // we start at the back, (verify_count - 1) and move backwards
1604
+ SelectionVector original_sel(count);
1605
+ offset = 0;
1606
+ for (idx_t i = 0; i < count; i++) {
1607
+ original_sel.set_index(offset++, verify_count - 1 - i * 2);
1608
+ }
1609
+ // now slice the inverted vector with the inverted selection vector
1610
+ vector.Slice(inverted_vector, original_sel, count);
1611
+ vector.Verify(count);
1612
+ }
1613
+
1614
+ void Vector::DebugShuffleNestedVector(Vector &vector, idx_t count) {
1615
+ switch (vector.GetType().id()) {
1616
+ case LogicalTypeId::STRUCT: {
1617
+ auto &entries = StructVector::GetEntries(vector);
1618
+ // recurse into child elements
1619
+ for (auto &entry : entries) {
1620
+ Vector::DebugShuffleNestedVector(*entry, count);
1621
+ }
1622
+ break;
1623
+ }
1624
+ case LogicalTypeId::LIST: {
1625
+ if (vector.GetVectorType() != VectorType::FLAT_VECTOR) {
1626
+ break;
1627
+ }
1628
+ auto list_entries = FlatVector::GetData<list_entry_t>(vector);
1629
+ idx_t child_count = 0;
1630
+ for (idx_t r = 0; r < count; r++) {
1631
+ if (FlatVector::IsNull(vector, r)) {
1632
+ continue;
1633
+ }
1634
+ child_count += list_entries[r].length;
1635
+ }
1636
+ if (child_count == 0) {
1637
+ break;
1638
+ }
1639
+ auto &child_vector = ListVector::GetEntry(vector);
1640
+ // reverse the order of all lists
1641
+ SelectionVector child_sel(child_count);
1642
+ idx_t position = child_count;
1643
+ for (idx_t r = 0; r < count; r++) {
1644
+ if (FlatVector::IsNull(vector, r)) {
1645
+ continue;
1646
+ }
1647
+ // move this list to the back
1648
+ position -= list_entries[r].length;
1649
+ for (idx_t k = 0; k < list_entries[r].length; k++) {
1650
+ child_sel.set_index(position + k, list_entries[r].offset + k);
1651
+ }
1652
+ // adjust the offset to this new position
1653
+ list_entries[r].offset = position;
1654
+ }
1655
+ child_vector.Slice(child_sel, child_count);
1656
+ child_vector.Flatten(child_count);
1657
+ ListVector::SetListSize(vector, child_count);
1658
+
1659
+ // recurse into child elements
1660
+ Vector::DebugShuffleNestedVector(child_vector, child_count);
1661
+ break;
1662
+ }
1663
+ default:
1664
+ break;
1665
+ }
1666
+ }
1667
+
1525
1668
  //===--------------------------------------------------------------------===//
1526
1669
  // FlatVector
1527
1670
  //===--------------------------------------------------------------------===//
@@ -1529,7 +1672,7 @@ void FlatVector::SetNull(Vector &vector, idx_t idx, bool is_null) {
1529
1672
  D_ASSERT(vector.GetVectorType() == VectorType::FLAT_VECTOR);
1530
1673
  vector.validity.Set(idx, !is_null);
1531
1674
  if (is_null) {
1532
- auto type = vector.GetType();
1675
+ auto &type = vector.GetType();
1533
1676
  auto internal_type = type.InternalType();
1534
1677
  if (internal_type == PhysicalType::STRUCT) {
1535
1678
  // set all child entries to null as well
@@ -1540,7 +1683,6 @@ void FlatVector::SetNull(Vector &vector, idx_t idx, bool is_null) {
1540
1683
  } else if (internal_type == PhysicalType::ARRAY) {
1541
1684
  // set the child element in the array to null as well
1542
1685
  auto &child = ArrayVector::GetEntry(vector);
1543
- D_ASSERT(child.GetVectorType() == VectorType::FLAT_VECTOR);
1544
1686
  auto array_size = ArrayType::GetSize(type);
1545
1687
  auto child_offset = idx * array_size;
1546
1688
  for (idx_t i = 0; i < array_size; i++) {
@@ -1629,8 +1771,8 @@ void ConstantVector::Reference(Vector &vector, Vector &source, idx_t position, i
1629
1771
  case PhysicalType::ARRAY: {
1630
1772
  UnifiedVectorFormat vdata;
1631
1773
  source.ToUnifiedFormat(count, vdata);
1632
-
1633
- if (!vdata.validity.RowIsValid(position)) {
1774
+ auto source_idx = vdata.sel->get_index(position);
1775
+ if (!vdata.validity.RowIsValid(source_idx)) {
1634
1776
  // list is null: create null value
1635
1777
  Value null_value(source_type);
1636
1778
  vector.Reference(null_value);
@@ -1646,7 +1788,7 @@ void ConstantVector::Reference(Vector &vector, Vector &source, idx_t position, i
1646
1788
  auto array_size = ArrayType::GetSize(source_type);
1647
1789
  SelectionVector sel(array_size);
1648
1790
  for (idx_t i = 0; i < array_size; i++) {
1649
- sel.set_index(i, array_size * position + i);
1791
+ sel.set_index(i, array_size * source_idx + i);
1650
1792
  }
1651
1793
  target_child.Slice(sel, array_size);
1652
1794
  target_child.Flatten(array_size); // since its constant we only have to flatten this much
@@ -1691,19 +1833,19 @@ void ConstantVector::Reference(Vector &vector, Vector &source, idx_t position, i
1691
1833
  // StringVector
1692
1834
  //===--------------------------------------------------------------------===//
1693
1835
  string_t StringVector::AddString(Vector &vector, const char *data, idx_t len) {
1694
- return StringVector::AddString(vector, string_t(data, len));
1836
+ return StringVector::AddString(vector, string_t(data, UnsafeNumericCast<uint32_t>(len)));
1695
1837
  }
1696
1838
 
1697
1839
  string_t StringVector::AddStringOrBlob(Vector &vector, const char *data, idx_t len) {
1698
- return StringVector::AddStringOrBlob(vector, string_t(data, len));
1840
+ return StringVector::AddStringOrBlob(vector, string_t(data, UnsafeNumericCast<uint32_t>(len)));
1699
1841
  }
1700
1842
 
1701
1843
  string_t StringVector::AddString(Vector &vector, const char *data) {
1702
- return StringVector::AddString(vector, string_t(data, strlen(data)));
1844
+ return StringVector::AddString(vector, string_t(data, UnsafeNumericCast<uint32_t>(strlen(data))));
1703
1845
  }
1704
1846
 
1705
1847
  string_t StringVector::AddString(Vector &vector, const string &data) {
1706
- return StringVector::AddString(vector, string_t(data.c_str(), data.size()));
1848
+ return StringVector::AddString(vector, string_t(data.c_str(), UnsafeNumericCast<uint32_t>(data.size())));
1707
1849
  }
1708
1850
 
1709
1851
  string_t StringVector::AddString(Vector &vector, string_t data) {
@@ -1737,7 +1879,7 @@ string_t StringVector::AddStringOrBlob(Vector &vector, string_t data) {
1737
1879
  string_t StringVector::EmptyString(Vector &vector, idx_t len) {
1738
1880
  D_ASSERT(vector.GetType().InternalType() == PhysicalType::VARCHAR);
1739
1881
  if (len <= string_t::INLINE_LENGTH) {
1740
- return string_t(len);
1882
+ return string_t(UnsafeNumericCast<uint32_t>(len));
1741
1883
  }
1742
1884
  if (!vector.auxiliary) {
1743
1885
  vector.auxiliary = make_buffer<VectorStringBuffer>();
@@ -1784,7 +1926,7 @@ void StringVector::AddHeapReference(Vector &vector, Vector &other) {
1784
1926
  // FSSTVector
1785
1927
  //===--------------------------------------------------------------------===//
1786
1928
  string_t FSSTVector::AddCompressedString(Vector &vector, const char *data, idx_t len) {
1787
- return FSSTVector::AddCompressedString(vector, string_t(data, len));
1929
+ return FSSTVector::AddCompressedString(vector, string_t(data, UnsafeNumericCast<uint32_t>(len)));
1788
1930
  }
1789
1931
 
1790
1932
  string_t FSSTVector::AddCompressedString(Vector &vector, string_t data) {
@@ -1889,60 +2031,76 @@ const Vector &MapVector::GetValues(const Vector &vector) {
1889
2031
  }
1890
2032
 
1891
2033
  MapInvalidReason MapVector::CheckMapValidity(Vector &map, idx_t count, const SelectionVector &sel) {
2034
+
1892
2035
  D_ASSERT(map.GetType().id() == LogicalTypeId::MAP);
1893
- UnifiedVectorFormat map_vdata;
1894
2036
 
1895
- map.ToUnifiedFormat(count, map_vdata);
1896
- auto &map_validity = map_vdata.validity;
2037
+ // unify the MAP vector, which is a physical LIST vector
2038
+ UnifiedVectorFormat map_data;
2039
+ map.ToUnifiedFormat(count, map_data);
2040
+ auto map_entries = UnifiedVectorFormat::GetDataNoConst<list_entry_t>(map_data);
2041
+ auto maps_length = ListVector::GetListSize(map);
1897
2042
 
1898
- auto list_data = ListVector::GetData(map);
2043
+ // unify the child vector containing the keys
1899
2044
  auto &keys = MapVector::GetKeys(map);
1900
- UnifiedVectorFormat key_vdata;
1901
- keys.ToUnifiedFormat(count, key_vdata);
1902
- auto &key_validity = key_vdata.validity;
1903
-
1904
- for (idx_t row = 0; row < count; row++) {
1905
- auto mapped_row = sel.get_index(row);
1906
- auto map_idx = map_vdata.sel->get_index(mapped_row);
1907
- // map is allowed to be NULL
1908
- if (!map_validity.RowIsValid(map_idx)) {
2045
+ UnifiedVectorFormat key_data;
2046
+ keys.ToUnifiedFormat(maps_length, key_data);
2047
+
2048
+ for (idx_t row_idx = 0; row_idx < count; row_idx++) {
2049
+
2050
+ auto mapped_row = sel.get_index(row_idx);
2051
+ auto map_idx = map_data.sel->get_index(mapped_row);
2052
+
2053
+ if (!map_data.validity.RowIsValid(map_idx)) {
1909
2054
  continue;
1910
2055
  }
2056
+
1911
2057
  value_set_t unique_keys;
1912
- for (idx_t i = 0; i < list_data[map_idx].length; i++) {
1913
- auto index = list_data[map_idx].offset + i;
1914
- index = key_vdata.sel->get_index(index);
1915
- if (!key_validity.RowIsValid(index)) {
2058
+ auto length = map_entries[map_idx].length;
2059
+ auto offset = map_entries[map_idx].offset;
2060
+
2061
+ for (idx_t child_idx = 0; child_idx < length; child_idx++) {
2062
+ auto key_idx = key_data.sel->get_index(offset + child_idx);
2063
+
2064
+ if (!key_data.validity.RowIsValid(key_idx)) {
1916
2065
  return MapInvalidReason::NULL_KEY;
1917
2066
  }
1918
- auto value = keys.GetValue(index);
1919
- auto result = unique_keys.insert(value);
1920
- if (!result.second) {
2067
+
2068
+ auto value = keys.GetValue(key_idx);
2069
+ auto unique = unique_keys.insert(value).second;
2070
+ if (!unique) {
1921
2071
  return MapInvalidReason::DUPLICATE_KEY;
1922
2072
  }
1923
2073
  }
1924
2074
  }
2075
+
1925
2076
  return MapInvalidReason::VALID;
1926
2077
  }
1927
2078
 
1928
2079
  void MapVector::MapConversionVerify(Vector &vector, idx_t count) {
1929
- auto valid_check = MapVector::CheckMapValidity(vector, count);
1930
- switch (valid_check) {
2080
+ auto reason = MapVector::CheckMapValidity(vector, count);
2081
+ EvalMapInvalidReason(reason);
2082
+ }
2083
+
2084
+ void MapVector::EvalMapInvalidReason(MapInvalidReason reason) {
2085
+ switch (reason) {
1931
2086
  case MapInvalidReason::VALID:
1932
- break;
1933
- case MapInvalidReason::DUPLICATE_KEY: {
1934
- throw InvalidInputException("Map keys have to be unique");
1935
- }
1936
- case MapInvalidReason::NULL_KEY: {
1937
- throw InvalidInputException("Map keys can not be NULL");
1938
- }
1939
- case MapInvalidReason::NULL_KEY_LIST: {
1940
- throw InvalidInputException("The list of map keys is not allowed to be NULL");
1941
- }
1942
- default: {
2087
+ return;
2088
+ case MapInvalidReason::DUPLICATE_KEY:
2089
+ throw InvalidInputException("Map keys must be unique.");
2090
+ case MapInvalidReason::NULL_KEY:
2091
+ throw InvalidInputException("Map keys can not be NULL.");
2092
+ case MapInvalidReason::NULL_KEY_LIST:
2093
+ throw InvalidInputException("The list of map keys must not be NULL.");
2094
+ case MapInvalidReason::NULL_VALUE_LIST:
2095
+ throw InvalidInputException("The list of map values must not be NULL.");
2096
+ case MapInvalidReason::NOT_ALIGNED:
2097
+ throw InvalidInputException("The map key list does not align with the map value list.");
2098
+ case MapInvalidReason::INVALID_PARAMS:
2099
+ throw InvalidInputException("Invalid map argument(s). Valid map arguments are a list of key-value pairs (MAP "
2100
+ "{'key1': 'val1', ...}), two lists (MAP ([1, 2], [10, 11])), or no arguments.");
2101
+ default:
1943
2102
  throw InternalException("MapInvalidReason not implemented");
1944
2103
  }
1945
- }
1946
2104
  }
1947
2105
 
1948
2106
  //===--------------------------------------------------------------------===//
@@ -2229,17 +2387,34 @@ void UnionVector::SetToMember(Vector &union_vector, union_tag_t tag, Vector &mem
2229
2387
  }
2230
2388
  }
2231
2389
 
2232
- union_tag_t UnionVector::GetTag(const Vector &vector, idx_t index) {
2390
+ bool UnionVector::TryGetTag(const Vector &vector, idx_t index, union_tag_t &result) {
2233
2391
  // the tag vector is always the first struct child.
2234
2392
  auto &tag_vector = *StructVector::GetEntries(vector)[0];
2235
2393
  if (tag_vector.GetVectorType() == VectorType::DICTIONARY_VECTOR) {
2236
2394
  auto &child = DictionaryVector::Child(tag_vector);
2237
- return FlatVector::GetData<union_tag_t>(child)[index];
2395
+ auto &dict_sel = DictionaryVector::SelVector(tag_vector);
2396
+ auto mapped_idx = dict_sel.get_index(index);
2397
+ if (FlatVector::IsNull(child, mapped_idx)) {
2398
+ return false;
2399
+ } else {
2400
+ result = FlatVector::GetData<union_tag_t>(child)[mapped_idx];
2401
+ return true;
2402
+ }
2238
2403
  }
2239
2404
  if (tag_vector.GetVectorType() == VectorType::CONSTANT_VECTOR) {
2240
- return ConstantVector::GetData<union_tag_t>(tag_vector)[0];
2405
+ if (ConstantVector::IsNull(tag_vector)) {
2406
+ return false;
2407
+ } else {
2408
+ result = ConstantVector::GetData<union_tag_t>(tag_vector)[0];
2409
+ return true;
2410
+ }
2411
+ }
2412
+ if (FlatVector::IsNull(tag_vector, index)) {
2413
+ return false;
2414
+ } else {
2415
+ result = FlatVector::GetData<union_tag_t>(tag_vector)[index];
2416
+ return true;
2241
2417
  }
2242
- return FlatVector::GetData<union_tag_t>(tag_vector)[index];
2243
2418
  }
2244
2419
 
2245
2420
  //! Raw selection vector passed in (not merged with any other selection vectors)
@@ -8,6 +8,7 @@
8
8
  #include "duckdb/common/exception.hpp"
9
9
  #include "duckdb/common/extra_type_info.hpp"
10
10
  #include "duckdb/common/limits.hpp"
11
+ #include "duckdb/common/numeric_utils.hpp"
11
12
  #include "duckdb/common/operator/comparison_operators.hpp"
12
13
  #include "duckdb/common/serializer/deserializer.hpp"
13
14
  #include "duckdb/common/serializer/serializer.hpp"
@@ -672,7 +673,7 @@ static LogicalType DecimalSizeCheck(const LogicalType &left, const LogicalType &
672
673
  D_ASSERT(other_scale == 0);
673
674
  const auto effective_width = width - scale;
674
675
  if (other_width > effective_width) {
675
- auto new_width = other_width + scale;
676
+ auto new_width = NumericCast<uint8_t>(other_width + scale);
676
677
  //! Cap the width at max, if an actual value exceeds this, an exception will be thrown later
677
678
  if (new_width > DecimalType::MaxWidth()) {
678
679
  new_width = DecimalType::MaxWidth();
@@ -824,13 +825,14 @@ static bool CombineEqualTypes(const LogicalType &left, const LogicalType &right,
824
825
  // using the max of these of the two types gives us the new decimal size
825
826
  auto extra_width_left = DecimalType::GetWidth(left) - DecimalType::GetScale(left);
826
827
  auto extra_width_right = DecimalType::GetWidth(right) - DecimalType::GetScale(right);
827
- auto extra_width = MaxValue<uint8_t>(extra_width_left, extra_width_right);
828
+ auto extra_width =
829
+ MaxValue<uint8_t>(NumericCast<uint8_t>(extra_width_left), NumericCast<uint8_t>(extra_width_right));
828
830
  auto scale = MaxValue<uint8_t>(DecimalType::GetScale(left), DecimalType::GetScale(right));
829
- auto width = extra_width + scale;
831
+ auto width = NumericCast<uint8_t>(extra_width + scale);
830
832
  if (width > DecimalType::MaxWidth()) {
831
833
  // if the resulting decimal does not fit, we truncate the scale
832
834
  width = DecimalType::MaxWidth();
833
- scale = width - extra_width;
835
+ scale = NumericCast<uint8_t>(width - extra_width);
834
836
  }
835
837
  result = LogicalType::DECIMAL(width, scale);
836
838
  return true;
@@ -1168,7 +1170,7 @@ uint8_t DecimalType::MaxWidth() {
1168
1170
  return DecimalWidth<hugeint_t>::max;
1169
1171
  }
1170
1172
 
1171
- LogicalType LogicalType::DECIMAL(int width, int scale) {
1173
+ LogicalType LogicalType::DECIMAL(uint8_t width, uint8_t scale) {
1172
1174
  D_ASSERT(width >= scale);
1173
1175
  auto type_info = make_shared<DecimalTypeInfo>(width, scale);
1174
1176
  return LogicalType(LogicalTypeId::DECIMAL, std::move(type_info));
@@ -0,0 +1,34 @@
1
+ // Unity Build generated by CMake
2
+ #include </Users/carlo/duckdb/src/common/allocator.cpp>
3
+ #include </Users/carlo/duckdb/src/common/assert.cpp>
4
+ #include </Users/carlo/duckdb/src/common/bind_helpers.cpp>
5
+ #include </Users/carlo/duckdb/src/common/box_renderer.cpp>
6
+ #include </Users/carlo/duckdb/src/common/compressed_file_system.cpp>
7
+ #include </Users/carlo/duckdb/src/common/constants.cpp>
8
+ #include </Users/carlo/duckdb/src/common/checksum.cpp>
9
+ #include </Users/carlo/duckdb/src/common/cycle_counter.cpp>
10
+ #include </Users/carlo/duckdb/src/common/exception.cpp>
11
+ #include </Users/carlo/duckdb/src/common/exception_format_value.cpp>
12
+ #include </Users/carlo/duckdb/src/common/extra_type_info.cpp>
13
+ #include </Users/carlo/duckdb/src/common/file_buffer.cpp>
14
+ #include </Users/carlo/duckdb/src/common/file_system.cpp>
15
+ #include </Users/carlo/duckdb/src/common/filename_pattern.cpp>
16
+ #include </Users/carlo/duckdb/src/common/fsst.cpp>
17
+ #include </Users/carlo/duckdb/src/common/gzip_file_system.cpp>
18
+ #include </Users/carlo/duckdb/src/common/hive_partitioning.cpp>
19
+ #include </Users/carlo/duckdb/src/common/http_state.cpp>
20
+ #include </Users/carlo/duckdb/src/common/pipe_file_system.cpp>
21
+ #include </Users/carlo/duckdb/src/common/local_file_system.cpp>
22
+ #include </Users/carlo/duckdb/src/common/multi_file_reader.cpp>
23
+ #include </Users/carlo/duckdb/src/common/preserved_error.cpp>
24
+ #include </Users/carlo/duckdb/src/common/printer.cpp>
25
+ #include </Users/carlo/duckdb/src/common/radix_partitioning.cpp>
26
+ #include </Users/carlo/duckdb/src/common/re2_regex.cpp>
27
+ #include </Users/carlo/duckdb/src/common/random_engine.cpp>
28
+ #include </Users/carlo/duckdb/src/common/string_util.cpp>
29
+ #include </Users/carlo/duckdb/src/common/enum_util.cpp>
30
+ #include </Users/carlo/duckdb/src/common/symbols.cpp>
31
+ #include </Users/carlo/duckdb/src/common/tree_renderer.cpp>
32
+ #include </Users/carlo/duckdb/src/common/types.cpp>
33
+ #include </Users/carlo/duckdb/src/common/virtual_file_system.cpp>
34
+ #include </Users/carlo/duckdb/src/common/windows_util.cpp>
@@ -0,0 +1,2 @@
1
+ // Unity Build generated by CMake
2
+ #include </Users/carlo/duckdb/src/common/value_operations/comparison_operations.cpp>
@@ -6,6 +6,7 @@
6
6
  #include "duckdb/common/exception.hpp"
7
7
  #include "duckdb/common/vector_operations/vector_operations.hpp"
8
8
  #include "duckdb/common/limits.hpp"
9
+ #include "duckdb/common/numeric_utils.hpp"
9
10
 
10
11
  namespace duckdb {
11
12
 
@@ -66,7 +67,7 @@ void TemplatedGenerateSequence(Vector &result, idx_t count, const SelectionVecto
66
67
  auto value = (T)start;
67
68
  for (idx_t i = 0; i < count; i++) {
68
69
  auto idx = sel.get_index(i);
69
- result_data[idx] = value + increment * idx;
70
+ result_data[idx] = UnsafeNumericCast<T>(value + increment * idx);
70
71
  }
71
72
  }
72
73
 
@@ -7,14 +7,14 @@
7
7
  namespace duckdb {
8
8
 
9
9
  bool VectorOperations::TryCast(CastFunctionSet &set, GetCastFunctionInput &input, Vector &source, Vector &result,
10
- idx_t count, string *error_message, bool strict) {
10
+ idx_t count, string *error_message, bool strict, const bool nullify_parent) {
11
11
  auto cast_function = set.GetCastFunction(source.GetType(), result.GetType(), input);
12
12
  unique_ptr<FunctionLocalState> local_state;
13
13
  if (cast_function.init_local_state) {
14
14
  CastLocalStateParameters lparameters(input.context, cast_function.cast_data);
15
15
  local_state = cast_function.init_local_state(lparameters);
16
16
  }
17
- CastParameters parameters(cast_function.cast_data.get(), strict, error_message, local_state.get());
17
+ CastParameters parameters(cast_function.cast_data.get(), strict, error_message, local_state.get(), nullify_parent);
18
18
  return cast_function.function(source, result, count, parameters);
19
19
  }
20
20
 
@@ -29,11 +29,11 @@ void VectorOperations::DefaultCast(Vector &source, Vector &result, idx_t count,
29
29
  }
30
30
 
31
31
  bool VectorOperations::TryCast(ClientContext &context, Vector &source, Vector &result, idx_t count,
32
- string *error_message, bool strict) {
32
+ string *error_message, bool strict, const bool nullify_parent) {
33
33
  auto &config = DBConfig::GetConfig(context);
34
34
  auto &set = config.GetCastFunctions();
35
35
  GetCastFunctionInput get_input(context);
36
- return VectorOperations::TryCast(set, get_input, source, result, count, error_message, strict);
36
+ return VectorOperations::TryCast(set, get_input, source, result, count, error_message, strict, nullify_parent);
37
37
  }
38
38
 
39
39
  void VectorOperations::Cast(ClientContext &context, Vector &source, Vector &result, idx_t count, bool strict) {
@@ -203,11 +203,11 @@ void VectorOperations::Copy(const Vector &source_p, Vector &target, const Select
203
203
  auto array_size = ArrayType::GetSize(source->GetType());
204
204
 
205
205
  // Create a selection vector for the child elements
206
- SelectionVector child_sel(copy_count * array_size);
206
+ SelectionVector child_sel(source_count * array_size);
207
207
  for (idx_t i = 0; i < copy_count; i++) {
208
208
  auto source_idx = sel->get_index(source_offset + i);
209
209
  for (idx_t j = 0; j < array_size; j++) {
210
- child_sel.set_index(i * array_size + j, source_idx * array_size + j);
210
+ child_sel.set_index((source_offset * array_size) + (i * array_size + j), source_idx * array_size + j);
211
211
  }
212
212
  }
213
213
  VectorOperations::Copy(source_child, target_child, child_sel, source_count * array_size,