duckdb 0.8.1-dev51.0 → 0.8.1-dev96.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 (538) hide show
  1. package/package.json +1 -1
  2. package/src/duckdb/extension/icu/icu-datepart.cpp +1 -1
  3. package/src/duckdb/extension/json/include/json_common.hpp +1 -1
  4. package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
  5. package/src/duckdb/extension/json/json_functions/json_create.cpp +6 -6
  6. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +1 -1
  7. package/src/duckdb/extension/json/json_functions/json_transform.cpp +1 -1
  8. package/src/duckdb/extension/parquet/column_reader.cpp +52 -51
  9. package/src/duckdb/extension/parquet/column_writer.cpp +57 -45
  10. package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +1 -1
  11. package/src/duckdb/extension/parquet/include/column_reader.hpp +5 -4
  12. package/src/duckdb/extension/parquet/include/column_writer.hpp +24 -0
  13. package/src/duckdb/extension/parquet/include/list_column_reader.hpp +1 -1
  14. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
  15. package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
  16. package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
  17. package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
  18. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
  19. package/src/duckdb/extension/parquet/parquet-extension.cpp +1 -1
  20. package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
  21. package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
  22. package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
  23. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
  24. package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
  25. package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
  26. package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
  27. package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
  28. package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
  29. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +7 -7
  30. package/src/duckdb/src/common/checksum.cpp +1 -1
  31. package/src/duckdb/src/common/compressed_file_system.cpp +6 -6
  32. package/src/duckdb/src/common/crypto/md5.cpp +9 -9
  33. package/src/duckdb/src/common/field_writer.cpp +1 -1
  34. package/src/duckdb/src/common/file_system.cpp +15 -2
  35. package/src/duckdb/src/common/fsst.cpp +11 -6
  36. package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
  37. package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
  38. package/src/duckdb/src/common/local_file_system.cpp +11 -11
  39. package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
  40. package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
  41. package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
  42. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
  43. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
  44. package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
  45. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
  46. package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
  47. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
  48. package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
  49. package/src/duckdb/src/common/serializer.cpp +1 -1
  50. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  51. package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
  52. package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
  53. package/src/duckdb/src/common/types/bit.cpp +5 -5
  54. package/src/duckdb/src/common/types/blob.cpp +8 -8
  55. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
  56. package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
  57. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  58. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  59. package/src/duckdb/src/common/types/hash.cpp +2 -2
  60. package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
  61. package/src/duckdb/src/common/types/list_segment.cpp +77 -49
  62. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
  63. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
  64. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +17 -17
  65. package/src/duckdb/src/common/types/string_heap.cpp +1 -1
  66. package/src/duckdb/src/common/types/value.cpp +2 -2
  67. package/src/duckdb/src/common/types/vector.cpp +98 -101
  68. package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
  69. package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
  70. package/src/duckdb/src/common/types.cpp +44 -33
  71. package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
  72. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
  73. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
  74. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
  75. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +3 -3
  76. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +3 -3
  77. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +4 -4
  78. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +12 -11
  79. package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +3 -3
  80. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +3 -3
  81. package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +2 -2
  82. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +7 -7
  83. package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +2 -2
  84. package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +2 -2
  85. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +2 -2
  86. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +14 -14
  87. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +2 -2
  88. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +21 -21
  89. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +18 -19
  90. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +3 -4
  91. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +4 -4
  92. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +4 -4
  93. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +1 -1
  94. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +1 -1
  95. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +2 -2
  96. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +1 -1
  97. package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
  98. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +45 -45
  99. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
  100. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
  101. package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
  102. package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
  103. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +3 -3
  104. package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
  105. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +3 -3
  106. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +6 -7
  107. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
  108. package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
  109. package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
  110. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +1 -1
  111. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
  112. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +3 -3
  113. package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
  114. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
  115. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
  116. package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
  117. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  118. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
  119. package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
  120. package/src/duckdb/src/execution/expression_executor.cpp +28 -28
  121. package/src/duckdb/src/execution/index/art/art.cpp +30 -32
  122. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +3 -4
  123. package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
  124. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
  125. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
  126. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  127. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
  128. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
  129. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
  130. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
  131. package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
  132. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
  133. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  134. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
  135. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
  136. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
  137. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
  138. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
  139. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
  140. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
  141. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
  142. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  143. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
  144. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
  145. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -3
  146. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
  147. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
  148. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
  149. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  150. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
  151. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  152. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
  153. package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
  154. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
  155. package/src/duckdb/src/execution/reservoir_sample.cpp +2 -2
  156. package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
  157. package/src/duckdb/src/function/aggregate/distributive/count.cpp +2 -2
  158. package/src/duckdb/src/function/aggregate/distributive/first.cpp +5 -5
  159. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +8 -8
  160. package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
  161. package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
  162. package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
  163. package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
  164. package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
  165. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
  166. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
  167. package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
  168. package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -3
  169. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -3
  170. package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
  171. package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
  172. package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
  173. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
  174. package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
  175. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
  176. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
  177. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +25 -23
  178. package/src/duckdb/src/function/scalar_function.cpp +3 -3
  179. package/src/duckdb/src/function/table/arrow.cpp +4 -4
  180. package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
  181. package/src/duckdb/src/function/table/checkpoint.cpp +1 -1
  182. package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
  183. package/src/duckdb/src/function/table/glob.cpp +1 -1
  184. package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
  185. package/src/duckdb/src/function/table/range.cpp +4 -4
  186. package/src/duckdb/src/function/table/read_csv.cpp +4 -4
  187. package/src/duckdb/src/function/table/repeat.cpp +2 -2
  188. package/src/duckdb/src/function/table/repeat_row.cpp +2 -2
  189. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
  190. package/src/duckdb/src/function/table/system/test_vector_types.cpp +1 -1
  191. package/src/duckdb/src/function/table/table_scan.cpp +2 -2
  192. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  193. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  194. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -2
  195. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
  196. package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
  197. package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
  198. package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
  199. package/src/duckdb/src/include/duckdb/common/exception.hpp +2 -2
  200. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
  201. package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
  202. package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
  203. package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
  204. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
  205. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
  206. package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
  207. package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
  208. package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
  209. package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
  210. package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
  211. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
  212. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
  213. package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
  214. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
  215. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
  216. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +20 -19
  217. package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
  218. package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
  219. package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
  220. package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
  221. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +1 -1
  222. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +1 -1
  223. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +1 -1
  224. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +1 -1
  225. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +1 -1
  226. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +2 -2
  227. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
  228. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +3 -3
  229. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
  230. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
  231. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
  232. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
  233. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
  234. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
  235. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
  236. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
  237. package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
  238. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
  239. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
  240. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
  241. package/src/duckdb/src/include/duckdb/function/table_function.hpp +6 -6
  242. package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
  243. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  244. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
  245. package/src/duckdb/src/include/duckdb/main/query_result.hpp +17 -0
  246. package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
  247. package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
  248. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
  249. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
  250. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
  251. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
  252. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
  253. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  254. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
  255. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
  256. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
  257. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
  258. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  259. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
  260. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
  261. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
  262. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
  263. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
  264. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
  265. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  266. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  267. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
  268. package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
  269. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
  270. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
  271. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  272. package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
  273. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
  274. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
  275. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
  276. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +1 -1
  277. package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
  278. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  279. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +1 -1
  280. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
  281. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
  282. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
  283. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +107 -91
  284. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +1 -1
  285. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
  286. package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
  287. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +34 -1
  288. package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
  289. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
  290. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
  291. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
  292. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
  293. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
  294. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
  295. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
  296. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
  297. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
  298. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
  299. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
  300. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
  301. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
  302. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
  303. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
  304. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
  305. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
  306. package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
  307. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
  308. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
  309. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
  310. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +2 -2
  311. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
  312. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
  313. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
  314. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  315. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
  316. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
  317. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
  318. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
  319. package/src/duckdb/src/include/duckdb/storage/index.hpp +2 -2
  320. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
  321. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
  322. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
  323. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
  324. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
  325. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
  326. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
  327. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
  328. package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
  329. package/src/duckdb/src/main/capi/arrow-c.cpp +10 -10
  330. package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
  331. package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
  332. package/src/duckdb/src/main/capi/config-c.cpp +1 -1
  333. package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
  334. package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
  335. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
  336. package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
  337. package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
  338. package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
  339. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
  340. package/src/duckdb/src/main/capi/result-c.cpp +23 -23
  341. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  342. package/src/duckdb/src/main/client_context.cpp +3 -3
  343. package/src/duckdb/src/main/database_manager.cpp +1 -1
  344. package/src/duckdb/src/main/error_manager.cpp +1 -1
  345. package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
  346. package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
  347. package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
  348. package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
  349. package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
  350. package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
  351. package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
  352. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  353. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  354. package/src/duckdb/src/main/relation.cpp +1 -1
  355. package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
  356. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  357. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
  358. package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
  359. package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
  360. package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
  361. package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
  362. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
  363. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
  364. package/src/duckdb/src/parallel/executor.cpp +1 -1
  365. package/src/duckdb/src/parser/base_expression.cpp +2 -5
  366. package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
  367. package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
  368. package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
  369. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
  370. package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
  371. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
  372. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
  373. package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
  374. package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
  375. package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
  376. package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
  377. package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
  378. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
  379. package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
  380. package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
  381. package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
  382. package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
  383. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
  384. package/src/duckdb/src/parser/parser.cpp +3 -3
  385. package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
  386. package/src/duckdb/src/parser/query_node.cpp +7 -6
  387. package/src/duckdb/src/parser/result_modifier.cpp +25 -18
  388. package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
  389. package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
  390. package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
  391. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
  392. package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
  393. package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
  394. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
  395. package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
  396. package/src/duckdb/src/parser/tableref.cpp +12 -3
  397. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
  398. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
  399. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
  400. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
  401. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
  402. package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
  403. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
  404. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
  405. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
  406. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +69 -75
  407. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
  408. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
  409. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
  410. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
  411. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +28 -29
  412. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
  413. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
  414. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
  415. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
  416. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
  417. package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
  418. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
  419. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
  420. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
  421. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
  422. package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
  423. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
  424. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
  425. package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +3 -4
  426. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
  427. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
  428. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
  429. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
  430. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
  431. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
  432. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
  433. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
  434. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
  435. package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
  436. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -22
  437. package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
  438. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
  439. package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
  440. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
  441. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
  442. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
  443. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
  444. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
  445. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
  446. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
  447. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
  448. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
  449. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
  450. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
  451. package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
  452. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
  453. package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
  454. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
  455. package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
  456. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
  457. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
  458. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
  459. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +27 -27
  460. package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
  461. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
  462. package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
  463. package/src/duckdb/src/parser/transformer.cpp +46 -46
  464. package/src/duckdb/src/planner/bind_context.cpp +6 -6
  465. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -1
  466. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
  467. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
  468. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
  469. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +8 -8
  470. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
  471. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +1 -1
  472. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
  473. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +1 -1
  474. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +1 -1
  475. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +2 -2
  476. package/src/duckdb/src/planner/binder.cpp +1 -1
  477. package/src/duckdb/src/planner/bound_result_modifier.cpp +16 -11
  478. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +5 -5
  479. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
  480. package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
  481. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
  482. package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
  483. package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
  484. package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
  485. package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
  486. package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
  487. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
  488. package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
  489. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
  490. package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
  491. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
  492. package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
  493. package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
  494. package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
  495. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
  496. package/src/duckdb/src/planner/expression.cpp +15 -0
  497. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
  498. package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
  499. package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
  500. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  501. package/src/duckdb/src/planner/logical_operator.cpp +3 -4
  502. package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
  503. package/src/duckdb/src/planner/table_filter.cpp +1 -1
  504. package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
  505. package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
  506. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
  507. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
  508. package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
  509. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
  510. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
  511. package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
  512. package/src/duckdb/src/storage/compression/rle.cpp +8 -8
  513. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
  514. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
  515. package/src/duckdb/src/storage/data_table.cpp +2 -2
  516. package/src/duckdb/src/storage/local_storage.cpp +2 -1
  517. package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
  518. package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
  519. package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
  520. package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
  521. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
  522. package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
  523. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
  524. package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
  525. package/src/duckdb/src/storage/table/list_column_data.cpp +3 -3
  526. package/src/duckdb/src/storage/table/row_group.cpp +4 -4
  527. package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -1
  528. package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
  529. package/src/duckdb/src/storage/wal_replay.cpp +1 -1
  530. package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
  531. package/src/duckdb/src/transaction/commit_state.cpp +8 -8
  532. package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
  533. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
  534. package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
  535. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
  536. package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
  537. package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
  538. package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
