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
@@ -27,20 +27,20 @@ unique_ptr<ExpressionState> ExpressionExecutor::InitializeState(const BoundCaseE
27
27
 
28
28
  void ExpressionExecutor::Execute(const BoundCaseExpression &expr, ExpressionState *state_p, const SelectionVector *sel,
29
29
  idx_t count, Vector &result) {
30
- auto state = (CaseExpressionState *)state_p;
30
+ auto &state = state_p->Cast<CaseExpressionState>();
31
31
 
32
- state->intermediate_chunk.Reset();
32
+ state.intermediate_chunk.Reset();
33
33
 
34
34
  // first execute the check expression
35
- auto current_true_sel = &state->true_sel;
36
- auto current_false_sel = &state->false_sel;
35
+ auto current_true_sel = &state.true_sel;
36
+ auto current_false_sel = &state.false_sel;
37
37
  auto current_sel = sel;
38
38
  idx_t current_count = count;
39
39
  for (idx_t i = 0; i < expr.case_checks.size(); i++) {
40
40
  auto &case_check = expr.case_checks[i];
41
- auto &intermediate_result = state->intermediate_chunk.data[i * 2 + 1];
42
- auto check_state = state->child_states[i * 2].get();
43
- auto then_state = state->child_states[i * 2 + 1].get();
41
+ auto &intermediate_result = state.intermediate_chunk.data[i * 2 + 1];
42
+ auto check_state = state.child_states[i * 2].get();
43
+ auto then_state = state.child_states[i * 2 + 1].get();
44
44
 
45
45
  idx_t tcount =
46
46
  Select(*case_check.when_expr, check_state, current_sel, current_count, current_true_sel, current_false_sel);
@@ -68,13 +68,13 @@ void ExpressionExecutor::Execute(const BoundCaseExpression &expr, ExpressionStat
68
68
  }
69
69
  }
70
70
  if (current_count > 0) {
71
- auto else_state = state->child_states.back().get();
71
+ auto else_state = state.child_states.back().get();
72
72
  if (current_count == count) {
73
73
  // everything was false, we can just evaluate the else expression directly
74
74
  Execute(*expr.else_expr, else_state, sel, count, result);
75
75
  return;
76
76
  } else {
77
- auto &intermediate_result = state->intermediate_chunk.data[expr.case_checks.size() * 2];
77
+ auto &intermediate_result = state.intermediate_chunk.data[expr.case_checks.size() * 2];
78
78
 
79
79
  D_ASSERT(current_sel);
80
80
  Execute(*expr.else_expr, else_state, current_sel, current_count, intermediate_result);
@@ -105,7 +105,7 @@ void TemplatedFillLoop(Vector &vector, Vector &result, const SelectionVector &se
105
105
  } else {
106
106
  UnifiedVectorFormat vdata;
107
107
  vector.ToUnifiedFormat(count, vdata);
108
- auto data = (T *)vdata.data;
108
+ auto data = UnifiedVectorFormat::GetData<T>(vdata);
109
109
  for (idx_t i = 0; i < count; i++) {
110
110
  auto source_idx = vdata.sel->get_index(i);
111
111
  auto res_idx = sel.get_index(i);
@@ -56,7 +56,7 @@ void ExpressionExecutor::Execute(const BoundConjunctionExpression &expr, Express
56
56
  idx_t ExpressionExecutor::Select(const BoundConjunctionExpression &expr, ExpressionState *state_p,
57
57
  const SelectionVector *sel, idx_t count, SelectionVector *true_sel,
58
58
  SelectionVector *false_sel) {
59
- auto state = (ConjunctionState *)state_p;
59
+ auto &state = state_p->Cast<ConjunctionState>();
60
60
 
61
61
  if (expr.type == ExpressionType::CONJUNCTION_AND) {
62
62
  // get runtime statistics
@@ -75,8 +75,8 @@ idx_t ExpressionExecutor::Select(const BoundConjunctionExpression &expr, Express
75
75
  true_sel = temp_true.get();
76
76
  }
77
77
  for (idx_t i = 0; i < expr.children.size(); i++) {
78
- idx_t tcount = Select(*expr.children[state->adaptive_filter->permutation[i]],
79
- state->child_states[state->adaptive_filter->permutation[i]].get(), current_sel,
78
+ idx_t tcount = Select(*expr.children[state.adaptive_filter->permutation[i]],
79
+ state.child_states[state.adaptive_filter->permutation[i]].get(), current_sel,
80
80
  current_count, true_sel, temp_false.get());
81
81
  idx_t fcount = current_count - tcount;
82
82
  if (fcount > 0 && false_sel) {
@@ -99,7 +99,7 @@ idx_t ExpressionExecutor::Select(const BoundConjunctionExpression &expr, Express
99
99
 
100
100
  // adapt runtime statistics
101
101
  auto end_time = high_resolution_clock::now();
102
- state->adaptive_filter->AdaptRuntimeStatistics(duration_cast<duration<double>>(end_time - start_time).count());
102
+ state.adaptive_filter->AdaptRuntimeStatistics(duration_cast<duration<double>>(end_time - start_time).count());
103
103
  return current_count;
104
104
  } else {
105
105
  // get runtime statistics
@@ -118,8 +118,8 @@ idx_t ExpressionExecutor::Select(const BoundConjunctionExpression &expr, Express
118
118
  false_sel = temp_false.get();
119
119
  }
120
120
  for (idx_t i = 0; i < expr.children.size(); i++) {
121
- idx_t tcount = Select(*expr.children[state->adaptive_filter->permutation[i]],
122
- state->child_states[state->adaptive_filter->permutation[i]].get(), current_sel,
121
+ idx_t tcount = Select(*expr.children[state.adaptive_filter->permutation[i]],
122
+ state.child_states[state.adaptive_filter->permutation[i]].get(), current_sel,
123
123
  current_count, temp_true.get(), false_sel);
124
124
  if (tcount > 0) {
125
125
  if (true_sel) {
@@ -136,7 +136,7 @@ idx_t ExpressionExecutor::Select(const BoundConjunctionExpression &expr, Express
136
136
 
137
137
  // adapt runtime statistics
138
138
  auto end_time = high_resolution_clock::now();
139
- state->adaptive_filter->AdaptRuntimeStatistics(duration_cast<duration<double>>(end_time - start_time).count());
139
+ state.adaptive_filter->AdaptRuntimeStatistics(duration_cast<duration<double>>(end_time - start_time).count());
140
140
  return result_count;
141
141
  }
142
142
  }
@@ -144,25 +144,25 @@ unique_ptr<ExpressionState> ExpressionExecutor::InitializeState(const Expression
144
144
  ExpressionExecutorState &state) {
145
145
  switch (expr.expression_class) {
146
146
  case ExpressionClass::BOUND_REF:
147
- return InitializeState((const BoundReferenceExpression &)expr, state);
147
+ return InitializeState(expr.Cast<BoundReferenceExpression>(), state);
148
148
  case ExpressionClass::BOUND_BETWEEN:
149
- return InitializeState((const BoundBetweenExpression &)expr, state);
149
+ return InitializeState(expr.Cast<BoundBetweenExpression>(), state);
150
150
  case ExpressionClass::BOUND_CASE:
151
- return InitializeState((const BoundCaseExpression &)expr, state);
151
+ return InitializeState(expr.Cast<BoundCaseExpression>(), state);
152
152
  case ExpressionClass::BOUND_CAST:
153
- return InitializeState((const BoundCastExpression &)expr, state);
153
+ return InitializeState(expr.Cast<BoundCastExpression>(), state);
154
154
  case ExpressionClass::BOUND_COMPARISON:
155
- return InitializeState((const BoundComparisonExpression &)expr, state);
155
+ return InitializeState(expr.Cast<BoundComparisonExpression>(), state);
156
156
  case ExpressionClass::BOUND_CONJUNCTION:
157
- return InitializeState((const BoundConjunctionExpression &)expr, state);
157
+ return InitializeState(expr.Cast<BoundConjunctionExpression>(), state);
158
158
  case ExpressionClass::BOUND_CONSTANT:
159
- return InitializeState((const BoundConstantExpression &)expr, state);
159
+ return InitializeState(expr.Cast<BoundConstantExpression>(), state);
160
160
  case ExpressionClass::BOUND_FUNCTION:
161
- return InitializeState((const BoundFunctionExpression &)expr, state);
161
+ return InitializeState(expr.Cast<BoundFunctionExpression>(), state);
162
162
  case ExpressionClass::BOUND_OPERATOR:
163
- return InitializeState((const BoundOperatorExpression &)expr, state);
163
+ return InitializeState(expr.Cast<BoundOperatorExpression>(), state);
164
164
  case ExpressionClass::BOUND_PARAMETER:
165
- return InitializeState((const BoundParameterExpression &)expr, state);
165
+ return InitializeState(expr.Cast<BoundParameterExpression>(), state);
166
166
  default:
167
167
  throw InternalException("Attempting to initialize state of expression of unknown type!");
168
168
  }
@@ -187,34 +187,34 @@ void ExpressionExecutor::Execute(const Expression &expr, ExpressionState *state,
187
187
  }
188
188
  switch (expr.expression_class) {
189
189
  case ExpressionClass::BOUND_BETWEEN:
190
- Execute((const BoundBetweenExpression &)expr, state, sel, count, result);
190
+ Execute(expr.Cast<BoundBetweenExpression>(), state, sel, count, result);
191
191
  break;
192
192
  case ExpressionClass::BOUND_REF:
193
- Execute((const BoundReferenceExpression &)expr, state, sel, count, result);
193
+ Execute(expr.Cast<BoundReferenceExpression>(), state, sel, count, result);
194
194
  break;
195
195
  case ExpressionClass::BOUND_CASE:
196
- Execute((const BoundCaseExpression &)expr, state, sel, count, result);
196
+ Execute(expr.Cast<BoundCaseExpression>(), state, sel, count, result);
197
197
  break;
198
198
  case ExpressionClass::BOUND_CAST:
199
- Execute((const BoundCastExpression &)expr, state, sel, count, result);
199
+ Execute(expr.Cast<BoundCastExpression>(), state, sel, count, result);
200
200
  break;
201
201
  case ExpressionClass::BOUND_COMPARISON:
202
- Execute((const BoundComparisonExpression &)expr, state, sel, count, result);
202
+ Execute(expr.Cast<BoundComparisonExpression>(), state, sel, count, result);
203
203
  break;
204
204
  case ExpressionClass::BOUND_CONJUNCTION:
205
- Execute((const BoundConjunctionExpression &)expr, state, sel, count, result);
205
+ Execute(expr.Cast<BoundConjunctionExpression>(), state, sel, count, result);
206
206
  break;
207
207
  case ExpressionClass::BOUND_CONSTANT:
208
- Execute((const BoundConstantExpression &)expr, state, sel, count, result);
208
+ Execute(expr.Cast<BoundConstantExpression>(), state, sel, count, result);
209
209
  break;
210
210
  case ExpressionClass::BOUND_FUNCTION:
211
- Execute((const BoundFunctionExpression &)expr, state, sel, count, result);
211
+ Execute(expr.Cast<BoundFunctionExpression>(), state, sel, count, result);
212
212
  break;
213
213
  case ExpressionClass::BOUND_OPERATOR:
214
- Execute((const BoundOperatorExpression &)expr, state, sel, count, result);
214
+ Execute(expr.Cast<BoundOperatorExpression>(), state, sel, count, result);
215
215
  break;
216
216
  case ExpressionClass::BOUND_PARAMETER:
217
- Execute((const BoundParameterExpression &)expr, state, sel, count, result);
217
+ Execute(expr.Cast<BoundParameterExpression>(), state, sel, count, result);
218
218
  break;
219
219
  default:
220
220
  throw InternalException("Attempting to execute expression of unknown type!");
@@ -242,7 +242,7 @@ idx_t ExpressionExecutor::Select(const Expression &expr, ExpressionState *state,
242
242
  }
243
243
 
244
244
  template <bool NO_NULL, bool HAS_TRUE_SEL, bool HAS_FALSE_SEL>
245
- static inline idx_t DefaultSelectLoop(const SelectionVector *bsel, uint8_t *__restrict bdata, ValidityMask &mask,
245
+ static inline idx_t DefaultSelectLoop(const SelectionVector *bsel, const uint8_t *__restrict bdata, ValidityMask &mask,
246
246
  const SelectionVector *sel, idx_t count, SelectionVector *true_sel,
247
247
  SelectionVector *false_sel) {
248
248
  idx_t true_count = 0, false_count = 0;
@@ -270,15 +270,15 @@ template <bool NO_NULL>
270
270
  static inline idx_t DefaultSelectSwitch(UnifiedVectorFormat &idata, const SelectionVector *sel, idx_t count,
271
271
  SelectionVector *true_sel, SelectionVector *false_sel) {
272
272
  if (true_sel && false_sel) {
273
- return DefaultSelectLoop<NO_NULL, true, true>(idata.sel, (uint8_t *)idata.data, idata.validity, sel, count,
274
- true_sel, false_sel);
273
+ return DefaultSelectLoop<NO_NULL, true, true>(idata.sel, UnifiedVectorFormat::GetData<uint8_t>(idata),
274
+ idata.validity, sel, count, true_sel, false_sel);
275
275
  } else if (true_sel) {
276
- return DefaultSelectLoop<NO_NULL, true, false>(idata.sel, (uint8_t *)idata.data, idata.validity, sel, count,
277
- true_sel, false_sel);
276
+ return DefaultSelectLoop<NO_NULL, true, false>(idata.sel, UnifiedVectorFormat::GetData<uint8_t>(idata),
277
+ idata.validity, sel, count, true_sel, false_sel);
278
278
  } else {
279
279
  D_ASSERT(false_sel);
280
- return DefaultSelectLoop<NO_NULL, false, true>(idata.sel, (uint8_t *)idata.data, idata.validity, sel, count,
281
- true_sel, false_sel);
280
+ return DefaultSelectLoop<NO_NULL, false, true>(idata.sel, UnifiedVectorFormat::GetData<uint8_t>(idata),
281
+ idata.validity, sel, count, true_sel, false_sel);
282
282
  }
283
283
  }
284
284
 
@@ -288,7 +288,7 @@ idx_t ExpressionExecutor::DefaultSelect(const Expression &expr, ExpressionState
288
288
  // resolve the true/false expression first
289
289
  // then use that to generate the selection vector
290
290
  bool intermediate_bools[STANDARD_VECTOR_SIZE];
291
- Vector intermediate(LogicalType::BOOLEAN, (data_ptr_t)intermediate_bools);
291
+ Vector intermediate(LogicalType::BOOLEAN, data_ptr_cast(intermediate_bools));
292
292
  Execute(expr, state, sel, count, intermediate);
293
293
 
294
294
  UnifiedVectorFormat idata;
@@ -125,7 +125,7 @@ static void TemplatedGenerateKeys(ArenaAllocator &allocator, Vector &input, idx_
125
125
  input.ToUnifiedFormat(count, idata);
126
126
 
127
127
  D_ASSERT(keys.size() >= count);
128
- auto input_data = (T *)idata.data;
128
+ auto input_data = UnifiedVectorFormat::GetData<T>(idata);
129
129
  for (idx_t i = 0; i < count; i++) {
130
130
  auto idx = idata.sel->get_index(i);
131
131
  if (idata.validity.RowIsValid(idx)) {
@@ -142,7 +142,7 @@ static void ConcatenateKeys(ArenaAllocator &allocator, Vector &input, idx_t coun
142
142
  UnifiedVectorFormat idata;
143
143
  input.ToUnifiedFormat(count, idata);
144
144
 
145
- auto input_data = (T *)idata.data;
145
+ auto input_data = UnifiedVectorFormat::GetData<T>(idata);
146
146
  for (idx_t i = 0; i < count; i++) {
147
147
  auto idx = idata.sel->get_index(i);
148
148
 
@@ -715,16 +715,16 @@ Node ART::Lookup(Node node, const ARTKey &key, idx_t depth) {
715
715
  // False (Otherwise)
716
716
  //===--------------------------------------------------------------------===//
717
717
 
718
- bool ART::SearchGreater(ARTIndexScanState *state, ARTKey &key, bool inclusive, idx_t max_count,
718
+ bool ART::SearchGreater(ARTIndexScanState &state, ARTKey &key, bool inclusive, idx_t max_count,
719
719
  vector<row_t> &result_ids) {
720
720
 
721
- Iterator *it = &state->iterator;
721
+ auto &it = state.iterator;
722
722
 
723
723
  // greater than scan: first set the iterator to the node at which we will start our scan by finding the lowest node
724
724
  // that satisfies our requirement
725
- if (!it->art) {
726
- it->art = this;
727
- if (!it->LowerBound(*tree, key, inclusive)) {
725
+ if (!it.art) {
726
+ it.art = this;
727
+ if (!it.LowerBound(*tree, key, inclusive)) {
728
728
  return true;
729
729
  }
730
730
  }
@@ -732,74 +732,72 @@ bool ART::SearchGreater(ARTIndexScanState *state, ARTKey &key, bool inclusive, i
732
732
  // after that we continue the scan; we don't need to check the bounds as any value following this value is
733
733
  // automatically bigger and hence satisfies our predicate
734
734
  ARTKey empty_key = ARTKey();
735
- return it->Scan(empty_key, max_count, result_ids, false);
735
+ return it.Scan(empty_key, max_count, result_ids, false);
736
736
  }
737
737
 
738
738
  //===--------------------------------------------------------------------===//
739
739
  // Less Than
740
740
  //===--------------------------------------------------------------------===//
741
741
 
742
- bool ART::SearchLess(ARTIndexScanState *state, ARTKey &upper_bound, bool inclusive, idx_t max_count,
742
+ bool ART::SearchLess(ARTIndexScanState &state, ARTKey &upper_bound, bool inclusive, idx_t max_count,
743
743
  vector<row_t> &result_ids) {
744
744
 
745
745
  if (!tree->IsSet()) {
746
746
  return true;
747
747
  }
748
748
 
749
- Iterator *it = &state->iterator;
749
+ auto &it = state.iterator;
750
750
 
751
- if (!it->art) {
752
- it->art = this;
751
+ if (!it.art) {
752
+ it.art = this;
753
753
  // first find the minimum value in the ART: we start scanning from this value
754
- it->FindMinimum(*tree);
754
+ it.FindMinimum(*tree);
755
755
  // early out min value higher than upper bound query
756
- if (it->cur_key > upper_bound) {
756
+ if (it.cur_key > upper_bound) {
757
757
  return true;
758
758
  }
759
759
  }
760
760
 
761
761
  // now continue the scan until we reach the upper bound
762
- return it->Scan(upper_bound, max_count, result_ids, inclusive);
762
+ return it.Scan(upper_bound, max_count, result_ids, inclusive);
763
763
  }
764
764
 
765
765
  //===--------------------------------------------------------------------===//
766
766
  // Closed Range Query
767
767
  //===--------------------------------------------------------------------===//
768
768
 
769
- bool ART::SearchCloseRange(ARTIndexScanState *state, ARTKey &lower_bound, ARTKey &upper_bound, bool left_inclusive,
769
+ bool ART::SearchCloseRange(ARTIndexScanState &state, ARTKey &lower_bound, ARTKey &upper_bound, bool left_inclusive,
770
770
  bool right_inclusive, idx_t max_count, vector<row_t> &result_ids) {
771
-
772
- Iterator *it = &state->iterator;
771
+ auto &it = state.iterator;
773
772
 
774
773
  // first find the first node that satisfies the left predicate
775
- if (!it->art) {
776
- it->art = this;
777
- if (!it->LowerBound(*tree, lower_bound, left_inclusive)) {
774
+ if (!it.art) {
775
+ it.art = this;
776
+ if (!it.LowerBound(*tree, lower_bound, left_inclusive)) {
778
777
  return true;
779
778
  }
780
779
  }
781
780
 
782
781
  // now continue the scan until we reach the upper bound
783
- return it->Scan(upper_bound, max_count, result_ids, right_inclusive);
782
+ return it.Scan(upper_bound, max_count, result_ids, right_inclusive);
784
783
  }
785
784
 
786
785
  bool ART::Scan(const Transaction &transaction, const DataTable &table, IndexScanState &table_state,
787
786
  const idx_t max_count, vector<row_t> &result_ids) {
788
-
789
- auto state = (ARTIndexScanState *)&table_state;
787
+ auto &state = table_state.Cast<ARTIndexScanState>();
790
788
  vector<row_t> row_ids;
791
789
  bool success;
792
790
 
793
791
  // FIXME: the key directly owning the data for a single key might be more efficient
794
- D_ASSERT(state->values[0].type().InternalType() == types[0]);
792
+ D_ASSERT(state.values[0].type().InternalType() == types[0]);
795
793
  ArenaAllocator arena_allocator(Allocator::Get(db));
796
- auto key = CreateKey(arena_allocator, types[0], state->values[0]);
794
+ auto key = CreateKey(arena_allocator, types[0], state.values[0]);
797
795
 
798
- if (state->values[1].IsNull()) {
796
+ if (state.values[1].IsNull()) {
799
797
 
800
798
  // single predicate
801
799
  lock_guard<mutex> l(lock);
802
- switch (state->expressions[0]) {
800
+ switch (state.expressions[0]) {
803
801
  case ExpressionType::COMPARE_EQUAL:
804
802
  success = SearchEqual(key, max_count, row_ids);
805
803
  break;
@@ -824,11 +822,11 @@ bool ART::Scan(const Transaction &transaction, const DataTable &table, IndexScan
824
822
  // two predicates
825
823
  lock_guard<mutex> l(lock);
826
824
 
827
- D_ASSERT(state->values[1].type().InternalType() == types[0]);
828
- auto upper_bound = CreateKey(arena_allocator, types[0], state->values[1]);
825
+ D_ASSERT(state.values[1].type().InternalType() == types[0]);
826
+ auto upper_bound = CreateKey(arena_allocator, types[0], state.values[1]);
829
827
 
830
- bool left_inclusive = state->expressions[0] == ExpressionType ::COMPARE_GREATERTHANOREQUALTO;
831
- bool right_inclusive = state->expressions[1] == ExpressionType ::COMPARE_LESSTHANOREQUALTO;
828
+ bool left_inclusive = state.expressions[0] == ExpressionType ::COMPARE_GREATERTHANOREQUALTO;
829
+ bool right_inclusive = state.expressions[1] == ExpressionType ::COMPARE_LESSTHANOREQUALTO;
832
830
  success = SearchCloseRange(state, key, upper_bound, left_inclusive, right_inclusive, max_count, row_ids);
833
831
  }
834
832
 
@@ -59,7 +59,7 @@ SwizzleablePointer FixedSizeAllocator::New() {
59
59
  buffers_with_free_space.insert(buffer_id);
60
60
 
61
61
  // set the bitmask
62
- ValidityMask mask((validity_t *)buffer);
62
+ ValidityMask mask(reinterpret_cast<validity_t *>(buffer));
63
63
  mask.SetAllValid(allocations_per_buffer);
64
64
  }
65
65
 
@@ -67,7 +67,7 @@ SwizzleablePointer FixedSizeAllocator::New() {
67
67
  D_ASSERT(!buffers_with_free_space.empty());
68
68
  auto buffer_id = (uint32_t)*buffers_with_free_space.begin();
69
69
 
70
- auto bitmask_ptr = (validity_t *)buffers[buffer_id].ptr;
70
+ auto bitmask_ptr = reinterpret_cast<validity_t *>(buffers[buffer_id].ptr);
71
71
  ValidityMask mask(bitmask_ptr);
72
72
  auto offset = GetOffset(mask, buffers[buffer_id].allocation_count);
73
73
 
@@ -81,8 +81,7 @@ SwizzleablePointer FixedSizeAllocator::New() {
81
81
  }
82
82
 
83
83
  void FixedSizeAllocator::Free(const SwizzleablePointer ptr) {
84
-
85
- auto bitmask_ptr = (validity_t *)buffers[ptr.buffer_id].ptr;
84
+ auto bitmask_ptr = reinterpret_cast<validity_t *>(buffers[ptr.buffer_id].ptr);
86
85
  ValidityMask mask(bitmask_ptr);
87
86
  D_ASSERT(!mask.RowIsValid(ptr.offset));
88
87
  mask.SetValid(ptr.offset);
@@ -102,9 +102,9 @@ void JoinHashTable::ApplyBitmask(Vector &hashes, const SelectionVector &sel, idx
102
102
  UnifiedVectorFormat hdata;
103
103
  hashes.ToUnifiedFormat(count, hdata);
104
104
 
105
- auto hash_data = (hash_t *)hdata.data;
105
+ auto hash_data = UnifiedVectorFormat::GetData<hash_t>(hdata);
106
106
  auto result_data = FlatVector::GetData<data_ptr_t *>(pointers);
107
- auto main_ht = (data_ptr_t *)hash_map.get();
107
+ auto main_ht = reinterpret_cast<data_ptr_t *>(hash_map.get());
108
108
  for (idx_t i = 0; i < count; i++) {
109
109
  auto rindex = sel.get_index(i);
110
110
  auto hindex = hdata.sel->get_index(rindex);
@@ -269,7 +269,7 @@ void JoinHashTable::InsertHashes(Vector &hashes, idx_t count, data_ptr_t key_loc
269
269
  hashes.Flatten(count);
270
270
  D_ASSERT(hashes.GetVectorType() == VectorType::FLAT_VECTOR);
271
271
 
272
- auto pointers = (atomic<data_ptr_t> *)hash_map.get();
272
+ auto pointers = reinterpret_cast<atomic<data_ptr_t> *>(hash_map.get());
273
273
  auto indices = FlatVector::GetData<hash_t>(hashes);
274
274
 
275
275
  if (parallel) {
@@ -300,7 +300,7 @@ void JoinHashTable::InitializePointerTable() {
300
300
  D_ASSERT(hash_map.GetSize() == capacity * sizeof(data_ptr_t));
301
301
 
302
302
  // initialize HT with all-zero entries
303
- std::fill_n((data_ptr_t *)hash_map.get(), capacity, nullptr);
303
+ std::fill_n(reinterpret_cast<data_ptr_t *>(hash_map.get()), capacity, nullptr);
304
304
 
305
305
  bitmask = capacity - 1;
306
306
  }
@@ -24,8 +24,8 @@ struct InitialNestedLoopJoin {
24
24
  left.ToUnifiedFormat(left_size, left_data);
25
25
  right.ToUnifiedFormat(right_size, right_data);
26
26
 
27
- auto ldata = (T *)left_data.data;
28
- auto rdata = (T *)right_data.data;
27
+ auto ldata = UnifiedVectorFormat::GetData<T>(left_data);
28
+ auto rdata = UnifiedVectorFormat::GetData<T>(right_data);
29
29
  idx_t result_count = 0;
30
30
  for (; rpos < right_size; rpos++) {
31
31
  idx_t right_position = right_data.sel->get_index(rpos);
@@ -62,8 +62,8 @@ struct RefineNestedLoopJoin {
62
62
  // refine lvector and rvector based on matches of subsequent conditions (in case there are multiple conditions
63
63
  // in the join)
64
64
  D_ASSERT(current_match_count > 0);
65
- auto ldata = (T *)left_data.data;
66
- auto rdata = (T *)right_data.data;
65
+ auto ldata = UnifiedVectorFormat::GetData<T>(left_data);
66
+ auto rdata = UnifiedVectorFormat::GetData<T>(right_data);
67
67
  idx_t result_count = 0;
68
68
  for (idx_t i = 0; i < current_match_count; i++) {
69
69
  auto lidx = lvector.get_index(i);
@@ -10,8 +10,8 @@ static void TemplatedMarkJoin(Vector &left, Vector &right, idx_t lcount, idx_t r
10
10
  left.ToUnifiedFormat(lcount, left_data);
11
11
  right.ToUnifiedFormat(rcount, right_data);
12
12
 
13
- auto ldata = (T *)left_data.data;
14
- auto rdata = (T *)right_data.data;
13
+ auto ldata = UnifiedVectorFormat::GetData<T>(left_data);
14
+ auto rdata = UnifiedVectorFormat::GetData<T>(right_data);
15
15
  for (idx_t i = 0; i < lcount; i++) {
16
16
  if (found_match[i]) {
17
17
  continue;
@@ -124,7 +124,7 @@ struct FindMatchingAggregate {
124
124
  if (other.children.size() != aggr.children.size()) {
125
125
  return false;
126
126
  }
127
- if (!Expression::Equals(aggr.filter.get(), other.filter.get())) {
127
+ if (!Expression::Equals(aggr.filter, other.filter)) {
128
128
  return false;
129
129
  }
130
130
  for (idx_t i = 0; i < aggr.children.size(); i++) {
@@ -186,7 +186,7 @@ unique_ptr<GlobalSourceState> PhysicalPerfectHashAggregate::GetGlobalSourceState
186
186
 
187
187
  SourceResultType PhysicalPerfectHashAggregate::GetData(ExecutionContext &context, DataChunk &chunk,
188
188
  OperatorSourceInput &input) const {
189
- auto &state = (PerfectHashAggregateState &)input.global_state;
189
+ auto &state = input.global_state.Cast<PerfectHashAggregateState>();
190
190
  auto &gstate = sink_state->Cast<PerfectHashAggregateGlobalState>();
191
191
 
192
192
  gstate.ht->Scan(state.ht_scan_position, chunk);
@@ -26,7 +26,7 @@ class StreamingWindowState : public OperatorState {
26
26
  public:
27
27
  using StateBuffer = vector<data_t>;
28
28
 
29
- StreamingWindowState() : initialized(false), statev(LogicalType::POINTER, (data_ptr_t)&state_ptr) {
29
+ StreamingWindowState() : initialized(false), statev(LogicalType::POINTER, data_ptr_cast(&state_ptr)) {
30
30
  }
31
31
 
32
32
  ~StreamingWindowState() override {
@@ -109,7 +109,7 @@ unique_ptr<OperatorState> PhysicalStreamingWindow::GetOperatorState(ExecutionCon
109
109
  OperatorResultType PhysicalStreamingWindow::Execute(ExecutionContext &context, DataChunk &input, DataChunk &chunk,
110
110
  GlobalOperatorState &gstate_p, OperatorState &state_p) const {
111
111
  auto &gstate = gstate_p.Cast<StreamingWindowGlobalState>();
112
- auto &state = (StreamingWindowState &)state_p;
112
+ auto &state = state_p.Cast<StreamingWindowState>();
113
113
  if (!state.initialized) {
114
114
  state.Initialize(context.client, input, select_list);
115
115
  }
@@ -55,7 +55,7 @@ struct AggregateState {
55
55
  if (!destructors[i]) {
56
56
  continue;
57
57
  }
58
- Vector state_vector(Value::POINTER((uintptr_t)aggregates[i].get()));
58
+ Vector state_vector(Value::POINTER(CastPointerToValue(aggregates[i].get())));
59
59
  state_vector.SetVectorType(VectorType::FLAT_VECTOR);
60
60
 
61
61
  AggregateInputData aggr_input_data(bind_data[i], Allocator::DefaultAllocator());
@@ -332,8 +332,8 @@ void PhysicalUngroupedAggregate::Combine(ExecutionContext &context, GlobalSinkSt
332
332
  continue;
333
333
  }
334
334
 
335
- Vector source_state(Value::POINTER((uintptr_t)source.state.aggregates[aggr_idx].get()));
336
- Vector dest_state(Value::POINTER((uintptr_t)gstate.state.aggregates[aggr_idx].get()));
335
+ Vector source_state(Value::POINTER(CastPointerToValue(source.state.aggregates[aggr_idx].get())));
336
+ Vector dest_state(Value::POINTER(CastPointerToValue(gstate.state.aggregates[aggr_idx].get())));
337
337
 
338
338
  AggregateInputData aggr_input_data(aggregate.bind_info.get(), Allocator::DefaultAllocator());
339
339
  aggregate.function.combine(source_state, dest_state, aggr_input_data, 1);
@@ -565,7 +565,7 @@ SourceResultType PhysicalUngroupedAggregate::GetData(ExecutionContext &context,
565
565
  for (idx_t aggr_idx = 0; aggr_idx < aggregates.size(); aggr_idx++) {
566
566
  auto &aggregate = aggregates[aggr_idx]->Cast<BoundAggregateExpression>();
567
567
 
568
- Vector state_vector(Value::POINTER((uintptr_t)gstate.state.aggregates[aggr_idx].get()));
568
+ Vector state_vector(Value::POINTER(CastPointerToValue(gstate.state.aggregates[aggr_idx].get())));
569
569
  AggregateInputData aggr_input_data(aggregate.bind_info.get(), Allocator::DefaultAllocator());
570
570
  aggregate.function.finalize(state_vector, aggr_input_data, chunk.data[aggr_idx], 1, 0);
571
571
  }
@@ -41,7 +41,7 @@ unique_ptr<OperatorState> PhysicalFilter::GetOperatorState(ExecutionContext &con
41
41
 
42
42
  OperatorResultType PhysicalFilter::ExecuteInternal(ExecutionContext &context, DataChunk &input, DataChunk &chunk,
43
43
  GlobalOperatorState &gstate, OperatorState &state_p) const {
44
- auto &state = (FilterState &)state_p;
44
+ auto &state = state_p.Cast<FilterState>();
45
45
  idx_t result_count = state.executor.SelectExpression(input, state.sel);
46
46
  if (result_count == input.size()) {
47
47
  // nothing was filtered: skip adding any selection vectors
@@ -63,7 +63,7 @@ void OuterJoinMarker::ConstructLeftJoinResult(DataChunk &left, DataChunk &result
63
63
  }
64
64
 
65
65
  idx_t OuterJoinMarker::MaxThreads() const {
66
- return count / (STANDARD_VECTOR_SIZE * 10);
66
+ return count / (STANDARD_VECTOR_SIZE * 10ULL);
67
67
  }
68
68
 
69
69
  void OuterJoinMarker::InitializeScan(ColumnDataCollection &data, OuterJoinGlobalScanState &gstate) {
@@ -168,7 +168,7 @@ unique_ptr<OperatorState> PerfectHashJoinExecutor::GetOperatorState(ExecutionCon
168
168
 
169
169
  OperatorResultType PerfectHashJoinExecutor::ProbePerfectHashTable(ExecutionContext &context, DataChunk &input,
170
170
  DataChunk &result, OperatorState &state_p) {
171
- auto &state = (PerfectHashJoinState &)state_p;
171
+ auto &state = state_p.Cast<PerfectHashJoinState>();
172
172
  // keeps track of how many probe keys have a match
173
173
  idx_t probe_sel_count = 0;
174
174
 
@@ -305,7 +305,7 @@ void AsOfLocalState::ResolveJoinKeys(DataChunk &input) {
305
305
 
306
306
  DataChunk payload_chunk;
307
307
  payload_chunk.InitializeEmpty({LogicalType::UINTEGER});
308
- FlatVector::SetData(payload_chunk.data[0], (data_ptr_t)lhs_sel.data());
308
+ FlatVector::SetData(payload_chunk.data[0], data_ptr_cast(lhs_sel.data()));
309
309
  payload_chunk.SetCardinality(lhs_valid);
310
310
  local_sort.SinkChunk(lhs_keys, payload_chunk);
311
311
 
@@ -338,7 +338,7 @@ void AsOfLocalState::ResolveJoin(DataChunk &input, bool *found_match, std::pair<
338
338
  // But they may be constant, so unify.
339
339
  UnifiedVectorFormat bin_unified;
340
340
  bin_vector.ToUnifiedFormat(lhs_valid, bin_unified);
341
- const auto bins = (hash_t *)bin_unified.data;
341
+ const auto bins = UnifiedVectorFormat::GetData<hash_t>(bin_unified);
342
342
 
343
343
  hash_t prev_bin = global_partition.bin_groups.size();
344
344
  optional_ptr<PartitionGlobalHashGroup> hash_group;
@@ -111,7 +111,7 @@ OperatorResultType PhysicalBlockwiseNLJoin::ExecuteInternal(ExecutionContext &co
111
111
  DataChunk &chunk, GlobalOperatorState &gstate_p,
112
112
  OperatorState &state_p) const {
113
113
  D_ASSERT(input.size() > 0);
114
- auto &state = (BlockwiseNLJoinState &)state_p;
114
+ auto &state = state_p.Cast<BlockwiseNLJoinState>();
115
115
  auto &gstate = sink_state->Cast<BlockwiseNLJoinGlobalState>();
116
116
 
117
117
  if (gstate.right_chunks.Count() == 0) {
@@ -244,7 +244,7 @@ unique_ptr<GlobalSourceState> PhysicalBlockwiseNLJoin::GetGlobalSourceState(Clie
244
244
 
245
245
  unique_ptr<LocalSourceState> PhysicalBlockwiseNLJoin::GetLocalSourceState(ExecutionContext &context,
246
246
  GlobalSourceState &gstate) const {
247
- return make_uniq<BlockwiseNLJoinLocalScanState>(*this, (BlockwiseNLJoinGlobalScanState &)gstate);
247
+ return make_uniq<BlockwiseNLJoinLocalScanState>(*this, gstate.Cast<BlockwiseNLJoinGlobalScanState>());
248
248
  }
249
249
 
250
250
  SourceResultType PhysicalBlockwiseNLJoin::GetData(ExecutionContext &context, DataChunk &chunk,
@@ -252,8 +252,8 @@ SourceResultType PhysicalBlockwiseNLJoin::GetData(ExecutionContext &context, Dat
252
252
  D_ASSERT(IsRightOuterJoin(join_type));
253
253
  // check if we need to scan any unmatched tuples from the RHS for the full/right outer join
254
254
  auto &sink = sink_state->Cast<BlockwiseNLJoinGlobalState>();
255
- auto &gstate = (BlockwiseNLJoinGlobalScanState &)input.global_state;
256
- auto &lstate = (BlockwiseNLJoinLocalScanState &)input.local_state;
255
+ auto &gstate = input.global_state.Cast<BlockwiseNLJoinGlobalScanState>();
256
+ auto &lstate = input.local_state.Cast<BlockwiseNLJoinLocalScanState>();
257
257
 
258
258
  // if the LHS is exhausted in a FULL/RIGHT OUTER JOIN, we scan chunks we still need to output
259
259
  sink.right_outer.Scan(gstate.scan_state, lstate.scan_state, chunk);
@@ -67,7 +67,7 @@ PhysicalIndexJoin::PhysicalIndexJoin(LogicalOperator &op, unique_ptr<PhysicalOpe
67
67
  left_projection_map(left_projection_map_p), right_projection_map(std::move(right_projection_map_p)),
68
68
  index(index_p), conditions(std::move(cond)), join_type(join_type), lhs_first(lhs_first) {
69
69
  D_ASSERT(right->type == PhysicalOperatorType::TABLE_SCAN);
70
- auto &tbl_scan = (PhysicalTableScan &)*right;
70
+ auto &tbl_scan = right->Cast<PhysicalTableScan>();
71
71
  column_ids = std::move(column_ids_p);
72
72
  children.push_back(std::move(left));
73
73
  children.push_back(std::move(right));
@@ -109,7 +109,7 @@ unique_ptr<OperatorState> PhysicalIndexJoin::GetOperatorState(ExecutionContext &
109
109
 
110
110
  void PhysicalIndexJoin::Output(ExecutionContext &context, DataChunk &input, DataChunk &chunk,
111
111
  OperatorState &state_p) const {
112
- auto &phy_tbl_scan = (PhysicalTableScan &)*children[1];
112
+ auto &phy_tbl_scan = children[1]->Cast<PhysicalTableScan>();
113
113
  auto &bind_tbl = phy_tbl_scan.bind_data->Cast<TableScanBindData>();
114
114
  auto &transaction = DuckTransaction::Get(context.client, bind_tbl.table.catalog);
115
115
  auto &state = state_p.Cast<IndexJoinOperatorState>();
@@ -139,7 +139,7 @@ void PhysicalIndexJoin::Output(ExecutionContext &context, DataChunk &input, Data
139
139
  }
140
140
  state.rhs_chunk.Reset();
141
141
  state.fetch_state = make_uniq<ColumnFetchState>();
142
- Vector row_ids(LogicalType::ROW_TYPE, (data_ptr_t)&fetch_rows[0]);
142
+ Vector row_ids(LogicalType::ROW_TYPE, data_ptr_cast(&fetch_rows[0]));
143
143
  tbl.Fetch(transaction, state.rhs_chunk, fetch_ids, row_ids, output_sel_idx, *state.fetch_state);
144
144
  }
145
145