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