duckdb 0.8.1-dev23.0 → 0.8.1-dev253.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 (596) hide show
  1. package/package.json +1 -1
  2. package/src/duckdb/extension/icu/icu-datepart.cpp +1 -1
  3. package/src/duckdb/extension/icu/icu-makedate.cpp +5 -4
  4. package/src/duckdb/extension/json/include/json_common.hpp +1 -1
  5. package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
  6. package/src/duckdb/extension/json/json_functions/json_create.cpp +6 -6
  7. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +1 -1
  8. package/src/duckdb/extension/json/json_functions/json_transform.cpp +1 -1
  9. package/src/duckdb/extension/json/json_functions.cpp +3 -0
  10. package/src/duckdb/extension/parquet/column_reader.cpp +57 -52
  11. package/src/duckdb/extension/parquet/column_writer.cpp +57 -45
  12. package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +1 -1
  13. package/src/duckdb/extension/parquet/include/column_reader.hpp +5 -4
  14. package/src/duckdb/extension/parquet/include/column_writer.hpp +24 -0
  15. package/src/duckdb/extension/parquet/include/decode_utils.hpp +6 -0
  16. package/src/duckdb/extension/parquet/include/list_column_reader.hpp +1 -1
  17. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
  18. package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
  19. package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
  20. package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
  21. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
  22. package/src/duckdb/extension/parquet/parquet-extension.cpp +1 -1
  23. package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
  24. package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
  25. package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
  26. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
  27. package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
  28. package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
  29. package/src/duckdb/src/catalog/catalog.cpp +5 -17
  30. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +113 -0
  31. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +7 -0
  32. package/src/duckdb/src/catalog/catalog_entry.cpp +4 -4
  33. package/src/duckdb/src/catalog/catalog_search_path.cpp +49 -12
  34. package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
  35. package/src/duckdb/src/catalog/default/default_types.cpp +9 -84
  36. package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
  37. package/src/duckdb/src/catalog/duck_catalog.cpp +1 -0
  38. package/src/duckdb/src/common/adbc/adbc.cpp +301 -106
  39. package/src/duckdb/src/common/adbc/driver_manager.cpp +10 -22
  40. package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
  41. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +7 -7
  42. package/src/duckdb/src/common/checksum.cpp +1 -1
  43. package/src/duckdb/src/common/compressed_file_system.cpp +6 -6
  44. package/src/duckdb/src/common/crypto/md5.cpp +9 -9
  45. package/src/duckdb/src/common/exception.cpp +4 -1
  46. package/src/duckdb/src/common/exception_format_value.cpp +19 -14
  47. package/src/duckdb/src/common/field_writer.cpp +1 -1
  48. package/src/duckdb/src/common/file_system.cpp +15 -2
  49. package/src/duckdb/src/common/fsst.cpp +11 -6
  50. package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
  51. package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
  52. package/src/duckdb/src/common/local_file_system.cpp +11 -11
  53. package/src/duckdb/src/common/multi_file_reader.cpp +3 -0
  54. package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
  55. package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
  56. package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
  57. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
  58. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
  59. package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
  60. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
  61. package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
  62. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
  63. package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
  64. package/src/duckdb/src/common/serializer.cpp +1 -1
  65. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  66. package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
  67. package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
  68. package/src/duckdb/src/common/types/bit.cpp +5 -5
  69. package/src/duckdb/src/common/types/blob.cpp +8 -8
  70. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
  71. package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
  72. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  73. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  74. package/src/duckdb/src/common/types/hash.cpp +2 -2
  75. package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
  76. package/src/duckdb/src/common/types/list_segment.cpp +77 -49
  77. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
  78. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +5 -4
  79. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
  80. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +61 -24
  81. package/src/duckdb/src/common/types/string_heap.cpp +1 -1
  82. package/src/duckdb/src/common/types/value.cpp +3 -2
  83. package/src/duckdb/src/common/types/vector.cpp +98 -101
  84. package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
  85. package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
  86. package/src/duckdb/src/common/types.cpp +44 -33
  87. package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
  88. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
  89. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
  90. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
  91. package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +30 -33
  92. package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +0 -4
  93. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +32 -36
  94. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +53 -66
  95. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +48 -48
  96. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +44 -44
  97. package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +32 -32
  98. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +34 -34
  99. package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +30 -31
  100. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +91 -103
  101. package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +17 -17
  102. package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +25 -27
  103. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +36 -37
  104. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
  105. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +48 -84
  106. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
  107. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +97 -121
  108. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +62 -99
  109. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
  110. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +22 -23
  111. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +16 -18
  112. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +22 -25
  113. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +19 -24
  114. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +18 -23
  115. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +14 -18
  116. package/src/duckdb/src/core_functions/function_list.cpp +1 -0
  117. package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
  118. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +45 -45
  119. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
  120. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
  121. package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
  122. package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
  123. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +14 -0
  124. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +3 -3
  125. package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
  126. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +3 -3
  127. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +6 -7
  128. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
  129. package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
  130. package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
  131. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +4 -1
  132. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
  133. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +3 -3
  134. package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
  135. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
  136. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
  137. package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
  138. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  139. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
  140. package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
  141. package/src/duckdb/src/execution/expression_executor.cpp +28 -28
  142. package/src/duckdb/src/execution/index/art/art.cpp +30 -32
  143. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +3 -4
  144. package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
  145. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
  146. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
  147. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  148. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
  149. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
  150. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
  151. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +7 -5
  152. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
  153. package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +5 -2
  154. package/src/duckdb/src/execution/operator/helper/physical_set.cpp +5 -1
  155. package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
  156. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
  157. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  158. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
  159. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
  160. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
  161. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
  162. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
  163. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
  164. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
  165. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
  166. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  167. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
  168. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
  169. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -3
  170. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
  171. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
  172. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
  173. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  174. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
  175. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  176. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
  177. package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
  178. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
  179. package/src/duckdb/src/execution/reservoir_sample.cpp +2 -2
  180. package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
  181. package/src/duckdb/src/function/aggregate/distributive/count.cpp +158 -20
  182. package/src/duckdb/src/function/aggregate/distributive/first.cpp +66 -74
  183. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +13 -13
  184. package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
  185. package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
  186. package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
  187. package/src/duckdb/src/function/cast/list_casts.cpp +2 -4
  188. package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
  189. package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
  190. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
  191. package/src/duckdb/src/function/pragma/pragma_queries.cpp +33 -23
  192. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
  193. package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
  194. package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -3
  195. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -3
  196. package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
  197. package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
  198. package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
  199. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
  200. package/src/duckdb/src/function/scalar/string/regexp/regexp_util.cpp +6 -2
  201. package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
  202. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
  203. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
  204. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +25 -23
  205. package/src/duckdb/src/function/scalar_function.cpp +3 -3
  206. package/src/duckdb/src/function/table/arrow.cpp +6 -6
  207. package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
  208. package/src/duckdb/src/function/table/checkpoint.cpp +1 -1
  209. package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
  210. package/src/duckdb/src/function/table/glob.cpp +1 -1
  211. package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
  212. package/src/duckdb/src/function/table/range.cpp +4 -4
  213. package/src/duckdb/src/function/table/read_csv.cpp +15 -20
  214. package/src/duckdb/src/function/table/repeat.cpp +2 -2
  215. package/src/duckdb/src/function/table/repeat_row.cpp +10 -3
  216. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
  217. package/src/duckdb/src/function/table/system/test_vector_types.cpp +1 -1
  218. package/src/duckdb/src/function/table/table_scan.cpp +2 -2
  219. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  220. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  221. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -5
  222. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -0
  223. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +6 -0
  224. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
  225. package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +8 -2
  226. package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +97 -0
  227. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +5 -0
  228. package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
  229. package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
  230. package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
  231. package/src/duckdb/src/include/duckdb/common/exception.hpp +5 -2
  232. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
  233. package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
  234. package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
  235. package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
  236. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
  237. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
  238. package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
  239. package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
  240. package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
  241. package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
  242. package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
  243. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
  244. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
  245. package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
  246. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
  247. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
  248. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +112 -76
  249. package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
  250. package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
  251. package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
  252. package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
  253. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +20 -24
  254. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +36 -39
  255. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +57 -53
  256. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +8 -9
  257. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +16 -18
  258. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +7 -8
  259. package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +9 -0
  260. package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +2 -6
  261. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +16 -36
  262. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
  263. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +3 -3
  264. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
  265. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
  266. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
  267. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
  268. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +8 -29
  269. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +95 -0
  270. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
  271. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
  272. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
  273. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
  274. package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
  275. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +3 -1
  276. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
  277. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
  278. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
  279. package/src/duckdb/src/include/duckdb/function/table_function.hpp +8 -7
  280. package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
  281. package/src/duckdb/src/include/duckdb/main/config.hpp +2 -0
  282. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  283. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
  284. package/src/duckdb/src/include/duckdb/main/query_result.hpp +17 -0
  285. package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
  286. package/src/duckdb/src/include/duckdb/main/settings.hpp +9 -0
  287. package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
  288. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
  289. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
  290. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
  291. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
  292. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
  293. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  294. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
  295. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
  296. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
  297. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
  298. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  299. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
  300. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
  301. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
  302. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
  303. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
  304. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
  305. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  306. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  307. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
  308. package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
  309. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
  310. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
  311. package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
  312. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  313. package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
  314. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
  315. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
  316. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
  317. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -2
  318. package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
  319. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  320. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +1 -1
  321. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
  322. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
  323. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
  324. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +107 -91
  325. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -2
  326. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
  327. package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
  328. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +34 -1
  329. package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
  330. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
  331. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
  332. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
  333. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
  334. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
  335. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
  336. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
  337. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
  338. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
  339. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
  340. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
  341. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
  342. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
  343. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
  344. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
  345. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
  346. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
  347. package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
  348. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
  349. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
  350. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
  351. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
  352. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +7 -2
  353. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +6 -2
  354. package/src/duckdb/src/include/duckdb/planner/operator/logical_execute.hpp +4 -0
  355. package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +5 -1
  356. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +5 -1
  357. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
  358. package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +6 -2
  359. package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +4 -0
  360. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
  361. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
  362. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  363. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
  364. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
  365. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
  366. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
  367. package/src/duckdb/src/include/duckdb/storage/index.hpp +2 -2
  368. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
  369. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
  370. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
  371. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
  372. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
  373. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
  374. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
  375. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
  376. package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
  377. package/src/duckdb/src/main/capi/arrow-c.cpp +10 -10
  378. package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
  379. package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
  380. package/src/duckdb/src/main/capi/config-c.cpp +1 -1
  381. package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
  382. package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
  383. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
  384. package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
  385. package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
  386. package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
  387. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
  388. package/src/duckdb/src/main/capi/result-c.cpp +23 -23
  389. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  390. package/src/duckdb/src/main/client_context.cpp +3 -3
  391. package/src/duckdb/src/main/config.cpp +1 -0
  392. package/src/duckdb/src/main/database_manager.cpp +1 -1
  393. package/src/duckdb/src/main/error_manager.cpp +1 -1
  394. package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
  395. package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
  396. package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
  397. package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
  398. package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
  399. package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
  400. package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
  401. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  402. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  403. package/src/duckdb/src/main/relation.cpp +1 -1
  404. package/src/duckdb/src/main/settings/settings.cpp +22 -6
  405. package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
  406. package/src/duckdb/src/optimizer/expression_heuristics.cpp +1 -0
  407. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  408. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
  409. package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
  410. package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
  411. package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
  412. package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
  413. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
  414. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
  415. package/src/duckdb/src/parallel/executor.cpp +1 -1
  416. package/src/duckdb/src/parser/base_expression.cpp +2 -5
  417. package/src/duckdb/src/parser/column_definition.cpp +5 -8
  418. package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
  419. package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
  420. package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
  421. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
  422. package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
  423. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
  424. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
  425. package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
  426. package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
  427. package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
  428. package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
  429. package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
  430. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
  431. package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
  432. package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
  433. package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
  434. package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
  435. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
  436. package/src/duckdb/src/parser/parser.cpp +4 -4
  437. package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
  438. package/src/duckdb/src/parser/query_node.cpp +7 -6
  439. package/src/duckdb/src/parser/result_modifier.cpp +25 -18
  440. package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
  441. package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
  442. package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
  443. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
  444. package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
  445. package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
  446. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
  447. package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
  448. package/src/duckdb/src/parser/tableref.cpp +12 -3
  449. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
  450. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
  451. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
  452. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
  453. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
  454. package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
  455. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
  456. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
  457. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
  458. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +70 -75
  459. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
  460. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
  461. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
  462. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
  463. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +28 -29
  464. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
  465. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
  466. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
  467. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
  468. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
  469. package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
  470. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
  471. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
  472. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
  473. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
  474. package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
  475. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
  476. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
  477. package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +3 -4
  478. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
  479. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
  480. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
  481. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
  482. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
  483. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
  484. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
  485. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
  486. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
  487. package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
  488. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -22
  489. package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
  490. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
  491. package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
  492. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
  493. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
  494. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
  495. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
  496. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
  497. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
  498. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
  499. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
  500. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
  501. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
  502. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
  503. package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
  504. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
  505. package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
  506. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
  507. package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
  508. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
  509. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
  510. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
  511. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +30 -27
  512. package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
  513. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
  514. package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
  515. package/src/duckdb/src/parser/transformer.cpp +46 -46
  516. package/src/duckdb/src/planner/bind_context.cpp +9 -10
  517. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -1
  518. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
  519. package/src/duckdb/src/planner/binder/expression/bind_positional_reference_expression.cpp +8 -3
  520. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
  521. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
  522. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +8 -8
  523. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
  524. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +1 -1
  525. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +18 -1
  526. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
  527. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +2 -114
  528. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +4 -2
  529. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +17 -7
  530. package/src/duckdb/src/planner/binder.cpp +1 -1
  531. package/src/duckdb/src/planner/bound_result_modifier.cpp +16 -11
  532. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +5 -5
  533. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
  534. package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
  535. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
  536. package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
  537. package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
  538. package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
  539. package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
  540. package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
  541. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
  542. package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
  543. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
  544. package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
  545. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
  546. package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
  547. package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
  548. package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
  549. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
  550. package/src/duckdb/src/planner/expression.cpp +15 -0
  551. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
  552. package/src/duckdb/src/planner/expression_binder.cpp +3 -2
  553. package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
  554. package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
  555. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  556. package/src/duckdb/src/planner/logical_operator.cpp +3 -4
  557. package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
  558. package/src/duckdb/src/planner/planner.cpp +5 -15
  559. package/src/duckdb/src/planner/table_filter.cpp +1 -1
  560. package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
  561. package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
  562. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
  563. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
  564. package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
  565. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
  566. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
  567. package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
  568. package/src/duckdb/src/storage/compression/rle.cpp +8 -8
  569. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
  570. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
  571. package/src/duckdb/src/storage/data_table.cpp +8 -7
  572. package/src/duckdb/src/storage/index.cpp +1 -3
  573. package/src/duckdb/src/storage/local_storage.cpp +2 -1
  574. package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
  575. package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
  576. package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
  577. package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
  578. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
  579. package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
  580. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
  581. package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
  582. package/src/duckdb/src/storage/table/list_column_data.cpp +3 -3
  583. package/src/duckdb/src/storage/table/row_group.cpp +4 -4
  584. package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -1
  585. package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
  586. package/src/duckdb/src/storage/wal_replay.cpp +5 -6
  587. package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
  588. package/src/duckdb/src/transaction/commit_state.cpp +8 -8
  589. package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
  590. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
  591. package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
  592. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
  593. package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
  594. package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
  595. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +11391 -11442
  596. package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
