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
@@ -0,0 +1,4 @@
1
+ // Unity Build generated by CMake
2
+ #include </Users/carlo/duckdb/src/common/operator/cast_operators.cpp>
3
+ #include </Users/carlo/duckdb/src/common/operator/convert_to_string.cpp>
4
+ #include </Users/carlo/duckdb/src/common/operator/string_cast.cpp>
@@ -0,0 +1,3 @@
1
+ // Unity Build generated by CMake
2
+ #include </Users/carlo/duckdb/src/common/progress_bar/progress_bar.cpp>
3
+ #include </Users/carlo/duckdb/src/common/progress_bar/terminal_progress_bar_display.cpp>
@@ -1,3 +1,4 @@
1
+ #include "duckdb/common/numeric_utils.hpp"
1
2
  #include "duckdb/common/vector.hpp"
2
3
  #include <memory>
3
4
 
@@ -25,7 +26,7 @@ bool RegexSearchInternal(const char *input, Match &match, const Regex &r, RE2::A
25
26
  for (auto &group : target_groups) {
26
27
  GroupMatch group_match;
27
28
  group_match.text = group.ToString();
28
- group_match.position = group.data() - input;
29
+ group_match.position = group.data() != nullptr ? duckdb::NumericCast<uint32_t>(group.data() - input) : 0;
29
30
  match.groups.emplace_back(group_match);
30
31
  }
31
32
  return true;
@@ -245,7 +245,7 @@ static void HeapScatterStringVector(Vector &v, idx_t vcount, const SelectionVect
245
245
  if (vdata.validity.RowIsValid(source_idx)) {
246
246
  auto &string_entry = strings[source_idx];
247
247
  // store string size
248
- Store<uint32_t>(string_entry.GetSize(), key_locations[i]);
248
+ Store<uint32_t>(NumericCast<uint32_t>(string_entry.GetSize()), key_locations[i]);
249
249
  key_locations[i] += sizeof(uint32_t);
250
250
  // store the string
251
251
  memcpy(key_locations[i], string_entry.GetData(), string_entry.GetSize());
@@ -259,7 +259,7 @@ static void HeapScatterStringVector(Vector &v, idx_t vcount, const SelectionVect
259
259
  if (vdata.validity.RowIsValid(source_idx)) {
260
260
  auto &string_entry = strings[source_idx];
261
261
  // store string size
262
- Store<uint32_t>(string_entry.GetSize(), key_locations[i]);
262
+ Store<uint32_t>(NumericCast<uint32_t>(string_entry.GetSize()), key_locations[i]);
263
263
  key_locations[i] += sizeof(uint32_t);
264
264
  // store the string
265
265
  memcpy(key_locations[i], string_entry.GetData(), string_entry.GetSize());
@@ -177,6 +177,7 @@ static idx_t GenericNestedMatch(Vector &lhs_vector, const TupleDataVectorFormat
177
177
  const auto gather_function = TupleDataCollection::GetGatherFunction(type);
178
178
  gather_function.function(rhs_layout, rhs_row_locations, col_idx, sel, count, key,
179
179
  *FlatVector::IncrementalSelectionVector(), nullptr, gather_function.child_functions);
180
+ Vector::Verify(key, *FlatVector::IncrementalSelectionVector(), count);
180
181
 
181
182
  // Densify the input column
182
183
  Vector sliced(lhs_vector, sel, count);
@@ -82,7 +82,7 @@ static void ScatterStringVector(UnifiedVectorFormat &col, Vector &rows, data_ptr
82
82
  Store<string_t>(string_data[col_idx], row + col_offset);
83
83
  } else {
84
84
  const auto &str = string_data[col_idx];
85
- string_t inserted(const_char_ptr_cast(str_locations[i]), str.GetSize());
85
+ string_t inserted(const_char_ptr_cast(str_locations[i]), UnsafeNumericCast<uint32_t>(str.GetSize()));
86
86
  memcpy(inserted.GetDataWriteable(), str.GetData(), str.GetSize());
87
87
  str_locations[i] += str.GetSize();
88
88
  inserted.Finalize();
@@ -167,7 +167,7 @@ void RowOperations::Scatter(DataChunk &columns, UnifiedVectorFormat col_data[],
167
167
  // Pointer to this row in the heap block
168
168
  Store<data_ptr_t>(data_locations[i], row + heap_pointer_offset);
169
169
  // Row size is stored in the heap in front of each row
170
- Store<uint32_t>(entry_sizes[i], data_locations[i]);
170
+ Store<uint32_t>(NumericCast<uint32_t>(entry_sizes[i]), data_locations[i]);
171
171
  data_locations[i] += sizeof(uint32_t);
172
172
  }
173
173
  }
@@ -0,0 +1,9 @@
1
+ // Unity Build generated by CMake
2
+ #include </Users/carlo/duckdb/src/common/row_operations/row_aggregate.cpp>
3
+ #include </Users/carlo/duckdb/src/common/row_operations/row_scatter.cpp>
4
+ #include </Users/carlo/duckdb/src/common/row_operations/row_gather.cpp>
5
+ #include </Users/carlo/duckdb/src/common/row_operations/row_matcher.cpp>
6
+ #include </Users/carlo/duckdb/src/common/row_operations/row_external.cpp>
7
+ #include </Users/carlo/duckdb/src/common/row_operations/row_radix_scatter.cpp>
8
+ #include </Users/carlo/duckdb/src/common/row_operations/row_heap_scatter.cpp>
9
+ #include </Users/carlo/duckdb/src/common/row_operations/row_heap_gather.cpp>
@@ -150,19 +150,19 @@ void BinarySerializer::WriteValue(double value) {
150
150
  }
151
151
 
152
152
  void BinarySerializer::WriteValue(const string &value) {
153
- uint32_t len = value.length();
153
+ auto len = NumericCast<uint32_t>(value.length());
154
154
  VarIntEncode(len);
155
155
  WriteData(value.c_str(), len);
156
156
  }
157
157
 
158
158
  void BinarySerializer::WriteValue(const string_t value) {
159
- uint32_t len = value.GetSize();
159
+ auto len = NumericCast<uint32_t>(value.GetSize());
160
160
  VarIntEncode(len);
161
161
  WriteData(value.GetDataUnsafe(), len);
162
162
  }
163
163
 
164
164
  void BinarySerializer::WriteValue(const char *value) {
165
- uint32_t len = strlen(value);
165
+ auto len = NumericCast<uint32_t>(strlen(value));
166
166
  VarIntEncode(len);
167
167
  WriteData(value, len);
168
168
  }
@@ -0,0 +1,7 @@
1
+ // Unity Build generated by CMake
2
+ #include </Users/carlo/duckdb/src/common/serializer/binary_serializer.cpp>
3
+ #include </Users/carlo/duckdb/src/common/serializer/binary_deserializer.cpp>
4
+ #include </Users/carlo/duckdb/src/common/serializer/buffered_file_reader.cpp>
5
+ #include </Users/carlo/duckdb/src/common/serializer/buffered_file_writer.cpp>
6
+ #include </Users/carlo/duckdb/src/common/serializer/memory_stream.cpp>
7
+ #include </Users/carlo/duckdb/src/common/serializer/serializer.cpp>
@@ -3,7 +3,7 @@
3
3
  #include "duckdb/common/types/column/column_data_consumer.hpp"
4
4
  #include "duckdb/common/row_operations/row_operations.hpp"
5
5
  #include "duckdb/main/config.hpp"
6
- #include "duckdb/parallel/event.hpp"
6
+ #include "duckdb/parallel/executor_task.hpp"
7
7
 
8
8
  #include <numeric>
9
9
 
@@ -565,7 +565,7 @@ class PartitionMergeTask : public ExecutorTask {
565
565
  public:
566
566
  PartitionMergeTask(shared_ptr<Event> event_p, ClientContext &context_p, PartitionGlobalMergeStates &hash_groups_p,
567
567
  PartitionGlobalSinkState &gstate)
568
- : ExecutorTask(context_p), event(std::move(event_p)), local_state(gstate), hash_groups(hash_groups_p) {
568
+ : ExecutorTask(context_p, std::move(event_p)), local_state(gstate), hash_groups(hash_groups_p) {
569
569
  }
570
570
 
571
571
  TaskExecutionResult ExecuteTask(TaskExecutionMode mode) override;
@@ -582,7 +582,6 @@ private:
582
582
  Executor &executor;
583
583
  };
584
584
 
585
- shared_ptr<Event> event;
586
585
  PartitionLocalMergeState local_state;
587
586
  PartitionGlobalMergeStates &hash_groups;
588
587
  };
@@ -0,0 +1,7 @@
1
+ // Unity Build generated by CMake
2
+ #include </Users/carlo/duckdb/src/common/sort/comparators.cpp>
3
+ #include </Users/carlo/duckdb/src/common/sort/merge_sorter.cpp>
4
+ #include </Users/carlo/duckdb/src/common/sort/partition_state.cpp>
5
+ #include </Users/carlo/duckdb/src/common/sort/radix_sort.cpp>
6
+ #include </Users/carlo/duckdb/src/common/sort/sort_state.cpp>
7
+ #include </Users/carlo/duckdb/src/common/sort/sorted_block.cpp>
@@ -44,13 +44,13 @@ void StringUtil::LTrim(string &str) {
44
44
 
45
45
  // Remove trailing ' ', '\f', '\n', '\r', '\t', '\v'
46
46
  void StringUtil::RTrim(string &str) {
47
- str.erase(find_if(str.rbegin(), str.rend(), [](int ch) { return ch > 0 && !CharacterIsSpace(ch); }).base(),
47
+ str.erase(find_if(str.rbegin(), str.rend(), [](char ch) { return ch > 0 && !CharacterIsSpace(ch); }).base(),
48
48
  str.end());
49
49
  }
50
50
 
51
51
  void StringUtil::RTrim(string &str, const string &chars_to_trim) {
52
52
  str.erase(find_if(str.rbegin(), str.rend(),
53
- [&chars_to_trim](int ch) { return ch > 0 && chars_to_trim.find(ch) == string::npos; })
53
+ [&chars_to_trim](char ch) { return ch > 0 && chars_to_trim.find(ch) == string::npos; })
54
54
  .base(),
55
55
  str.end());
56
56
  }
@@ -355,7 +355,7 @@ idx_t StringUtil::LevenshteinDistance(const string &s1_p, const string &s2_p, id
355
355
  // d[i][j] = std::min({ d[i - 1][j] + 1,
356
356
  // d[i][j - 1] + 1,
357
357
  // d[i - 1][j - 1] + (s1[i - 1] == s2[j - 1] ? 0 : 1) });
358
- int equal = s1[i - 1] == s2[j - 1] ? 0 : not_equal_penalty;
358
+ auto equal = s1[i - 1] == s2[j - 1] ? 0 : not_equal_penalty;
359
359
  idx_t adjacent_score1 = array.Score(i - 1, j) + 1;
360
360
  idx_t adjacent_score2 = array.Score(i, j - 1) + 1;
361
361
  idx_t adjacent_score3 = array.Score(i - 1, j - 1) + equal;
@@ -1,4 +1,5 @@
1
1
  #include "duckdb/common/assert.hpp"
2
+ #include "duckdb/common/numeric_utils.hpp"
2
3
  #include "duckdb/common/operator/cast_operators.hpp"
3
4
  #include "duckdb/common/typedefs.hpp"
4
5
  #include "duckdb/common/types/bit.hpp"
@@ -129,7 +130,7 @@ void Bit::ToBit(string_t str, string_t &output_str) {
129
130
  }
130
131
  }
131
132
  if (padded_byte != 0) {
132
- *(output++) = (8 - padded_byte); // the first byte contains the number of padded zeroes
133
+ *(output++) = UnsafeNumericCast<char>((8 - padded_byte)); // the first byte contains the number of padded zeroes
133
134
  }
134
135
  *(output++) = byte;
135
136
 
@@ -150,7 +151,7 @@ void Bit::ToBit(string_t str, string_t &output_str) {
150
151
  string Bit::ToBit(string_t str) {
151
152
  auto bit_len = GetBitSize(str);
152
153
  auto buffer = make_unsafe_uniq_array<char>(bit_len);
153
- string_t output_str(buffer.get(), bit_len);
154
+ string_t output_str(buffer.get(), UnsafeNumericCast<uint32_t>(bit_len));
154
155
  Bit::ToBit(str, output_str);
155
156
  return output_str.GetString();
156
157
  }
@@ -166,7 +167,7 @@ void Bit::BlobToBit(string_t blob, string_t &output_str) {
166
167
 
167
168
  string Bit::BlobToBit(string_t blob) {
168
169
  auto buffer = make_unsafe_uniq_array<char>(blob.GetSize() + 1);
169
- string_t output_str(buffer.get(), blob.GetSize() + 1);
170
+ string_t output_str(buffer.get(), UnsafeNumericCast<uint32_t>(blob.GetSize() + 1));
170
171
  Bit::BlobToBit(blob, output_str);
171
172
  return output_str.GetString();
172
173
  }
@@ -192,7 +193,7 @@ string Bit::BitToBlob(string_t bit) {
192
193
  D_ASSERT(bit.GetSize() > 1);
193
194
 
194
195
  auto buffer = make_unsafe_uniq_array<char>(bit.GetSize() - 1);
195
- string_t output_str(buffer.get(), bit.GetSize() - 1);
196
+ string_t output_str(buffer.get(), UnsafeNumericCast<uint32_t>(bit.GetSize() - 1));
196
197
  Bit::BitToBlob(bit, output_str);
197
198
  return output_str.GetString();
198
199
  }
@@ -289,11 +290,11 @@ void Bit::SetBit(string_t &bit_string, idx_t n, idx_t new_value) {
289
290
  }
290
291
 
291
292
  void Bit::SetBitInternal(string_t &bit_string, idx_t n, idx_t new_value) {
292
- char *buf = bit_string.GetDataWriteable();
293
+ auto buf = bit_string.GetDataWriteable();
293
294
 
294
295
  auto idx = Bit::GetBitIndex(n);
295
296
  D_ASSERT(idx < bit_string.GetSize());
296
- char shift_byte = 1 << (7 - (n % 8));
297
+ auto shift_byte = UnsafeNumericCast<uint8_t>(1 << (7 - (n % 8)));
297
298
  if (new_value == 0) {
298
299
  shift_byte = ~shift_byte;
299
300
  buf[idx] &= shift_byte;
@@ -2,6 +2,7 @@
2
2
  #include "duckdb/common/types/blob.hpp"
3
3
  #include "duckdb/common/assert.hpp"
4
4
  #include "duckdb/common/exception.hpp"
5
+ #include "duckdb/common/numeric_utils.hpp"
5
6
  #include "duckdb/common/string_util.hpp"
6
7
  #include "duckdb/common/operator/cast_operators.hpp"
7
8
 
@@ -69,7 +70,7 @@ string Blob::ToString(string_t blob) {
69
70
  return string(buffer.get(), str_len);
70
71
  }
71
72
 
72
- bool Blob::TryGetBlobSize(string_t str, idx_t &str_len, string *error_message) {
73
+ bool Blob::TryGetBlobSize(string_t str, idx_t &str_len, CastParameters &parameters) {
73
74
  auto data = const_data_ptr_cast(str.GetData());
74
75
  auto len = str.GetSize();
75
76
  str_len = 0;
@@ -78,14 +79,14 @@ bool Blob::TryGetBlobSize(string_t str, idx_t &str_len, string *error_message) {
78
79
  if (i + 3 >= len) {
79
80
  string error = "Invalid hex escape code encountered in string -> blob conversion: "
80
81
  "unterminated escape code at end of blob";
81
- HandleCastError::AssignError(error, error_message);
82
+ HandleCastError::AssignError(error, parameters);
82
83
  return false;
83
84
  }
84
85
  if (data[i + 1] != 'x' || Blob::HEX_MAP[data[i + 2]] < 0 || Blob::HEX_MAP[data[i + 3]] < 0) {
85
86
  string error =
86
87
  StringUtil::Format("Invalid hex escape code encountered in string -> blob conversion: %s",
87
88
  string(const_char_ptr_cast(data) + i, 4));
88
- HandleCastError::AssignError(error, error_message);
89
+ HandleCastError::AssignError(error, parameters);
89
90
  return false;
90
91
  }
91
92
  str_len++;
@@ -95,7 +96,7 @@ bool Blob::TryGetBlobSize(string_t str, idx_t &str_len, string *error_message) {
95
96
  } else {
96
97
  string error = "Invalid byte encountered in STRING -> BLOB conversion. All non-ascii characters "
97
98
  "must be escaped with hex codes (e.g. \\xAA)";
98
- HandleCastError::AssignError(error, error_message);
99
+ HandleCastError::AssignError(error, parameters);
99
100
  return false;
100
101
  }
101
102
  }
@@ -103,10 +104,15 @@ bool Blob::TryGetBlobSize(string_t str, idx_t &str_len, string *error_message) {
103
104
  }
104
105
 
105
106
  idx_t Blob::GetBlobSize(string_t str) {
106
- string error_message;
107
+ CastParameters parameters;
108
+ return GetBlobSize(str, parameters);
109
+ }
110
+
111
+ idx_t Blob::GetBlobSize(string_t str, CastParameters &parameters) {
107
112
  idx_t str_len;
108
- if (!Blob::TryGetBlobSize(str, str_len, &error_message)) {
109
- throw ConversionException(error_message);
113
+ auto result = Blob::TryGetBlobSize(str, str_len, parameters);
114
+ if (!result) {
115
+ throw InternalException("Blob::TryGetBlobSize failed but no exception was thrown!?");
110
116
  }
111
117
  return str_len;
112
118
  }
@@ -122,7 +128,7 @@ void Blob::ToBlob(string_t str, data_ptr_t output) {
122
128
  D_ASSERT(i + 3 < len);
123
129
  D_ASSERT(byte_a >= 0 && byte_b >= 0);
124
130
  D_ASSERT(data[i + 1] == 'x');
125
- output[blob_idx++] = (byte_a << 4) + byte_b;
131
+ output[blob_idx++] = UnsafeNumericCast<data_t>((byte_a << 4) + byte_b);
126
132
  i += 3;
127
133
  } else if (data[i] <= 127) {
128
134
  output[blob_idx++] = data_t(data[i]);
@@ -135,7 +141,12 @@ void Blob::ToBlob(string_t str, data_ptr_t output) {
135
141
  }
136
142
 
137
143
  string Blob::ToBlob(string_t str) {
138
- auto blob_len = GetBlobSize(str);
144
+ CastParameters parameters;
145
+ return Blob::ToBlob(str, parameters);
146
+ }
147
+
148
+ string Blob::ToBlob(string_t str, CastParameters &parameters) {
149
+ auto blob_len = GetBlobSize(str, parameters);
139
150
  auto buffer = make_unsafe_uniq_array<char>(blob_len);
140
151
  Blob::ToBlob(str, data_ptr_cast(buffer.get()));
141
152
  return string(buffer.get(), blob_len);
@@ -64,9 +64,10 @@ BufferHandle ColumnDataAllocator::AllocateBlock(idx_t size) {
64
64
  auto block_size = MaxValue<idx_t>(size, Storage::BLOCK_SIZE);
65
65
  BlockMetaData data;
66
66
  data.size = 0;
67
- data.capacity = block_size;
67
+ data.capacity = NumericCast<uint32_t>(block_size);
68
68
  auto pin = alloc.buffer_manager->Allocate(MemoryTag::COLUMN_DATA, block_size, false, &data.handle);
69
69
  blocks.push_back(std::move(data));
70
+ allocated_size += block_size;
70
71
  return pin;
71
72
  }
72
73
 
@@ -80,9 +81,10 @@ void ColumnDataAllocator::AllocateEmptyBlock(idx_t size) {
80
81
  D_ASSERT(type == ColumnDataAllocatorType::IN_MEMORY_ALLOCATOR);
81
82
  BlockMetaData data;
82
83
  data.size = 0;
83
- data.capacity = allocation_amount;
84
+ data.capacity = NumericCast<uint32_t>(allocation_amount);
84
85
  data.handle = nullptr;
85
86
  blocks.push_back(std::move(data));
87
+ allocated_size += allocation_amount;
86
88
  }
87
89
 
88
90
  void ColumnDataAllocator::AssignPointer(uint32_t &block_id, uint32_t &offset, data_ptr_t pointer) {
@@ -110,7 +112,7 @@ void ColumnDataAllocator::AllocateBuffer(idx_t size, uint32_t &block_id, uint32_
110
112
  }
111
113
  auto &block = blocks.back();
112
114
  D_ASSERT(size <= block.capacity - block.size);
113
- block_id = blocks.size() - 1;
115
+ block_id = NumericCast<uint32_t>(blocks.size() - 1);
114
116
  if (chunk_state && chunk_state->handles.find(block_id) == chunk_state->handles.end()) {
115
117
  // not guaranteed to be pinned already by this thread (if shared allocator)
116
118
  chunk_state->handles[block_id] = alloc.buffer_manager->Pin(blocks[block_id].handle);
@@ -186,8 +188,8 @@ void ColumnDataAllocator::UnswizzlePointers(ChunkManagementState &state, Vector
186
188
  auto strings = FlatVector::GetData<string_t>(result);
187
189
 
188
190
  // find first non-inlined string
189
- uint32_t i = v_offset;
190
- const uint32_t end = v_offset + count;
191
+ auto i = NumericCast<uint32_t>(v_offset);
192
+ const uint32_t end = NumericCast<uint32_t>(v_offset + count);
191
193
  for (; i < end; i++) {
192
194
  if (!validity.RowIsValid(i)) {
193
195
  continue;
@@ -237,7 +239,7 @@ void ColumnDataAllocator::InitializeChunkState(ChunkManagementState &state, Chun
237
239
  do {
238
240
  found_handle = false;
239
241
  for (auto it = state.handles.begin(); it != state.handles.end(); it++) {
240
- if (chunk.block_ids.find(it->first) != chunk.block_ids.end()) {
242
+ if (chunk.block_ids.find(NumericCast<uint32_t>(it->first)) != chunk.block_ids.end()) {
241
243
  // still required: do not release
242
244
  continue;
243
245
  }
@@ -111,6 +111,14 @@ idx_t ColumnDataCollection::SizeInBytes() const {
111
111
  return total_size;
112
112
  }
113
113
 
114
+ idx_t ColumnDataCollection::AllocationSize() const {
115
+ idx_t total_size = 0;
116
+ for (const auto &segment : segments) {
117
+ total_size += segment->AllocationSize();
118
+ }
119
+ return total_size;
120
+ }
121
+
114
122
  //===--------------------------------------------------------------------===//
115
123
  // ColumnDataRow
116
124
  //===--------------------------------------------------------------------===//
@@ -289,6 +297,7 @@ const ColumnDataRow &ColumnDataRowIterationHelper::ColumnDataRowIterator::operat
289
297
  //===--------------------------------------------------------------------===//
290
298
  void ColumnDataCollection::InitializeAppend(ColumnDataAppendState &state) {
291
299
  D_ASSERT(!finished_append);
300
+ state.current_chunk_state.handles.clear();
292
301
  state.vector_data.resize(types.size());
293
302
  if (segments.empty()) {
294
303
  CreateSegment();
@@ -532,7 +541,8 @@ void ColumnDataCopy<string_t>(ColumnDataMetaData &meta_data, const UnifiedVector
532
541
  } else {
533
542
  D_ASSERT(heap_ptr != nullptr);
534
543
  memcpy(heap_ptr, source_entry.GetData(), source_entry.GetSize());
535
- target_entry = string_t(const_char_ptr_cast(heap_ptr), source_entry.GetSize());
544
+ target_entry =
545
+ string_t(const_char_ptr_cast(heap_ptr), UnsafeNumericCast<uint32_t>(source_entry.GetSize()));
536
546
  heap_ptr += source_entry.GetSize();
537
547
  }
538
548
  }
@@ -255,6 +255,11 @@ idx_t ColumnDataCollectionSegment::SizeInBytes() const {
255
255
  return allocator->SizeInBytes() + heap->SizeInBytes();
256
256
  }
257
257
 
258
+ idx_t ColumnDataCollectionSegment::AllocationSize() const {
259
+ D_ASSERT(!allocator->IsShared());
260
+ return allocator->AllocationSize() + heap->AllocationSize();
261
+ }
262
+
258
263
  void ColumnDataCollectionSegment::FetchChunk(idx_t chunk_idx, DataChunk &result) {
259
264
  vector<column_t> column_ids;
260
265
  column_ids.reserve(types.size());
@@ -92,7 +92,7 @@ void PartitionedColumnData::Append(PartitionedColumnDataAppendState &state, Data
92
92
  for (idx_t i = 0; i < count; i++) {
93
93
  const auto &partition_index = partition_indices[i];
94
94
  auto &partition_offset = partition_entries[partition_index].offset;
95
- all_partitions_sel[partition_offset++] = i;
95
+ all_partitions_sel[partition_offset++] = NumericCast<sel_t>(i);
96
96
  }
97
97
 
98
98
  // Loop through the partitions to append the new data to the partition buffers, and flush the buffers if necessary
@@ -0,0 +1,6 @@
1
+ // Unity Build generated by CMake
2
+ #include </Users/carlo/duckdb/src/common/types/column/column_data_allocator.cpp>
3
+ #include </Users/carlo/duckdb/src/common/types/column/column_data_collection.cpp>
4
+ #include </Users/carlo/duckdb/src/common/types/column/column_data_collection_segment.cpp>
5
+ #include </Users/carlo/duckdb/src/common/types/column/column_data_consumer.cpp>
6
+ #include </Users/carlo/duckdb/src/common/types/column/partitioned_column_data.cpp>
@@ -238,7 +238,7 @@ void DataChunk::Serialize(Serializer &serializer) const {
238
238
 
239
239
  // write the count
240
240
  auto row_count = size();
241
- serializer.WriteProperty<sel_t>(100, "rows", row_count);
241
+ serializer.WriteProperty<sel_t>(100, "rows", NumericCast<sel_t>(row_count));
242
242
 
243
243
  // we should never try to serialize empty data chunks
244
244
  auto column_count = ColumnCount();
@@ -417,7 +417,7 @@ int32_t Date::EpochDays(date_t date) {
417
417
  }
418
418
 
419
419
  date_t Date::EpochToDate(int64_t epoch) {
420
- return date_t(epoch / Interval::SECS_PER_DAY);
420
+ return date_t(UnsafeNumericCast<int32_t>(epoch / Interval::SECS_PER_DAY));
421
421
  }
422
422
 
423
423
  int64_t Date::Epoch(date_t date) {
@@ -4,6 +4,7 @@
4
4
  #include "duckdb/common/algorithm.hpp"
5
5
  #include "duckdb/common/hugeint.hpp"
6
6
  #include "duckdb/common/limits.hpp"
7
+ #include "duckdb/common/numeric_utils.hpp"
7
8
  #include "duckdb/common/windows_undefs.hpp"
8
9
  #include "duckdb/common/types/value.hpp"
9
10
  #include "duckdb/common/operator/cast_operators.hpp"
@@ -165,7 +166,7 @@ string Hugeint::ToString(hugeint_t input) {
165
166
  break;
166
167
  }
167
168
  input = Hugeint::DivModPositive(input, 10, remainder);
168
- result = string(1, '0' + remainder) + result; // NOLINT
169
+ result = string(1, UnsafeNumericCast<char>('0' + remainder)) + result; // NOLINT
169
170
  }
170
171
  if (result.empty()) {
171
172
  // value is zero
@@ -677,7 +678,7 @@ bool Hugeint::TryConvert(int8_t value, hugeint_t &result) {
677
678
  template <>
678
679
  bool Hugeint::TryConvert(const char *value, hugeint_t &result) {
679
680
  auto len = strlen(value);
680
- string_t string_val(value, len);
681
+ string_t string_val(value, UnsafeNumericCast<uint32_t>(len));
681
682
  return TryCast::Operation<string_t, hugeint_t>(string_val, result, true);
682
683
  }
683
684
 
@@ -111,7 +111,7 @@ interval_parse_number:
111
111
  return false;
112
112
  }
113
113
  // finished the number, parse it from the string
114
- string_t nr_string(str + start_pos, pos - start_pos);
114
+ string_t nr_string(str + start_pos, UnsafeNumericCast<uint32_t>(pos - start_pos));
115
115
  number = Cast::Operation<string_t, int64_t>(nr_string);
116
116
  fraction = 0;
117
117
  if (c == '.') {
@@ -1,4 +1,5 @@
1
1
  #include "duckdb/common/types/list_segment.hpp"
2
+ #include "duckdb/common/numeric_utils.hpp"
2
3
  #include "duckdb/common/uhugeint.hpp"
3
4
 
4
5
  namespace duckdb {
@@ -190,7 +191,7 @@ static ListSegment *GetSegment(const ListSegmentFunctions &functions, ArenaAlloc
190
191
  if (!linked_list.last_segment) {
191
192
  // empty linked list, create the first (and last) segment
192
193
  auto capacity = ListSegment::INITIAL_CAPACITY;
193
- segment = functions.create_segment(functions, allocator, capacity);
194
+ segment = functions.create_segment(functions, allocator, UnsafeNumericCast<uint16_t>(capacity));
194
195
  linked_list.first_segment = segment;
195
196
  linked_list.last_segment = segment;
196
197
 
@@ -32,12 +32,6 @@ void PartitionedTupleData::InitializeAppendState(PartitionedTupleDataAppendState
32
32
  state.partition_sel.Initialize();
33
33
  state.reverse_partition_sel.Initialize();
34
34
 
35
- vector<column_t> column_ids;
36
- column_ids.reserve(layout.ColumnCount());
37
- for (idx_t col_idx = 0; col_idx < layout.ColumnCount(); col_idx++) {
38
- column_ids.emplace_back(col_idx);
39
- }
40
-
41
35
  InitializeAppendStateInternal(state, properties);
42
36
  }
43
37
 
@@ -223,7 +217,7 @@ void PartitionedTupleData::BuildPartitionSel(PartitionedTupleDataAppendState &st
223
217
  // This needs to be initialized, even if we go the short path here
224
218
  for (idx_t i = 0; i < append_count; i++) {
225
219
  const auto index = append_sel.get_index(i);
226
- state.reverse_partition_sel[index] = i;
220
+ state.reverse_partition_sel[index] = NumericCast<sel_t>(i);
227
221
  }
228
222
  return;
229
223
  }
@@ -243,8 +237,8 @@ void PartitionedTupleData::BuildPartitionSel(PartitionedTupleDataAppendState &st
243
237
  const auto index = append_sel.get_index(i);
244
238
  const auto &partition_index = partition_indices[index];
245
239
  auto &partition_offset = partition_entries[partition_index].offset;
246
- reverse_partition_sel[index] = partition_offset;
247
- partition_sel[partition_offset++] = index;
240
+ reverse_partition_sel[index] = UnsafeNumericCast<sel_t>(partition_offset);
241
+ partition_sel[partition_offset++] = UnsafeNumericCast<sel_t>(index);
248
242
  }
249
243
  }
250
244
 
@@ -110,12 +110,12 @@ TupleDataChunkPart TupleDataAllocator::BuildChunkPart(TupleDataPinState &pin_sta
110
110
  if (row_blocks.empty() || row_blocks.back().RemainingCapacity() < layout.GetRowWidth()) {
111
111
  row_blocks.emplace_back(buffer_manager, (idx_t)Storage::BLOCK_SIZE);
112
112
  }
113
- result.row_block_index = row_blocks.size() - 1;
113
+ result.row_block_index = NumericCast<uint32_t>(row_blocks.size() - 1);
114
114
  auto &row_block = row_blocks[result.row_block_index];
115
- result.row_block_offset = row_block.size;
115
+ result.row_block_offset = NumericCast<uint32_t>(row_block.size);
116
116
 
117
117
  // Set count (might be reduced later when checking heap space)
118
- result.count = MinValue<idx_t>(row_block.RemainingCapacity(layout.GetRowWidth()), append_count);
118
+ result.count = NumericCast<uint32_t>(MinValue(row_block.RemainingCapacity(layout.GetRowWidth()), append_count));
119
119
  if (!layout.AllConstant()) {
120
120
  const auto heap_sizes = FlatVector::GetData<idx_t>(chunk_state.heap_sizes);
121
121
 
@@ -138,21 +138,21 @@ TupleDataChunkPart TupleDataAllocator::BuildChunkPart(TupleDataPinState &pin_sta
138
138
  const auto size = MaxValue<idx_t>((idx_t)Storage::BLOCK_SIZE, heap_sizes[append_offset]);
139
139
  heap_blocks.emplace_back(buffer_manager, size);
140
140
  }
141
- result.heap_block_index = heap_blocks.size() - 1;
141
+ result.heap_block_index = NumericCast<uint32_t>(heap_blocks.size() - 1);
142
142
  auto &heap_block = heap_blocks[result.heap_block_index];
143
- result.heap_block_offset = heap_block.size;
143
+ result.heap_block_offset = NumericCast<uint32_t>(heap_block.size);
144
144
 
145
145
  const auto heap_remaining = heap_block.RemainingCapacity();
146
146
  if (total_heap_size <= heap_remaining) {
147
147
  // Everything fits
148
- result.total_heap_size = total_heap_size;
148
+ result.total_heap_size = NumericCast<uint32_t>(total_heap_size);
149
149
  } else {
150
150
  // Not everything fits - determine how many we can read next
151
151
  result.total_heap_size = 0;
152
152
  for (idx_t i = 0; i < result.count; i++) {
153
153
  const auto &heap_size = heap_sizes[append_offset + i];
154
154
  if (result.total_heap_size + heap_size > heap_remaining) {
155
- result.count = i;
155
+ result.count = NumericCast<uint32_t>(i);
156
156
  break;
157
157
  }
158
158
  result.total_heap_size += heap_size;
@@ -214,27 +214,7 @@ void TupleDataCollection::AppendUnified(TupleDataPinState &pin_state, TupleDataC
214
214
  }
215
215
 
216
216
  Build(pin_state, chunk_state, 0, actual_append_count);
217
-
218
- #ifdef DEBUG
219
- Vector heap_locations_copy(LogicalType::POINTER);
220
- if (!layout.AllConstant()) {
221
- VectorOperations::Copy(chunk_state.heap_locations, heap_locations_copy, actual_append_count, 0, 0);
222
- }
223
- #endif
224
-
225
217
  Scatter(chunk_state, new_chunk, append_sel, actual_append_count);
226
-
227
- #ifdef DEBUG
228
- // Verify that the size of the data written to the heap is the same as the size we computed it would be
229
- if (!layout.AllConstant()) {
230
- const auto original_heap_locations = FlatVector::GetData<data_ptr_t>(heap_locations_copy);
231
- const auto heap_sizes = FlatVector::GetData<idx_t>(chunk_state.heap_sizes);
232
- const auto offset_heap_locations = FlatVector::GetData<data_ptr_t>(chunk_state.heap_locations);
233
- for (idx_t i = 0; i < actual_append_count; i++) {
234
- D_ASSERT(offset_heap_locations[i] == original_heap_locations[i] + heap_sizes[i]);
235
- }
236
- }
237
- #endif
238
218
  }
239
219
 
240
220
  static inline void ToUnifiedFormatInternal(TupleDataVectorFormat &format, Vector &vector, const idx_t count) {
@@ -261,20 +241,23 @@ static inline void ToUnifiedFormatInternal(TupleDataVectorFormat &format, Vector
261
241
 
262
242
  // For arrays, we cheat a bit and pretend that they are lists by creating and assigning list_entry_t's to the
263
243
  // vector This allows us to reuse all the list serialization functions for array types too.
244
+ auto array_size = ArrayType::GetSize(vector.GetType());
264
245
 
265
- // This is kind of hacky, but we need to create a list_entry_t for each array entry
266
- idx_t array_count = ArrayVector::GetTotalSize(vector) / ArrayType::GetSize(vector.GetType());
267
- format.array_list_entries = make_uniq_array<list_entry_t>(array_count);
246
+ // How many list_entry_t's do we need to cover the whole child array?
247
+ // Make sure we round up so its all covered
248
+ auto child_array_total_size = ArrayVector::GetTotalSize(vector);
249
+ auto list_entry_t_count = MaxValue((child_array_total_size + array_size) / array_size, count);
268
250
 
269
- auto array_size = ArrayType::GetSize(vector.GetType());
270
- // create list entries
271
- for (idx_t i = 0; i < array_count; i++) {
251
+ // Create list entries!
252
+ format.array_list_entries = make_uniq_array<list_entry_t>(list_entry_t_count);
253
+ for (idx_t i = 0; i < list_entry_t_count; i++) {
272
254
  format.array_list_entries[i].length = array_size;
273
255
  format.array_list_entries[i].offset = i * array_size;
274
256
  }
275
257
  format.unified.data = reinterpret_cast<data_ptr_t>(format.array_list_entries.get());
276
258
 
277
- ToUnifiedFormatInternal(format.children[0], ArrayVector::GetEntry(vector), ArrayVector::GetTotalSize(vector));
259
+ ToUnifiedFormatInternal(reinterpret_cast<TupleDataVectorFormat &>(format.children[0]),
260
+ ArrayVector::GetEntry(vector), count * array_size);
278
261
  } break;
279
262
  default:
280
263
  break;