duckdb 0.8.1-dev0.0 → 0.8.1-dev111.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 (556) hide show
  1. package/package.json +1 -1
  2. package/src/duckdb/extension/icu/icu-datepart.cpp +1 -1
  3. package/src/duckdb/extension/json/include/json_common.hpp +1 -1
  4. package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
  5. package/src/duckdb/extension/json/json_functions/json_create.cpp +6 -6
  6. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +1 -1
  7. package/src/duckdb/extension/json/json_functions/json_transform.cpp +1 -1
  8. package/src/duckdb/extension/parquet/column_reader.cpp +57 -52
  9. package/src/duckdb/extension/parquet/column_writer.cpp +57 -45
  10. package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +1 -1
  11. package/src/duckdb/extension/parquet/include/column_reader.hpp +5 -4
  12. package/src/duckdb/extension/parquet/include/column_writer.hpp +24 -0
  13. package/src/duckdb/extension/parquet/include/decode_utils.hpp +6 -0
  14. package/src/duckdb/extension/parquet/include/list_column_reader.hpp +1 -1
  15. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
  16. package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
  17. package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
  18. package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
  19. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
  20. package/src/duckdb/extension/parquet/parquet-extension.cpp +1 -1
  21. package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
  22. package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
  23. package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
  24. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
  25. package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
  26. package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
  27. package/src/duckdb/src/catalog/catalog.cpp +0 -4
  28. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +3 -0
  29. package/src/duckdb/src/catalog/catalog_entry.cpp +4 -4
  30. package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
  31. package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
  32. package/src/duckdb/src/catalog/duck_catalog.cpp +1 -0
  33. package/src/duckdb/src/common/adbc/adbc.cpp +183 -94
  34. package/src/duckdb/src/common/adbc/driver_manager.cpp +10 -2
  35. package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
  36. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +7 -7
  37. package/src/duckdb/src/common/checksum.cpp +1 -1
  38. package/src/duckdb/src/common/compressed_file_system.cpp +6 -6
  39. package/src/duckdb/src/common/crypto/md5.cpp +9 -9
  40. package/src/duckdb/src/common/field_writer.cpp +1 -1
  41. package/src/duckdb/src/common/file_system.cpp +15 -2
  42. package/src/duckdb/src/common/fsst.cpp +11 -6
  43. package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
  44. package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
  45. package/src/duckdb/src/common/local_file_system.cpp +11 -11
  46. package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
  47. package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
  48. package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
  49. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
  50. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
  51. package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
  52. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
  53. package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
  54. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
  55. package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
  56. package/src/duckdb/src/common/serializer.cpp +1 -1
  57. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  58. package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
  59. package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
  60. package/src/duckdb/src/common/types/bit.cpp +5 -5
  61. package/src/duckdb/src/common/types/blob.cpp +8 -8
  62. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
  63. package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
  64. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  65. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  66. package/src/duckdb/src/common/types/hash.cpp +2 -2
  67. package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
  68. package/src/duckdb/src/common/types/list_segment.cpp +77 -49
  69. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
  70. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
  71. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +17 -17
  72. package/src/duckdb/src/common/types/string_heap.cpp +1 -1
  73. package/src/duckdb/src/common/types/value.cpp +2 -2
  74. package/src/duckdb/src/common/types/vector.cpp +101 -101
  75. package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
  76. package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
  77. package/src/duckdb/src/common/types.cpp +44 -33
  78. package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
  79. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
  80. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
  81. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
  82. package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +30 -33
  83. package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +0 -4
  84. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +32 -36
  85. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +53 -66
  86. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +48 -48
  87. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +43 -43
  88. package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +32 -32
  89. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +34 -34
  90. package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +30 -31
  91. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +91 -103
  92. package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +17 -17
  93. package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +25 -27
  94. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +36 -37
  95. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
  96. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +48 -84
  97. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
  98. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +83 -119
  99. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +62 -99
  100. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
  101. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +22 -23
  102. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +16 -18
  103. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +22 -25
  104. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +19 -24
  105. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +18 -23
  106. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +14 -18
  107. package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
  108. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +45 -45
  109. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
  110. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
  111. package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
  112. package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
  113. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +3 -3
  114. package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
  115. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +3 -3
  116. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +6 -7
  117. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
  118. package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
  119. package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
  120. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +1 -1
  121. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
  122. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +3 -3
  123. package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
  124. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
  125. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
  126. package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
  127. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  128. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
  129. package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
  130. package/src/duckdb/src/execution/expression_executor.cpp +33 -28
  131. package/src/duckdb/src/execution/index/art/art.cpp +30 -32
  132. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +3 -4
  133. package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
  134. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
  135. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
  136. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  137. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
  138. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
  139. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
  140. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
  141. package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
  142. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
  143. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  144. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
  145. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
  146. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
  147. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
  148. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
  149. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
  150. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
  151. package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +2 -0
  152. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
  153. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  154. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
  155. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
  156. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -3
  157. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
  158. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
  159. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
  160. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  161. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
  162. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  163. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
  164. package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
  165. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
  166. package/src/duckdb/src/execution/reservoir_sample.cpp +2 -2
  167. package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
  168. package/src/duckdb/src/function/aggregate/distributive/count.cpp +158 -20
  169. package/src/duckdb/src/function/aggregate/distributive/first.cpp +66 -74
  170. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +13 -13
  171. package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
  172. package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
  173. package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
  174. package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
  175. package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
  176. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
  177. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
  178. package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
  179. package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -3
  180. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -3
  181. package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
  182. package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
  183. package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
  184. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
  185. package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
  186. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
  187. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
  188. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +25 -23
  189. package/src/duckdb/src/function/scalar_function.cpp +3 -3
  190. package/src/duckdb/src/function/table/arrow.cpp +4 -4
  191. package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
  192. package/src/duckdb/src/function/table/checkpoint.cpp +1 -1
  193. package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
  194. package/src/duckdb/src/function/table/glob.cpp +1 -1
  195. package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
  196. package/src/duckdb/src/function/table/range.cpp +4 -4
  197. package/src/duckdb/src/function/table/read_csv.cpp +4 -7
  198. package/src/duckdb/src/function/table/repeat.cpp +2 -2
  199. package/src/duckdb/src/function/table/repeat_row.cpp +2 -2
  200. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
  201. package/src/duckdb/src/function/table/system/test_vector_types.cpp +1 -1
  202. package/src/duckdb/src/function/table/table_scan.cpp +2 -2
  203. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  204. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  205. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -2
  206. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
  207. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +5 -0
  208. package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
  209. package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
  210. package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
  211. package/src/duckdb/src/include/duckdb/common/exception.hpp +2 -2
  212. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
  213. package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
  214. package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
  215. package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
  216. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
  217. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
  218. package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
  219. package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
  220. package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
  221. package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
  222. package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
  223. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
  224. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
  225. package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
  226. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
  227. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
  228. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +112 -76
  229. package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
  230. package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
  231. package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
  232. package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
  233. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +20 -24
  234. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +36 -39
  235. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +57 -53
  236. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +8 -9
  237. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +16 -18
  238. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +7 -8
  239. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
  240. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +3 -3
  241. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
  242. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
  243. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
  244. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
  245. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +8 -29
  246. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +95 -0
  247. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
  248. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
  249. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
  250. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
  251. package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
  252. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
  253. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
  254. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
  255. package/src/duckdb/src/include/duckdb/function/table_function.hpp +6 -6
  256. package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
  257. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  258. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
  259. package/src/duckdb/src/include/duckdb/main/query_result.hpp +17 -0
  260. package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
  261. package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
  262. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
  263. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
  264. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
  265. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
  266. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
  267. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  268. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
  269. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
  270. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
  271. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
  272. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  273. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
  274. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
  275. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
  276. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
  277. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
  278. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
  279. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  280. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  281. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
  282. package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
  283. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
  284. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
  285. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  286. package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
  287. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
  288. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
  289. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
  290. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +1 -1
  291. package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
  292. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  293. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +1 -1
  294. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
  295. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
  296. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
  297. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +107 -91
  298. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +1 -1
  299. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
  300. package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
  301. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +34 -1
  302. package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
  303. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
  304. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
  305. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
  306. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
  307. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
  308. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
  309. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
  310. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
  311. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
  312. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
  313. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
  314. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
  315. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
  316. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
  317. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
  318. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
  319. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
  320. package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
  321. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
  322. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
  323. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
  324. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +2 -2
  325. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
  326. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
  327. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
  328. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  329. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
  330. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
  331. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
  332. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
  333. package/src/duckdb/src/include/duckdb/storage/index.hpp +2 -2
  334. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
  335. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
  336. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
  337. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
  338. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
  339. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
  340. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
  341. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
  342. package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
  343. package/src/duckdb/src/main/capi/arrow-c.cpp +10 -10
  344. package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
  345. package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
  346. package/src/duckdb/src/main/capi/config-c.cpp +1 -1
  347. package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
  348. package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
  349. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
  350. package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
  351. package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
  352. package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
  353. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
  354. package/src/duckdb/src/main/capi/result-c.cpp +23 -23
  355. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  356. package/src/duckdb/src/main/client_context.cpp +3 -3
  357. package/src/duckdb/src/main/database_manager.cpp +1 -1
  358. package/src/duckdb/src/main/error_manager.cpp +1 -1
  359. package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
  360. package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
  361. package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
  362. package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
  363. package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
  364. package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
  365. package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
  366. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  367. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  368. package/src/duckdb/src/main/relation.cpp +1 -1
  369. package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
  370. package/src/duckdb/src/optimizer/expression_heuristics.cpp +1 -0
  371. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  372. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
  373. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +4 -7
  374. package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
  375. package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
  376. package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
  377. package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
  378. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
  379. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
  380. package/src/duckdb/src/parallel/executor.cpp +1 -1
  381. package/src/duckdb/src/parser/base_expression.cpp +2 -5
  382. package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
  383. package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
  384. package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
  385. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
  386. package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
  387. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
  388. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
  389. package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
  390. package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
  391. package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
  392. package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
  393. package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
  394. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
  395. package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
  396. package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
  397. package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
  398. package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
  399. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
  400. package/src/duckdb/src/parser/parser.cpp +3 -3
  401. package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
  402. package/src/duckdb/src/parser/query_node.cpp +7 -6
  403. package/src/duckdb/src/parser/result_modifier.cpp +25 -18
  404. package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
  405. package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
  406. package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
  407. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
  408. package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
  409. package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
  410. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
  411. package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
  412. package/src/duckdb/src/parser/tableref.cpp +12 -3
  413. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
  414. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
  415. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
  416. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
  417. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
  418. package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
  419. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
  420. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
  421. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
  422. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +70 -75
  423. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
  424. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
  425. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
  426. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
  427. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +28 -29
  428. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
  429. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
  430. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
  431. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
  432. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
  433. package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
  434. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
  435. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
  436. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
  437. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
  438. package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
  439. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
  440. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
  441. package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +3 -4
  442. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
  443. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
  444. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
  445. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
  446. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
  447. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
  448. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
  449. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
  450. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
  451. package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
  452. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -22
  453. package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
  454. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
  455. package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
  456. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
  457. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
  458. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
  459. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
  460. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
  461. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
  462. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
  463. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
  464. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
  465. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
  466. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
  467. package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
  468. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
  469. package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
  470. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
  471. package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
  472. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
  473. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
  474. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
  475. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +27 -27
  476. package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
  477. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
  478. package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
  479. package/src/duckdb/src/parser/transformer.cpp +46 -46
  480. package/src/duckdb/src/planner/bind_context.cpp +6 -6
  481. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -1
  482. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
  483. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
  484. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
  485. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +8 -8
  486. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
  487. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +13 -5
  488. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
  489. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +1 -1
  490. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +1 -1
  491. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +14 -7
  492. package/src/duckdb/src/planner/binder.cpp +1 -1
  493. package/src/duckdb/src/planner/bound_result_modifier.cpp +16 -11
  494. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +5 -5
  495. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
  496. package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
  497. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
  498. package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
  499. package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
  500. package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
  501. package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
  502. package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
  503. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
  504. package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
  505. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
  506. package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
  507. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
  508. package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
  509. package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
  510. package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
  511. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
  512. package/src/duckdb/src/planner/expression.cpp +15 -0
  513. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
  514. package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
  515. package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
  516. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  517. package/src/duckdb/src/planner/logical_operator.cpp +3 -4
  518. package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
  519. package/src/duckdb/src/planner/table_filter.cpp +1 -1
  520. package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
  521. package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
  522. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
  523. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
  524. package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
  525. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
  526. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
  527. package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
  528. package/src/duckdb/src/storage/compression/rle.cpp +8 -8
  529. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
  530. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
  531. package/src/duckdb/src/storage/data_table.cpp +2 -2
  532. package/src/duckdb/src/storage/index.cpp +1 -3
  533. package/src/duckdb/src/storage/local_storage.cpp +2 -1
  534. package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
  535. package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
  536. package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
  537. package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
  538. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
  539. package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
  540. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
  541. package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
  542. package/src/duckdb/src/storage/table/list_column_data.cpp +8 -7
  543. package/src/duckdb/src/storage/table/row_group.cpp +4 -4
  544. package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -1
  545. package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
  546. package/src/duckdb/src/storage/wal_replay.cpp +1 -1
  547. package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
  548. package/src/duckdb/src/transaction/commit_state.cpp +8 -8
  549. package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
  550. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
  551. package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
  552. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
  553. package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
  554. package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
  555. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +13479 -13564
  556. package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