@@ -70,7 +70,7 @@ struct BinaryLambdaWrapperWithNulls {
70
70
  struct BinaryExecutor {
71
71
  template <class LEFT_TYPE, class RIGHT_TYPE, class RESULT_TYPE, class OPWRAPPER, class OP, class FUNC,
72
72
  bool LEFT_CONSTANT, bool RIGHT_CONSTANT>
73
- static void ExecuteFlatLoop(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rdata,
73
+ static void ExecuteFlatLoop(const LEFT_TYPE *__restrict ldata, const RIGHT_TYPE *__restrict rdata,
74
74
  RESULT_TYPE *__restrict result_data, idx_t count, ValidityMask &mask, FUNC fun) {
75
75
  if (!LEFT_CONSTANT) {
76
76
  ASSERT_RESTRICT(ldata, ldata + count, result_data, result_data + count);
@@ -184,7 +184,7 @@ struct BinaryExecutor {
184
184
  }
185
185
 
186
186
  template <class LEFT_TYPE, class RIGHT_TYPE, class RESULT_TYPE, class OPWRAPPER, class OP, class FUNC>
187
- static void ExecuteGenericLoop(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rdata,
187
+ static void ExecuteGenericLoop(const LEFT_TYPE *__restrict ldata, const RIGHT_TYPE *__restrict rdata,
188
188
  RESULT_TYPE *__restrict result_data, const SelectionVector *__restrict lsel,
189
189
  const SelectionVector *__restrict rsel, idx_t count, ValidityMask &lvalidity,
190
190
  ValidityMask &rvalidity, ValidityMask &result_validity, FUNC fun) {
@@ -221,8 +221,9 @@ struct BinaryExecutor {
221
221
  result.SetVectorType(VectorType::FLAT_VECTOR);
222
222
  auto result_data = FlatVector::GetData<RESULT_TYPE>(result);
223
223
  ExecuteGenericLoop<LEFT_TYPE, RIGHT_TYPE, RESULT_TYPE, OPWRAPPER, OP, FUNC>(
224
- (LEFT_TYPE *)ldata.data, (RIGHT_TYPE *)rdata.data, result_data, ldata.sel, rdata.sel, count, ldata.validity,
225
- rdata.validity, FlatVector::Validity(result), fun);
224
+ UnifiedVectorFormat::GetData<LEFT_TYPE>(ldata), UnifiedVectorFormat::GetData<RIGHT_TYPE>(rdata),
225
+ result_data, ldata.sel, rdata.sel, count, ldata.validity, rdata.validity, FlatVector::Validity(result),
226
+ fun);
226
227
  }
227
228
 
228
229
  template <class LEFT_TYPE, class RIGHT_TYPE, class RESULT_TYPE, class OPWRAPPER, class OP, class FUNC>
@@ -300,7 +301,7 @@ public:
300
301
 
301
302
  template <class LEFT_TYPE, class RIGHT_TYPE, class OP, bool LEFT_CONSTANT, bool RIGHT_CONSTANT, bool HAS_TRUE_SEL,
302
303
  bool HAS_FALSE_SEL>
303
- static inline idx_t SelectFlatLoop(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rdata,
304
+ static inline idx_t SelectFlatLoop(const LEFT_TYPE *__restrict ldata, const RIGHT_TYPE *__restrict rdata,
304
305
  const SelectionVector *sel, idx_t count, ValidityMask &validity_mask,
305
306
  SelectionVector *true_sel, SelectionVector *false_sel) {
306
307
  idx_t true_count = 0, false_count = 0;
@@ -364,7 +365,7 @@ public:
364
365
  }
365
366
 
366
367
  template <class LEFT_TYPE, class RIGHT_TYPE, class OP, bool LEFT_CONSTANT, bool RIGHT_CONSTANT>
367
- static inline idx_t SelectFlatLoopSwitch(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rdata,
368
+ static inline idx_t SelectFlatLoopSwitch(const LEFT_TYPE *__restrict ldata, const RIGHT_TYPE *__restrict rdata,
368
369
  const SelectionVector *sel, idx_t count, ValidityMask &mask,
369
370
  SelectionVector *true_sel, SelectionVector *false_sel) {
370
371
  if (true_sel && false_sel) {
@@ -419,10 +420,10 @@ public:
419
420
 
420
421
  template <class LEFT_TYPE, class RIGHT_TYPE, class OP, bool NO_NULL, bool HAS_TRUE_SEL, bool HAS_FALSE_SEL>
421
422
  static inline idx_t
422
- SelectGenericLoop(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rdata, const SelectionVector *__restrict lsel,
423
- const SelectionVector *__restrict rsel, const SelectionVector *__restrict result_sel, idx_t count,
424
- ValidityMask &lvalidity, ValidityMask &rvalidity, SelectionVector *true_sel,
425
- SelectionVector *false_sel) {
423
+ SelectGenericLoop(const LEFT_TYPE *__restrict ldata, const RIGHT_TYPE *__restrict rdata,
424
+ const SelectionVector *__restrict lsel, const SelectionVector *__restrict rsel,
425
+ const SelectionVector *__restrict result_sel, idx_t count, ValidityMask &lvalidity,
426
+ ValidityMask &rvalidity, SelectionVector *true_sel, SelectionVector *false_sel) {
426
427
  idx_t true_count = 0, false_count = 0;
427
428
  for (idx_t i = 0; i < count; i++) {
428
429
  auto result_idx = result_sel->get_index(i);
@@ -447,7 +448,7 @@ public:
447
448
  }
448
449
  template <class LEFT_TYPE, class RIGHT_TYPE, class OP, bool NO_NULL>
449
450
  static inline idx_t
450
- SelectGenericLoopSelSwitch(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rdata,
451
+ SelectGenericLoopSelSwitch(const LEFT_TYPE *__restrict ldata, const RIGHT_TYPE *__restrict rdata,
451
452
  const SelectionVector *__restrict lsel, const SelectionVector *__restrict rsel,
452
453
  const SelectionVector *__restrict result_sel, idx_t count, ValidityMask &lvalidity,
453
454
  ValidityMask &rvalidity, SelectionVector *true_sel, SelectionVector *false_sel) {
@@ -466,7 +467,7 @@ public:
466
467
 
467
468
  template <class LEFT_TYPE, class RIGHT_TYPE, class OP>
468
469
  static inline idx_t
469
- SelectGenericLoopSwitch(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rdata,
470
+ SelectGenericLoopSwitch(const LEFT_TYPE *__restrict ldata, const RIGHT_TYPE *__restrict rdata,
470
471
  const SelectionVector *__restrict lsel, const SelectionVector *__restrict rsel,
471
472
  const SelectionVector *__restrict result_sel, idx_t count, ValidityMask &lvalidity,
472
473
  ValidityMask &rvalidity, SelectionVector *true_sel, SelectionVector *false_sel) {
@@ -487,9 +488,9 @@ public:
487
488
  left.ToUnifiedFormat(count, ldata);
488
489
  right.ToUnifiedFormat(count, rdata);
489
490
 
490
- return SelectGenericLoopSwitch<LEFT_TYPE, RIGHT_TYPE, OP>((LEFT_TYPE *)ldata.data, (RIGHT_TYPE *)rdata.data,
491
- ldata.sel, rdata.sel, sel, count, ldata.validity,
492
- rdata.validity, true_sel, false_sel);
491
+ return SelectGenericLoopSwitch<LEFT_TYPE, RIGHT_TYPE, OP>(
492
+ UnifiedVectorFormat::GetData<LEFT_TYPE>(ldata), UnifiedVectorFormat::GetData<RIGHT_TYPE>(rdata), ldata.sel,
493
+ rdata.sel, sel, count, ldata.validity, rdata.validity, true_sel, false_sel);
493
494
  }
494
495
 
495
496
  template <class LEFT_TYPE, class RIGHT_TYPE, class OP>
@@ -38,7 +38,7 @@ struct PrimitiveType {
38
38
  static bool ConstructType(STRUCT_STATE &state, idx_t i, PrimitiveType<INPUT_TYPE> &result) {
39
39
  auto &vdata = state.main_data;
40
40
  auto idx = vdata.sel->get_index(i);
41
- auto ptr = (INPUT_TYPE *)vdata.data;
41
+ auto ptr = UnifiedVectorFormat::GetData<INPUT_TYPE>(vdata);
42
42
  result.val = ptr[idx];
43
43
  return true;
44
44
  }
@@ -77,7 +77,7 @@ struct StructTypeUnary {
77
77
  if (!a_data.validity.RowIsValid(a_idx)) {
78
78
  return false;
79
79
  }
80
- auto a_ptr = (A_TYPE *)a_data.data;
80
+ auto a_ptr = UnifiedVectorFormat::GetData<A_TYPE>(a_data);
81
81
  result.a_val = a_ptr[a_idx];
82
82
  return true;
83
83
  }
@@ -106,8 +106,8 @@ struct StructTypeBinary {
106
106
  if (!a_data.validity.RowIsValid(a_idx) || !b_data.validity.RowIsValid(b_idx)) {
107
107
  return false;
108
108
  }
109
- auto a_ptr = (A_TYPE *)a_data.data;
110
- auto b_ptr = (B_TYPE *)b_data.data;
109
+ auto a_ptr = UnifiedVectorFormat::GetData<A_TYPE>(a_data);
110
+ auto b_ptr = UnifiedVectorFormat::GetData<B_TYPE>(b_data);
111
111
  result.a_val = a_ptr[a_idx];
112
112
  result.b_val = b_ptr[b_idx];
113
113
  return true;
@@ -143,9 +143,9 @@ struct StructTypeTernary {
143
143
  !c_data.validity.RowIsValid(c_idx)) {
144
144
  return false;
145
145
  }
146
- auto a_ptr = (A_TYPE *)a_data.data;
147
- auto b_ptr = (B_TYPE *)b_data.data;
148
- auto c_ptr = (C_TYPE *)c_data.data;
146
+ auto a_ptr = UnifiedVectorFormat::GetData<A_TYPE>(a_data);
147
+ auto b_ptr = UnifiedVectorFormat::GetData<B_TYPE>(b_data);
148
+ auto c_ptr = UnifiedVectorFormat::GetData<C_TYPE>(c_data);
149
149
  result.a_val = a_ptr[a_idx];
150
150
  result.b_val = b_ptr[b_idx];
151
151
  result.c_val = c_ptr[c_idx];
@@ -188,10 +188,10 @@ struct StructTypeQuaternary {
188
188
  !c_data.validity.RowIsValid(c_idx) || !d_data.validity.RowIsValid(d_idx)) {
189
189
  return false;
190
190
  }
191
- auto a_ptr = (A_TYPE *)a_data.data;
192
- auto b_ptr = (B_TYPE *)b_data.data;
193
- auto c_ptr = (C_TYPE *)c_data.data;
194
- auto d_ptr = (D_TYPE *)d_data.data;
191
+ auto a_ptr = UnifiedVectorFormat::GetData<A_TYPE>(a_data);
192
+ auto b_ptr = UnifiedVectorFormat::GetData<B_TYPE>(b_data);
193
+ auto c_ptr = UnifiedVectorFormat::GetData<C_TYPE>(c_data);
194
+ auto d_ptr = UnifiedVectorFormat::GetData<D_TYPE>(d_data);
195
195
  result.a_val = a_ptr[a_idx];
196
196
  result.b_val = b_ptr[b_idx];
197
197
  result.c_val = c_ptr[c_idx];
@@ -41,11 +41,11 @@ struct TernaryLambdaWrapperWithNulls {
41
41
  struct TernaryExecutor {
42
42
  private:
43
43
  template <class A_TYPE, class B_TYPE, class C_TYPE, class RESULT_TYPE, class OPWRAPPER, class FUN>
44
- static inline void ExecuteLoop(A_TYPE *__restrict adata, B_TYPE *__restrict bdata, C_TYPE *__restrict cdata,
45
- RESULT_TYPE *__restrict result_data, idx_t count, const SelectionVector &asel,
46
- const SelectionVector &bsel, const SelectionVector &csel, ValidityMask &avalidity,
47
- ValidityMask &bvalidity, ValidityMask &cvalidity, ValidityMask &result_validity,
48
- FUN fun) {
44
+ static inline void ExecuteLoop(const A_TYPE *__restrict adata, const B_TYPE *__restrict bdata,
45
+ const C_TYPE *__restrict cdata, RESULT_TYPE *__restrict result_data, idx_t count,
46
+ const SelectionVector &asel, const SelectionVector &bsel,
47
+ const SelectionVector &csel, ValidityMask &avalidity, ValidityMask &bvalidity,
48
+ ValidityMask &cvalidity, ValidityMask &result_validity, FUN fun) {
49
49
  if (!avalidity.AllValid() || !bvalidity.AllValid() || !cvalidity.AllValid()) {
50
50
  for (idx_t i = 0; i < count; i++) {
51
51
  auto aidx = asel.get_index(i);
@@ -95,9 +95,10 @@ public:
95
95
  c.ToUnifiedFormat(count, cdata);
96
96
 
97
97
  ExecuteLoop<A_TYPE, B_TYPE, C_TYPE, RESULT_TYPE, OPWRAPPER>(
98
- (A_TYPE *)adata.data, (B_TYPE *)bdata.data, (C_TYPE *)cdata.data,
99
- FlatVector::GetData<RESULT_TYPE>(result), count, *adata.sel, *bdata.sel, *cdata.sel, adata.validity,
100
- bdata.validity, cdata.validity, FlatVector::Validity(result), fun);
98
+ UnifiedVectorFormat::GetData<A_TYPE>(adata), UnifiedVectorFormat::GetData<B_TYPE>(bdata),
99
+ UnifiedVectorFormat::GetData<C_TYPE>(cdata), FlatVector::GetData<RESULT_TYPE>(result), count,
100
+ *adata.sel, *bdata.sel, *cdata.sel, adata.validity, bdata.validity, cdata.validity,
101
+ FlatVector::Validity(result), fun);
101
102
  }
102
103
  }
103
104
 
@@ -122,11 +123,11 @@ public:
122
123
 
123
124
  private:
124
125
  template <class A_TYPE, class B_TYPE, class C_TYPE, class OP, bool NO_NULL, bool HAS_TRUE_SEL, bool HAS_FALSE_SEL>
125
- static inline idx_t SelectLoop(A_TYPE *__restrict adata, B_TYPE *__restrict bdata, C_TYPE *__restrict cdata,
126
- const SelectionVector *result_sel, idx_t count, const SelectionVector &asel,
127
- const SelectionVector &bsel, const SelectionVector &csel, ValidityMask &avalidity,
128
- ValidityMask &bvalidity, ValidityMask &cvalidity, SelectionVector *true_sel,
129
- SelectionVector *false_sel) {
126
+ static inline idx_t SelectLoop(const A_TYPE *__restrict adata, const B_TYPE *__restrict bdata,
127
+ const C_TYPE *__restrict cdata, const SelectionVector *result_sel, idx_t count,
128
+ const SelectionVector &asel, const SelectionVector &bsel,
129
+ const SelectionVector &csel, ValidityMask &avalidity, ValidityMask &bvalidity,
130
+ ValidityMask &cvalidity, SelectionVector *true_sel, SelectionVector *false_sel) {
130
131
  idx_t true_count = 0, false_count = 0;
131
132
  for (idx_t i = 0; i < count; i++) {
132
133
  auto result_idx = result_sel->get_index(i);
@@ -158,17 +159,20 @@ private:
158
159
  SelectionVector *true_sel, SelectionVector *false_sel) {
159
160
  if (true_sel && false_sel) {
160
161
  return SelectLoop<A_TYPE, B_TYPE, C_TYPE, OP, NO_NULL, true, true>(
161
- (A_TYPE *)adata.data, (B_TYPE *)bdata.data, (C_TYPE *)cdata.data, sel, count, *adata.sel, *bdata.sel,
162
- *cdata.sel, adata.validity, bdata.validity, cdata.validity, true_sel, false_sel);
162
+ UnifiedVectorFormat::GetData<A_TYPE>(adata), UnifiedVectorFormat::GetData<B_TYPE>(bdata),
163
+ UnifiedVectorFormat::GetData<C_TYPE>(cdata), sel, count, *adata.sel, *bdata.sel, *cdata.sel,
164
+ adata.validity, bdata.validity, cdata.validity, true_sel, false_sel);
163
165
  } else if (true_sel) {
164
166
  return SelectLoop<A_TYPE, B_TYPE, C_TYPE, OP, NO_NULL, true, false>(
165
- (A_TYPE *)adata.data, (B_TYPE *)bdata.data, (C_TYPE *)cdata.data, sel, count, *adata.sel, *bdata.sel,
166
- *cdata.sel, adata.validity, bdata.validity, cdata.validity, true_sel, false_sel);
167
+ UnifiedVectorFormat::GetData<A_TYPE>(adata), UnifiedVectorFormat::GetData<B_TYPE>(bdata),
168
+ UnifiedVectorFormat::GetData<C_TYPE>(cdata), sel, count, *adata.sel, *bdata.sel, *cdata.sel,
169
+ adata.validity, bdata.validity, cdata.validity, true_sel, false_sel);
167
170
  } else {
168
171
  D_ASSERT(false_sel);
169
172
  return SelectLoop<A_TYPE, B_TYPE, C_TYPE, OP, NO_NULL, false, true>(
170
- (A_TYPE *)adata.data, (B_TYPE *)bdata.data, (C_TYPE *)cdata.data, sel, count, *adata.sel, *bdata.sel,
171
- *cdata.sel, adata.validity, bdata.validity, cdata.validity, true_sel, false_sel);
173
+ UnifiedVectorFormat::GetData<A_TYPE>(adata), UnifiedVectorFormat::GetData<B_TYPE>(bdata),
174
+ UnifiedVectorFormat::GetData<C_TYPE>(cdata), sel, count, *adata.sel, *bdata.sel, *cdata.sel,
175
+ adata.validity, bdata.validity, cdata.validity, true_sel, false_sel);
172
176
  }
173
177
  }
174
178
 
@@ -58,7 +58,7 @@ struct UnaryStringOperator {
58
58
  struct UnaryExecutor {
59
59
  private:
60
60
  template <class INPUT_TYPE, class RESULT_TYPE, class OPWRAPPER, class OP>
61
- static inline void ExecuteLoop(INPUT_TYPE *__restrict ldata, RESULT_TYPE *__restrict result_data, idx_t count,
61
+ static inline void ExecuteLoop(const INPUT_TYPE *__restrict ldata, RESULT_TYPE *__restrict result_data, idx_t count,
62
62
  const SelectionVector *__restrict sel_vector, ValidityMask &mask,
63
63
  ValidityMask &result_mask, void *dataptr, bool adds_nulls) {
64
64
  #ifdef DEBUG
@@ -95,7 +95,7 @@ private:
95
95
  }
96
96
 
97
97
  template <class INPUT_TYPE, class RESULT_TYPE, class OPWRAPPER, class OP>
98
- static inline void ExecuteFlat(INPUT_TYPE *__restrict ldata, RESULT_TYPE *__restrict result_data, idx_t count,
98
+ static inline void ExecuteFlat(const INPUT_TYPE *__restrict ldata, RESULT_TYPE *__restrict result_data, idx_t count,
99
99
  ValidityMask &mask, ValidityMask &result_mask, void *dataptr, bool adds_nulls) {
100
100
  ASSERT_RESTRICT(ldata, ldata + count, result_data, result_data + count);
101
101
 
@@ -175,7 +175,7 @@ private:
175
175
 
176
176
  result.SetVectorType(VectorType::FLAT_VECTOR);
177
177
  auto result_data = FlatVector::GetData<RESULT_TYPE>(result);
178
- auto ldata = (INPUT_TYPE *)vdata.data;
178
+ auto ldata = UnifiedVectorFormat::GetData<INPUT_TYPE>(vdata);
179
179
 
180
180
  ExecuteLoop<INPUT_TYPE, RESULT_TYPE, OPWRAPPER, OP>(ldata, result_data, count, vdata.sel, vdata.validity,
181
181
  FlatVector::Validity(result), dataptr, adds_nulls);
@@ -24,49 +24,45 @@ struct CorrState {
24
24
  // CORR(y, x) = COVAR_POP(y, x) / (STDDEV_POP(x) * STDDEV_POP(y))
25
25
  struct CorrOperation {
26
26
  template <class STATE>
27
- static void Initialize(STATE *state) {
28
- CovarOperation::Initialize<CovarState>(&state->cov_pop);
29
- STDDevBaseOperation::Initialize<StddevState>(&state->dev_pop_x);
30
- STDDevBaseOperation::Initialize<StddevState>(&state->dev_pop_y);
27
+ static void Initialize(STATE &state) {
28
+ CovarOperation::Initialize<CovarState>(state.cov_pop);
29
+ STDDevBaseOperation::Initialize<StddevState>(state.dev_pop_x);
30
+ STDDevBaseOperation::Initialize<StddevState>(state.dev_pop_y);
31
31
  }
32
32
 
33
33
  template <class A_TYPE, class B_TYPE, class STATE, class OP>
34
- static void Operation(STATE *state, AggregateInputData &aggr_input_data, A_TYPE *x_data, B_TYPE *y_data,
35
- ValidityMask &amask, ValidityMask &bmask, idx_t xidx, idx_t yidx) {
36
- CovarOperation::Operation<A_TYPE, B_TYPE, CovarState, OP>(&state->cov_pop, aggr_input_data, x_data, y_data,
37
- amask, bmask, xidx, yidx);
38
- STDDevBaseOperation::Operation<A_TYPE, StddevState, OP>(&state->dev_pop_x, aggr_input_data, x_data, amask,
39
- xidx);
40
- STDDevBaseOperation::Operation<B_TYPE, StddevState, OP>(&state->dev_pop_y, aggr_input_data, y_data, bmask,
41
- yidx);
34
+ static void Operation(STATE &state, const A_TYPE &x_input, const B_TYPE &y_input, AggregateBinaryInput &idata) {
35
+ CovarOperation::Operation<A_TYPE, B_TYPE, CovarState, OP>(state.cov_pop, x_input, y_input, idata);
36
+ STDDevBaseOperation::Execute<A_TYPE, StddevState>(state.dev_pop_x, x_input);
37
+ STDDevBaseOperation::Execute<B_TYPE, StddevState>(state.dev_pop_y, y_input);
42
38
  }
43
39
 
44
40
  template <class STATE, class OP>
45
- static void Combine(const STATE &source, STATE *target, AggregateInputData &aggr_input_data) {
46
- CovarOperation::Combine<CovarState, OP>(source.cov_pop, &target->cov_pop, aggr_input_data);
47
- STDDevBaseOperation::Combine<StddevState, OP>(source.dev_pop_x, &target->dev_pop_x, aggr_input_data);
48
- STDDevBaseOperation::Combine<StddevState, OP>(source.dev_pop_y, &target->dev_pop_y, aggr_input_data);
41
+ static void Combine(const STATE &source, STATE &target, AggregateInputData &aggr_input_data) {
42
+ CovarOperation::Combine<CovarState, OP>(source.cov_pop, target.cov_pop, aggr_input_data);
43
+ STDDevBaseOperation::Combine<StddevState, OP>(source.dev_pop_x, target.dev_pop_x, aggr_input_data);
44
+ STDDevBaseOperation::Combine<StddevState, OP>(source.dev_pop_y, target.dev_pop_y, aggr_input_data);
49
45
  }
50
46
 
51
47
  template <class T, class STATE>
52
- static void Finalize(Vector &result, AggregateInputData &, STATE *state, T *target, ValidityMask &mask, idx_t idx) {
53
- if (state->cov_pop.count == 0 || state->dev_pop_x.count == 0 || state->dev_pop_y.count == 0) {
54
- mask.SetInvalid(idx);
48
+ static void Finalize(STATE &state, T &target, AggregateFinalizeData &finalize_data) {
49
+ if (state.cov_pop.count == 0 || state.dev_pop_x.count == 0 || state.dev_pop_y.count == 0) {
50
+ finalize_data.ReturnNull();
55
51
  } else {
56
- auto cov = state->cov_pop.co_moment / state->cov_pop.count;
57
- auto std_x = state->dev_pop_x.count > 1 ? sqrt(state->dev_pop_x.dsquared / state->dev_pop_x.count) : 0;
52
+ auto cov = state.cov_pop.co_moment / state.cov_pop.count;
53
+ auto std_x = state.dev_pop_x.count > 1 ? sqrt(state.dev_pop_x.dsquared / state.dev_pop_x.count) : 0;
58
54
  if (!Value::DoubleIsFinite(std_x)) {
59
55
  throw OutOfRangeException("STDDEV_POP for X is out of range!");
60
56
  }
61
- auto std_y = state->dev_pop_y.count > 1 ? sqrt(state->dev_pop_y.dsquared / state->dev_pop_y.count) : 0;
57
+ auto std_y = state.dev_pop_y.count > 1 ? sqrt(state.dev_pop_y.dsquared / state.dev_pop_y.count) : 0;
62
58
  if (!Value::DoubleIsFinite(std_y)) {
63
59
  throw OutOfRangeException("STDDEV_POP for Y is out of range!");
64
60
  }
65
61
  if (std_x * std_y == 0) {
66
- mask.SetInvalid(idx);
62
+ finalize_data.ReturnNull();
67
63
  return;
68
64
  }
69
- target[idx] = cov / (std_x * std_y);
65
+ target = cov / (std_x * std_y);
70
66
  }
71
67
  }
72
68
 
@@ -21,51 +21,48 @@ struct CovarState {
21
21
 
22
22
  struct CovarOperation {
23
23
  template <class STATE>
24
- static void Initialize(STATE *state) {
25
- state->count = 0;
26
- state->meanx = 0;
27
- state->meany = 0;
28
- state->co_moment = 0;
24
+ static void Initialize(STATE &state) {
25
+ state.count = 0;
26
+ state.meanx = 0;
27
+ state.meany = 0;
28
+ state.co_moment = 0;
29
29
  }
30
30
 
31
31
  template <class A_TYPE, class B_TYPE, class STATE, class OP>
32
- static void Operation(STATE *state, AggregateInputData &, A_TYPE *x_data, B_TYPE *y_data, ValidityMask &amask,
33
- ValidityMask &bmask, idx_t xidx, idx_t yidx) {
32
+ static void Operation(STATE &state, const A_TYPE &x, const B_TYPE &y, AggregateBinaryInput &idata) {
34
33
  // update running mean and d^2
35
- const uint64_t n = ++(state->count);
34
+ const uint64_t n = ++(state.count);
36
35
 
37
- const auto x = x_data[xidx];
38
- const double dx = (x - state->meanx);
39
- const double meanx = state->meanx + dx / n;
36
+ const double dx = (x - state.meanx);
37
+ const double meanx = state.meanx + dx / n;
40
38
 
41
- const auto y = y_data[yidx];
42
- const double dy = (y - state->meany);
43
- const double meany = state->meany + dy / n;
39
+ const double dy = (y - state.meany);
40
+ const double meany = state.meany + dy / n;
44
41
 
45
- const double C = state->co_moment + dx * (y - meany);
42
+ const double C = state.co_moment + dx * (y - meany);
46
43
 
47
- state->meanx = meanx;
48
- state->meany = meany;
49
- state->co_moment = C;
44
+ state.meanx = meanx;
45
+ state.meany = meany;
46
+ state.co_moment = C;
50
47
  }
51
48
 
52
49
  template <class STATE, class OP>
53
- static void Combine(const STATE &source, STATE *target, AggregateInputData &) {
54
- if (target->count == 0) {
55
- *target = source;
50
+ static void Combine(const STATE &source, STATE &target, AggregateInputData &) {
51
+ if (target.count == 0) {
52
+ target = source;
56
53
  } else if (source.count > 0) {
57
- const auto count = target->count + source.count;
58
- const auto meanx = (source.count * source.meanx + target->count * target->meanx) / count;
59
- const auto meany = (source.count * source.meany + target->count * target->meany) / count;
54
+ const auto count = target.count + source.count;
55
+ const auto meanx = (source.count * source.meanx + target.count * target.meanx) / count;
56
+ const auto meany = (source.count * source.meany + target.count * target.meany) / count;
60
57
 
61
58
  // Schubert and Gertz SSDBM 2018, equation 21
62
- const auto deltax = target->meanx - source.meanx;
63
- const auto deltay = target->meany - source.meany;
64
- target->co_moment =
65
- source.co_moment + target->co_moment + deltax * deltay * source.count * target->count / count;
66
- target->meanx = meanx;
67
- target->meany = meany;
68
- target->count = count;
59
+ const auto deltax = target.meanx - source.meanx;
60
+ const auto deltay = target.meany - source.meany;
61
+ target.co_moment =
62
+ source.co_moment + target.co_moment + deltax * deltay * source.count * target.count / count;
63
+ target.meanx = meanx;
64
+ target.meany = meany;
65
+ target.count = count;
69
66
  }
70
67
  }
71
68
 
@@ -76,22 +73,22 @@ struct CovarOperation {
76
73
 
77
74
  struct CovarPopOperation : public CovarOperation {
78
75
  template <class T, class STATE>
79
- static void Finalize(Vector &result, AggregateInputData &, STATE *state, T *target, ValidityMask &mask, idx_t idx) {
80
- if (state->count == 0) {
81
- mask.SetInvalid(idx);
76
+ static void Finalize(STATE &state, T &target, AggregateFinalizeData &finalize_data) {
77
+ if (state.count == 0) {
78
+ finalize_data.ReturnNull();
82
79
  } else {
83
- target[idx] = state->co_moment / state->count;
80
+ target = state.co_moment / state.count;
84
81
  }
85
82
  }
86
83
  };
87
84
 
88
85
  struct CovarSampOperation : public CovarOperation {
89
86
  template <class T, class STATE>
90
- static void Finalize(Vector &result, AggregateInputData &, STATE *state, T *target, ValidityMask &mask, idx_t idx) {
91
- if ((state->count) < 2) {
92
- mask.SetInvalid(idx);
87
+ static void Finalize(STATE &state, T &target, AggregateFinalizeData &finalize_data) {
88
+ if (state.count < 2) {
89
+ finalize_data.ReturnNull();
93
90
  } else {
94
- target[idx] = state->co_moment / (state->count - 1);
91
+ target = state.co_moment / (state.count - 1);
95
92
  }
96
93
  }
97
94
  };
@@ -23,46 +23,50 @@ struct StddevState {
23
23
  // method, DOI: 10.2307/1266577
24
24
  struct STDDevBaseOperation {
25
25
  template <class STATE>
26
- static void Initialize(STATE *state) {
27
- state->count = 0;
28
- state->mean = 0;
29
- state->dsquared = 0;
26
+ static void Initialize(STATE &state) {
27
+ state.count = 0;
28
+ state.mean = 0;
29
+ state.dsquared = 0;
30
30
  }
31
31
 
32
- template <class INPUT_TYPE, class STATE, class OP>
33
- static void Operation(STATE *state, AggregateInputData &, INPUT_TYPE *input_data, ValidityMask &mask, idx_t idx) {
32
+ template <class INPUT_TYPE, class STATE>
33
+ static void Execute(STATE &state, const INPUT_TYPE &input) {
34
34
  // update running mean and d^2
35
- state->count++;
36
- const double input = input_data[idx];
37
- const double mean_differential = (input - state->mean) / state->count;
38
- const double new_mean = state->mean + mean_differential;
39
- const double dsquared_increment = (input - new_mean) * (input - state->mean);
40
- const double new_dsquared = state->dsquared + dsquared_increment;
41
-
42
- state->mean = new_mean;
43
- state->dsquared = new_dsquared;
35
+ state.count++;
36
+ const double mean_differential = (input - state.mean) / state.count;
37
+ const double new_mean = state.mean + mean_differential;
38
+ const double dsquared_increment = (input - new_mean) * (input - state.mean);
39
+ const double new_dsquared = state.dsquared + dsquared_increment;
40
+
41
+ state.mean = new_mean;
42
+ state.dsquared = new_dsquared;
43
+
44
+ }
45
+
46
+ template <class INPUT_TYPE, class STATE, class OP>
47
+ static void Operation(STATE &state, const INPUT_TYPE &input, AggregateUnaryInput &) {
48
+ Execute(state, input);
44
49
  }
45
50
 
46
51
  template <class INPUT_TYPE, class STATE, class OP>
47
- static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, INPUT_TYPE *input_data,
48
- ValidityMask &mask, idx_t count) {
52
+ static void ConstantOperation(STATE &state, const INPUT_TYPE &input, AggregateUnaryInput &unary_input, idx_t count) {
49
53
  for (idx_t i = 0; i < count; i++) {
50
- Operation<INPUT_TYPE, STATE, OP>(state, aggr_input_data, input_data, mask, 0);
54
+ Operation<INPUT_TYPE, STATE, OP>(state, input, unary_input);
51
55
  }
52
56
  }
53
57
 
54
58
  template <class STATE, class OP>
55
- static void Combine(const STATE &source, STATE *target, AggregateInputData &) {
56
- if (target->count == 0) {
57
- *target = source;
59
+ static void Combine(const STATE &source, STATE &target, AggregateInputData &) {
60
+ if (target.count == 0) {
61
+ target = source;
58
62
  } else if (source.count > 0) {
59
- const auto count = target->count + source.count;
60
- const auto mean = (source.count * source.mean + target->count * target->mean) / count;
61
- const auto delta = source.mean - target->mean;
62
- target->dsquared =
63
- source.dsquared + target->dsquared + delta * delta * source.count * target->count / count;
64
- target->mean = mean;
65
- target->count = count;
63
+ const auto count = target.count + source.count;
64
+ const auto mean = (source.count * source.mean + target.count * target.mean) / count;
65
+ const auto delta = source.mean - target.mean;
66
+ target.dsquared =
67
+ source.dsquared + target.dsquared + delta * delta * source.count * target.count / count;
68
+ target.mean = mean;
69
+ target.count = count;
66
70
  }
67
71
  }
68
72
 
@@ -73,12 +77,12 @@ struct STDDevBaseOperation {
73
77
 
74
78
  struct VarSampOperation : public STDDevBaseOperation {
75
79
  template <class T, class STATE>
76
- static void Finalize(Vector &result, AggregateInputData &, STATE *state, T *target, ValidityMask &mask, idx_t idx) {
77
- if (state->count <= 1) {
78
- mask.SetInvalid(idx);
80
+ static void Finalize(STATE &state, T &target, AggregateFinalizeData &finalize_data) {
81
+ if (state.count <= 1) {
82
+ finalize_data.ReturnNull();
79
83
  } else {
80
- target[idx] = state->dsquared / (state->count - 1);
81
- if (!Value::DoubleIsFinite(target[idx])) {
84
+ target = state.dsquared / (state.count - 1);
85
+ if (!Value::DoubleIsFinite(target)) {
82
86
  throw OutOfRangeException("VARSAMP is out of range!");
83
87
  }
84
88
  }
@@ -87,12 +91,12 @@ struct VarSampOperation : public STDDevBaseOperation {
87
91
 
88
92
  struct VarPopOperation : public STDDevBaseOperation {
89
93
  template <class T, class STATE>
90
- static void Finalize(Vector &result, AggregateInputData &, STATE *state, T *target, ValidityMask &mask, idx_t idx) {
91
- if (state->count == 0) {
92
- mask.SetInvalid(idx);
94
+ static void Finalize(STATE &state, T &target, AggregateFinalizeData &finalize_data) {
95
+ if (state.count == 0) {
96
+ finalize_data.ReturnNull();
93
97
  } else {
94
- target[idx] = state->count > 1 ? (state->dsquared / state->count) : 0;
95
- if (!Value::DoubleIsFinite(target[idx])) {
98
+ target = state.count > 1 ? (state.dsquared / state.count) : 0;
99
+ if (!Value::DoubleIsFinite(target)) {
96
100
  throw OutOfRangeException("VARPOP is out of range!");
97
101
  }
98
102
  }
@@ -101,12 +105,12 @@ struct VarPopOperation : public STDDevBaseOperation {
101
105
 
102
106
  struct STDDevSampOperation : public STDDevBaseOperation {
103
107
  template <class T, class STATE>
104
- static void Finalize(Vector &result, AggregateInputData &, STATE *state, T *target, ValidityMask &mask, idx_t idx) {
105
- if (state->count <= 1) {
106
- mask.SetInvalid(idx);
108
+ static void Finalize(STATE &state, T &target, AggregateFinalizeData &finalize_data) {
109
+ if (state.count <= 1) {
110
+ finalize_data.ReturnNull();
107
111
  } else {
108
- target[idx] = sqrt(state->dsquared / (state->count - 1));
109
- if (!Value::DoubleIsFinite(target[idx])) {
112
+ target = sqrt(state.dsquared / (state.count - 1));
113
+ if (!Value::DoubleIsFinite(target)) {
110
114
  throw OutOfRangeException("STDDEV_SAMP is out of range!");
111
115
  }
112
116
  }
@@ -115,12 +119,12 @@ struct STDDevSampOperation : public STDDevBaseOperation {
115
119
 
116
120
  struct STDDevPopOperation : public STDDevBaseOperation {
117
121
  template <class T, class STATE>
118
- static void Finalize(Vector &result, AggregateInputData &, STATE *state, T *target, ValidityMask &mask, idx_t idx) {
119
- if (state->count == 0) {
120
- mask.SetInvalid(idx);
122
+ static void Finalize(STATE &state, T &target, AggregateFinalizeData &finalize_data) {
123
+ if (state.count == 0) {
124
+ finalize_data.ReturnNull();
121
125
  } else {
122
- target[idx] = state->count > 1 ? sqrt(state->dsquared / state->count) : 0;
123
- if (!Value::DoubleIsFinite(target[idx])) {
126
+ target = state.count > 1 ? sqrt(state.dsquared / state.count) : 0;
127
+ if (!Value::DoubleIsFinite(target)) {
124
128
  throw OutOfRangeException("STDDEV_POP is out of range!");
125
129
  }
126
130
  }
@@ -129,12 +133,12 @@ struct STDDevPopOperation : public STDDevBaseOperation {
129
133
 
130
134
  struct StandardErrorOfTheMeanOperation : public STDDevBaseOperation {
131
135
  template <class T, class STATE>
132
- static void Finalize(Vector &result, AggregateInputData &, STATE *state, T *target, ValidityMask &mask, idx_t idx) {
133
- if (state->count == 0) {
134
- mask.SetInvalid(idx);
136
+ static void Finalize(STATE &state, T &target, AggregateFinalizeData &finalize_data) {
137
+ if (state.count == 0) {
138
+ finalize_data.ReturnNull();
135
139
  } else {
136
- target[idx] = sqrt(state->dsquared / state->count) / sqrt((state->count));
137
- if (!Value::DoubleIsFinite(target[idx])) {
140
+ target = sqrt(state.dsquared / state.count) / sqrt((state.count));
141
+ if (!Value::DoubleIsFinite(target)) {
138
142
  throw OutOfRangeException("SEM is out of range!");
139
143
  }
140
144
  }