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
@@ -6,6 +6,7 @@
6
6
  #include "duckdb/planner/expression_iterator.hpp"
7
7
  #include "duckdb/storage/statistics/base_statistics.hpp"
8
8
  #include "duckdb/planner/expression/list.hpp"
9
+ #include "duckdb/parser/expression_util.hpp"
9
10
 
10
11
  namespace duckdb {
11
12
 
@@ -165,4 +166,18 @@ unique_ptr<Expression> Expression::Deserialize(Deserializer &source, PlanDeseria
165
166
  return result;
166
167
  }
167
168
 
169
+ bool Expression::Equals(const unique_ptr<Expression> &left, const unique_ptr<Expression> &right) {
170
+ if (left.get() == right.get()) {
171
+ return true;
172
+ }
173
+ if (!left || !right) {
174
+ return false;
175
+ }
176
+ return left->Equals(*right);
177
+ }
178
+
179
+ bool Expression::ListEquals(const vector<unique_ptr<Expression>> &left, const vector<unique_ptr<Expression>> &right) {
180
+ return ExpressionUtil::ListEquals(left, right);
181
+ }
182
+
168
183
  } // namespace duckdb
@@ -62,8 +62,8 @@ idx_t BaseSelectBinder::TryBindGroup(ParsedExpression &expr, idx_t depth) {
62
62
  }
63
63
  #ifdef DEBUG
64
64
  for (auto entry : info.map) {
65
- D_ASSERT(!entry.first.get().Equals(&expr));
66
- D_ASSERT(!expr.Equals(&entry.first.get()));
65
+ D_ASSERT(!entry.first.get().Equals(expr));
66
+ D_ASSERT(!expr.Equals(entry.first.get()));
67
67
  }
68
68
  #endif
69
69
  return DConstants::INVALID_INDEX;