@@ -49,30 +49,28 @@ static AggregateFunction GetUnaryAggregate(LogicalType type) {
49
49
 
50
50
  struct MinMaxBase {
51
51
  template <class STATE>
52
- static void Initialize(STATE *state) {
53
- state->isset = false;
52
+ static void Initialize(STATE &state) {
53
+ state.isset = false;
54
54
  }
55
55
 
56
56
  template <class INPUT_TYPE, class STATE, class OP>
57
- static void ConstantOperation(STATE *state, AggregateInputData &input_data, INPUT_TYPE *input, ValidityMask &mask,
57
+ static void ConstantOperation(STATE &state, const INPUT_TYPE &input, AggregateUnaryInput &unary_input,
58
58
  idx_t count) {
59
- D_ASSERT(mask.RowIsValid(0));
60
- if (!state->isset) {
61
- OP::template Assign<INPUT_TYPE, STATE>(state, input_data, input[0]);
62
- state->isset = true;
59
+ if (!state.isset) {
60
+ OP::template Assign<INPUT_TYPE, STATE>(state, input, unary_input.input);
61
+ state.isset = true;
63
62
  } else {
64
- OP::template Execute<INPUT_TYPE, STATE>(state, input_data, input[0]);
63
+ OP::template Execute<INPUT_TYPE, STATE>(state, input, unary_input.input);
65
64
  }
66
65
  }
67
66
 
68
67
  template <class INPUT_TYPE, class STATE, class OP>
69
- static void Operation(STATE *state, AggregateInputData &input_data, INPUT_TYPE *input, ValidityMask &mask,
70
- idx_t idx) {
71
- if (!state->isset) {
72
- OP::template Assign<INPUT_TYPE, STATE>(state, input_data, input[idx]);
73
- state->isset = true;
68
+ static void Operation(STATE &state, const INPUT_TYPE &input, AggregateUnaryInput &unary_input) {
69
+ if (!state.isset) {
70
+ OP::template Assign<INPUT_TYPE, STATE>(state, input, unary_input.input);
71
+ state.isset = true;
74
72
  } else {
75
- OP::template Execute<INPUT_TYPE, STATE>(state, input_data, input[idx]);
73
+ OP::template Execute<INPUT_TYPE, STATE>(state, input, unary_input.input);
76
74
  }
77
75
  }
78
76
 
@@ -83,125 +81,128 @@ struct MinMaxBase {
83
81
 
84
82
  struct NumericMinMaxBase : public MinMaxBase {
85
83
  template <class INPUT_TYPE, class STATE>
86
- static void Assign(STATE *state, AggregateInputData &, INPUT_TYPE input) {
87
- state->value = input;
84
+ static void Assign(STATE &state, INPUT_TYPE input, AggregateInputData &) {
85
+ state.value = input;
88
86
  }
89
87
 
90
88
  template <class T, class STATE>
91
- static void Finalize(Vector &result, AggregateInputData &, STATE *state, T *target, ValidityMask &mask, idx_t idx) {
92
- mask.Set(idx, state->isset);
93
- target[idx] = state->value;
89
+ static void Finalize(STATE &state, T &target, AggregateFinalizeData &finalize_data) {
90
+ if (!state.isset) {
91
+ finalize_data.ReturnNull();
92
+ } else {
93
+ target = state.value;
94
+ }
94
95
  }
95
96
  };
96
97
 
97
98
  struct MinOperation : public NumericMinMaxBase {
98
99
  template <class INPUT_TYPE, class STATE>
99
- static void Execute(STATE *state, AggregateInputData &, INPUT_TYPE input) {
100
- if (LessThan::Operation<INPUT_TYPE>(input, state->value)) {
101
- state->value = input;
100
+ static void Execute(STATE &state, INPUT_TYPE input, AggregateInputData &) {
101
+ if (LessThan::Operation<INPUT_TYPE>(input, state.value)) {
102
+ state.value = input;
102
103
  }
103
104
  }
104
105
 
105
106
  template <class STATE, class OP>
106
- static void Combine(const STATE &source, STATE *target, AggregateInputData &) {
107
+ static void Combine(const STATE &source, STATE &target, AggregateInputData &) {
107
108
  if (!source.isset) {
108
109
  // source is NULL, nothing to do
109
110
  return;
110
111
  }
111
- if (!target->isset) {
112
+ if (!target.isset) {
112
113
  // target is NULL, use source value directly
113
- *target = source;
114
- } else if (GreaterThan::Operation(target->value, source.value)) {
115
- target->value = source.value;
114
+ target = source;
115
+ } else if (GreaterThan::Operation(target.value, source.value)) {
116
+ target.value = source.value;
116
117
  }
117
118
  }
118
119
  };
119
120
 
120
121
  struct MaxOperation : public NumericMinMaxBase {
121
122
  template <class INPUT_TYPE, class STATE>
122
- static void Execute(STATE *state, AggregateInputData &, INPUT_TYPE input) {
123
- if (GreaterThan::Operation<INPUT_TYPE>(input, state->value)) {
124
- state->value = input;
123
+ static void Execute(STATE &state, INPUT_TYPE input, AggregateInputData &) {
124
+ if (GreaterThan::Operation<INPUT_TYPE>(input, state.value)) {
125
+ state.value = input;
125
126
  }
126
127
  }
127
128
 
128
129
  template <class STATE, class OP>
129
- static void Combine(const STATE &source, STATE *target, AggregateInputData &) {
130
+ static void Combine(const STATE &source, STATE &target, AggregateInputData &) {
130
131
  if (!source.isset) {
131
132
  // source is NULL, nothing to do
132
133
  return;
133
134
  }
134
- if (!target->isset) {
135
+ if (!target.isset) {
135
136
  // target is NULL, use source value directly
136
- *target = source;
137
- } else if (LessThan::Operation(target->value, source.value)) {
138
- target->value = source.value;
137
+ target = source;
138
+ } else if (LessThan::Operation(target.value, source.value)) {
139
+ target.value = source.value;
139
140
  }
140
141
  }
141
142
  };
142
143
 
143
144
  struct StringMinMaxBase : public MinMaxBase {
144
145
  template <class STATE>
145
- static void Destroy(AggregateInputData &aggr_input_data, STATE *state) {
146
- if (state->isset && !state->value.IsInlined()) {
147
- delete[] state->value.GetData();
146
+ static void Destroy(STATE &state, AggregateInputData &aggr_input_data) {
147
+ if (state.isset && !state.value.IsInlined()) {
148
+ delete[] state.value.GetData();
148
149
  }
149
150
  }
150
151
 
151
152
  template <class INPUT_TYPE, class STATE>
152
- static void Assign(STATE *state, AggregateInputData &input_data, INPUT_TYPE input) {
153
- Destroy(input_data, state);
153
+ static void Assign(STATE &state, INPUT_TYPE input, AggregateInputData &input_data) {
154
+ Destroy(state, input_data);
154
155
  if (input.IsInlined()) {
155
- state->value = input;
156
+ state.value = input;
156
157
  } else {
157
158
  // non-inlined string, need to allocate space for it
158
159
  auto len = input.GetSize();
159
160
  auto ptr = new char[len];
160
161
  memcpy(ptr, input.GetData(), len);
161
162
 
162
- state->value = string_t(ptr, len);
163
+ state.value = string_t(ptr, len);
163
164
  }
164
165
  }
165
166
 
166
167
  template <class T, class STATE>
167
- static void Finalize(Vector &result, AggregateInputData &, STATE *state, T *target, ValidityMask &mask, idx_t idx) {
168
- if (!state->isset) {
169
- mask.SetInvalid(idx);
168
+ static void Finalize(STATE &state, T &target, AggregateFinalizeData &finalize_data) {
169
+ if (!state.isset) {
170
+ finalize_data.ReturnNull();
170
171
  } else {
171
- target[idx] = StringVector::AddStringOrBlob(result, state->value);
172
+ target = StringVector::AddStringOrBlob(finalize_data.result, state.value);
172
173
  }
173
174
  }
174
175
 
175
176
  template <class STATE, class OP>
176
- static void Combine(const STATE &source, STATE *target, AggregateInputData &input_data) {
177
+ static void Combine(const STATE &source, STATE &target, AggregateInputData &input_data) {
177
178
  if (!source.isset) {
178
179
  // source is NULL, nothing to do
179
180
  return;
180
181
  }
181
- if (!target->isset) {
182
+ if (!target.isset) {
182
183
  // target is NULL, use source value directly
183
- Assign(target, input_data, source.value);
184
- target->isset = true;
184
+ Assign(target, source.value, input_data);
185
+ target.isset = true;
185
186
  } else {
186
- OP::template Execute<string_t, STATE>(target, input_data, source.value);
187
+ OP::template Execute<string_t, STATE>(target, source.value, input_data);
187
188
  }
188
189
  }
189
190
  };
190
191
 
191
192
  struct MinOperationString : public StringMinMaxBase {
192
193
  template <class INPUT_TYPE, class STATE>
193
- static void Execute(STATE *state, AggregateInputData &input_data, INPUT_TYPE input) {
194
- if (LessThan::Operation<INPUT_TYPE>(input, state->value)) {
195
- Assign(state, input_data, input);
194
+ static void Execute(STATE &state, INPUT_TYPE input, AggregateInputData &input_data) {
195
+ if (LessThan::Operation<INPUT_TYPE>(input, state.value)) {
196
+ Assign(state, input, input_data);
196
197
  }
197
198
  }
198
199
  };
199
200
 
200
201
  struct MaxOperationString : public StringMinMaxBase {
201
202
  template <class INPUT_TYPE, class STATE>
202
- static void Execute(STATE *state, AggregateInputData &input_data, INPUT_TYPE input) {
203
- if (GreaterThan::Operation<INPUT_TYPE>(input, state->value)) {
204
- Assign(state, input_data, input);
203
+ static void Execute(STATE &state, INPUT_TYPE input, AggregateInputData &input_data) {
204
+ if (GreaterThan::Operation<INPUT_TYPE>(input, state.value)) {
205
+ Assign(state, input, input_data);
205
206
  }
206
207
  }
207
208
  };
@@ -215,8 +216,8 @@ static bool TemplatedOptimumType(Vector &left, idx_t lidx, idx_t lcount, Vector
215
216
  lidx = lvdata.sel->get_index(lidx);
216
217
  ridx = rvdata.sel->get_index(ridx);
217
218
 
218
- auto ldata = (const T *)lvdata.data;
219
- auto rdata = (const T *)rvdata.data;
219
+ auto ldata = UnifiedVectorFormat::GetData<T>(lvdata);
220
+ auto rdata = UnifiedVectorFormat::GetData<T>(rvdata);
220
221
 
221
222
  auto &lval = ldata[lidx];
222
223
  auto &rval = rdata[ridx];
@@ -341,8 +342,8 @@ static bool TemplatedOptimumList(Vector &left, idx_t lidx, idx_t lcount, Vector
341
342
  auto &lchild = ListVector::GetEntry(left);
342
343
  auto &rchild = ListVector::GetEntry(right);
343
344
 
344
- auto ldata = (const list_entry_t *)lvdata.data;
345
- auto rdata = (const list_entry_t *)rvdata.data;
345
+ auto ldata = UnifiedVectorFormat::GetData<list_entry_t>(lvdata);
346
+ auto rdata = UnifiedVectorFormat::GetData<list_entry_t>(rvdata);
346
347
 
347
348
  auto &lval = ldata[lidx];
348
349
  auto &rval = rdata[ridx];
@@ -379,31 +380,31 @@ struct VectorMinMaxBase {
379
380
  }
380
381
 
381
382
  template <class STATE>
382
- static void Initialize(STATE *state) {
383
- state->value = nullptr;
383
+ static void Initialize(STATE &state) {
384
+ state.value = nullptr;
384
385
  }
385
386
 
386
387
  template <class STATE>
387
- static void Destroy(AggregateInputData &aggr_input_data, STATE *state) {
388
- if (state->value) {
389
- delete state->value;
388
+ static void Destroy(STATE &state, AggregateInputData &aggr_input_data) {
389
+ if (state.value) {
390
+ delete state.value;
390
391
  }
391
- state->value = nullptr;
392
+ state.value = nullptr;
392
393
  }
393
394
 
394
395
  template <class STATE>
395
- static void Assign(STATE *state, Vector &input, const idx_t idx) {
396
- if (!state->value) {
397
- state->value = new Vector(input.GetType());
398
- state->value->SetVectorType(VectorType::CONSTANT_VECTOR);
396
+ static void Assign(STATE &state, Vector &input, const idx_t idx) {
397
+ if (!state.value) {
398
+ state.value = new Vector(input.GetType());
399
+ state.value->SetVectorType(VectorType::CONSTANT_VECTOR);
399
400
  }
400
401
  sel_t selv = idx;
401
402
  SelectionVector sel(&selv);
402
- VectorOperations::Copy(input, *state->value, sel, 1, 0, 0);
403
+ VectorOperations::Copy(input, *state.value, sel, 1, 0, 0);
403
404
  }
404
405
 
405
406
  template <class STATE>
406
- static void Execute(STATE *state, Vector &input, const idx_t idx, const idx_t count) {
407
+ static void Execute(STATE &state, Vector &input, const idx_t idx, const idx_t count) {
407
408
  Assign(state, input, idx);
408
409
  }
409
410
 
@@ -423,8 +424,8 @@ struct VectorMinMaxBase {
423
424
  continue;
424
425
  }
425
426
  const auto sidx = sdata.sel->get_index(i);
426
- auto state = states[sidx];
427
- if (!state->value) {
427
+ auto &state = *states[sidx];
428
+ if (!state.value) {
428
429
  Assign(state, input, i);
429
430
  } else {
430
431
  OP::template Execute(state, input, i, count);
@@ -433,34 +434,22 @@ struct VectorMinMaxBase {
433
434
  }
434
435
 
435
436
  template <class STATE, class OP>
436
- static void Combine(const STATE &source, STATE *target, AggregateInputData &) {
437
+ static void Combine(const STATE &source, STATE &target, AggregateInputData &) {
437
438
  if (!source.value) {
438
439
  return;
439
- } else if (!target->value) {
440
+ } else if (!target.value) {
440
441
  Assign(target, *source.value, 0);
441
442
  } else {
442
443
  OP::template Execute(target, *source.value, 0, 1);
443
444
  }
444
445
  }
445
446
 
446
- template <class T, class STATE>
447
- static void Finalize(Vector &result, AggregateInputData &, STATE *state, T *target, ValidityMask &mask, idx_t idx) {
448
- if (!state->value) {
449
- // we need to use SetNull here
450
- // since for STRUCT columns only setting the validity mask of the struct is incorrect
451
- // as for a struct column, we need to also set ALL child columns to NULL
452
- switch (result.GetVectorType()) {
453
- case VectorType::FLAT_VECTOR:
454
- FlatVector::SetNull(result, idx, true);
455
- break;
456
- case VectorType::CONSTANT_VECTOR:
457
- ConstantVector::SetNull(result, true);
458
- break;
459
- default:
460
- throw InternalException("Invalid result vector type for nested min/max");
461
- }
447
+ template <class STATE>
448
+ static void Finalize(STATE &state, AggregateFinalizeData &finalize_data) {
449
+ if (!state.value) {
450
+ finalize_data.ReturnNull();
462
451
  } else {
463
- VectorOperations::Copy(*state->value, result, 1, 0, idx);
452
+ VectorOperations::Copy(*state.value, finalize_data.result, 1, 0, finalize_data.result_idx);
464
453
  }
465
454
  }
466
455
 
@@ -474,8 +463,8 @@ struct VectorMinMaxBase {
474
463
 
475
464
  struct MinOperationVector : public VectorMinMaxBase {
476
465
  template <class STATE>
477
- static void Execute(STATE *state, Vector &input, const idx_t idx, const idx_t count) {
478
- if (TemplatedOptimumValue<DistinctLessThan>(input, idx, count, *state->value, 0, 1)) {
466
+ static void Execute(STATE &state, Vector &input, const idx_t idx, const idx_t count) {
467
+ if (TemplatedOptimumValue<DistinctLessThan>(input, idx, count, *state.value, 0, 1)) {
479
468
  Assign(state, input, idx);
480
469
  }
481
470
  }
@@ -483,8 +472,8 @@ struct MinOperationVector : public VectorMinMaxBase {
483
472
 
484
473
  struct MaxOperationVector : public VectorMinMaxBase {
485
474
  template <class STATE>
486
- static void Execute(STATE *state, Vector &input, const idx_t idx, const idx_t count) {
487
- if (TemplatedOptimumValue<DistinctGreaterThan>(input, idx, count, *state->value, 0, 1)) {
475
+ static void Execute(STATE &state, Vector &input, const idx_t idx, const idx_t count) {
476
+ if (TemplatedOptimumValue<DistinctGreaterThan>(input, idx, count, *state.value, 0, 1)) {
488
477
  Assign(state, input, idx);
489
478
  }
490
479
  }
@@ -518,11 +507,10 @@ unique_ptr<FunctionData> BindDecimalMinMax(ClientContext &context, AggregateFunc
518
507
 
519
508
  template <typename OP, typename STATE>
520
509
  static AggregateFunction GetMinMaxFunction(const LogicalType &type) {
521
- return AggregateFunction({type}, type, AggregateFunction::StateSize<STATE>,
522
- AggregateFunction::StateInitialize<STATE, OP>, OP::template Update<STATE, OP>,
523
- AggregateFunction::StateCombine<STATE, OP>,
524
- AggregateFunction::StateFinalize<STATE, void, OP>, nullptr, OP::Bind,
525
- AggregateFunction::StateDestroy<STATE, OP>);
510
+ return AggregateFunction(
511
+ {type}, type, AggregateFunction::StateSize<STATE>, AggregateFunction::StateInitialize<STATE, OP>,
512
+ OP::template Update<STATE, OP>, AggregateFunction::StateCombine<STATE, OP>,
513
+ AggregateFunction::StateVoidFinalize<STATE, OP>, nullptr, OP::Bind, AggregateFunction::StateDestroy<STATE, OP>);
526
514
  }
527
515
 
528
516
  template <class OP, class OP_STRING, class OP_VECTOR>
@@ -13,38 +13,38 @@ struct ProductState {
13
13
 
14
14
  struct ProductFunction {
15
15
  template <class STATE>
16
- static void Initialize(STATE *state) {
17
- state->val = 1;
18
- state->empty = true;
16
+ static void Initialize(STATE &state) {
17
+ state.val = 1;
18
+ state.empty = true;
19
19
  }
20
20
 
21
21
  template <class STATE, class OP>
22
- static void Combine(const STATE &source, STATE *target, AggregateInputData &) {
23
- target->val *= source.val;
24
- target->empty = target->empty && source.empty;
22
+ static void Combine(const STATE &source, STATE &target, AggregateInputData &) {
23
+ target.val *= source.val;
24
+ target.empty = target.empty && source.empty;
25
25
  }
26
26
 
27
27
  template <class T, class STATE>
28
- static void Finalize(Vector &result, AggregateInputData &, STATE *state, T *target, ValidityMask &mask, idx_t idx) {
29
- if (state->empty) {
30
- mask.SetInvalid(idx);
28
+ static void Finalize(STATE &state, T &target, AggregateFinalizeData &finalize_data) {
29
+ if (state.empty) {
30
+ finalize_data.ReturnNull();
31
31
  return;
32
32
  }
33
- target[idx] = state->val;
33
+ target = state.val;
34
34
  }
35
35
  template <class INPUT_TYPE, class STATE, class OP>
36
- static void Operation(STATE *state, AggregateInputData &, INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
37
- if (state->empty) {
38
- state->empty = false;
36
+ static void Operation(STATE &state, const INPUT_TYPE &input, AggregateUnaryInput &unary_input) {
37
+ if (state.empty) {
38
+ state.empty = false;
39
39
  }
40
- state->val *= input[idx];
40
+ state.val *= input;
41
41
  }
42
42
 
43
43
  template <class INPUT_TYPE, class STATE, class OP>
44
- static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, INPUT_TYPE *input,
45
- ValidityMask &mask, idx_t count) {
44
+ static void ConstantOperation(STATE &state, const INPUT_TYPE &input, AggregateUnaryInput &unary_input,
45
+ idx_t count) {
46
46
  for (idx_t i = 0; i < count; i++) {
47
- Operation<INPUT_TYPE, STATE, OP>(state, aggr_input_data, input, mask, 0);
47
+ Operation<INPUT_TYPE, STATE, OP>(state, input, unary_input);
48
48
  }
49
49
  }
50
50
 
@@ -15,62 +15,60 @@ struct SkewState {
15
15
 
16
16
  struct SkewnessOperation {
17
17
  template <class STATE>
18
- static void Initialize(STATE *state) {
19
- state->n = 0;
20
- state->sum = state->sum_sqr = state->sum_cub = 0;
18
+ static void Initialize(STATE &state) {
19
+ state.n = 0;
20
+ state.sum = state.sum_sqr = state.sum_cub = 0;
21
21
  }
22
22
 
23
23
  template <class INPUT_TYPE, class STATE, class OP>
24
- static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, INPUT_TYPE *input,
25
- ValidityMask &mask, idx_t count) {
24
+ static void ConstantOperation(STATE &state, const INPUT_TYPE &input, AggregateUnaryInput &unary_input,
25
+ idx_t count) {
26
26
  for (idx_t i = 0; i < count; i++) {
27
- Operation<INPUT_TYPE, STATE, OP>(state, aggr_input_data, input, mask, 0);
27
+ Operation<INPUT_TYPE, STATE, OP>(state, input, unary_input);
28
28
  }
29
29
  }
30
30
 
31
31
  template <class INPUT_TYPE, class STATE, class OP>
32
- static void Operation(STATE *state, AggregateInputData &, INPUT_TYPE *data, ValidityMask &mask, idx_t idx) {
33
- state->n++;
34
- state->sum += data[idx];
35
- state->sum_sqr += pow(data[idx], 2);
36
- state->sum_cub += pow(data[idx], 3);
32
+ static void Operation(STATE &state, const INPUT_TYPE &input, AggregateUnaryInput &unary_input) {
33
+ state.n++;
34
+ state.sum += input;
35
+ state.sum_sqr += pow(input, 2);
36
+ state.sum_cub += pow(input, 3);
37
37
  }
38
38
 
39
39
  template <class STATE, class OP>
40
- static void Combine(const STATE &source, STATE *target, AggregateInputData &) {
40
+ static void Combine(const STATE &source, STATE &target, AggregateInputData &) {
41
41
  if (source.n == 0) {
42
42
  return;
43
43
  }
44
44
 
45
- target->n += source.n;
46
- target->sum += source.sum;
47
- target->sum_sqr += source.sum_sqr;
48
- target->sum_cub += source.sum_cub;
45
+ target.n += source.n;
46
+ target.sum += source.sum;
47
+ target.sum_sqr += source.sum_sqr;
48
+ target.sum_cub += source.sum_cub;
49
49
  }
50
50
 
51
51
  template <class TARGET_TYPE, class STATE>
52
- static void Finalize(Vector &result, AggregateInputData &, STATE *state, TARGET_TYPE *target, ValidityMask &mask,
53
- idx_t idx) {
54
- if (state->n <= 2) {
55
- mask.SetInvalid(idx);
52
+ static void Finalize(STATE &state, TARGET_TYPE &target, AggregateFinalizeData &finalize_data) {
53
+ if (state.n <= 2) {
54
+ finalize_data.ReturnNull();
56
55
  return;
57
56
  }
58
- double n = state->n;
57
+ double n = state.n;
59
58
  double temp = 1 / n;
60
- auto p = std::pow(temp * (state->sum_sqr - state->sum * state->sum * temp), 3);
59
+ auto p = std::pow(temp * (state.sum_sqr - state.sum * state.sum * temp), 3);
61
60
  if (p < 0) {
62
61
  p = 0; // Shouldn't be below 0 but floating points are weird
63
62
  }
64
63
  double div = std::sqrt(p);
65
64
  if (div == 0) {
66
- mask.SetInvalid(idx);
65
+ finalize_data.ReturnNull();
67
66
  return;
68
67
  }
69
68
  double temp1 = std::sqrt(n * (n - 1)) / (n - 2);
70
- target[idx] = temp1 * temp *
71
- (state->sum_cub - 3 * state->sum_sqr * state->sum * temp + 2 * pow(state->sum, 3) * temp * temp) /
72
- div;
73
- if (!Value::DoubleIsFinite(target[idx])) {
69
+ target = temp1 * temp *
70
+ (state.sum_cub - 3 * state.sum_sqr * state.sum * temp + 2 * pow(state.sum, 3) * temp * temp) / div;
71
+ if (!Value::DoubleIsFinite(target)) {
74
72
  throw OutOfRangeException("SKEW is out of range!");
75
73
  }
76
74
  }
@@ -32,25 +32,25 @@ struct StringAggBindData : public FunctionData {
32
32
 
33
33
  struct StringAggFunction {
34
34
  template <class STATE>
35
- static void Initialize(STATE *state) {
36
- state->dataptr = nullptr;
37
- state->alloc_size = 0;
38
- state->size = 0;
35
+ static void Initialize(STATE &state) {
36
+ state.dataptr = nullptr;
37
+ state.alloc_size = 0;
38
+ state.size = 0;
39
39
  }
40
40
 
41
41
  template <class T, class STATE>
42
- static void Finalize(Vector &result, AggregateInputData &, STATE *state, T *target, ValidityMask &mask, idx_t idx) {
43
- if (!state->dataptr) {
44
- mask.SetInvalid(idx);
42
+ static void Finalize(STATE &state, T &target, AggregateFinalizeData &finalize_data) {
43
+ if (!state.dataptr) {
44
+ finalize_data.ReturnNull();
45
45
  } else {
46
- target[idx] = StringVector::AddString(result, state->dataptr, state->size);
46
+ target = StringVector::AddString(finalize_data.result, state.dataptr, state.size);
47
47
  }
48
48
  }
49
49
 
50
50
  template <class STATE>
51
- static void Destroy(AggregateInputData &aggr_input_data, STATE *state) {
52
- if (state->dataptr) {
53
- delete[] state->dataptr;
51
+ static void Destroy(STATE &state, AggregateInputData &aggr_input_data) {
52
+ if (state.dataptr) {
53
+ delete[] state.dataptr;
54
54
  }
55
55
  }
56
56
 
@@ -58,57 +58,56 @@ struct StringAggFunction {
58
58
  return true;
59
59
  }
60
60
 
61
- static inline void PerformOperation(StringAggState *state, const char *str, const char *sep, idx_t str_size,
61
+ static inline void PerformOperation(StringAggState &state, const char *str, const char *sep, idx_t str_size,
62
62
  idx_t sep_size) {
63
- if (!state->dataptr) {
63
+ if (!state.dataptr) {
64
64
  // first iteration: allocate space for the string and copy it into the state
65
- state->alloc_size = MaxValue<idx_t>(8, NextPowerOfTwo(str_size));
66
- state->dataptr = new char[state->alloc_size];
67
- state->size = str_size;
68
- memcpy(state->dataptr, str, str_size);
65
+ state.alloc_size = MaxValue<idx_t>(8, NextPowerOfTwo(str_size));
66
+ state.dataptr = new char[state.alloc_size];
67
+ state.size = str_size;
68
+ memcpy(state.dataptr, str, str_size);
69
69
  } else {
70
70
  // subsequent iteration: first check if we have space to place the string and separator
71
- idx_t required_size = state->size + str_size + sep_size;
72
- if (required_size > state->alloc_size) {
71
+ idx_t required_size = state.size + str_size + sep_size;
72
+ if (required_size > state.alloc_size) {
73
73
  // no space! allocate extra space
74
- while (state->alloc_size < required_size) {
75
- state->alloc_size *= 2;
74
+ while (state.alloc_size < required_size) {
75
+ state.alloc_size *= 2;
76
76
  }
77
- auto new_data = new char[state->alloc_size];
78
- memcpy(new_data, state->dataptr, state->size);
79
- delete[] state->dataptr;
80
- state->dataptr = new_data;
77
+ auto new_data = new char[state.alloc_size];
78
+ memcpy(new_data, state.dataptr, state.size);
79
+ delete[] state.dataptr;
80
+ state.dataptr = new_data;
81
81
  }
82
82
  // copy the separator
83
- memcpy(state->dataptr + state->size, sep, sep_size);
84
- state->size += sep_size;
83
+ memcpy(state.dataptr + state.size, sep, sep_size);
84
+ state.size += sep_size;
85
85
  // copy the string
86
- memcpy(state->dataptr + state->size, str, str_size);
87
- state->size += str_size;
86
+ memcpy(state.dataptr + state.size, str, str_size);
87
+ state.size += str_size;
88
88
  }
89
89
  }
90
90
 
91
- static inline void PerformOperation(StringAggState *state, string_t str, FunctionData *data_p) {
91
+ static inline void PerformOperation(StringAggState &state, string_t str, optional_ptr<FunctionData> data_p) {
92
92
  auto &data = data_p->Cast<StringAggBindData>();
93
93
  PerformOperation(state, str.GetData(), data.sep.c_str(), str.GetSize(), data.sep.size());
94
94
  }
95
95
 
96
96
  template <class INPUT_TYPE, class STATE, class OP>
97
- static void Operation(STATE *state, AggregateInputData &aggr_input_data, INPUT_TYPE *str_data,
98
- ValidityMask &str_mask, idx_t str_idx) {
99
- PerformOperation(state, str_data[str_idx], aggr_input_data.bind_data);
97
+ static void Operation(STATE &state, const INPUT_TYPE &input, AggregateUnaryInput &unary_input) {
98
+ PerformOperation(state, input, unary_input.input.bind_data);
100
99
  }
101
100
 
102
101
  template <class INPUT_TYPE, class STATE, class OP>
103
- static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, INPUT_TYPE *input,
104
- ValidityMask &mask, idx_t count) {
102
+ static void ConstantOperation(STATE &state, const INPUT_TYPE &input, AggregateUnaryInput &unary_input,
103
+ idx_t count) {
105
104
  for (idx_t i = 0; i < count; i++) {
106
- Operation<INPUT_TYPE, STATE, OP>(state, aggr_input_data, input, mask, 0);
105
+ Operation<INPUT_TYPE, STATE, OP>(state, input, unary_input);
107
106
  }
108
107
  }
109
108
 
110
109
  template <class STATE, class OP>
111
- static void Combine(const STATE &source, STATE *target, AggregateInputData &aggr_input_data) {
110
+ static void Combine(const STATE &source, STATE &target, AggregateInputData &aggr_input_data) {
112
111
  if (!source.dataptr) {
113
112
  // source is not set: skip combining
114
113
  return;