@@ -811,6 +811,17 @@ public:
811
811
  virtual void FormatSerialize(FormatSerializer &serializer) const;
812
812
  static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &source);
813
813
 
814
+ template <class TARGET>
815
+ TARGET &Cast() {
816
+ D_ASSERT(dynamic_cast<TARGET *>(this));
817
+ return reinterpret_cast<TARGET &>(*this);
818
+ }
819
+ template <class TARGET>
820
+ const TARGET &Cast() const {
821
+ D_ASSERT(dynamic_cast<const TARGET *>(this));
822
+ return reinterpret_cast<const TARGET &>(*this);
823
+ }
824
+
814
825
  protected:
815
826
  virtual bool EqualsInternal(ExtraTypeInfo *other_p) const {
816
827
  // Do nothing
@@ -888,7 +899,7 @@ public:
888
899
 
889
900
  protected:
890
901
  bool EqualsInternal(ExtraTypeInfo *other_p) const override {
891
- auto &other = (DecimalTypeInfo &)*other_p;
902
+ auto &other = other_p->Cast<DecimalTypeInfo>();
892
903
  return width == other.width && scale == other.scale;
893
904
  }
894
905
  };
@@ -897,14 +908,14 @@ uint8_t DecimalType::GetWidth(const LogicalType &type) {
897
908
  D_ASSERT(type.id() == LogicalTypeId::DECIMAL);
898
909
  auto info = type.AuxInfo();
899
910
  D_ASSERT(info);
900
- return ((DecimalTypeInfo &)*info).width;
911
+ return info->Cast<DecimalTypeInfo>().width;
901
912
  }