@@ -230,12 +230,12 @@ void ExpressionIterator::EnumerateQueryNodeChildren(BoundQueryNode &node,
230
230
  for (idx_t i = 0; i < node.modifiers.size(); i++) {
231
231
  switch (node.modifiers[i]->type) {
232
232
  case ResultModifierType::DISTINCT_MODIFIER:
233
- for (auto &expr : ((BoundDistinctModifier &)*node.modifiers[i]).target_distincts) {
233
+ for (auto &expr : node.modifiers[i]->Cast<BoundDistinctModifier>().target_distincts) {
234
234
  EnumerateExpression(expr, callback);
235
235
  }
236
236
  break;
237
237
  case ResultModifierType::ORDER_MODIFIER:
238
- for (auto &order : ((BoundOrderModifier &)*node.modifiers[i]).orders) {
238
+ for (auto &order : node.modifiers[i]->Cast<BoundOrderModifier>().orders) {
239
239
  EnumerateExpression(order.expression, callback);
240
240
  }
241
241
  break;
@@ -35,7 +35,7 @@ bool ConjunctionOrFilter::Equals(const TableFilter &other_p) const {
35
35
  if (!ConjunctionFilter::Equals(other_p)) {
36
36
  return false;
37
37
  }
38
- auto &other = (ConjunctionOrFilter &)other_p;
38
+ auto &other = other_p.Cast<ConjunctionOrFilter>();
39
39
  if (other.child_filters.size() != child_filters.size()) {
40
40
  return false;
41
41
  }
@@ -90,7 +90,7 @@ bool ConjunctionAndFilter::Equals(const TableFilter &other_p) const {
90
90
  if (!ConjunctionFilter::Equals(other_p)) {
91
91
  return false;
92
92
  }
93
- auto &other = (ConjunctionAndFilter &)other_p;
93
+ auto &other = other_p.Cast<ConjunctionAndFilter>();
94
94
  if (other.child_filters.size() != child_filters.size()) {
95
95
  return false;
96
96
  }
@@ -39,7 +39,7 @@ bool ConstantFilter::Equals(const TableFilter &other_p) const {
39
39
  if (!TableFilter::Equals(other_p)) {
40
40
  return false;
41
41
  }
42
- auto &other = (ConstantFilter &)other_p;
42
+ auto &other = other_p.Cast<ConstantFilter>();
43
43
  return other.comparison_type == comparison_type && other.constant == constant;
44
44
  }
45
45
 
@@ -109,13 +109,12 @@ void LogicalOperator::Verify(ClientContext &context) {
109
109
  // copy should be identical to original
110
110
  D_ASSERT(expressions[expr_idx]->ToString() == copy->ToString());
111
111
  D_ASSERT(original_hash == copy_hash);
112
- D_ASSERT(Expression::Equals(expressions[expr_idx].get(), copy.get()));
112
+ D_ASSERT(Expression::Equals(expressions[expr_idx], copy));
113
113
 
114
- D_ASSERT(!Expression::Equals(expressions[expr_idx].get(), nullptr));
115
114
  for (idx_t other_idx = 0; other_idx < expr_idx; other_idx++) {
116
115
  // comparison with other expressions
117
116
  auto other_hash = expressions[other_idx]->Hash();
118
- bool expr_equal = Expression::Equals(expressions[expr_idx].get(), expressions[other_idx].get());
117
+ bool expr_equal = Expression::Equals(expressions[expr_idx], expressions[other_idx]);
119
118
  if (original_hash != other_hash) {
120
119
  // if the hashes are not equal the expressions should not be equal either
121
120
  D_ASSERT(!expr_equal);
@@ -144,7 +143,7 @@ void LogicalOperator::Verify(ClientContext &context) {
144
143
  auto deserialized_expression = Expression::Deserialize(deserializer, state);
145
144
  // FIXME: expressions might not be equal yet because of statistics propagation
146
145
  continue;
147
- D_ASSERT(Expression::Equals(expressions[expr_idx].get(), deserialized_expression.get()));
146
+ D_ASSERT(Expression::Equals(expressions[expr_idx], deserialized_expression));
148
147
  D_ASSERT(expressions[expr_idx]->Hash() == deserialized_expression->Hash());
149
148
  }
150
149
  D_ASSERT(!ToString().empty());
@@ -97,7 +97,7 @@ void LogicalOperatorVisitor::EnumerateExpressions(LogicalOperator &op,
97
97
  break;
98
98
  }
99
99
  case LogicalOperatorType::LOGICAL_LIMIT_PERCENT: {
100
- auto &limit = (LogicalLimitPercent &)op;
100
+ auto &limit = op.Cast<LogicalLimitPercent>();
101
101
  if (limit.limit) {
102
102
  callback(&limit.limit);
103
103
  }
@@ -14,7 +14,7 @@ void TableFilterSet::PushFilter(idx_t column_index, unique_ptr<TableFilter> filt
14
14
  } else {
15
15
  // there is already a filter: AND it together
16
16
  if (entry->second->filter_type == TableFilterType::CONJUNCTION_AND) {
17
- auto &and_filter = (ConjunctionAndFilter &)*entry->second;
17
+ auto &and_filter = entry->second->Cast<ConjunctionAndFilter>();
18
18
  and_filter.child_filters.push_back(std::move(filter));
19
19
  } else {
20
20
  auto and_filter = make_uniq<ConjunctionAndFilter>();
@@ -31,7 +31,7 @@ struct ArenaAllocatorData : public PrivateAllocatorData {
31
31
  };
32
32
 
33
33
  static data_ptr_t ArenaAllocatorAllocate(PrivateAllocatorData *private_data, idx_t size) {
34
- auto &allocator_data = (ArenaAllocatorData &)*private_data;
34
+ auto &allocator_data = private_data->Cast<ArenaAllocatorData>();
35
35
  return allocator_data.allocator.Allocate(size);
36
36
  }
37
37
 
@@ -41,7 +41,7 @@ static void ArenaAllocatorFree(PrivateAllocatorData *, data_ptr_t, idx_t) {
41
41
 
42
42
  static data_ptr_t ArenaAllocateReallocate(PrivateAllocatorData *private_data, data_ptr_t pointer, idx_t old_size,
43
43
  idx_t size) {
44
- auto &allocator_data = (ArenaAllocatorData &)*private_data;
44
+ auto &allocator_data = private_data->Cast<ArenaAllocatorData>();
45
45
  return allocator_data.allocator.Reallocate(pointer, old_size, size);
46
46
  }
47
47
  //===--------------------------------------------------------------------===//
@@ -49,7 +49,7 @@ unique_ptr<Block> AllocateBlock(BlockManager &block_manager, unique_ptr<FileBuff
49
49
  // re-usable buffer: re-use it
50
50
  if (reusable_buffer->type == FileBufferType::BLOCK) {
51
51
  // we can reuse the buffer entirely
52
- auto &block = (Block &)*reusable_buffer;
52
+ auto &block = reinterpret_cast<Block &>(*reusable_buffer);
53
53
  block.id = block_id;
54
54
  return unique_ptr_cast<FileBuffer, Block>(std::move(reusable_buffer));
55
55
  }
@@ -33,8 +33,8 @@ void WriteOverflowStringsToDisk::WriteString(string_t string, block_id_t &result
33
33
  size_t compressed_size = 0;
34
34
  compressed_size = s.MaxCompressedLength(uncompressed_size);
35
35
  auto compressed_buf = make_unsafe_uniq_array<data_t>(compressed_size);
36
- s.Compress((const char *)string.GetData(), uncompressed_size, (char *)compressed_buf.get(), &compressed_size);
37
- string_t compressed_string((const char *)compressed_buf.get(), compressed_size);
36
+ s.Compress(string.GetData(), uncompressed_size, char_ptr_cast(compressed_buf.get()), &compressed_size);
37
+ string_t compressed_string(const_char_ptr_cast(compressed_buf.get()), compressed_size);
38
38
 
39
39
  // store sizes
40
40
  auto data_ptr = handle.Ptr();
@@ -41,7 +41,7 @@ SingleFileCheckpointWriter::SingleFileCheckpointWriter(AttachedDatabase &db, Blo
41
41
  }
42
42
 
43
43
  BlockManager &SingleFileCheckpointWriter::GetBlockManager() {
44
- auto &storage_manager = (SingleFileStorageManager &)db.GetStorageManager();
44
+ auto &storage_manager = db.GetStorageManager().Cast<SingleFileStorageManager>();
45
45
  return *storage_manager.block_manager;
46
46
  }
47
47
 
@@ -55,7 +55,7 @@ unique_ptr<TableDataWriter> SingleFileCheckpointWriter::GetTableDataWriter(Table
55
55
 
56
56
  void SingleFileCheckpointWriter::CreateCheckpoint() {
57
57
  auto &config = DBConfig::Get(db);
58
- auto &storage_manager = (SingleFileStorageManager &)db.GetStorageManager();
58
+ auto &storage_manager = db.GetStorageManager().Cast<SingleFileStorageManager>();
59
59
  if (storage_manager.InMemory()) {
60
60
  return;
61
61
  }
@@ -73,7 +73,7 @@ void SingleFileCheckpointWriter::CreateCheckpoint() {
73
73
 
74
74
  vector<reference<SchemaCatalogEntry>> schemas;
75
75
  // we scan the set of committed schemas
76
- auto &catalog = (DuckCatalog &)Catalog::GetCatalog(db);
76
+ auto &catalog = Catalog::GetCatalog(db).Cast<DuckCatalog>();
77
77
  catalog.ScanSchemas([&](SchemaCatalogEntry &entry) { schemas.push_back(entry); });
78
78
  // write the actual data into the database
79
79
  // write the amount of schemas
@@ -68,7 +68,7 @@ static bitpacking_metadata_encoded_t EncodeMeta(bitpacking_metadata_t metadata)
68
68
  }
69
69
  static bitpacking_metadata_t DecodeMeta(bitpacking_metadata_encoded_t *metadata_encoded) {
70
70
  bitpacking_metadata_t metadata;
71
- metadata.mode = Load<BitpackingMode>((data_ptr_t)(metadata_encoded) + 3);
71
+ metadata.mode = Load<BitpackingMode>(data_ptr_cast(metadata_encoded) + 3);
72
72
  metadata.offset = *metadata_encoded & 0x00FFFFFF;
73
73
  return metadata;
74
74
  }
@@ -324,7 +324,7 @@ bool BitpackingAnalyze(AnalyzeState &state, Vector &input, idx_t count) {
324
324
  UnifiedVectorFormat vdata;
325
325
  input.ToUnifiedFormat(count, vdata);
326
326
 
327
- auto data = (T *)vdata.data;
327
+ auto data = UnifiedVectorFormat::GetData<T>(vdata);
328
328
  for (idx_t i = 0; i < count; i++) {
329
329
  auto idx = vdata.sel->get_index(i);
330
330
  if (!analyze_state.state.template Update<EmptyBitpackingWriter>(data[idx], vdata.validity.RowIsValid(idx))) {
@@ -482,7 +482,7 @@ public:
482
482
  }
483
483
 
484
484
  void Append(UnifiedVectorFormat &vdata, idx_t count) {
485
- auto data = (T *)vdata.data;
485
+ auto data = UnifiedVectorFormat::GetData<T>(vdata);
486
486
 
487
487
  for (idx_t i = 0; i < count; i++) {
488
488
  auto idx = vdata.sel->get_index(i);
@@ -690,7 +690,7 @@ public:
690
690
  idx_t decompress_offset = current_group_offset - extra_count;
691
691
  bool skip_sign_extension = true;
692
692
 
693
- BitpackingPrimitives::UnPackBuffer<T>((data_ptr_t)decompression_buffer,
693
+ BitpackingPrimitives::UnPackBuffer<T>(data_ptr_cast(decompression_buffer),
694
694
  current_group_ptr + decompress_offset, decompress_count,
695
695
  current_width, skip_sign_extension);
696
696
 
@@ -795,11 +795,11 @@ void BitpackingScanPartial(ColumnSegment &segment, ColumnScanState &state, idx_t
795
795
 
796
796
  if (to_scan == BitpackingPrimitives::BITPACKING_ALGORITHM_GROUP_SIZE && offset_in_compression_group == 0) {
797
797
  // Decompress directly into result vector
798
- BitpackingPrimitives::UnPackBlock<T>((data_ptr_t)current_result_ptr, decompression_group_start_pointer,
798
+ BitpackingPrimitives::UnPackBlock<T>(data_ptr_cast(current_result_ptr), decompression_group_start_pointer,
799
799
  scan_state.current_width, skip_sign_extend);
800
800
  } else {
801
801
  // Decompress compression algorithm to buffer
802
- BitpackingPrimitives::UnPackBlock<T>((data_ptr_t)scan_state.decompression_buffer,
802
+ BitpackingPrimitives::UnPackBlock<T>(data_ptr_cast(scan_state.decompression_buffer),
803
803
  decompression_group_start_pointer, scan_state.current_width,
804
804
  skip_sign_extend);
805
805
 
@@ -860,8 +860,8 @@ void BitpackingFetchRow(ColumnSegment &segment, ColumnFetchState &state, row_t r
860
860
  D_ASSERT(scan_state.current_group.mode == BitpackingMode::FOR ||
861
861
  scan_state.current_group.mode == BitpackingMode::DELTA_FOR);
862
862
 
863
- BitpackingPrimitives::UnPackBlock<T>((data_ptr_t)scan_state.decompression_buffer, decompression_group_start_pointer,
864
- scan_state.current_width, skip_sign_extend);
863
+ BitpackingPrimitives::UnPackBlock<T>(data_ptr_cast(scan_state.decompression_buffer),
864
+ decompression_group_start_pointer, scan_state.current_width, skip_sign_extend);
865
865
 
866
866
  *current_result_ptr = *(T *)(scan_state.decompression_buffer + offset_in_compression_group);
867
867
  *current_result_ptr += scan_state.current_frame_of_reference;
@@ -18,7 +18,7 @@ public:
18
18
  bool UpdateState(Vector &scan_vector, idx_t count) {
19
19
  UnifiedVectorFormat vdata;
20
20
  scan_vector.ToUnifiedFormat(count, vdata);
21
- auto data = (string_t *)vdata.data;
21
+ auto data = UnifiedVectorFormat::GetData<string_t>(vdata);
22
22
  Verify();
23
23
 
24
24
  for (idx_t i = 0; i < count; i++) {
@@ -274,7 +274,7 @@ public:
274
274
 
275
275
  // calculate ptr and offsets
276
276
  auto base_ptr = handle.Ptr();
277
- auto header_ptr = (dictionary_compression_header_t *)base_ptr;
277
+ auto header_ptr = reinterpret_cast<dictionary_compression_header_t *>(base_ptr);
278
278
  auto compressed_selection_buffer_offset = DictionaryCompressionStorage::DICTIONARY_HEADER_SIZE;
279
279
  auto index_buffer_offset = compressed_selection_buffer_offset + compressed_selection_buffer_size;
280
280
 
@@ -287,9 +287,9 @@ public:
287
287
  memcpy(base_ptr + index_buffer_offset, index_buffer.data(), index_buffer_size);
288
288
 
289
289
  // Store sizes and offsets in segment header
290
- Store<uint32_t>(index_buffer_offset, (data_ptr_t)&header_ptr->index_buffer_offset);
291
- Store<uint32_t>(index_buffer.size(), (data_ptr_t)&header_ptr->index_buffer_count);
292
- Store<uint32_t>((uint32_t)current_width, (data_ptr_t)&header_ptr->bitpacking_width);
290
+ Store<uint32_t>(index_buffer_offset, data_ptr_cast(&header_ptr->index_buffer_offset));
291
+ Store<uint32_t>(index_buffer.size(), data_ptr_cast(&header_ptr->index_buffer_count));
292
+ Store<uint32_t>((uint32_t)current_width, data_ptr_cast(&header_ptr->bitpacking_width));
293
293
 
294
294
  D_ASSERT(current_width == BitpackingPrimitives::MinimumBitWidth(index_buffer.size() - 1));
295
295
  D_ASSERT(DictionaryCompressionStorage::HasEnoughSpace(current_segment->count, index_buffer.size(),
@@ -391,12 +391,12 @@ unique_ptr<AnalyzeState> DictionaryCompressionStorage::StringInitAnalyze(ColumnD
391
391
  }
392
392
 
393
393
  bool DictionaryCompressionStorage::StringAnalyze(AnalyzeState &state_p, Vector &input, idx_t count) {
394
- auto &state = (DictionaryCompressionAnalyzeState &)state_p;
394
+ auto &state = state_p.Cast<DictionaryCompressionAnalyzeState>();
395
395
  return state.analyze_state->UpdateState(input, count);
396
396
  }
397
397
 
398
398
  idx_t DictionaryCompressionStorage::StringFinalAnalyze(AnalyzeState &state_p) {
399
- auto &analyze_state = (DictionaryCompressionAnalyzeState &)state_p;
399
+ auto &analyze_state = state_p.Cast<DictionaryCompressionAnalyzeState>();
400
400
  auto &state = *analyze_state.analyze_state;
401
401
 
402
402
  auto width = BitpackingPrimitives::MinimumBitWidth(state.current_unique_count + 1);
@@ -415,12 +415,12 @@ unique_ptr<CompressionState> DictionaryCompressionStorage::InitCompression(Colum
415
415
  }
416
416
 
417
417
  void DictionaryCompressionStorage::Compress(CompressionState &state_p, Vector &scan_vector, idx_t count) {
418
- auto &state = (DictionaryCompressionCompressState &)state_p;
418
+ auto &state = state_p.Cast<DictionaryCompressionCompressState>();
419
419
  state.UpdateState(scan_vector, count);
420
420
  }
421
421
 
422
422
  void DictionaryCompressionStorage::FinalizeCompress(CompressionState &state_p) {
423
- auto &state = (DictionaryCompressionCompressState &)state_p;
423
+ auto &state = state_p.Cast<DictionaryCompressionCompressState>();
424
424
  state.Flush(true);
425
425
  }
426
426
 
@@ -444,12 +444,12 @@ unique_ptr<SegmentScanState> DictionaryCompressionStorage::StringInitScan(Column
444
444
 
445
445
  // Load header values
446
446
  auto dict = DictionaryCompressionStorage::GetDictionary(segment, state->handle);
447
- auto header_ptr = (dictionary_compression_header_t *)baseptr;
448
- auto index_buffer_offset = Load<uint32_t>((data_ptr_t)&header_ptr->index_buffer_offset);
449
- auto index_buffer_count = Load<uint32_t>((data_ptr_t)&header_ptr->index_buffer_count);
450
- state->current_width = (bitpacking_width_t)(Load<uint32_t>((data_ptr_t)&header_ptr->bitpacking_width));
447
+ auto header_ptr = reinterpret_cast<dictionary_compression_header_t *>(baseptr);
448
+ auto index_buffer_offset = Load<uint32_t>(data_ptr_cast(&header_ptr->index_buffer_offset));
449
+ auto index_buffer_count = Load<uint32_t>(data_ptr_cast(&header_ptr->index_buffer_count));
450
+ state->current_width = (bitpacking_width_t)(Load<uint32_t>(data_ptr_cast(&header_ptr->bitpacking_width)));
451
451
 
452
- auto index_buffer_ptr = (uint32_t *)(baseptr + index_buffer_offset);
452
+ auto index_buffer_ptr = reinterpret_cast<uint32_t *>(baseptr + index_buffer_offset);
453
453
 
454
454
  state->dictionary = make_buffer<Vector>(segment.type, index_buffer_count);
455
455
  auto dict_child_data = FlatVector::GetData<string_t>(*(state->dictionary));
@@ -470,17 +470,17 @@ template <bool ALLOW_DICT_VECTORS>
470
470
  void DictionaryCompressionStorage::StringScanPartial(ColumnSegment &segment, ColumnScanState &state, idx_t scan_count,
471
471
  Vector &result, idx_t result_offset) {
472
472
  // clear any previously locked buffers and get the primary buffer handle
473
- auto &scan_state = (CompressedStringScanState &)*state.scan_state;
473
+ auto &scan_state = state.scan_state->Cast<CompressedStringScanState>();
474
474
  auto start = segment.GetRelativeIndex(state.row_index);
475
475
 
476
476
  auto baseptr = scan_state.handle.Ptr() + segment.GetBlockOffset();
477
477
  auto dict = DictionaryCompressionStorage::GetDictionary(segment, scan_state.handle);
478
478
 
479
- auto header_ptr = (dictionary_compression_header_t *)baseptr;
480
- auto index_buffer_offset = Load<uint32_t>((data_ptr_t)&header_ptr->index_buffer_offset);
481
- auto index_buffer_ptr = (uint32_t *)(baseptr + index_buffer_offset);
479
+ auto header_ptr = reinterpret_cast<dictionary_compression_header_t *>(baseptr);
480
+ auto index_buffer_offset = Load<uint32_t>(data_ptr_cast(&header_ptr->index_buffer_offset));
481
+ auto index_buffer_ptr = reinterpret_cast<uint32_t *>(baseptr + index_buffer_offset);
482
482
 
483
- auto base_data = (data_ptr_t)(baseptr + DICTIONARY_HEADER_SIZE);
483
+ auto base_data = data_ptr_cast(baseptr + DICTIONARY_HEADER_SIZE);
484
484
  auto result_data = FlatVector::GetData<string_t>(result);
485
485
 
486
486
  if (!ALLOW_DICT_VECTORS || scan_count != STANDARD_VECTOR_SIZE ||
@@ -502,7 +502,7 @@ void DictionaryCompressionStorage::StringScanPartial(ColumnSegment &segment, Col
502
502
  data_ptr_t src = &base_data[((start - start_offset) * scan_state.current_width) / 8];
503
503
  sel_t *sel_vec_ptr = scan_state.sel_vec->data();
504
504
 
505
- BitpackingPrimitives::UnPackBuffer<sel_t>((data_ptr_t)sel_vec_ptr, src, decompress_count,
505
+ BitpackingPrimitives::UnPackBuffer<sel_t>(data_ptr_cast(sel_vec_ptr), src, decompress_count,
506
506
  scan_state.current_width);
507
507
 
508
508
  for (idx_t i = 0; i < scan_count; i++) {
@@ -527,8 +527,8 @@ void DictionaryCompressionStorage::StringScanPartial(ColumnSegment &segment, Col
527
527
  }
528
528
 
529
529
  // Scanning 1024 values, emitting a dict vector
530
- data_ptr_t dst = (data_ptr_t)(scan_state.sel_vec->data());
531
- data_ptr_t src = (data_ptr_t)&base_data[(start * scan_state.current_width) / 8];
530
+ data_ptr_t dst = data_ptr_cast(scan_state.sel_vec->data());
531
+ data_ptr_t src = data_ptr_cast(&base_data[(start * scan_state.current_width) / 8]);
532
532
 
533
533
  BitpackingPrimitives::UnPackBuffer<sel_t>(dst, src, scan_count, scan_state.current_width);
534
534
 
@@ -551,12 +551,12 @@ void DictionaryCompressionStorage::StringFetchRow(ColumnSegment &segment, Column
551
551
  auto &handle = state.GetOrInsertHandle(segment);
552
552
 
553
553
  auto baseptr = handle.Ptr() + segment.GetBlockOffset();
554
- auto header_ptr = (dictionary_compression_header_t *)baseptr;
554
+ auto header_ptr = reinterpret_cast<dictionary_compression_header_t *>(baseptr);
555
555
  auto dict = DictionaryCompressionStorage::GetDictionary(segment, handle);
556
- auto index_buffer_offset = Load<uint32_t>((data_ptr_t)&header_ptr->index_buffer_offset);
557
- auto width = (bitpacking_width_t)(Load<uint32_t>((data_ptr_t)&header_ptr->bitpacking_width));
558
- auto index_buffer_ptr = (uint32_t *)(baseptr + index_buffer_offset);
559
- auto base_data = (data_ptr_t)(baseptr + DICTIONARY_HEADER_SIZE);
556
+ auto index_buffer_offset = Load<uint32_t>(data_ptr_cast(&header_ptr->index_buffer_offset));
557
+ auto width = (bitpacking_width_t)Load<uint32_t>(data_ptr_cast(&header_ptr->bitpacking_width));
558
+ auto index_buffer_ptr = reinterpret_cast<uint32_t *>(baseptr + index_buffer_offset);
559
+ auto base_data = data_ptr_cast(baseptr + DICTIONARY_HEADER_SIZE);
560
560
  auto result_data = FlatVector::GetData<string_t>(result);
561
561
 
562
562
  // Handling non-bitpacking-group-aligned start values;
@@ -564,8 +564,8 @@ void DictionaryCompressionStorage::StringFetchRow(ColumnSegment &segment, Column
564
564
 
565
565
  // Decompress part of selection buffer we need for this value.
566
566
  sel_t decompression_buffer[BitpackingPrimitives::BITPACKING_ALGORITHM_GROUP_SIZE];
567
- data_ptr_t src = (data_ptr_t)&base_data[((row_id - start_offset) * width) / 8];
568
- BitpackingPrimitives::UnPackBuffer<sel_t>((data_ptr_t)decompression_buffer, src,
567
+ data_ptr_t src = data_ptr_cast(&base_data[((row_id - start_offset) * width) / 8]);
568
+ BitpackingPrimitives::UnPackBuffer<sel_t>(data_ptr_cast(decompression_buffer), src,
569
569
  BitpackingPrimitives::BITPACKING_ALGORITHM_GROUP_SIZE, width);
570
570
 
571
571
  auto selection_value = decompression_buffer[start_offset];
@@ -595,18 +595,18 @@ idx_t DictionaryCompressionStorage::RequiredSpace(idx_t current_count, idx_t ind
595
595
  }
596
596
 
597
597
  StringDictionaryContainer DictionaryCompressionStorage::GetDictionary(ColumnSegment &segment, BufferHandle &handle) {
598
- auto header_ptr = (dictionary_compression_header_t *)(handle.Ptr() + segment.GetBlockOffset());
598
+ auto header_ptr = reinterpret_cast<dictionary_compression_header_t *>(handle.Ptr() + segment.GetBlockOffset());
599
599
  StringDictionaryContainer container;
600
- container.size = Load<uint32_t>((data_ptr_t)&header_ptr->dict_size);
601
- container.end = Load<uint32_t>((data_ptr_t)&header_ptr->dict_end);
600
+ container.size = Load<uint32_t>(data_ptr_cast(&header_ptr->dict_size));
601
+ container.end = Load<uint32_t>(data_ptr_cast(&header_ptr->dict_end));
602
602
  return container;
603
603
  }
604
604
 
605
605
  void DictionaryCompressionStorage::SetDictionary(ColumnSegment &segment, BufferHandle &handle,
606
606
  StringDictionaryContainer container) {
607
- auto header_ptr = (dictionary_compression_header_t *)(handle.Ptr() + segment.GetBlockOffset());
608
- Store<uint32_t>(container.size, (data_ptr_t)&header_ptr->dict_size);
609
- Store<uint32_t>(container.end, (data_ptr_t)&header_ptr->dict_end);
607
+ auto header_ptr = reinterpret_cast<dictionary_compression_header_t *>(handle.Ptr() + segment.GetBlockOffset());
608
+ Store<uint32_t>(container.size, data_ptr_cast(&header_ptr->dict_size));
609
+ Store<uint32_t>(container.end, data_ptr_cast(&header_ptr->dict_end));
610
610
  }
611
611
 
612
612
  string_t DictionaryCompressionStorage::FetchStringFromDict(ColumnSegment &segment, StringDictionaryContainer dict,
@@ -621,7 +621,7 @@ string_t DictionaryCompressionStorage::FetchStringFromDict(ColumnSegment &segmen
621
621
  auto dict_end = baseptr + dict.end;
622
622
  auto dict_pos = dict_end - dict_offset;
623
623
 
624
- auto str_ptr = (char *)(dict_pos);
624
+ auto str_ptr = char_ptr_cast(dict_pos);
625
625
  return string_t(str_ptr, string_len);
626
626
  }
627
627
 
@@ -28,14 +28,14 @@ unique_ptr<AnalyzeState> FixedSizeInitAnalyze(ColumnData &col_data, PhysicalType
28
28
  }
29
29
 
30
30
  bool FixedSizeAnalyze(AnalyzeState &state_p, Vector &input, idx_t count) {
31
- auto &state = (FixedSizeAnalyzeState &)state_p;
31
+ auto &state = state_p.Cast<FixedSizeAnalyzeState>();
32
32
  state.count += count;
33
33
  return true;
34
34
  }
35
35
 
36
36
  template <class T>
37
37
  idx_t FixedSizeFinalAnalyze(AnalyzeState &state_p) {
38
- auto &state = (FixedSizeAnalyzeState &)state_p;
38
+ auto &state = state_p.template Cast<FixedSizeAnalyzeState>();
39
39
  return sizeof(T) * state.count;
40
40
  }
41
41
 
@@ -64,7 +64,7 @@ void UncompressedCompressState::CreateEmptySegment(idx_t row_start) {
64
64
  auto &type = checkpointer.GetType();
65
65
  auto compressed_segment = ColumnSegment::CreateTransientSegment(db, type, row_start);
66
66
  if (type.InternalType() == PhysicalType::VARCHAR) {
67
- auto &state = (UncompressedStringSegmentState &)*compressed_segment->GetSegmentState();
67
+ auto &state = compressed_segment->GetSegmentState()->Cast<UncompressedStringSegmentState>();
68
68
  state.overflow_writer = make_uniq<WriteOverflowStringsToDisk>(checkpointer.GetColumnData().GetBlockManager());
69
69
  }
70
70
  current_segment = std::move(compressed_segment);
@@ -87,7 +87,7 @@ unique_ptr<CompressionState> UncompressedFunctions::InitCompression(ColumnDataCh
87
87
  }
88
88
 
89
89
  void UncompressedFunctions::Compress(CompressionState &state_p, Vector &data, idx_t count) {
90
- auto &state = (UncompressedCompressState &)state_p;
90
+ auto &state = state_p.Cast<UncompressedCompressState>();
91
91
  UnifiedVectorFormat vdata;
92
92
  data.ToUnifiedFormat(count, vdata);
93
93
 
@@ -110,7 +110,7 @@ void UncompressedFunctions::Compress(CompressionState &state_p, Vector &data, id
110
110
  }
111
111
 
112
112
  void UncompressedFunctions::FinalizeCompress(CompressionState &state_p) {
113
- auto &state = (UncompressedCompressState &)state_p;
113
+ auto &state = state_p.Cast<UncompressedCompressState>();
114
114
  state.Finalize(state.current_segment->FinalizeAppend(state.append_state));
115
115
  }
116
116
 
@@ -134,7 +134,7 @@ unique_ptr<SegmentScanState> FixedSizeInitScan(ColumnSegment &segment) {
134
134
  template <class T>
135
135
  void FixedSizeScanPartial(ColumnSegment &segment, ColumnScanState &state, idx_t scan_count, Vector &result,
136
136
  idx_t result_offset) {
137
- auto &scan_state = (FixedSizeScanState &)*state.scan_state;
137
+ auto &scan_state = state.scan_state->Cast<FixedSizeScanState>();
138
138
  auto start = segment.GetRelativeIndex(state.row_index);
139
139
 
140
140
  auto data = scan_state.handle.Ptr() + segment.GetBlockOffset();
@@ -147,7 +147,7 @@ void FixedSizeScanPartial(ColumnSegment &segment, ColumnScanState &state, idx_t
147
147
 
148
148
  template <class T>
149
149
  void FixedSizeScan(ColumnSegment &segment, ColumnScanState &state, idx_t scan_count, Vector &result) {
150
- auto &scan_state = (FixedSizeScanState &)*state.scan_state;
150
+ auto &scan_state = state.scan_state->template Cast<FixedSizeScanState>();
151
151
  auto start = segment.GetRelativeIndex(state.row_index);
152
152
 
153
153
  auto data = scan_state.handle.Ptr() + segment.GetBlockOffset();
@@ -185,8 +185,8 @@ struct StandardFixedSizeAppend {
185
185
  template <class T>
186
186
  static void Append(SegmentStatistics &stats, data_ptr_t target, idx_t target_offset, UnifiedVectorFormat &adata,
187
187
  idx_t offset, idx_t count) {
188
- auto sdata = (T *)adata.data;
189
- auto tdata = (T *)target;
188
+ auto sdata = UnifiedVectorFormat::GetData<T>(adata);
189
+ auto tdata = reinterpret_cast<T *>(target);
190
190
  if (!adata.validity.AllValid()) {
191
191
  for (idx_t i = 0; i < count; i++) {
192
192
  auto source_idx = adata.sel->get_index(offset + i);
@@ -216,8 +216,8 @@ struct ListFixedSizeAppend {
216
216
  template <class T>
217
217
  static void Append(SegmentStatistics &stats, data_ptr_t target, idx_t target_offset, UnifiedVectorFormat &adata,
218
218
  idx_t offset, idx_t count) {
219
- auto sdata = (uint64_t *)adata.data;
220
- auto tdata = (uint64_t *)target;
219
+ auto sdata = UnifiedVectorFormat::GetData<uint64_t>(adata);
220
+ auto tdata = reinterpret_cast<uint64_t *>(target);
221
221
  for (idx_t i = 0; i < count; i++) {
222
222
  auto source_idx = adata.sel->get_index(offset + i);
223
223
  auto target_idx = target_offset + i;