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
@@ -94,12 +94,12 @@ unique_ptr<AnalyzeState> FSSTStorage::StringInitAnalyze(ColumnData &col_data, Ph
94
94
  }
95
95
 
96
96
  bool FSSTStorage::StringAnalyze(AnalyzeState &state_p, Vector &input, idx_t count) {
97
- auto &state = (FSSTAnalyzeState &)state_p;
97
+ auto &state = state_p.Cast<FSSTAnalyzeState>();
98
98
  UnifiedVectorFormat vdata;
99
99
  input.ToUnifiedFormat(count, vdata);
100
100
 
101
101
  state.count += count;
102
- auto data = (string_t *)vdata.data;
102
+ auto data = UnifiedVectorFormat::GetData<string_t>(vdata);
103
103
 
104
104
  // Note that we ignore the sampling in case we have not found any valid strings yet, this solves the issue of
105
105
  // not having seen any valid strings here leading to an empty fsst symbol table.
@@ -138,7 +138,7 @@ bool FSSTStorage::StringAnalyze(AnalyzeState &state_p, Vector &input, idx_t coun
138
138
  }
139
139
 
140
140
  idx_t FSSTStorage::StringFinalAnalyze(AnalyzeState &state_p) {
141
- auto &state = (FSSTAnalyzeState &)state_p;
141
+ auto &state = state_p.Cast<FSSTAnalyzeState>();
142
142
 
143
143
  size_t compressed_dict_size = 0;
144
144
  size_t max_compressed_string_length = 0;
@@ -155,7 +155,7 @@ idx_t FSSTStorage::StringFinalAnalyze(AnalyzeState &state_p) {
155
155
  vector<unsigned char *> fsst_string_ptrs;
156
156
  for (auto &str : state.fsst_strings) {
157
157
  fsst_string_sizes.push_back(str.GetSize());
158
- fsst_string_ptrs.push_back((unsigned char *)str.GetData());
158
+ fsst_string_ptrs.push_back((unsigned char *)str.GetData()); // NOLINT
159
159
  }
160
160
 
161
161
  state.fsst_encoder = duckdb_fsst_create(string_count, &fsst_string_sizes[0], &fsst_string_ptrs[0], 0);
@@ -332,14 +332,14 @@ public:
332
332
 
333
333
  // calculate ptr and offsets
334
334
  auto base_ptr = handle.Ptr();
335
- auto header_ptr = (fsst_compression_header_t *)base_ptr;
335
+ auto header_ptr = reinterpret_cast<fsst_compression_header_t *>(base_ptr);
336
336
  auto compressed_index_buffer_offset = sizeof(fsst_compression_header_t);
337
337
  auto symbol_table_offset = compressed_index_buffer_offset + compressed_index_buffer_size;
338
338
 
339
339
  D_ASSERT(current_segment->count == index_buffer.size());
340
340
  BitpackingPrimitives::PackBuffer<sel_t, false>(base_ptr + compressed_index_buffer_offset,
341
- (uint32_t *)(index_buffer.data()), current_segment->count,
342
- current_width);
341
+ reinterpret_cast<uint32_t *>(index_buffer.data()),
342
+ current_segment->count, current_width);
343
343
 
344
344
  // Write the fsst symbol table or nothing
345
345
  if (fsst_encoder != nullptr) {
@@ -348,8 +348,8 @@ public:
348
348
  memset(base_ptr + symbol_table_offset, 0, fsst_serialized_symbol_table_size);
349
349
  }
350
350
 
351
- Store<uint32_t>(symbol_table_offset, (data_ptr_t)&header_ptr->fsst_symbol_table_offset);
352
- Store<uint32_t>((uint32_t)current_width, (data_ptr_t)&header_ptr->bitpacking_width);
351
+ Store<uint32_t>(symbol_table_offset, data_ptr_cast(&header_ptr->fsst_symbol_table_offset));
352
+ Store<uint32_t>((uint32_t)current_width, data_ptr_cast(&header_ptr->bitpacking_width));
353
353
 
354
354
  if (total_size >= FSSTStorage::COMPACTION_FLUSH_LIMIT) {
355
355
  // the block is full enough, don't bother moving around the dictionary
@@ -408,12 +408,12 @@ unique_ptr<CompressionState> FSSTStorage::InitCompression(ColumnDataCheckpointer
408
408
  }
409
409
 
410
410
  void FSSTStorage::Compress(CompressionState &state_p, Vector &scan_vector, idx_t count) {
411
- auto &state = (FSSTCompressionState &)state_p;
411
+ auto &state = state_p.Cast<FSSTCompressionState>();
412
412
 
413
413
  // Get vector data
414
414
  UnifiedVectorFormat vdata;
415
415
  scan_vector.ToUnifiedFormat(count, vdata);
416
- auto data = (string_t *)vdata.data;
416
+ auto data = UnifiedVectorFormat::GetData<string_t>(vdata);
417
417
 
418
418
  // Collect pointers to strings to compress
419
419
  vector<size_t> sizes_in;
@@ -431,7 +431,7 @@ void FSSTStorage::Compress(CompressionState &state_p, Vector &scan_vector, idx_t
431
431
  total_count++;
432
432
  total_size += data[idx].GetSize();
433
433
  sizes_in.push_back(data[idx].GetSize());
434
- strings_in.push_back((unsigned char *)data[idx].GetData());
434
+ strings_in.push_back((unsigned char *)data[idx].GetData()); // NOLINT
435
435
  }
436
436
 
437
437
  // Only Nulls or empty strings in this vector, nothing to compress
@@ -486,7 +486,7 @@ void FSSTStorage::Compress(CompressionState &state_p, Vector &scan_vector, idx_t
486
486
  }
487
487
 
488
488
  void FSSTStorage::FinalizeCompress(CompressionState &state_p) {
489
- auto &state = (FSSTCompressionState &)state_p;
489
+ auto &state = state_p.Cast<FSSTCompressionState>();
490
490
  state.Flush(true);
491
491
  }
492
492
 
@@ -522,8 +522,8 @@ unique_ptr<SegmentScanState> FSSTStorage::StringInitScan(ColumnSegment &segment)
522
522
  auto base_ptr = state->handle.Ptr() + segment.GetBlockOffset();
523
523
 
524
524
  state->duckdb_fsst_decoder = make_buffer<duckdb_fsst_decoder_t>();
525
- auto retval = ParseFSSTSegmentHeader(base_ptr, (duckdb_fsst_decoder_t *)state->duckdb_fsst_decoder.get(),
526
- &state->current_width);
525
+ auto retval = ParseFSSTSegmentHeader(
526
+ base_ptr, reinterpret_cast<duckdb_fsst_decoder_t *>(state->duckdb_fsst_decoder.get()), &state->current_width);
527
527
  if (!retval) {
528
528
  state->duckdb_fsst_decoder = nullptr;
529
529
  }
@@ -551,7 +551,7 @@ template <bool ALLOW_FSST_VECTORS>
551
551
  void FSSTStorage::StringScanPartial(ColumnSegment &segment, ColumnScanState &state, idx_t scan_count, Vector &result,
552
552
  idx_t result_offset) {
553
553
 
554
- auto &scan_state = (FSSTScanState &)*state.scan_state;
554
+ auto &scan_state = state.scan_state->Cast<FSSTScanState>();
555
555
  auto start = segment.GetRelativeIndex(state.row_index);
556
556
 
557
557
  bool enable_fsst_vectors;
@@ -564,7 +564,7 @@ void FSSTStorage::StringScanPartial(ColumnSegment &segment, ColumnScanState &sta
564
564
 
565
565
  auto baseptr = scan_state.handle.Ptr() + segment.GetBlockOffset();
566
566
  auto dict = GetDictionary(segment, scan_state.handle);
567
- auto base_data = (data_ptr_t)(baseptr + sizeof(fsst_compression_header_t));
567
+ auto base_data = data_ptr_cast(baseptr + sizeof(fsst_compression_header_t));
568
568
  string_t *result_data;
569
569
 
570
570
  if (scan_count == 0) {
@@ -594,7 +594,7 @@ void FSSTStorage::StringScanPartial(ColumnSegment &segment, ColumnScanState &sta
594
594
  auto offsets = CalculateBpDeltaOffsets(scan_state.last_known_row, start, scan_count);
595
595
 
596
596
  auto bitunpack_buffer = unique_ptr<uint32_t[]>(new uint32_t[offsets.total_bitunpack_count]);
597
- BitUnpackRange(base_data, (data_ptr_t)bitunpack_buffer.get(), offsets.total_bitunpack_count,
597
+ BitUnpackRange(base_data, data_ptr_cast(bitunpack_buffer.get()), offsets.total_bitunpack_count,
598
598
  offsets.bitunpack_start_row, scan_state.current_width);
599
599
  auto delta_decode_buffer = unique_ptr<uint32_t[]>(new uint32_t[offsets.total_delta_decode_count]);
600
600
  DeltaDecodeIndices(bitunpack_buffer.get() + offsets.bitunpack_alignment_offset, delta_decode_buffer.get(),
@@ -617,8 +617,8 @@ void FSSTStorage::StringScanPartial(ColumnSegment &segment, ColumnScanState &sta
617
617
  dict, baseptr, delta_decode_buffer[i + offsets.unused_delta_decoded_values]);
618
618
 
619
619
  if (str_len > 0) {
620
- result_data[i + result_offset] = FSSTPrimitives::DecompressValue(
621
- scan_state.duckdb_fsst_decoder.get(), result, (unsigned char *)str_ptr, str_len);
620
+ result_data[i + result_offset] =
621
+ FSSTPrimitives::DecompressValue(scan_state.duckdb_fsst_decoder.get(), result, str_ptr, str_len);
622
622
  } else {
623
623
  result_data[i + result_offset] = string_t(nullptr, 0);
624
624
  }
@@ -642,7 +642,7 @@ void FSSTStorage::StringFetchRow(ColumnSegment &segment, ColumnFetchState &state
642
642
  auto &buffer_manager = BufferManager::GetBufferManager(segment.db);
643
643
  auto handle = buffer_manager.Pin(segment.block);
644
644
  auto base_ptr = handle.Ptr() + segment.GetBlockOffset();
645
- auto base_data = (data_ptr_t)(base_ptr + sizeof(fsst_compression_header_t));
645
+ auto base_data = data_ptr_cast(base_ptr + sizeof(fsst_compression_header_t));
646
646
  auto dict = GetDictionary(segment, handle);
647
647
 
648
648
  duckdb_fsst_decoder_t decoder;
@@ -657,7 +657,7 @@ void FSSTStorage::StringFetchRow(ColumnSegment &segment, ColumnFetchState &state
657
657
  auto offsets = CalculateBpDeltaOffsets(-1, row_id, 1);
658
658
 
659
659
  auto bitunpack_buffer = unique_ptr<uint32_t[]>(new uint32_t[offsets.total_bitunpack_count]);
660
- BitUnpackRange(base_data, (data_ptr_t)bitunpack_buffer.get(), offsets.total_bitunpack_count,
660
+ BitUnpackRange(base_data, data_ptr_cast(bitunpack_buffer.get()), offsets.total_bitunpack_count,
661
661
  offsets.bitunpack_start_row, width);
662
662
  auto delta_decode_buffer = unique_ptr<uint32_t[]>(new uint32_t[offsets.total_delta_decode_count]);
663
663
  DeltaDecodeIndices(bitunpack_buffer.get() + offsets.bitunpack_alignment_offset, delta_decode_buffer.get(),
@@ -668,8 +668,8 @@ void FSSTStorage::StringFetchRow(ColumnSegment &segment, ColumnFetchState &state
668
668
  string_t compressed_string = UncompressedStringStorage::FetchStringFromDict(
669
669
  segment, dict, result, base_ptr, delta_decode_buffer[offsets.unused_delta_decoded_values], string_length);
670
670
 
671
- result_data[result_idx] = FSSTPrimitives::DecompressValue(
672
- (void *)&decoder, result, (unsigned char *)compressed_string.GetData(), compressed_string.GetSize());
671
+ result_data[result_idx] = FSSTPrimitives::DecompressValue((void *)&decoder, result, compressed_string.GetData(),
672
+ compressed_string.GetSize());
673
673
  } else {
674
674
  // There's no fsst symtable, this only happens for empty strings or nulls, we can just emit an empty string
675
675
  result_data[result_idx] = string_t(nullptr, 0);
@@ -696,16 +696,16 @@ bool FSSTFun::TypeIsSupported(PhysicalType type) {
696
696
  // Helper Functions
697
697
  //===--------------------------------------------------------------------===//
698
698
  void FSSTStorage::SetDictionary(ColumnSegment &segment, BufferHandle &handle, StringDictionaryContainer container) {
699
- auto header_ptr = (fsst_compression_header_t *)(handle.Ptr() + segment.GetBlockOffset());
700
- Store<uint32_t>(container.size, (data_ptr_t)&header_ptr->dict_size);
701
- Store<uint32_t>(container.end, (data_ptr_t)&header_ptr->dict_end);
699
+ auto header_ptr = reinterpret_cast<fsst_compression_header_t *>(handle.Ptr() + segment.GetBlockOffset());
700
+ Store<uint32_t>(container.size, data_ptr_cast(&header_ptr->dict_size));
701
+ Store<uint32_t>(container.end, data_ptr_cast(&header_ptr->dict_end));
702
702
  }
703
703
 
704
704
  StringDictionaryContainer FSSTStorage::GetDictionary(ColumnSegment &segment, BufferHandle &handle) {
705
- auto header_ptr = (fsst_compression_header_t *)(handle.Ptr() + segment.GetBlockOffset());
705
+ auto header_ptr = reinterpret_cast<fsst_compression_header_t *>(handle.Ptr() + segment.GetBlockOffset());
706
706
  StringDictionaryContainer container;
707
- container.size = Load<uint32_t>((data_ptr_t)&header_ptr->dict_size);
708
- container.end = Load<uint32_t>((data_ptr_t)&header_ptr->dict_end);
707
+ container.size = Load<uint32_t>(data_ptr_cast(&header_ptr->dict_size));
708
+ container.end = Load<uint32_t>(data_ptr_cast(&header_ptr->dict_end));
709
709
  return container;
710
710
  }
711
711
 
@@ -716,15 +716,15 @@ char *FSSTStorage::FetchStringPointer(StringDictionaryContainer dict, data_ptr_t
716
716
 
717
717
  auto dict_end = baseptr + dict.end;
718
718
  auto dict_pos = dict_end - dict_offset;
719
- return (char *)(dict_pos);
719
+ return char_ptr_cast(dict_pos);
720
720
  }
721
721
 
722
722
  // Returns false if no symbol table was found. This means all strings are either empty or null
723
723
  bool FSSTStorage::ParseFSSTSegmentHeader(data_ptr_t base_ptr, duckdb_fsst_decoder_t *decoder_out,
724
724
  bitpacking_width_t *width_out) {
725
- auto header_ptr = (fsst_compression_header_t *)base_ptr;
726
- auto fsst_symbol_table_offset = Load<uint32_t>((data_ptr_t)&header_ptr->fsst_symbol_table_offset);
727
- *width_out = (bitpacking_width_t)(Load<uint32_t>((data_ptr_t)&header_ptr->bitpacking_width));
725
+ auto header_ptr = reinterpret_cast<fsst_compression_header_t *>(base_ptr);
726
+ auto fsst_symbol_table_offset = Load<uint32_t>(data_ptr_cast(&header_ptr->fsst_symbol_table_offset));
727
+ *width_out = (bitpacking_width_t)(Load<uint32_t>(data_ptr_cast(&header_ptr->bitpacking_width)));
728
728
  return duckdb_fsst_import(decoder_out, base_ptr + fsst_symbol_table_offset);
729
729
  }
730
730
 
@@ -40,7 +40,7 @@ public:
40
40
  }
41
41
 
42
42
  template <class OP = EmptyRLEWriter>
43
- void Update(T *data, ValidityMask &validity, idx_t idx) {
43
+ void Update(const T *data, ValidityMask &validity, idx_t idx) {
44
44
  if (validity.RowIsValid(idx)) {
45
45
  if (all_null) {
46
46
  // no value seen yet
@@ -94,11 +94,11 @@ unique_ptr<AnalyzeState> RLEInitAnalyze(ColumnData &col_data, PhysicalType type)
94
94
 
95
95
  template <class T>
96
96
  bool RLEAnalyze(AnalyzeState &state, Vector &input, idx_t count) {
97
- auto &rle_state = (RLEAnalyzeState<T> &)state;
97
+ auto &rle_state = state.template Cast<RLEAnalyzeState<T>>();
98
98
  UnifiedVectorFormat vdata;
99
99
  input.ToUnifiedFormat(count, vdata);
100
100
 
101
- auto data = (T *)vdata.data;
101
+ auto data = UnifiedVectorFormat::GetData<T>(vdata);
102
102
  for (idx_t i = 0; i < count; i++) {
103
103
  auto idx = vdata.sel->get_index(i);
104
104
  rle_state.state.Update(data, vdata.validity, idx);
@@ -108,7 +108,7 @@ bool RLEAnalyze(AnalyzeState &state, Vector &input, idx_t count) {
108
108
 
109
109
  template <class T>
110
110
  idx_t RLEFinalAnalyze(AnalyzeState &state) {
111
- auto &rle_state = (RLEAnalyzeState<T> &)state;
111
+ auto &rle_state = state.template Cast<RLEAnalyzeState<T>>();
112
112
  return (sizeof(rle_count_t) + sizeof(T)) * rle_state.state.seen_count;
113
113
  }
114
114
 
@@ -124,7 +124,7 @@ struct RLECompressState : public CompressionState {
124
124
  struct RLEWriter {
125
125
  template <class VALUE_TYPE>
126
126
  static void Operation(VALUE_TYPE value, rle_count_t count, void *dataptr, bool is_null) {
127
- auto state = (RLECompressState<T, WRITE_STATISTICS> *)dataptr;
127
+ auto state = reinterpret_cast<RLECompressState<T, WRITE_STATISTICS> *>(dataptr);
128
128
  state->WriteValue(value, count, is_null);
129
129
  }
130
130
  };
@@ -156,7 +156,7 @@ struct RLECompressState : public CompressionState {
156
156
  }
157
157
 
158
158
  void Append(UnifiedVectorFormat &vdata, idx_t count) {
159
- auto data = (T *)vdata.data;
159
+ auto data = UnifiedVectorFormat::GetData<T>(vdata);
160
160
  for (idx_t i = 0; i < count; i++) {
161
161
  auto idx = vdata.sel->get_index(i);
162
162
  state.template Update<RLECompressState<T, WRITE_STATISTICS>::RLEWriter>(data, vdata.validity, idx);
@@ -289,14 +289,14 @@ unique_ptr<SegmentScanState> RLEInitScan(ColumnSegment &segment) {
289
289
  //===--------------------------------------------------------------------===//
290
290
  template <class T>
291
291
  void RLESkip(ColumnSegment &segment, ColumnScanState &state, idx_t skip_count) {
292
- auto &scan_state = (RLEScanState<T> &)*state.scan_state;
292
+ auto &scan_state = state.scan_state->Cast<RLEScanState<T>>();
293
293
  scan_state.Skip(segment, skip_count);
294
294
  }
295
295
 
296
296
  template <class T>
297
297
  void RLEScanPartial(ColumnSegment &segment, ColumnScanState &state, idx_t scan_count, Vector &result,
298
298
  idx_t result_offset) {
299
- auto &scan_state = (RLEScanState<T> &)*state.scan_state;
299
+ auto &scan_state = state.scan_state->Cast<RLEScanState<T>>();
300
300
 
301
301
  auto data = scan_state.handle.Ptr() + segment.GetBlockOffset();
302
302
  auto data_pointer = (T *)(data + RLEConstants::RLE_HEADER_SIZE);
@@ -33,12 +33,12 @@ unique_ptr<AnalyzeState> UncompressedStringStorage::StringInitAnalyze(ColumnData
33
33
  }
34
34
 
35
35
  bool UncompressedStringStorage::StringAnalyze(AnalyzeState &state_p, Vector &input, idx_t count) {
36
- auto &state = (StringAnalyzeState &)state_p;
36
+ auto &state = state_p.Cast<StringAnalyzeState>();
37
37
  UnifiedVectorFormat vdata;
38
38
  input.ToUnifiedFormat(count, vdata);
39
39
 
40
40
  state.count += count;
41
- auto data = (string_t *)vdata.data;
41
+ auto data = UnifiedVectorFormat::GetData<string_t>(vdata);
42
42
  for (idx_t i = 0; i < count; i++) {
43
43
  auto idx = vdata.sel->get_index(i);
44
44
  if (vdata.validity.RowIsValid(idx)) {
@@ -53,7 +53,7 @@ bool UncompressedStringStorage::StringAnalyze(AnalyzeState &state_p, Vector &inp
53
53
  }
54
54
 
55
55
  idx_t UncompressedStringStorage::StringFinalAnalyze(AnalyzeState &state_p) {
56
- auto &state = (StringAnalyzeState &)state_p;
56
+ auto &state = state_p.Cast<StringAnalyzeState>();
57
57
  return state.count * sizeof(int32_t) + state.total_string_size + state.overflow_strings * BIG_STRING_MARKER_SIZE;
58
58
  }
59
59
 
@@ -73,12 +73,12 @@ unique_ptr<SegmentScanState> UncompressedStringStorage::StringInitScan(ColumnSeg
73
73
  void UncompressedStringStorage::StringScanPartial(ColumnSegment &segment, ColumnScanState &state, idx_t scan_count,
74
74
  Vector &result, idx_t result_offset) {
75
75
  // clear any previously locked buffers and get the primary buffer handle
76
- auto &scan_state = (StringScanState &)*state.scan_state;
76
+ auto &scan_state = state.scan_state->Cast<StringScanState>();
77
77
  auto start = segment.GetRelativeIndex(state.row_index);
78
78
 
79
79
  auto baseptr = scan_state.handle.Ptr() + segment.GetBlockOffset();
80
80
  auto dict = GetDictionary(segment, scan_state.handle);
81
- auto base_data = (int32_t *)(baseptr + DICTIONARY_HEADER_SIZE);
81
+ auto base_data = reinterpret_cast<int32_t *>(baseptr + DICTIONARY_HEADER_SIZE);
82
82
  auto result_data = FlatVector::GetData<string_t>(result);
83
83
 
84
84
  int32_t previous_offset = start > 0 ? base_data[start - 1] : 0;
@@ -124,7 +124,7 @@ void UncompressedStringStorage::StringFetchRow(ColumnSegment &segment, ColumnFet
124
124
 
125
125
  auto baseptr = handle.Ptr() + segment.GetBlockOffset();
126
126
  auto dict = GetDictionary(segment, handle);
127
- auto base_data = (int32_t *)(baseptr + DICTIONARY_HEADER_SIZE);
127
+ auto base_data = reinterpret_cast<int32_t *>(baseptr + DICTIONARY_HEADER_SIZE);
128
128
  auto result_data = FlatVector::GetData<string_t>(result);
129
129
 
130
130
  auto dict_offset = base_data[row_id];
@@ -223,7 +223,7 @@ idx_t UncompressedStringStorage::RemainingSpace(ColumnSegment &segment, BufferHa
223
223
 
224
224
  void UncompressedStringStorage::WriteString(ColumnSegment &segment, string_t string, block_id_t &result_block,
225
225
  int32_t &result_offset) {
226
- auto &state = (UncompressedStringSegmentState &)*segment.GetSegmentState();
226
+ auto &state = segment.GetSegmentState()->Cast<UncompressedStringSegmentState>();
227
227
  if (state.overflow_writer) {
228
228
  // overflow writer is set: write string there
229
229
  state.overflow_writer->WriteString(string, result_block, result_offset);
@@ -240,7 +240,7 @@ void UncompressedStringStorage::WriteStringMemory(ColumnSegment &segment, string
240
240
  BufferHandle handle;
241
241
 
242
242
  auto &buffer_manager = BufferManager::GetBufferManager(segment.db);
243
- auto &state = (UncompressedStringSegmentState &)*segment.GetSegmentState();
243
+ auto &state = segment.GetSegmentState()->Cast<UncompressedStringSegmentState>();
244
244
  // check if the string fits in the current block
245
245
  if (!state.head || state.head->offset + total_length >= state.head->size) {
246
246
  // string does not fit, allocate space for it
@@ -278,7 +278,7 @@ string_t UncompressedStringStorage::ReadOverflowString(ColumnSegment &segment, V
278
278
 
279
279
  auto &block_manager = segment.GetBlockManager();
280
280
  auto &buffer_manager = block_manager.buffer_manager;
281
- auto &state = (UncompressedStringSegmentState &)*segment.GetSegmentState();
281
+ auto &state = segment.GetSegmentState()->Cast<UncompressedStringSegmentState>();
282
282
  if (block < MAXIMUM_BLOCK) {
283
283
  // read the overflow string from disk
284
284
  // pin the initial handle and read the length
@@ -325,7 +325,7 @@ string_t UncompressedStringStorage::ReadOverflowString(ColumnSegment &segment, V
325
325
  buffer_manager.Allocate(MaxValue<idx_t>(Storage::BLOCK_SIZE, uncompressed_size));
326
326
  auto decompressed_target_ptr = decompressed_target_handle.Ptr();
327
327
  MiniZStream s;
328
- s.Decompress((const char *)decompression_ptr, compressed_size, (char *)decompressed_target_ptr,
328
+ s.Decompress(const_char_ptr_cast(decompression_ptr), compressed_size, char_ptr_cast(decompressed_target_ptr),
329
329
  uncompressed_size);
330
330
 
331
331
  auto final_buffer = decompressed_target_handle.Ptr();
@@ -345,14 +345,14 @@ string_t UncompressedStringStorage::ReadOverflowString(ColumnSegment &segment, V
345
345
 
346
346
  string_t UncompressedStringStorage::ReadString(data_ptr_t target, int32_t offset, uint32_t string_length) {
347
347
  auto ptr = target + offset;
348
- auto str_ptr = (char *)(ptr);
348
+ auto str_ptr = char_ptr_cast(ptr);
349
349
  return string_t(str_ptr, string_length);
350
350
  }
351
351
 
352
352
  string_t UncompressedStringStorage::ReadStringWithLength(data_ptr_t target, int32_t offset) {
353
353
  auto ptr = target + offset;
354
354
  auto str_length = Load<uint32_t>(ptr);
355
- auto str_ptr = (char *)(ptr + sizeof(uint32_t));
355
+ auto str_ptr = char_ptr_cast(ptr + sizeof(uint32_t));
356
356
  return string_t(str_ptr, str_length);
357
357
  }
358
358
 
@@ -403,7 +403,7 @@ string_t UncompressedStringStorage::FetchString(ColumnSegment &segment, StringDi
403
403
  auto dict_end = baseptr + dict.end;
404
404
  auto dict_pos = dict_end - location.offset;
405
405
 
406
- auto str_ptr = (char *)(dict_pos);
406
+ auto str_ptr = char_ptr_cast(dict_pos);
407
407
  return string_t(str_ptr, string_length);
408
408
  }
409
409
  }
@@ -188,13 +188,13 @@ unique_ptr<AnalyzeState> ValidityInitAnalyze(ColumnData &col_data, PhysicalType
188
188
  }
189
189
 
190
190
  bool ValidityAnalyze(AnalyzeState &state_p, Vector &input, idx_t count) {
191
- auto &state = (ValidityAnalyzeState &)state_p;
191
+ auto &state = state_p.Cast<ValidityAnalyzeState>();
192
192
  state.count += count;
193
193
  return true;
194
194
  }
195
195
 
196
196
  idx_t ValidityFinalAnalyze(AnalyzeState &state_p) {
197
- auto &state = (ValidityAnalyzeState &)state_p;
197
+ auto &state = state_p.Cast<ValidityAnalyzeState>();
198
198
  return (state.count + 7) / 8;
199
199
  }
200
200
 
@@ -222,12 +222,12 @@ void ValidityScanPartial(ColumnSegment &segment, ColumnScanState &state, idx_t s
222
222
  auto start = segment.GetRelativeIndex(state.row_index);
223
223
 
224
224
  static_assert(sizeof(validity_t) == sizeof(uint64_t), "validity_t should be 64-bit");
225
- auto &scan_state = (ValidityScanState &)*state.scan_state;
225
+ auto &scan_state = state.scan_state->Cast<ValidityScanState>();
226
226
 
227
227
  auto &result_mask = FlatVector::Validity(result);
228
228
  auto buffer_ptr = scan_state.handle.Ptr() + segment.GetBlockOffset();
229
229
  D_ASSERT(scan_state.block_id == segment.block->BlockId());
230
- auto input_data = (validity_t *)buffer_ptr;
230
+ auto input_data = reinterpret_cast<validity_t *>(buffer_ptr);
231
231
 
232
232
  #ifdef DEBUG
233
233
  // this method relies on all the bits we are going to write to being set to valid
@@ -345,7 +345,7 @@ void ValidityScan(ColumnSegment &segment, ColumnScanState &state, idx_t scan_cou
345
345
 
346
346
  auto start = segment.GetRelativeIndex(state.row_index);
347
347
  if (start % ValidityMask::BITS_PER_VALUE == 0) {
348
- auto &scan_state = (ValidityScanState &)*state.scan_state;
348
+ auto &scan_state = state.scan_state->Cast<ValidityScanState>();
349
349
 
350
350
  // aligned scan: no need to do anything fancy
351
351
  // note: this is only an optimization which avoids having to do messy bitshifting in the common case
@@ -353,8 +353,8 @@ void ValidityScan(ColumnSegment &segment, ColumnScanState &state, idx_t scan_cou
353
353
  auto &result_mask = FlatVector::Validity(result);
354
354
  auto buffer_ptr = scan_state.handle.Ptr() + segment.GetBlockOffset();
355
355
  D_ASSERT(scan_state.block_id == segment.block->BlockId());
356
- auto input_data = (validity_t *)buffer_ptr;
357
- auto result_data = (validity_t *)result_mask.GetData();
356
+ auto input_data = reinterpret_cast<validity_t *>(buffer_ptr);
357
+ auto result_data = result_mask.GetData();
358
358
  idx_t start_offset = start / ValidityMask::BITS_PER_VALUE;
359
359
  idx_t entry_scan_count = (scan_count + ValidityMask::BITS_PER_VALUE - 1) / ValidityMask::BITS_PER_VALUE;
360
360
  for (idx_t i = 0; i < entry_scan_count; i++) {
@@ -364,7 +364,7 @@ void ValidityScan(ColumnSegment &segment, ColumnScanState &state, idx_t scan_cou
364
364
  }
365
365
  if (!result_data) {
366
366
  result_mask.Initialize(MaxValue<idx_t>(STANDARD_VECTOR_SIZE, scan_count));
367
- result_data = (validity_t *)result_mask.GetData();
367
+ result_data = result_mask.GetData();
368
368
  }
369
369
  result_data[i] = input_entry;
370
370
  }
@@ -382,7 +382,7 @@ void ValidityFetchRow(ColumnSegment &segment, ColumnFetchState &state, row_t row
382
382
  auto &buffer_manager = BufferManager::GetBufferManager(segment.db);
383
383
  auto handle = buffer_manager.Pin(segment.block);
384
384
  auto dataptr = handle.Ptr() + segment.GetBlockOffset();
385
- ValidityMask mask((validity_t *)dataptr);
385
+ ValidityMask mask(reinterpret_cast<validity_t *>(dataptr));
386
386
  auto &result_mask = FlatVector::Validity(result);
387
387
  if (!mask.RowIsValidUnsafe(row_id)) {
388
388
  result_mask.SetInvalid(result_idx);
@@ -421,7 +421,7 @@ idx_t ValidityAppend(CompressionAppendState &append_state, ColumnSegment &segmen
421
421
  return append_count;
422
422
  }
423
423
 
424
- ValidityMask mask((validity_t *)append_state.handle.Ptr());
424
+ ValidityMask mask(reinterpret_cast<validity_t *>(append_state.handle.Ptr()));
425
425
  for (idx_t i = 0; i < append_count; i++) {
426
426
  auto idx = data.sel->get_index(offset + i);
427
427
  if (!data.validity.RowIsValidUnsafe(idx)) {
@@ -450,7 +450,7 @@ void ValidityRevertAppend(ColumnSegment &segment, idx_t start_row) {
450
450
  idx_t byte_pos = start_bit / 8;
451
451
  idx_t bit_start = byte_pos * 8;
452
452
  idx_t bit_end = (byte_pos + 1) * 8;
453
- ValidityMask mask((validity_t *)handle.Ptr() + byte_pos);
453
+ ValidityMask mask(reinterpret_cast<validity_t *>(handle.Ptr() + byte_pos));
454
454
  for (idx_t i = start_bit; i < bit_end; i++) {
455
455
  mask.SetValid(i - bit_start);
456
456
  }
@@ -302,7 +302,7 @@ static void VerifyCheckConstraint(ClientContext &context, TableCatalogEntry &tab
302
302
  UnifiedVectorFormat vdata;
303
303
  result.ToUnifiedFormat(chunk.size(), vdata);
304
304
 
305
- auto dataptr = (int32_t *)vdata.data;
305
+ auto dataptr = UnifiedVectorFormat::GetData<int32_t>(vdata);
306
306
  for (idx_t i = 0; i < chunk.size(); i++) {
307
307
  auto idx = vdata.sel->get_index(i);
308
308
  if (vdata.validity.RowIsValid(idx) && dataptr[idx] == 0) {
@@ -834,7 +834,7 @@ void DataTable::RevertAppend(idx_t start_row, idx_t count) {
834
834
  if (!info->indexes.Empty()) {
835
835
  idx_t current_row_base = start_row;
836
836
  row_t row_data[STANDARD_VECTOR_SIZE];
837
- Vector row_identifiers(LogicalType::ROW_TYPE, (data_ptr_t)row_data);
837
+ Vector row_identifiers(LogicalType::ROW_TYPE, data_ptr_cast(row_data));
838
838
  ScanTableSegment(start_row, count, [&](DataChunk &chunk) {
839
839
  for (idx_t i = 0; i < chunk.size(); i++) {
840
840
  row_data[i] = current_row_base + i;
@@ -29,6 +29,7 @@ LocalTableStorage::LocalTableStorage(DataTable &table)
29
29
  if (art.constraint_type != IndexConstraintType::NONE) {
30
30
  // unique index: create a local ART index that maintains the same unique constraint
31
31
  vector<unique_ptr<Expression>> unbound_expressions;
32
+ unbound_expressions.reserve(art.unbound_expressions.size());
32
33
  for (auto &expr : art.unbound_expressions) {
33
34
  unbound_expressions.push_back(expr->Copy());
34
35
  }
@@ -252,7 +253,7 @@ shared_ptr<LocalTableStorage> LocalTableManager::MoveEntry(DataTable &table) {
252
253
  return nullptr;
253
254
  }
254
255
  auto storage_entry = std::move(entry->second);
255
- table_storage.erase(table);
256
+ table_storage.erase(entry);
256
257
  return storage_entry;
257
258
  }
258
259
 
@@ -16,7 +16,7 @@ DataFileType MagicBytes::CheckMagicBytes(FileSystem *fs_p, const string &path) {
16
16
  char buffer[MAGIC_BYTES_READ_SIZE];
17
17
 
18
18
  handle->Read(buffer, MAGIC_BYTES_READ_SIZE);
19
- if (memcmp(buffer, "SQLite format 3\0\0\0", 16) == 0) {
19
+ if (memcmp(buffer, "SQLite format 3\0", 16) == 0) {
20
20
  return DataFileType::SQLITE_FILE;
21
21
  }
22
22
  if (memcmp(buffer, "PAR1", 4) == 0) {
@@ -19,7 +19,7 @@ namespace duckdb {
19
19
  const char MainHeader::MAGIC_BYTES[] = "DUCK";
20
20
 
21
21
  void MainHeader::Serialize(Serializer &ser) {
22
- ser.WriteData((data_ptr_t)MAGIC_BYTES, MAGIC_BYTE_SIZE);
22
+ ser.WriteData(const_data_ptr_cast(MAGIC_BYTES), MAGIC_BYTE_SIZE);
23
23
  ser.Write<uint64_t>(version_number);
24
24
  FieldWriter writer(ser);
25
25
  for (idx_t i = 0; i < FLAG_COUNT; i++) {
@@ -170,7 +170,7 @@ void SingleFileBlockManager::CreateNewDatabase() {
170
170
  h2.free_list = INVALID_BLOCK;
171
171
  h2.block_count = 0;
172
172
  SerializeHeaderStructure<DatabaseHeader>(h2, header_buffer.buffer);
173
- ChecksumAndWrite(header_buffer, Storage::FILE_HEADER_SIZE * 2);
173
+ ChecksumAndWrite(header_buffer, Storage::FILE_HEADER_SIZE * 2ULL);
174
174
  // ensure that writing to disk is completed before returning
175
175
  handle->Sync();
176
176
  // we start with h2 as active_header, this way our initial write will be in h1
@@ -197,7 +197,7 @@ void SingleFileBlockManager::LoadExistingDatabase() {
197
197
  DatabaseHeader h1, h2;
198
198
  ReadAndChecksum(header_buffer, Storage::FILE_HEADER_SIZE);
199
199
  h1 = DeserializeHeaderStructure<DatabaseHeader>(header_buffer.buffer);
200
- ReadAndChecksum(header_buffer, Storage::FILE_HEADER_SIZE * 2);
200
+ ReadAndChecksum(header_buffer, Storage::FILE_HEADER_SIZE * 2ULL);
201
201
  h2 = DeserializeHeaderStructure<DatabaseHeader>(header_buffer.buffer);
202
202
  // check the header with the highest iteration count
203
203
  if (h1.iteration > h2.iteration) {
@@ -751,7 +751,7 @@ void StandardBufferManager::FreeReservedMemory(idx_t size) {
751
751
  // Buffer Allocator
752
752
  //===--------------------------------------------------------------------===//
753
753
  data_ptr_t StandardBufferManager::BufferAllocatorAllocate(PrivateAllocatorData *private_data, idx_t size) {
754
- auto &data = (BufferAllocatorData &)*private_data;
754
+ auto &data = private_data->Cast<BufferAllocatorData>();
755
755
  auto reservation = data.manager.EvictBlocksOrThrow(size, nullptr, "failed to allocate data of size %s%s",
756
756
  StringUtil::BytesToHumanReadableString(size));
757
757
  // We rely on manual tracking of this one. :(
@@ -760,7 +760,7 @@ data_ptr_t StandardBufferManager::BufferAllocatorAllocate(PrivateAllocatorData *
760
760
  }
761
761
 
762
762
  void StandardBufferManager::BufferAllocatorFree(PrivateAllocatorData *private_data, data_ptr_t pointer, idx_t size) {
763
- auto &data = (BufferAllocatorData &)*private_data;
763
+ auto &data = private_data->Cast<BufferAllocatorData>();
764
764
  BufferPoolReservation r(data.manager.GetBufferPool());
765
765
  r.size = size;
766
766
  r.Resize(0);
@@ -772,7 +772,7 @@ data_ptr_t StandardBufferManager::BufferAllocatorRealloc(PrivateAllocatorData *p
772
772
  if (old_size == size) {
773
773
  return pointer;
774
774
  }
775
- auto &data = (BufferAllocatorData &)*private_data;
775
+ auto &data = private_data->Cast<BufferAllocatorData>();
776
776
  BufferPoolReservation r(data.manager.GetBufferPool());
777
777
  r.size = old_size;
778
778
  r.Resize(size);
@@ -90,7 +90,7 @@ void ListStats::Verify(const BaseStatistics &stats, Vector &vector, const Select
90
90
  UnifiedVectorFormat vdata;
91
91
  vector.ToUnifiedFormat(count, vdata);
92
92
 
93
- auto list_data = (list_entry_t *)vdata.data;
93
+ auto list_data = UnifiedVectorFormat::GetData<list_entry_t>(vdata);
94
94
  idx_t total_list_count = 0;
95
95
  for (idx_t i = 0; i < count; i++) {
96
96
  auto idx = sel.get_index(i);
@@ -525,7 +525,7 @@ void NumericStats::TemplatedVerify(const BaseStatistics &stats, Vector &vector,
525
525
  UnifiedVectorFormat vdata;
526
526
  vector.ToUnifiedFormat(count, vdata);
527
527
 
528
- auto data = (T *)vdata.data;
528
+ auto data = UnifiedVectorFormat::GetData<T>(vdata);
529
529
  auto min_value = NumericStats::MinOrNull(stats);
530
530
  auto max_value = NumericStats::MaxOrNull(stats);
531
531
  for (idx_t i = 0; i < count; i++) {