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
@@ -16,26 +16,25 @@ namespace duckdb {
16
16
 
17
17
  struct RegrCountFunction {
18
18
  template <class STATE>
19
- static void Initialize(STATE *state) {
20
- *state = 0;
19
+ static void Initialize(STATE &state) {
20
+ state = 0;
21
21
  }
22
22
 
23
23
  template <class STATE, class OP>
24
- static void Combine(const STATE &source, STATE *target, AggregateInputData &) {
25
- *target += source;
24
+ static void Combine(const STATE &source, STATE &target, AggregateInputData &) {
25
+ target += source;
26
26
  }
27
27
 
28
28
  template <class T, class STATE>
29
- static void Finalize(Vector &result, AggregateInputData &, STATE *state, T *target, ValidityMask &mask, idx_t idx) {
30
- target[idx] = *state;
29
+ static void Finalize(STATE &state, T &target, AggregateFinalizeData &finalize_data) {
30
+ target = state;
31
31
  }
32
32
  static bool IgnoreNull() {
33
33
  return true;
34
34
  }
35
35
  template <class A_TYPE, class B_TYPE, class STATE, class OP>
36
- static void Operation(STATE *state, AggregateInputData &, A_TYPE *x_data, B_TYPE *y_data, ValidityMask &amask,
37
- ValidityMask &bmask, idx_t xidx, idx_t yidx) {
38
- *state += 1;
36
+ static void Operation(STATE &state, const A_TYPE &, const B_TYPE &, AggregateBinaryInput &) {
37
+ state += 1;
39
38
  }
40
39
  };
41
40
 
@@ -19,40 +19,38 @@ struct RegrSlopeState {
19
19
 
20
20
  struct RegrSlopeOperation {
21
21
  template <class STATE>
22
- static void Initialize(STATE *state) {
23
- CovarOperation::Initialize<CovarState>(&state->cov_pop);
24
- STDDevBaseOperation::Initialize<StddevState>(&state->var_pop);
22
+ static void Initialize(STATE &state) {
23
+ CovarOperation::Initialize<CovarState>(state.cov_pop);
24
+ STDDevBaseOperation::Initialize<StddevState>(state.var_pop);
25
25
  }
26
26
 
27
27
  template <class A_TYPE, class B_TYPE, class STATE, class OP>
28
- static void Operation(STATE *state, AggregateInputData &aggr_input_data, A_TYPE *x_data, B_TYPE *y_data,
29
- ValidityMask &amask, ValidityMask &bmask, idx_t xidx, idx_t yidx) {
30
- CovarOperation::Operation<A_TYPE, B_TYPE, CovarState, OP>(&state->cov_pop, aggr_input_data, y_data, x_data,
31
- bmask, amask, yidx, xidx);
32
- STDDevBaseOperation::Operation<A_TYPE, StddevState, OP>(&state->var_pop, aggr_input_data, y_data, bmask, yidx);
28
+ static void Operation(STATE &state, const A_TYPE &x, const B_TYPE &y, AggregateBinaryInput &idata) {
29
+ CovarOperation::Operation<A_TYPE, B_TYPE, CovarState, OP>(state.cov_pop, x, y, idata);
30
+ STDDevBaseOperation::Execute<A_TYPE, StddevState>(state.var_pop, y);
33
31
  }
34
32
 
35
33
  template <class STATE, class OP>
36
- static void Combine(const STATE &source, STATE *target, AggregateInputData &aggr_input_data) {
37
- CovarOperation::Combine<CovarState, OP>(source.cov_pop, &target->cov_pop, aggr_input_data);
38
- STDDevBaseOperation::Combine<StddevState, OP>(source.var_pop, &target->var_pop, aggr_input_data);
34
+ static void Combine(const STATE &source, STATE &target, AggregateInputData &aggr_input_data) {
35
+ CovarOperation::Combine<CovarState, OP>(source.cov_pop, target.cov_pop, aggr_input_data);
36
+ STDDevBaseOperation::Combine<StddevState, OP>(source.var_pop, target.var_pop, aggr_input_data);
39
37
  }
40
38
 
41
39
  template <class T, class STATE>
42
- static void Finalize(Vector &result, AggregateInputData &, STATE *state, T *target, ValidityMask &mask, idx_t idx) {
43
- if (state->cov_pop.count == 0 || state->var_pop.count == 0) {
44
- mask.SetInvalid(idx);
40
+ static void Finalize(STATE &state, T &target, AggregateFinalizeData &finalize_data) {
41
+ if (state.cov_pop.count == 0 || state.var_pop.count == 0) {
42
+ finalize_data.ReturnNull();
45
43
  } else {
46
- auto cov = state->cov_pop.co_moment / state->cov_pop.count;
47
- auto var_pop = state->var_pop.count > 1 ? (state->var_pop.dsquared / state->var_pop.count) : 0;
44
+ auto cov = state.cov_pop.co_moment / state.cov_pop.count;
45
+ auto var_pop = state.var_pop.count > 1 ? (state.var_pop.dsquared / state.var_pop.count) : 0;
48
46
  if (!Value::DoubleIsFinite(var_pop)) {
49
47
  throw OutOfRangeException("VARPOP is out of range!");
50
48
  }
51
49
  if (var_pop == 0) {
52
- mask.SetInvalid(idx);
50
+ finalize_data.ReturnNull();
53
51
  return;
54
52
  }
55
- target[idx] = cov / var_pop;
53
+ target = cov / var_pop;
56
54
  }
57
55
  }
58
56
 
@@ -133,27 +133,26 @@ struct HugeintAdd {
133
133
  template <class STATEOP, class ADDOP>
134
134
  struct BaseSumOperation {
135
135
  template <class STATE>
136
- static void Initialize(STATE *state) {
137
- state->value = 0;
136
+ static void Initialize(STATE &state) {
137
+ state.value = 0;
138
138
  STATEOP::template Initialize<STATE>(state);
139
139
  }
140
140
 
141
141
  template <class STATE, class OP>
142
- static void Combine(const STATE &source, STATE *target, AggregateInputData &aggr_input_data) {
142
+ static void Combine(const STATE &source, STATE &target, AggregateInputData &aggr_input_data) {
143
143
  STATEOP::template Combine<STATE>(source, target, aggr_input_data);
144
144
  }
145
145
 
146
146
  template <class INPUT_TYPE, class STATE, class OP>
147
- static void Operation(STATE *state, AggregateInputData &, INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
147
+ static void Operation(STATE &state, const INPUT_TYPE &input, AggregateUnaryInput &) {
148
148
  STATEOP::template AddValues<STATE>(state, 1);
149
- ADDOP::template AddNumber<STATE, INPUT_TYPE>(*state, input[idx]);
149
+ ADDOP::template AddNumber<STATE, INPUT_TYPE>(state, input);
150
150
  }
151
151
 
152
152
  template <class INPUT_TYPE, class STATE, class OP>
153
- static void ConstantOperation(STATE *state, AggregateInputData &, INPUT_TYPE *input, ValidityMask &mask,
154
- idx_t count) {
153
+ static void ConstantOperation(STATE &state, const INPUT_TYPE &input, AggregateUnaryInput &, idx_t count) {
155
154
  STATEOP::template AddValues<STATE>(state, count);
156
- ADDOP::template AddConstant<STATE, INPUT_TYPE>(*state, *input, count);
155
+ ADDOP::template AddConstant<STATE, INPUT_TYPE>(state, input, count);
157
156
  }
158
157
 
159
158
  static bool IgnoreNull() {
@@ -121,6 +121,15 @@ struct CurrentDatabaseFun {
121
121
  static ScalarFunction GetFunction();
122
122
  };
123
123
 
124
+ struct InSearchPathFun {
125
+ static constexpr const char *Name = "in_search_path";
126
+ static constexpr const char *Parameters = "database_name,schema_name";
127
+ static constexpr const char *Description = "Returns whether or not the database/schema are in the search path.";
128
+ static constexpr const char *Example = "in_search_path('memory', 'main')";
129
+
130
+ static ScalarFunction GetFunction();
131
+ };
132
+
124
133
  struct CurrentTransactionIdFun {
125
134
  static constexpr const char *Name = "txid_current";
126
135
  static constexpr const char *Parameters = "";
@@ -43,10 +43,7 @@ struct MapEntriesFun {
43
43
  struct MapExtractFun {
44
44
  static constexpr const char *Name = "map_extract";
45
45
  static constexpr const char *Parameters = "map,key";
46
- static constexpr const char *Description =
47
- "Return a list containing the value for a given key or an empty list if the key is not contained in the map. "
48
- "The type of the key provided in the second parameter must match the type of the map’s keys else an error is "
49
- "returned.";
46
+ static constexpr const char *Description = "Return a list containing the value for a given key or an empty list if the key is not contained in the map. The type of the key provided in the second parameter must match the type of the map’s keys else an error is returned.";
50
47
  static constexpr const char *Example = "map_extract(map(['key'], ['val']), 'key')";
51
48
 
52
49
  static ScalarFunction GetFunction();
@@ -70,8 +67,7 @@ struct MapFromEntriesFun {
70
67
  struct MapConcatFun {
71
68
  static constexpr const char *Name = "map_concat";
72
69
  static constexpr const char *Parameters = "any,...";
73
- static constexpr const char *Description = "Returns a map created from merging the input maps, on key collision "
74
- "the value is taken from the last map with that key";
70
+ static constexpr const char *Description = "Returns a map created from merging the input maps, on key collision the value is taken from the last map with that key";
75
71
  static constexpr const char *Example = "map_concat(map([1,2], ['a', 'b']), map([2,3], ['c', 'd']));";
76
72
 
77
73
  static ScalarFunction GetFunction();
@@ -31,8 +31,7 @@ struct StartsWithFun {
31
31
  struct ASCIIFun {
32
32
  static constexpr const char *Name = "ascii";
33
33
  static constexpr const char *Parameters = "string";
34
- static constexpr const char *Description =
35
- "Returns an integer that represents the Unicode code point of the first character of the string.";
34
+ static constexpr const char *Description = "Returns an integer that represents the Unicode code point of the first character of the string.";
36
35
  static constexpr const char *Example = "ascii('Ω')";
37
36
 
38
37
  static ScalarFunction GetFunction();
@@ -41,8 +40,7 @@ struct ASCIIFun {
41
40
  struct BarFun {
42
41
  static constexpr const char *Name = "bar";
43
42
  static constexpr const char *Parameters = "x,min,max,width";
44
- static constexpr const char *Description = "Draw a band whose width is proportional to (x - min) and equal to "
45
- "width characters when x = max. width defaults to 80.";
43
+ static constexpr const char *Description = "Draw a band whose width is proportional to (x - min) and equal to width characters when x = max. width defaults to 80.";
46
44
  static constexpr const char *Example = "bar(5, 0, 20, 10)";
47
45
 
48
46
  static ScalarFunctionSet GetFunctions();
@@ -66,8 +64,7 @@ struct ToBinaryFun {
66
64
  struct ChrFun {
67
65
  static constexpr const char *Name = "chr";
68
66
  static constexpr const char *Parameters = "code_point";
69
- static constexpr const char *Description =
70
- "returns a character which is corresponding the ASCII code value or Unicode code point";
67
+ static constexpr const char *Description = "returns a character which is corresponding the ASCII code value or Unicode code point";
71
68
  static constexpr const char *Example = "chr(65)";
72
69
 
73
70
  static ScalarFunction GetFunction();
@@ -76,10 +73,7 @@ struct ChrFun {
76
73
  struct DamerauLevenshteinFun {
77
74
  static constexpr const char *Name = "damerau_levenshtein";
78
75
  static constexpr const char *Parameters = "str1,str2";
79
- static constexpr const char *Description =
80
- "Extension of Levenshtein distance to also include transposition of adjacent characters as an allowed edit "
81
- "operation. In other words, the minimum number of edit operations (insertions, deletions, substitutions or "
82
- "transpositions) required to change one string to another. Different case is considered different.";
76
+ static constexpr const char *Description = "Extension of Levenshtein distance to also include transposition of adjacent characters as an allowed edit operation. In other words, the minimum number of edit operations (insertions, deletions, substitutions or transpositions) required to change one string to another. Different case is considered different.";
83
77
  static constexpr const char *Example = "damerau_levenshtein('hello', 'world')";
84
78
 
85
79
  static ScalarFunction GetFunction();
@@ -112,8 +106,7 @@ struct FormatreadabledecimalsizeFun {
112
106
  struct HammingFun {
113
107
  static constexpr const char *Name = "hamming";
114
108
  static constexpr const char *Parameters = "str1,str2";
115
- static constexpr const char *Description = "The number of positions with different characters for 2 strings of "
116
- "equal length. Different case is considered different.";
109
+ static constexpr const char *Description = "The number of positions with different characters for 2 strings of equal length. Different case is considered different.";
117
110
  static constexpr const char *Example = "hamming('duck','luck')";
118
111
 
119
112
  static ScalarFunction GetFunction();
@@ -143,8 +136,7 @@ struct ToHexFun {
143
136
  struct InstrFun {
144
137
  static constexpr const char *Name = "instr";
145
138
  static constexpr const char *Parameters = "haystack,needle";
146
- static constexpr const char *Description =
147
- "Return location of first occurrence of needle in haystack, counting from 1. Returns 0 if no match found.";
139
+ static constexpr const char *Description = "Return location of first occurrence of needle in haystack, counting from 1. Returns 0 if no match found.";
148
140
  static constexpr const char *Example = "instr('test test','es')";
149
141
 
150
142
  static ScalarFunction GetFunction();
@@ -165,8 +157,7 @@ struct PositionFun {
165
157
  struct JaccardFun {
166
158
  static constexpr const char *Name = "jaccard";
167
159
  static constexpr const char *Parameters = "str1,str2";
168
- static constexpr const char *Description = "The Jaccard similarity between two strings. Different case is "
169
- "considered different. Returns a number between 0 and 1.";
160
+ static constexpr const char *Description = "The Jaccard similarity between two strings. Different case is considered different. Returns a number between 0 and 1.";
170
161
  static constexpr const char *Example = "jaccard('duck','luck')";
171
162
 
172
163
  static ScalarFunction GetFunction();
@@ -175,8 +166,7 @@ struct JaccardFun {
175
166
  struct JaroSimilarityFun {
176
167
  static constexpr const char *Name = "jaro_similarity";
177
168
  static constexpr const char *Parameters = "str1,str2";
178
- static constexpr const char *Description = "The Jaro similarity between two strings. Different case is considered "
179
- "different. Returns a number between 0 and 1.";
169
+ static constexpr const char *Description = "The Jaro similarity between two strings. Different case is considered different. Returns a number between 0 and 1.";
180
170
  static constexpr const char *Example = "jaro_similarity('duck','duckdb')";
181
171
 
182
172
  static ScalarFunction GetFunction();
@@ -185,8 +175,7 @@ struct JaroSimilarityFun {
185
175
  struct JaroWinklerSimilarityFun {
186
176
  static constexpr const char *Name = "jaro_winkler_similarity";
187
177
  static constexpr const char *Parameters = "str1,str2";
188
- static constexpr const char *Description = "The Jaro-Winkler similarity between two strings. Different case is "
189
- "considered different. Returns a number between 0 and 1.";
178
+ static constexpr const char *Description = "The Jaro-Winkler similarity between two strings. Different case is considered different. Returns a number between 0 and 1.";
190
179
  static constexpr const char *Example = "jaro_winkler_similarity('duck','duckdb')";
191
180
 
192
181
  static ScalarFunction GetFunction();
@@ -213,9 +202,7 @@ struct LeftGraphemeFun {
213
202
  struct LevenshteinFun {
214
203
  static constexpr const char *Name = "levenshtein";
215
204
  static constexpr const char *Parameters = "str1,str2";
216
- static constexpr const char *Description =
217
- "The minimum number of single-character edits (insertions, deletions or substitutions) required to change one "
218
- "string to the other. Different case is considered different.";
205
+ static constexpr const char *Description = "The minimum number of single-character edits (insertions, deletions or substitutions) required to change one string to the other. Different case is considered different.";
219
206
  static constexpr const char *Example = "levenshtein('duck','db')";
220
207
 
221
208
  static ScalarFunction GetFunction();
@@ -230,8 +217,7 @@ struct Editdist3Fun {
230
217
  struct LpadFun {
231
218
  static constexpr const char *Name = "lpad";
232
219
  static constexpr const char *Parameters = "string,count,character";
233
- static constexpr const char *Description =
234
- "Pads the string with the character from the left until it has count characters";
220
+ static constexpr const char *Description = "Pads the string with the character from the left until it has count characters";
235
221
  static constexpr const char *Example = "lpad('hello', 10, '>')";
236
222
 
237
223
  static ScalarFunction GetFunction();
@@ -240,8 +226,7 @@ struct LpadFun {
240
226
  struct LtrimFun {
241
227
  static constexpr const char *Name = "ltrim";
242
228
  static constexpr const char *Parameters = "string,characters";
243
- static constexpr const char *Description =
244
- "Removes any occurrences of any of the characters from the left side of the string";
229
+ static constexpr const char *Description = "Removes any occurrences of any of the characters from the left side of the string";
245
230
  static constexpr const char *Example = "ltrim('>>>>test<<', '><')";
246
231
 
247
232
  static ScalarFunctionSet GetFunctions();
@@ -340,8 +325,7 @@ struct RightGraphemeFun {
340
325
  struct RpadFun {
341
326
  static constexpr const char *Name = "rpad";
342
327
  static constexpr const char *Parameters = "string,count,character";
343
- static constexpr const char *Description =
344
- "Pads the string with the character from the right until it has count characters";
328
+ static constexpr const char *Description = "Pads the string with the character from the right until it has count characters";
345
329
  static constexpr const char *Example = "rpad('hello', 10, '<')";
346
330
 
347
331
  static ScalarFunction GetFunction();
@@ -350,8 +334,7 @@ struct RpadFun {
350
334
  struct RtrimFun {
351
335
  static constexpr const char *Name = "rtrim";
352
336
  static constexpr const char *Parameters = "string,characters";
353
- static constexpr const char *Description =
354
- "Removes any occurrences of any of the characters from the right side of the string";
337
+ static constexpr const char *Description = "Removes any occurrences of any of the characters from the right side of the string";
355
338
  static constexpr const char *Example = "rtrim('>>>>test<<', '><')";
356
339
 
357
340
  static ScalarFunctionSet GetFunctions();
@@ -408,9 +391,7 @@ struct RegexpSplitToArrayFun {
408
391
  struct TranslateFun {
409
392
  static constexpr const char *Name = "translate";
410
393
  static constexpr const char *Parameters = "string,from,to";
411
- static constexpr const char *Description =
412
- "Replaces each character in string that matches a character in the from set with the corresponding character "
413
- "in the to set. If from is longer than to, occurrences of the extra characters in from are deleted.";
394
+ static constexpr const char *Description = "Replaces each character in string that matches a character in the from set with the corresponding character in the to set. If from is longer than to, occurrences of the extra characters in from are deleted.";
414
395
  static constexpr const char *Example = "translate('12345', '143', 'ax')";
415
396
 
416
397
  static ScalarFunction GetFunction();
@@ -419,8 +400,7 @@ struct TranslateFun {
419
400
  struct TrimFun {
420
401
  static constexpr const char *Name = "trim";
421
402
  static constexpr const char *Parameters = "string,characters";
422
- static constexpr const char *Description =
423
- "Removes any occurrences of any of the characters from either side of the string";
403
+ static constexpr const char *Description = "Removes any occurrences of any of the characters from either side of the string";
424
404
  static constexpr const char *Example = "trim('>>>>test<<', '><')";
425
405
 
426
406
  static ScalarFunctionSet GetFunctions();
@@ -39,6 +39,18 @@ public:
39
39
  DUCKDB_API ClientContext &GetContext();
40
40
 
41
41
  void Verify(ExpressionExecutorState &root);
42
+
43
+ public:
44
+ template <class TARGET>
45
+ TARGET &Cast() {
46
+ D_ASSERT(dynamic_cast<TARGET *>(this));
47
+ return reinterpret_cast<TARGET &>(*this);
48
+ }
49
+ template <class TARGET>
50
+ const TARGET &Cast() const {
51
+ D_ASSERT(dynamic_cast<const TARGET *>(this));
52
+ return reinterpret_cast<const TARGET &>(*this);
53
+ }
42
54
  };
43
55
 
44
56
  struct ExecuteFunctionState : public ExpressionState {
@@ -48,8 +60,8 @@ struct ExecuteFunctionState : public ExpressionState {
48
60
  unique_ptr<FunctionLocalState> local_state;
49
61
 
50
62
  public:
51
- static FunctionLocalState *GetFunctionState(ExpressionState &state) {
52
- return ((ExecuteFunctionState &)state).local_state.get();
63
+ static optional_ptr<FunctionLocalState> GetFunctionState(ExpressionState &state) {
64
+ return state.Cast<ExecuteFunctionState>().local_state.get();
53
65
  }
54
66
  };
55
67
 
@@ -110,13 +110,13 @@ private:
110
110
  //! Find the node with a matching key, or return nullptr if not found
111
111
  Node Lookup(Node node, const ARTKey &key, idx_t depth);
112
112
  //! Returns all row IDs belonging to a key greater (or equal) than the search key
113
- bool SearchGreater(ARTIndexScanState *state, ARTKey &key, bool inclusive, idx_t max_count,
113
+ bool SearchGreater(ARTIndexScanState &state, ARTKey &key, bool inclusive, idx_t max_count,
114
114
  vector<row_t> &result_ids);
115
115
  //! Returns all row IDs belonging to a key less (or equal) than the upper_bound
116
- bool SearchLess(ARTIndexScanState *state, ARTKey &upper_bound, bool inclusive, idx_t max_count,
116
+ bool SearchLess(ARTIndexScanState &state, ARTKey &upper_bound, bool inclusive, idx_t max_count,
117
117
  vector<row_t> &result_ids);
118
118
  //! Returns all row IDs belonging to a key within the range of lower_bound and upper_bound
119
- bool SearchCloseRange(ARTIndexScanState *state, ARTKey &lower_bound, ARTKey &upper_bound, bool left_inclusive,
119
+ bool SearchCloseRange(ARTIndexScanState &state, ARTKey &lower_bound, ARTKey &upper_bound, bool left_inclusive,
120
120
  bool right_inclusive, idx_t max_count, vector<row_t> &result_ids);
121
121
 
122
122
  //! Initializes a merge operation by returning a set containing the buffer count of each fixed-size allocator
@@ -16,6 +16,9 @@ class PreparedStatementData;
16
16
 
17
17
  //! PhysicalResultCollector is an abstract class that is used to generate the final result of a query
18
18
  class PhysicalResultCollector : public PhysicalOperator {
19
+ public:
20
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::RESULT_COLLECTOR;
21
+
19
22
  public:
20
23
  explicit PhysicalResultCollector(PreparedStatementData &data);
21
24
 
@@ -50,7 +50,7 @@ public:
50
50
  BufferHandle AllocateBuffer(idx_t buffer_size);
51
51
 
52
52
  char *Ptr() {
53
- return (char *)handle.Ptr();
53
+ return char_ptr_cast(handle.Ptr());
54
54
  }
55
55
 
56
56
  private:
@@ -30,6 +30,9 @@ class MetaPipeline;
30
30
  //! PhysicalOperator is the base class of the physical operators present in the
31
31
  //! execution plan
32
32
  class PhysicalOperator {
33
+ public:
34
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::INVALID;
35
+
33
36
  public:
34
37
  PhysicalOperator(PhysicalOperatorType type, vector<LogicalType> types, idx_t estimated_cardinality)
35
38
  : type(type), types(std::move(types)), estimated_cardinality(estimated_cardinality) {
@@ -184,7 +187,7 @@ public:
184
187
  if (TARGET::TYPE != PhysicalOperatorType::INVALID && type != TARGET::TYPE) {
185
188
  throw InternalException("Failed to cast physical operator to type - physical operator type mismatch");
186
189
  }
187
- return (TARGET &)*this;
190
+ return reinterpret_cast<TARGET &>(*this);
188
191
  }
189
192
 
190
193
  template <class TARGET>
@@ -192,7 +195,7 @@ public:
192
195
  if (TARGET::TYPE != PhysicalOperatorType::INVALID && type != TARGET::TYPE) {
193
196
  throw InternalException("Failed to cast physical operator to type - physical operator type mismatch");
194
197
  }
195
- return (const TARGET &)*this;
198
+ return reinterpret_cast<const TARGET &>(*this);
196
199
  }
197
200
  };
198
201
 
@@ -48,12 +48,12 @@ public:
48
48
  template <class TARGET>
49
49
  TARGET &Cast() {
50
50
  D_ASSERT(dynamic_cast<TARGET *>(this));
51
- return (TARGET &)*this;
51
+ return reinterpret_cast<TARGET &>(*this);
52
52
  }
53
53
  template <class TARGET>
54
54
  const TARGET &Cast() const {
55
55
  D_ASSERT(dynamic_cast<const TARGET *>(this));
56
- return (const TARGET &)*this;
56
+ return reinterpret_cast<const TARGET &>(*this);
57
57
  }
58
58
  };
59
59
 
@@ -65,12 +65,12 @@ public:
65
65
  template <class TARGET>
66
66
  TARGET &Cast() {
67
67
  D_ASSERT(dynamic_cast<TARGET *>(this));
68
- return (TARGET &)*this;
68
+ return reinterpret_cast<TARGET &>(*this);
69
69
  }
70
70
  template <class TARGET>
71
71
  const TARGET &Cast() const {
72
72
  D_ASSERT(dynamic_cast<const TARGET *>(this));
73
- return (const TARGET &)*this;
73
+ return reinterpret_cast<const TARGET &>(*this);
74
74
  }
75
75
  };
76
76
 
@@ -86,12 +86,12 @@ public:
86
86
  template <class TARGET>
87
87
  TARGET &Cast() {
88
88
  D_ASSERT(dynamic_cast<TARGET *>(this));
89
- return (TARGET &)*this;
89
+ return reinterpret_cast<TARGET &>(*this);
90
90
  }
91
91
  template <class TARGET>
92
92
  const TARGET &Cast() const {
93
93
  D_ASSERT(dynamic_cast<const TARGET *>(this));
94
- return (const TARGET &)*this;
94
+ return reinterpret_cast<const TARGET &>(*this);
95
95
  }
96
96
  };
97
97
 
@@ -106,12 +106,12 @@ public:
106
106
  template <class TARGET>
107
107
  TARGET &Cast() {
108
108
  D_ASSERT(dynamic_cast<TARGET *>(this));
109
- return (TARGET &)*this;
109
+ return reinterpret_cast<TARGET &>(*this);
110
110
  }
111
111
  template <class TARGET>
112
112
  const TARGET &Cast() const {
113
113
  D_ASSERT(dynamic_cast<const TARGET *>(this));
114
- return (const TARGET &)*this;
114
+ return reinterpret_cast<const TARGET &>(*this);
115
115
  }
116
116
  };
117
117
 
@@ -127,12 +127,12 @@ public:
127
127
  template <class TARGET>
128
128
  TARGET &Cast() {
129
129
  D_ASSERT(dynamic_cast<TARGET *>(this));
130
- return (TARGET &)*this;
130
+ return reinterpret_cast<TARGET &>(*this);
131
131
  }
132
132
  template <class TARGET>
133
133
  const TARGET &Cast() const {
134
134
  D_ASSERT(dynamic_cast<const TARGET *>(this));
135
- return (const TARGET &)*this;
135
+ return reinterpret_cast<const TARGET &>(*this);
136
136
  }
137
137
  };
138
138
 
@@ -144,12 +144,12 @@ public:
144
144
  template <class TARGET>
145
145
  TARGET &Cast() {
146
146
  D_ASSERT(dynamic_cast<TARGET *>(this));
147
- return (TARGET &)*this;
147
+ return reinterpret_cast<TARGET &>(*this);
148
148
  }
149
149
  template <class TARGET>
150
150
  const TARGET &Cast() const {
151
151
  D_ASSERT(dynamic_cast<const TARGET *>(this));
152
- return (const TARGET &)*this;
152
+ return reinterpret_cast<const TARGET &>(*this);
153
153
  }
154
154
  };
155
155
 
@@ -8,40 +8,13 @@
8
8
 
9
9
  #pragma once
10
10
 
11
- #include "duckdb/function/function.hpp"
12
- #include "duckdb/storage/statistics/base_statistics.hpp"
13
- #include "duckdb/storage/statistics/node_statistics.hpp"
11
+ #include "duckdb/function/aggregate_state.hpp"
14
12
  #include "duckdb/planner/bound_result_modifier.hpp"
15
13
  #include "duckdb/planner/expression.hpp"
16
14
  #include "duckdb/common/vector_operations/aggregate_executor.hpp"
17
15
 
18
16
  namespace duckdb {
19
17
 
20
- enum class AggregateType : uint8_t { NON_DISTINCT = 1, DISTINCT = 2 };
21
- //! Whether or not the input order influences the result of the aggregate
22
- enum class AggregateOrderDependent : uint8_t { ORDER_DEPENDENT = 1, NOT_ORDER_DEPENDENT = 2 };
23
-
24
- class BoundAggregateExpression;
25
-
26
- struct AggregateInputData {
27
- AggregateInputData(FunctionData *bind_data_p, Allocator &allocator_p)
28
- : bind_data(bind_data_p), allocator(allocator_p) {
29
- }
30
- FunctionData *bind_data;
31
- Allocator &allocator;
32
- };
33
-
34
- struct AggregateStatisticsInput {
35
- AggregateStatisticsInput(FunctionData *bind_data_p, vector<BaseStatistics> &child_stats_p,
36
- NodeStatistics *node_stats_p)
37
- : bind_data(bind_data_p), child_stats(child_stats_p), node_stats(node_stats_p) {
38
- }
39
-
40
- FunctionData *bind_data;
41
- vector<BaseStatistics> &child_stats;
42
- NodeStatistics *node_stats;
43
- };
44
-
45
18
  //! The type used for sizing hashed aggregate function states
46
19
  typedef idx_t (*aggregate_size_t)();
47
20
  //! The type used for initializing hashed aggregate function states
@@ -215,7 +188,7 @@ public:
215
188
 
216
189
  template <class STATE, class OP>
217
190
  static void StateInitialize(data_ptr_t state) {
218
- OP::Initialize((STATE *)state);
191
+ OP::Initialize(*reinterpret_cast<STATE *>(state));
219
192
  }
220
193
 
221
194
  template <class STATE, class OP>
@@ -281,6 +254,12 @@ public:
281
254
  AggregateExecutor::Finalize<STATE, RESULT_TYPE, OP>(states, aggr_input_data, result, count, offset);
282
255
  }
283
256
 
257
+ template <class STATE, class OP>
258
+ static void StateVoidFinalize(Vector &states, AggregateInputData &aggr_input_data, Vector &result, idx_t count,
259
+ idx_t offset) {
260
+ AggregateExecutor::VoidFinalize<STATE, OP>(states, aggr_input_data, result, count, offset);
261
+ }
262
+
284
263
  template <class STATE, class OP>
285
264
  static void StateDestroy(Vector &states, AggregateInputData &aggr_input_data, idx_t count) {
286
265
  AggregateExecutor::Destroy<STATE, OP>(states, aggr_input_data, count);