902
913
 
903
914
  uint8_t DecimalType::GetScale(const LogicalType &type) {
904
915
  D_ASSERT(type.id() == LogicalTypeId::DECIMAL);
905
916
  auto info = type.AuxInfo();
906
917
  D_ASSERT(info);
907
- return ((DecimalTypeInfo &)*info).scale;
918
+ return info->Cast<DecimalTypeInfo>().scale;
908
919
  }
909
920
 
910
921
  uint8_t DecimalType::MaxWidth() {
@@ -965,7 +976,7 @@ string StringType::GetCollation(const LogicalType &type) {
965
976
  if (info->type == ExtraTypeInfoType::GENERIC_TYPE_INFO) {
966
977
  return string();
967
978
  }
968
- return ((StringTypeInfo &)*info).collation;
979
+ return info->Cast<StringTypeInfo>().collation;
969
980
  }
970
981
 
971
982
  LogicalType LogicalType::VARCHAR_COLLATION(string collation) { // NOLINT
@@ -1005,7 +1016,7 @@ public:
1005
1016
 
1006
1017
  protected:
1007
1018
  bool EqualsInternal(ExtraTypeInfo *other_p) const override {
1008
- auto &other = (ListTypeInfo &)*other_p;
1019
+ auto &other = other_p->Cast<ListTypeInfo>();
1009
1020
  return child_type == other.child_type;
1010
1021
  }
1011
1022
  };
@@ -1014,7 +1025,7 @@ const LogicalType &ListType::GetChildType(const LogicalType &type) {
1014
1025
  D_ASSERT(type.id() == LogicalTypeId::LIST || type.id() == LogicalTypeId::MAP);
1015
1026
  auto info = type.AuxInfo();
1016
1027
  D_ASSERT(info);
1017
- return ((ListTypeInfo &)*info).child_type;
1028
+ return info->Cast<ListTypeInfo>().child_type;
1018
1029
  }
1019
1030
 
1020
1031
  LogicalType LogicalType::LIST(const LogicalType &child) {
@@ -1066,7 +1077,7 @@ public:
1066
1077
 
1067
1078
  protected:
1068
1079
  bool EqualsInternal(ExtraTypeInfo *other_p) const override {
1069
- auto &other = (StructTypeInfo &)*other_p;
1080
+ auto &other = other_p->Cast<StructTypeInfo>();
1070
1081
  return child_types == other.child_types;
1071
1082
  }
1072
1083
  };
@@ -1122,7 +1133,7 @@ public:
1122
1133
 
1123
1134
  protected:
1124
1135
  bool EqualsInternal(ExtraTypeInfo *other_p) const override {
1125
- auto &other = (AggregateStateTypeInfo &)*other_p;
1136
+ auto &other = other_p->Cast<AggregateStateTypeInfo>();
1126
1137
  return state_type.function_name == other.state_type.function_name &&
1127
1138
  state_type.return_type == other.state_type.return_type &&
1128
1139
  state_type.bound_argument_types == other.state_type.bound_argument_types;
@@ -1133,7 +1144,7 @@ const aggregate_state_t &AggregateStateType::GetStateType(const LogicalType &typ
1133
1144
  D_ASSERT(type.id() == LogicalTypeId::AGGREGATE_STATE);
1134
1145
  auto info = type.AuxInfo();
1135
1146
  D_ASSERT(info);
1136
- return ((AggregateStateTypeInfo &)*info).state_type;
1147
+ return info->Cast<AggregateStateTypeInfo>().state_type;
1137
1148
  }
1138
1149
 
1139
1150
  const string AggregateStateType::GetTypeName(const LogicalType &type) {
@@ -1142,7 +1153,7 @@ const string AggregateStateType::GetTypeName(const LogicalType &type) {
1142
1153
  if (!info) {
1143
1154
  return "AGGREGATE_STATE<?>";
1144
1155
  }
1145
- auto aggr_state = ((AggregateStateTypeInfo &)*info).state_type;
1156
+ auto aggr_state = info->Cast<AggregateStateTypeInfo>().state_type;
1146
1157
  return "AGGREGATE_STATE<" + aggr_state.function_name + "(" +
1147
1158
  StringUtil::Join(aggr_state.bound_argument_types, aggr_state.bound_argument_types.size(), ", ",
1148
1159
  [](const LogicalType &arg_type) { return arg_type.ToString(); }) +
@@ -1154,7 +1165,7 @@ const child_list_t<LogicalType> &StructType::GetChildTypes(const LogicalType &ty
1154
1165
 
1155
1166
  auto info = type.AuxInfo();
1156
1167
  D_ASSERT(info);
1157
- return ((StructTypeInfo &)*info).child_types;
1168
+ return info->Cast<StructTypeInfo>().child_types;
1158
1169
  }
1159
1170
 
1160
1171
  const LogicalType &StructType::GetChildType(const LogicalType &type, idx_t index) {
@@ -1277,7 +1288,7 @@ public:
1277
1288
 
1278
1289
  protected:
1279
1290
  bool EqualsInternal(ExtraTypeInfo *other_p) const override {
1280
- auto &other = (UserTypeInfo &)*other_p;
1291
+ auto &other = other_p->Cast<UserTypeInfo>();
1281
1292
  return other.user_type_name == user_type_name;
1282
1293
  }
1283
1294
  };
@@ -1286,7 +1297,7 @@ const string &UserType::GetTypeName(const LogicalType &type) {
1286
1297
  D_ASSERT(type.id() == LogicalTypeId::USER);
1287
1298
  auto info = type.AuxInfo();
1288
1299
  D_ASSERT(info);
1289
- return ((UserTypeInfo &)*info).user_type_name;
1300
+ return info->Cast<UserTypeInfo>().user_type_name;
1290
1301
  }
1291
1302
 
1292
1303
  LogicalType LogicalType::USER(const string &user_type_name) {
@@ -1306,19 +1317,19 @@ struct EnumTypeInfo : public ExtraTypeInfo {
1306
1317
  dict_type(EnumDictType::VECTOR_DICT), enum_name(std::move(enum_name_p)), dict_size(dict_size_p) {
1307
1318
  }
1308
1319
 
1309
- const EnumDictType &GetEnumDictType() {
1320
+ const EnumDictType &GetEnumDictType() const {
1310
1321
  return dict_type;
1311
1322
  };
1312
- const string &GetEnumName() {
1323
+ const string &GetEnumName() const {
1313
1324
  return enum_name;
1314
1325
  };
1315
1326
  const string GetSchemaName() const {
1316
1327
  return catalog_entry ? catalog_entry->schema.name : "";
1317
1328
  };
1318
- const Vector &GetValuesInsertOrder() {
1329
+ const Vector &GetValuesInsertOrder() const {
1319
1330
  return values_insert_order;
1320
1331
  };
1321
- const idx_t &GetDictSize() {
1332
+ const idx_t &GetDictSize() const {
1322
1333
  return dict_size;
1323
1334
  };
1324
1335
  EnumTypeInfo(const EnumTypeInfo &) = delete;
@@ -1327,7 +1338,7 @@ struct EnumTypeInfo : public ExtraTypeInfo {
1327
1338
  protected:
1328
1339
  // Equalities are only used in enums with different catalog entries
1329
1340
  bool EqualsInternal(ExtraTypeInfo *other_p) const override {
1330
- auto &other = (EnumTypeInfo &)*other_p;
1341
+ auto &other = other_p->Cast<EnumTypeInfo>();
1331
1342
  if (dict_type != other.dict_type) {
1332
1343
  return false;
1333
1344
  }
@@ -1360,7 +1371,7 @@ protected:
1360
1371
  ExtraTypeInfo::FormatSerialize(serializer);
1361
1372
  serializer.WriteProperty("dict_size", dict_size);
1362
1373
  serializer.WriteProperty("enum_name", enum_name);
1363
- ((Vector &)values_insert_order).FormatSerialize(serializer, dict_size);
1374
+ ((Vector &)values_insert_order).FormatSerialize(serializer, dict_size); // NOLINT - FIXME
1364
1375
  }
1365
1376
  Vector values_insert_order;
1366
1377
 
@@ -1374,7 +1385,7 @@ private:
1374
1385
 
1375
1386
  void EnumType::Serialize(FieldWriter &writer, const ExtraTypeInfo &type_info, bool serialize_internals) {
1376
1387
  D_ASSERT(type_info.type == ExtraTypeInfoType::ENUM_TYPE_INFO);
1377
- auto &enum_info = (EnumTypeInfo &)type_info;
1388
+ auto &enum_info = type_info.Cast<EnumTypeInfo>();
1378
1389
  // Store Schema Name
1379
1390
  writer.WriteString(enum_info.GetSchemaName());
1380
1391
  // Store Enum Name
@@ -1387,7 +1398,7 @@ void EnumType::Serialize(FieldWriter &writer, const ExtraTypeInfo &type_info, bo
1387
1398
  // Store Dictionary Size
1388
1399
  writer.WriteField<uint32_t>(dict_size);
1389
1400
  // Store Vector Order By Insertion
1390
- ((Vector &)enum_info.GetValuesInsertOrder()).Serialize(dict_size, writer.GetSerializer());
1401
+ ((Vector &)enum_info.GetValuesInsertOrder()).Serialize(dict_size, writer.GetSerializer()); // NOLINT - FIXME
1391
1402
  }
1392
1403
  }
1393
1404
 
@@ -1400,7 +1411,7 @@ struct EnumTypeInfoTemplated : public EnumTypeInfo {
1400
1411
  UnifiedVectorFormat vdata;
1401
1412
  values_insert_order.ToUnifiedFormat(size_p, vdata);
1402
1413
 
1403
- auto data = (string_t *)vdata.data;
1414
+ auto data = UnifiedVectorFormat::GetData<string_t>(vdata);
1404
1415
  for (idx_t i = 0; i < size_p; i++) {
1405
1416
  auto idx = vdata.sel->get_index(i);
1406
1417
  if (!vdata.validity.RowIsValid(idx)) {
@@ -1428,7 +1439,7 @@ struct EnumTypeInfoTemplated : public EnumTypeInfo {
1428
1439
  return make_shared<EnumTypeInfoTemplated>(std::move(enum_name), values_insert_order, size);
1429
1440
  }
1430
1441
 
1431
- string_map_t<T> &GetValues() {
1442
+ const string_map_t<T> &GetValues() const {
1432
1443
  return values;
1433
1444
  }
1434
1445
 
@@ -1443,7 +1454,7 @@ const string &EnumType::GetTypeName(const LogicalType &type) {
1443
1454
  D_ASSERT(type.id() == LogicalTypeId::ENUM);
1444
1455
  auto info = type.AuxInfo();
1445
1456
  D_ASSERT(info);
1446
- return ((EnumTypeInfo &)*info).GetEnumName();
1457
+ return info->Cast<EnumTypeInfo>().GetEnumName();
1447
1458
  }
1448
1459
 
1449
1460
  static PhysicalType EnumVectorDictType(idx_t size) {
@@ -1480,7 +1491,7 @@ LogicalType LogicalType::ENUM(const string &enum_name, Vector &ordered_data, idx
1480
1491
  }
1481
1492
 
1482
1493
  template <class T>
1483
- int64_t TemplatedGetPos(string_map_t<T> &map, const string_t &key) {
1494
+ int64_t TemplatedGetPos(const string_map_t<T> &map, const string_t &key) {
1484
1495
  auto it = map.find(key);
1485
1496
  if (it == map.end()) {
1486
1497
  return -1;
@@ -1492,11 +1503,11 @@ int64_t EnumType::GetPos(const LogicalType &type, const string_t &key) {
1492
1503
  auto info = type.AuxInfo();
1493
1504
  switch (type.InternalType()) {
1494
1505
  case PhysicalType::UINT8:
1495
- return TemplatedGetPos(((EnumTypeInfoTemplated<uint8_t> &)*info).GetValues(), key);
1506
+ return TemplatedGetPos(info->Cast<EnumTypeInfoTemplated<uint8_t>>().GetValues(), key);
1496
1507
  case PhysicalType::UINT16:
1497
- return TemplatedGetPos(((EnumTypeInfoTemplated<uint16_t> &)*info).GetValues(), key);
1508
+ return TemplatedGetPos(info->Cast<EnumTypeInfoTemplated<uint16_t>>().GetValues(), key);
1498
1509
  case PhysicalType::UINT32:
1499
- return TemplatedGetPos(((EnumTypeInfoTemplated<uint32_t> &)*info).GetValues(), key);
1510
+ return TemplatedGetPos(info->Cast<EnumTypeInfoTemplated<uint32_t>>().GetValues(), key);
1500
1511
  default:
1501
1512
  throw InternalException("ENUM can only have unsigned integers (except UINT64) as physical types");
1502
1513
  }
@@ -1504,7 +1515,7 @@ int64_t EnumType::GetPos(const LogicalType &type, const string_t &key) {
1504
1515
 
1505
1516
  const string EnumType::GetValue(const Value &val) {
1506
1517
  auto info = val.type().AuxInfo();
1507
- auto &values_insert_order = ((EnumTypeInfo &)*info).GetValuesInsertOrder();
1518
+ auto &values_insert_order = info->Cast<EnumTypeInfo>().GetValuesInsertOrder();
1508
1519
  return StringValue::Get(values_insert_order.GetValue(val.GetValue<uint32_t>()));
1509
1520
  }
1510
1521
 
@@ -1512,14 +1523,14 @@ const Vector &EnumType::GetValuesInsertOrder(const LogicalType &type) {
1512
1523
  D_ASSERT(type.id() == LogicalTypeId::ENUM);
1513
1524
  auto info = type.AuxInfo();
1514
1525
  D_ASSERT(info);
1515
- return ((EnumTypeInfo &)*info).GetValuesInsertOrder();
1526
+ return info->Cast<EnumTypeInfo>().GetValuesInsertOrder();
1516
1527
  }
1517
1528
 
1518
1529
  idx_t EnumType::GetSize(const LogicalType &type) {
1519
1530
  D_ASSERT(type.id() == LogicalTypeId::ENUM);
1520
1531
  auto info = type.AuxInfo();
1521
1532
  D_ASSERT(info);
1522
- return ((EnumTypeInfo &)*info).GetDictSize();
1533
+ return info->Cast<EnumTypeInfo>().GetDictSize();
1523
1534
  }
1524
1535
 
1525
1536
  void EnumType::SetCatalog(LogicalType &type, optional_ptr<TypeCatalogEntry> catalog_entry) {
@@ -1535,7 +1546,7 @@ optional_ptr<TypeCatalogEntry> EnumType::GetCatalog(const LogicalType &type) {
1535
1546
  if (!info) {
1536
1547
  return nullptr;
1537
1548
  }
1538
- return ((ExtraTypeInfo &)*info).catalog_entry;
1549
+ return info->catalog_entry;
1539
1550
  }
1540
1551
 
1541
1552
  string EnumType::GetSchemaName(const LogicalType &type) {
@@ -1547,7 +1558,7 @@ PhysicalType EnumType::GetPhysicalType(const LogicalType &type) {
1547
1558
  D_ASSERT(type.id() == LogicalTypeId::ENUM);
1548
1559
  auto aux_info = type.AuxInfo();
1549
1560
  D_ASSERT(aux_info);
1550
- auto &info = (EnumTypeInfo &)*aux_info;
1561
+ auto &info = aux_info->Cast<EnumTypeInfo>();
1551
1562
  D_ASSERT(info.GetEnumDictType() == EnumDictType::VECTOR_DICT);
1552
1563
  return EnumVectorDictType(info.GetDictSize());
1553
1564
  }
@@ -35,8 +35,8 @@ static void TemplatedBooleanNullmask(Vector &left, Vector &right, Vector &result
35
35
  right.ToUnifiedFormat(count, rdata);
36
36
 
37
37
  result.SetVectorType(VectorType::FLAT_VECTOR);
38
- auto left_data = (uint8_t *)ldata.data; // we use uint8 to avoid load of gunk bools
39
- auto right_data = (uint8_t *)rdata.data;
38
+ auto left_data = UnifiedVectorFormat::GetData<uint8_t>(ldata); // we use uint8 to avoid load of gunk bools
39
+ auto right_data = UnifiedVectorFormat::GetData<uint8_t>(rdata);
40
40
  auto result_data = FlatVector::GetData<bool>(result);
41
41
  auto &result_mask = FlatVector::Validity(result);
42
42
  if (!ldata.validity.AllValid() || !rdata.validity.AllValid()) {
@@ -11,7 +11,7 @@ struct DistinctBinaryLambdaWrapper {
11
11
  };
12
12
 
13
13
  template <class LEFT_TYPE, class RIGHT_TYPE, class RESULT_TYPE, class OP>
14
- static void DistinctExecuteGenericLoop(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rdata,
14
+ static void DistinctExecuteGenericLoop(const LEFT_TYPE *__restrict ldata, const RIGHT_TYPE *__restrict rdata,
15
15
  RESULT_TYPE *__restrict result_data, const SelectionVector *__restrict lsel,
16
16
  const SelectionVector *__restrict rsel, idx_t count, ValidityMask &lmask,
17
17
  ValidityMask &rmask, ValidityMask &result_mask) {
@@ -49,8 +49,8 @@ static void DistinctExecuteGeneric(Vector &left, Vector &right, Vector &result,
49
49
  result.SetVectorType(VectorType::FLAT_VECTOR);
50
50
  auto result_data = FlatVector::GetData<RESULT_TYPE>(result);
51
51
  DistinctExecuteGenericLoop<LEFT_TYPE, RIGHT_TYPE, RESULT_TYPE, OP>(
52
- (LEFT_TYPE *)ldata.data, (RIGHT_TYPE *)rdata.data, result_data, ldata.sel, rdata.sel, count, ldata.validity,
53
- rdata.validity, FlatVector::Validity(result));
52
+ UnifiedVectorFormat::GetData<LEFT_TYPE>(ldata), UnifiedVectorFormat::GetData<RIGHT_TYPE>(rdata),
53
+ result_data, ldata.sel, rdata.sel, count, ldata.validity, rdata.validity, FlatVector::Validity(result));
54
54
  }
55
55
  }
56
56
 
@@ -66,7 +66,7 @@ static void DistinctExecute(Vector &left, Vector &right, Vector &result, idx_t c
66
66
 
67
67
  template <class LEFT_TYPE, class RIGHT_TYPE, class OP, bool NO_NULL, bool HAS_TRUE_SEL, bool HAS_FALSE_SEL>
68
68
  static inline idx_t
69
- DistinctSelectGenericLoop(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rdata,
69
+ DistinctSelectGenericLoop(const LEFT_TYPE *__restrict ldata, const RIGHT_TYPE *__restrict rdata,
70
70
  const SelectionVector *__restrict lsel, const SelectionVector *__restrict rsel,
71
71
  const SelectionVector *__restrict result_sel, idx_t count, ValidityMask &lmask,
72
72
  ValidityMask &rmask, SelectionVector *true_sel, SelectionVector *false_sel) {
@@ -105,7 +105,7 @@ DistinctSelectGenericLoop(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rd
105
105
  }
106
106
  template <class LEFT_TYPE, class RIGHT_TYPE, class OP, bool NO_NULL>
107
107
  static inline idx_t
108
- DistinctSelectGenericLoopSelSwitch(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rdata,
108
+ DistinctSelectGenericLoopSelSwitch(const LEFT_TYPE *__restrict ldata, const RIGHT_TYPE *__restrict rdata,
109
109
  const SelectionVector *__restrict lsel, const SelectionVector *__restrict rsel,
110
110
  const SelectionVector *__restrict result_sel, idx_t count, ValidityMask &lmask,
111
111
  ValidityMask &rmask, SelectionVector *true_sel, SelectionVector *false_sel) {
@@ -124,7 +124,7 @@ DistinctSelectGenericLoopSelSwitch(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__re
124
124
 
125
125
  template <class LEFT_TYPE, class RIGHT_TYPE, class OP>
126
126
  static inline idx_t
127
- DistinctSelectGenericLoopSwitch(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rdata,
127
+ DistinctSelectGenericLoopSwitch(const LEFT_TYPE *__restrict ldata, const RIGHT_TYPE *__restrict rdata,
128
128
  const SelectionVector *__restrict lsel, const SelectionVector *__restrict rsel,
129
129
  const SelectionVector *__restrict result_sel, idx_t count, ValidityMask &lmask,
130
130
  ValidityMask &rmask, SelectionVector *true_sel, SelectionVector *false_sel) {
@@ -145,9 +145,9 @@ static idx_t DistinctSelectGeneric(Vector &left, Vector &right, const SelectionV
145
145
  left.ToUnifiedFormat(count, ldata);
146
146
  right.ToUnifiedFormat(count, rdata);
147
147
 
148
- return DistinctSelectGenericLoopSwitch<LEFT_TYPE, RIGHT_TYPE, OP>((LEFT_TYPE *)ldata.data, (RIGHT_TYPE *)rdata.data,
149
- ldata.sel, rdata.sel, sel, count, ldata.validity,
150
- rdata.validity, true_sel, false_sel);
148
+ return DistinctSelectGenericLoopSwitch<LEFT_TYPE, RIGHT_TYPE, OP>(
149
+ UnifiedVectorFormat::GetData<LEFT_TYPE>(ldata), UnifiedVectorFormat::GetData<RIGHT_TYPE>(rdata), ldata.sel,
150
+ rdata.sel, sel, count, ldata.validity, rdata.validity, true_sel, false_sel);
151
151
  }
152
152
  template <class LEFT_TYPE, class RIGHT_TYPE, class OP, bool LEFT_CONSTANT, bool RIGHT_CONSTANT, bool NO_NULL,
153
153
  bool HAS_TRUE_SEL, bool HAS_FALSE_SEL>
@@ -543,7 +543,7 @@ static idx_t DistinctSelectStruct(Vector &left, Vector &right, idx_t count, cons
543
543
 
544
544
  static void PositionListCursor(SelectionVector &cursor, UnifiedVectorFormat &vdata, const idx_t pos,
545
545
  const SelectionVector &slice_sel, const idx_t count) {
546
- const auto data = (const list_entry_t *)vdata.data;
546
+ const auto data = UnifiedVectorFormat::GetData<list_entry_t>(vdata);
547
547
  for (idx_t i = 0; i < count; ++i) {
548
548
  const auto slice_idx = slice_sel.get_index(i);
549
549
 
@@ -586,11 +586,11 @@ static idx_t DistinctSelectList(Vector &left, Vector &right, idx_t count, const
586
586
  // Get pointers to the list entries
587
587
  UnifiedVectorFormat lvdata;
588
588
  left.ToUnifiedFormat(count, lvdata);
589
- const auto ldata = (const list_entry_t *)lvdata.data;
589
+ const auto ldata = UnifiedVectorFormat::GetData<list_entry_t>(lvdata);
590
590
 
591
591
  UnifiedVectorFormat rvdata;
592
592
  right.ToUnifiedFormat(count, rvdata);
593
- const auto rdata = (const list_entry_t *)rvdata.data;
593
+ const auto rdata = UnifiedVectorFormat::GetData<list_entry_t>(rvdata);
594
594
 
595
595
  // In order to reuse the comparators, we have to track what passed and failed internally.
596
596
  // To do that, we need local SVs that we then merge back into the real ones after every pass.
@@ -25,7 +25,7 @@ static inline hash_t CombineHashScalar(hash_t a, hash_t b) {
25
25
  }
26
26
 
27
27
  template <bool HAS_RSEL, class T>
28
- static inline void TightLoopHash(T *__restrict ldata, hash_t *__restrict result_data, const SelectionVector *rsel,
28
+ static inline void TightLoopHash(const T *__restrict ldata, hash_t *__restrict result_data, const SelectionVector *rsel,
29
29
  idx_t count, const SelectionVector *__restrict sel_vector, ValidityMask &mask) {
30
30
  if (!mask.AllValid()) {
31
31
  for (idx_t i = 0; i < count; i++) {
@@ -56,8 +56,8 @@ static inline void TemplatedLoopHash(Vector &input, Vector &result, const Select
56
56
  UnifiedVectorFormat idata;
57
57
  input.ToUnifiedFormat(count, idata);
58
58
 
59
- TightLoopHash<HAS_RSEL, T>((T *)idata.data, FlatVector::GetData<hash_t>(result), rsel, count, idata.sel,
60
- idata.validity);
59
+ TightLoopHash<HAS_RSEL, T>(UnifiedVectorFormat::GetData<T>(idata), FlatVector::GetData<hash_t>(result), rsel,
60
+ count, idata.sel, idata.validity);
61
61
  }
62
62
  }
63
63
 
@@ -94,7 +94,7 @@ static inline void ListLoopHash(Vector &input, Vector &hashes, const SelectionVe
94
94
 
95
95
  UnifiedVectorFormat idata;
96
96
  input.ToUnifiedFormat(count, idata);
97
- const auto ldata = (const list_entry_t *)idata.data;
97
+ const auto ldata = UnifiedVectorFormat::GetData<list_entry_t>(idata);
98
98
 
99
99
  // Hash the children into a temporary
100
100
  auto &child = ListVector::GetEntry(input);
@@ -240,8 +240,8 @@ void VectorOperations::Hash(Vector &input, Vector &result, const SelectionVector
240
240
  }
241
241
 
242
242
  template <bool HAS_RSEL, class T>
243
- static inline void TightLoopCombineHashConstant(T *__restrict ldata, hash_t constant_hash, hash_t *__restrict hash_data,
244
- const SelectionVector *rsel, idx_t count,
243
+ static inline void TightLoopCombineHashConstant(const T *__restrict ldata, hash_t constant_hash,
244
+ hash_t *__restrict hash_data, const SelectionVector *rsel, idx_t count,
245
245
  const SelectionVector *__restrict sel_vector, ValidityMask &mask) {
246
246
  if (!mask.AllValid()) {
247
247
  for (idx_t i = 0; i < count; i++) {
@@ -261,8 +261,9 @@ static inline void TightLoopCombineHashConstant(T *__restrict ldata, hash_t cons
261
261
  }
262
262
 
263
263
  template <bool HAS_RSEL, class T>
264
- static inline void TightLoopCombineHash(T *__restrict ldata, hash_t *__restrict hash_data, const SelectionVector *rsel,
265
- idx_t count, const SelectionVector *__restrict sel_vector, ValidityMask &mask) {
264
+ static inline void TightLoopCombineHash(const T *__restrict ldata, hash_t *__restrict hash_data,
265
+ const SelectionVector *rsel, idx_t count,
266
+ const SelectionVector *__restrict sel_vector, ValidityMask &mask) {
266
267
  if (!mask.AllValid()) {
267
268
  for (idx_t i = 0; i < count; i++) {
268
269
  auto ridx = HAS_RSEL ? rsel->get_index(i) : i;
@@ -296,13 +297,14 @@ void TemplatedLoopCombineHash(Vector &input, Vector &hashes, const SelectionVect
296
297
  auto constant_hash = *ConstantVector::GetData<hash_t>(hashes);
297
298
  // now re-initialize the hashes vector to an empty flat vector
298
299
  hashes.SetVectorType(VectorType::FLAT_VECTOR);
299
- TightLoopCombineHashConstant<HAS_RSEL, T>((T *)idata.data, constant_hash,
300
+ TightLoopCombineHashConstant<HAS_RSEL, T>(UnifiedVectorFormat::GetData<T>(idata), constant_hash,
300
301
  FlatVector::GetData<hash_t>(hashes), rsel, count, idata.sel,
301
302
  idata.validity);
302
303
  } else {
303
304
  D_ASSERT(hashes.GetVectorType() == VectorType::FLAT_VECTOR);
304
- TightLoopCombineHash<HAS_RSEL, T>((T *)idata.data, FlatVector::GetData<hash_t>(hashes), rsel, count,
305
- idata.sel, idata.validity);
305
+ TightLoopCombineHash<HAS_RSEL, T>(UnifiedVectorFormat::GetData<T>(idata),
306
+ FlatVector::GetData<hash_t>(hashes), rsel, count, idata.sel,
307
+ idata.validity);
306
308
  }
307
309
  }
308
310
  }
@@ -6,7 +6,7 @@ namespace duckdb {
6
6
 
7
7
  template <class T>
8
8
  static void CopyToStorageLoop(UnifiedVectorFormat &vdata, idx_t count, data_ptr_t target) {
9
- auto ldata = (T *)vdata.data;
9
+ auto ldata = UnifiedVectorFormat::GetData<T>(vdata);
10
10
  auto result_data = (T *)target;
11
11
  for (idx_t i = 0; i < count; i++) {
12
12
  auto idx = vdata.sel->get_index(i);
@@ -69,7 +69,7 @@ static void ApproxCountDistinctSimpleUpdateFunction(Vector inputs[], AggregateIn
69
69
  data_ptr_t state, idx_t count) {
70
70
  D_ASSERT(input_count == 1);
71
71
 
72
- auto agg_state = (ApproxDistinctCountState *)state;
72
+ auto agg_state = reinterpret_cast<ApproxDistinctCountState *>(state);
73
73
  if (!agg_state->log) {
74
74
  agg_state->log = new HyperLogLog();
75
75
  }
@@ -91,7 +91,7 @@ static void ApproxCountDistinctUpdateFunction(Vector inputs[], AggregateInputDat
91
91
 
92
92
  UnifiedVectorFormat sdata;
93
93
  state_vector.ToUnifiedFormat(count, sdata);
94
- auto states = (ApproxDistinctCountState **)sdata.data;
94
+ auto states = UnifiedVectorFormat::GetDataNoConst<ApproxDistinctCountState *>(sdata);
95
95
 
96
96
  uint64_t *indices = nullptr;
97
97
  uint8_t *counts = nullptr;
@@ -111,7 +111,7 @@ static void ApproxCountDistinctUpdateFunction(Vector inputs[], AggregateInputDat
111
111
  inputs[0].ToUnifiedFormat(count, vdata);
112
112
 
113
113
  HyperLogLog::ProcessEntries(vdata, inputs[0].GetType(), indices, counts, count);
114
- HyperLogLog::AddToLogs(vdata, count, indices, counts, (HyperLogLog ***)states, sdata.sel);
114
+ HyperLogLog::AddToLogs(vdata, count, indices, counts, reinterpret_cast<HyperLogLog ***>(states), sdata.sel);
115
115
  }
116
116
 
117
117
  AggregateFunction GetApproxCountDistinctFunction(const LogicalType &input_type) {
@@ -108,8 +108,8 @@ struct ArgMinMaxBase {
108
108
  }
109
109
 
110
110
  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) {
111
+ static void Operation(STATE *state, AggregateInputData &, const A_TYPE *x_data, const B_TYPE *y_data,
112
+ ValidityMask &amask, ValidityMask &bmask, idx_t xidx, idx_t yidx) {
113
113
  if (!state->is_initialized) {
114
114
  STATE::template AssignValue<A_TYPE>(state->arg, x_data[xidx], false);
115
115
  STATE::template AssignValue<B_TYPE>(state->value, y_data[yidx], false);
@@ -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);
@@ -48,7 +48,7 @@ struct BitwiseOperation {
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) {
51
+ static void Operation(STATE *state, AggregateInputData &, const INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
52
52
  if (!state->is_set) {
53
53
  OP::template Assign(state, input[idx]);
54
54
  state->is_set = true;
@@ -58,7 +58,7 @@ struct BitwiseOperation {
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,
61
+ static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, const INPUT_TYPE *input,
62
62
  ValidityMask &mask, idx_t count) {
63
63
  OP::template Operation<INPUT_TYPE, STATE, OP>(state, aggr_input_data, input, mask, 0);
64
64
  }
@@ -118,7 +118,7 @@ struct BitXorOperation : public BitwiseOperation {
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,
121
+ static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, const INPUT_TYPE *input,
122
122
  ValidityMask &mask, idx_t count) {
123
123
  for (idx_t i = 0; i < count; i++) {
124
124
  Operation<INPUT_TYPE, STATE, OP>(state, aggr_input_data, input, mask, 0);
@@ -181,7 +181,7 @@ struct BitStringXorOperation : public BitStringBitwiseOperation {
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,
184
+ static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, const INPUT_TYPE *input,
185
185
  ValidityMask &mask, idx_t count) {
186
186
  for (idx_t i = 0; i < count; i++) {
187
187
  Operation<INPUT_TYPE, STATE, OP>(state, aggr_input_data, input, mask, 0);
@@ -53,18 +53,19 @@ struct BitStringAggOperation {
53
53
  }
54
54
 
55
55
  template <class INPUT_TYPE, class STATE, class OP>
56
- static void Operation(STATE *state, AggregateInputData &data, INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
57
- auto bind_agg_data = (BitstringAggBindData *)data.bind_data;
56
+ static void Operation(STATE *state, AggregateInputData &data, const INPUT_TYPE *input, ValidityMask &mask,
57
+ idx_t idx) {
58
+ auto &bind_agg_data = data.bind_data->template Cast<BitstringAggBindData>();
58
59
  if (!state->is_set) {
59
- if (bind_agg_data->min.IsNull() || bind_agg_data->max.IsNull()) {
60
+ if (bind_agg_data.min.IsNull() || bind_agg_data.max.IsNull()) {
60
61
  throw BinderException(
61
62
  "Could not retrieve required statistics. Alternatively, try by providing the statistics "
62
63
  "explicitly: BITSTRING_AGG(col, min, max) ");
63
64
  }
64
- state->min = bind_agg_data->min.GetValue<INPUT_TYPE>();
65
- state->max = bind_agg_data->max.GetValue<INPUT_TYPE>();
65
+ state->min = bind_agg_data.min.GetValue<INPUT_TYPE>();
66
+ state->max = bind_agg_data.max.GetValue<INPUT_TYPE>();
66
67
  idx_t bit_range =
67
- GetRange(bind_agg_data->min.GetValue<INPUT_TYPE>(), bind_agg_data->max.GetValue<INPUT_TYPE>());
68
+ GetRange(bind_agg_data.min.GetValue<INPUT_TYPE>(), bind_agg_data.max.GetValue<INPUT_TYPE>());
68
69
  if (bit_range > MAX_BIT_RANGE) {
69
70
  throw OutOfRangeException(
70
71
  "The range between min and max value (%s <-> %s) is too large for bitstring aggregation",
@@ -78,7 +79,7 @@ struct BitStringAggOperation {
78
79
  state->is_set = true;
79
80
  }
80
81
  if (input[idx] >= state->min && input[idx] <= state->max) {
81
- Execute(state, input[idx], bind_agg_data->min.GetValue<INPUT_TYPE>());
82
+ Execute(state, input[idx], bind_agg_data.min.GetValue<INPUT_TYPE>());
82
83
  } else {
83
84
  throw OutOfRangeException("Value %s is outside of provided min and max range (%s <-> %s)",
84
85
  NumericHelper::ToString(input[idx]), NumericHelper::ToString(state->min),
@@ -87,7 +88,7 @@ struct BitStringAggOperation {
87
88
  }
88
89
 
89
90
  template <class INPUT_TYPE, class STATE, class OP>
90
- static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, INPUT_TYPE *input,
91
+ static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, const INPUT_TYPE *input,
91
92
  ValidityMask &mask, idx_t count) {
92
93
  OP::template Operation<INPUT_TYPE, STATE, OP>(state, aggr_input_data, input, mask, 0);
93
94
  }
@@ -190,9 +191,9 @@ unique_ptr<BaseStatistics> BitstringPropagateStats(ClientContext &context, Bound
190
191
  throw BinderException("Could not retrieve required statistics. Alternatively, try by providing the statistics "
191
192
  "explicitly: BITSTRING_AGG(col, min, max) ");
192
193
  }
193
- auto bind_agg_data = (BitstringAggBindData *)input.bind_data;
194
- bind_agg_data->min = NumericStats::Min(input.child_stats[0]);
195
- bind_agg_data->max = NumericStats::Max(input.child_stats[0]);
194
+ auto &bind_agg_data = input.bind_data->Cast<BitstringAggBindData>();
195
+ bind_agg_data.min = NumericStats::Min(input.child_stats[0]);
196
+ bind_agg_data.max = NumericStats::Max(input.child_stats[0]);
196
197
  return nullptr;
197
198
  }
198
199
 
@@ -34,13 +34,13 @@ struct BoolAndFunFunction {
34
34
  }
35
35
 
36
36
  template <class INPUT_TYPE, class STATE, class OP>
37
- static void Operation(STATE *state, AggregateInputData &, INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
37
+ static void Operation(STATE *state, AggregateInputData &, const INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
38
38
  state->empty = false;
39
39
  state->val = input[idx] && state->val;
40
40
  }
41
41
 
42
42
  template <class INPUT_TYPE, class STATE, class OP>
43
- static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, INPUT_TYPE *input,
43
+ static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, const INPUT_TYPE *input,
44
44
  ValidityMask &mask, idx_t count) {
45
45
  for (idx_t i = 0; i < count; i++) {
46
46
  Operation<INPUT_TYPE, STATE, OP>(state, aggr_input_data, input, mask, 0);
@@ -73,7 +73,7 @@ struct BoolOrFunFunction {
73
73
  target[idx] = state->val;
74
74
  }
75
75
  template <class INPUT_TYPE, class STATE, class OP>
76
- static void Operation(STATE *state, AggregateInputData &, INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
76
+ static void Operation(STATE *state, AggregateInputData &, const INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
77
77
  state->empty = false;
78
78
  state->val = input[idx] || state->val;
79
79
  }
@@ -75,7 +75,7 @@ struct EntropyFunctionBase {
75
75
 
76
76
  struct EntropyFunction : EntropyFunctionBase {
77
77
  template <class INPUT_TYPE, class STATE, class OP>
78
- static void Operation(STATE *state, AggregateInputData &, INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
78
+ static void Operation(STATE *state, AggregateInputData &, const INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
79
79
  if (!state->distinct) {
80
80
  state->distinct = new unordered_map<INPUT_TYPE, idx_t>();
81
81
  }
@@ -93,7 +93,7 @@ struct EntropyFunction : EntropyFunctionBase {
93
93
 
94
94
  struct EntropyFunctionString : EntropyFunctionBase {
95
95
  template <class INPUT_TYPE, class STATE, class OP>
96
- static void Operation(STATE *state, AggregateInputData &, INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
96
+ static void Operation(STATE *state, AggregateInputData &, const INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
97
97
  if (!state->distinct) {
98
98
  state->distinct = new unordered_map<string, idx_t>();
99
99
  }
@@ -103,7 +103,7 @@ struct EntropyFunctionString : EntropyFunctionBase {
103
103
  }
104
104
 
105
105
  template <class INPUT_TYPE, class STATE, class OP>
106
- static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, INPUT_TYPE *input,
106
+ static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, const INPUT_TYPE *input,
107
107
  ValidityMask &mask, idx_t count) {
108
108
  for (idx_t i = 0; i < count; i++) {
109
109
  Operation<INPUT_TYPE, STATE, OP>(state, aggr_input_data, input, mask, 0);