duckdb 0.8.1-dev65.0 → 0.8.1

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 (672) hide show
  1. package/binding.gyp +8 -8
  2. package/package.json +3 -1
  3. package/src/duckdb/extension/icu/icu-datepart.cpp +2 -2
  4. package/src/duckdb/extension/icu/icu-extension.cpp +1 -1
  5. package/src/duckdb/extension/icu/icu-makedate.cpp +5 -4
  6. package/src/duckdb/extension/icu/icu-strptime.cpp +1 -1
  7. package/src/duckdb/extension/icu/third_party/icu/i18n/nfsubs.cpp +0 -2
  8. package/src/duckdb/extension/json/buffered_json_reader.cpp +23 -14
  9. package/src/duckdb/extension/json/include/buffered_json_reader.hpp +6 -6
  10. package/src/duckdb/extension/json/include/json_common.hpp +13 -3
  11. package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
  12. package/src/duckdb/extension/json/include/json_scan.hpp +5 -2
  13. package/src/duckdb/extension/json/json_functions/json_contains.cpp +5 -0
  14. package/src/duckdb/extension/json/json_functions/json_create.cpp +16 -16
  15. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +3 -3
  16. package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +2 -2
  17. package/src/duckdb/extension/json/json_functions/json_structure.cpp +5 -3
  18. package/src/duckdb/extension/json/json_functions/json_transform.cpp +12 -12
  19. package/src/duckdb/extension/json/json_functions/read_json.cpp +2 -1
  20. package/src/duckdb/extension/json/json_functions.cpp +6 -3
  21. package/src/duckdb/extension/json/json_scan.cpp +43 -27
  22. package/src/duckdb/extension/parquet/column_reader.cpp +57 -52
  23. package/src/duckdb/extension/parquet/column_writer.cpp +57 -45
  24. package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +1 -1
  25. package/src/duckdb/extension/parquet/include/column_reader.hpp +5 -4
  26. package/src/duckdb/extension/parquet/include/column_writer.hpp +24 -0
  27. package/src/duckdb/extension/parquet/include/decode_utils.hpp +6 -0
  28. package/src/duckdb/extension/parquet/include/list_column_reader.hpp +1 -1
  29. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
  30. package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
  31. package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
  32. package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
  33. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
  34. package/src/duckdb/extension/parquet/parquet-extension.cpp +27 -2
  35. package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
  36. package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
  37. package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
  38. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
  39. package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
  40. package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
  41. package/src/duckdb/src/catalog/catalog.cpp +5 -17
  42. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +7 -1
  43. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +121 -0
  44. package/src/duckdb/src/catalog/catalog_search_path.cpp +49 -12
  45. package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
  46. package/src/duckdb/src/catalog/default/default_types.cpp +9 -84
  47. package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
  48. package/src/duckdb/src/common/adbc/adbc.cpp +118 -12
  49. package/src/duckdb/src/common/adbc/driver_manager.cpp +0 -20
  50. package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
  51. package/src/duckdb/src/common/arrow/arrow_converter.cpp +11 -12
  52. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +11 -10
  53. package/src/duckdb/src/common/checksum.cpp +1 -1
  54. package/src/duckdb/src/common/compressed_file_system.cpp +6 -6
  55. package/src/duckdb/src/common/crypto/md5.cpp +9 -9
  56. package/src/duckdb/src/common/exception.cpp +4 -1
  57. package/src/duckdb/src/common/exception_format_value.cpp +24 -15
  58. package/src/duckdb/src/common/field_writer.cpp +1 -1
  59. package/src/duckdb/src/common/fsst.cpp +11 -6
  60. package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
  61. package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
  62. package/src/duckdb/src/common/local_file_system.cpp +11 -11
  63. package/src/duckdb/src/common/multi_file_reader.cpp +3 -0
  64. package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
  65. package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
  66. package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
  67. package/src/duckdb/src/common/random_engine.cpp +1 -1
  68. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
  69. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
  70. package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
  71. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
  72. package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
  73. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
  74. package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
  75. package/src/duckdb/src/common/serializer.cpp +1 -1
  76. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  77. package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
  78. package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
  79. package/src/duckdb/src/common/types/bit.cpp +5 -5
  80. package/src/duckdb/src/common/types/blob.cpp +8 -8
  81. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
  82. package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
  83. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  84. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  85. package/src/duckdb/src/common/types/hash.cpp +2 -2
  86. package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
  87. package/src/duckdb/src/common/types/list_segment.cpp +77 -49
  88. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
  89. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +5 -4
  90. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
  91. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +61 -24
  92. package/src/duckdb/src/common/types/string_heap.cpp +1 -1
  93. package/src/duckdb/src/common/types/time.cpp +2 -8
  94. package/src/duckdb/src/common/types/timestamp.cpp +37 -1
  95. package/src/duckdb/src/common/types/value.cpp +3 -2
  96. package/src/duckdb/src/common/types/vector.cpp +98 -101
  97. package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
  98. package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
  99. package/src/duckdb/src/common/types.cpp +48 -33
  100. package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
  101. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
  102. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
  103. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
  104. package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +30 -33
  105. package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +0 -4
  106. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +33 -36
  107. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +53 -66
  108. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +48 -48
  109. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +44 -44
  110. package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +32 -32
  111. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +34 -34
  112. package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +30 -31
  113. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +91 -103
  114. package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +17 -17
  115. package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +25 -27
  116. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +37 -38
  117. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
  118. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +49 -85
  119. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
  120. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +116 -134
  121. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +63 -100
  122. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
  123. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +22 -23
  124. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +16 -18
  125. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +22 -25
  126. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +19 -24
  127. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +18 -23
  128. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +14 -18
  129. package/src/duckdb/src/core_functions/function_list.cpp +1 -0
  130. package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
  131. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +46 -46
  132. package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +3 -0
  133. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
  134. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
  135. package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
  136. package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
  137. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +14 -0
  138. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +4 -4
  139. package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
  140. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +26 -9
  141. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +7 -9
  142. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
  143. package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
  144. package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
  145. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +4 -1
  146. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
  147. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +6 -6
  148. package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
  149. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
  150. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
  151. package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
  152. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  153. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
  154. package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
  155. package/src/duckdb/src/execution/expression_executor.cpp +28 -28
  156. package/src/duckdb/src/execution/index/art/art.cpp +110 -39
  157. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +23 -5
  158. package/src/duckdb/src/execution/index/art/leaf.cpp +11 -11
  159. package/src/duckdb/src/execution/index/art/leaf_segment.cpp +10 -0
  160. package/src/duckdb/src/execution/index/art/node.cpp +48 -35
  161. package/src/duckdb/src/execution/index/art/node16.cpp +3 -0
  162. package/src/duckdb/src/execution/index/art/node256.cpp +1 -0
  163. package/src/duckdb/src/execution/index/art/node4.cpp +3 -0
  164. package/src/duckdb/src/execution/index/art/node48.cpp +2 -0
  165. package/src/duckdb/src/execution/index/art/prefix.cpp +2 -0
  166. package/src/duckdb/src/execution/join_hashtable.cpp +6 -4
  167. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
  168. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
  169. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  170. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
  171. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
  172. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
  173. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +26 -9
  174. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
  175. package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +5 -2
  176. package/src/duckdb/src/execution/operator/helper/physical_set.cpp +5 -1
  177. package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
  178. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
  179. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  180. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
  181. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +3 -6
  182. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
  183. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
  184. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
  185. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
  186. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
  187. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
  188. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
  189. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  190. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
  191. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
  192. package/src/duckdb/src/execution/operator/projection/physical_tableinout_function.cpp +1 -0
  193. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +10 -5
  194. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
  195. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
  196. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
  197. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +0 -1
  198. package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +29 -3
  199. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  200. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
  201. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  202. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
  203. package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
  204. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
  205. package/src/duckdb/src/execution/reservoir_sample.cpp +20 -6
  206. package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
  207. package/src/duckdb/src/function/aggregate/distributive/count.cpp +159 -21
  208. package/src/duckdb/src/function/aggregate/distributive/first.cpp +68 -75
  209. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +14 -14
  210. package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
  211. package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
  212. package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
  213. package/src/duckdb/src/function/cast/list_casts.cpp +2 -4
  214. package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
  215. package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
  216. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
  217. package/src/duckdb/src/function/pragma/pragma_queries.cpp +33 -23
  218. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
  219. package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
  220. package/src/duckdb/src/function/scalar/list/list_extract.cpp +4 -4
  221. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +3 -4
  222. package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
  223. package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
  224. package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
  225. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
  226. package/src/duckdb/src/function/scalar/string/regexp/regexp_util.cpp +6 -2
  227. package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
  228. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
  229. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
  230. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +27 -25
  231. package/src/duckdb/src/function/scalar_function.cpp +3 -3
  232. package/src/duckdb/src/function/table/arrow.cpp +6 -6
  233. package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
  234. package/src/duckdb/src/function/table/checkpoint.cpp +4 -1
  235. package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
  236. package/src/duckdb/src/function/table/glob.cpp +1 -1
  237. package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
  238. package/src/duckdb/src/function/table/range.cpp +4 -4
  239. package/src/duckdb/src/function/table/read_csv.cpp +19 -21
  240. package/src/duckdb/src/function/table/repeat.cpp +5 -2
  241. package/src/duckdb/src/function/table/repeat_row.cpp +10 -3
  242. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
  243. package/src/duckdb/src/function/table/system/pragma_storage_info.cpp +4 -4
  244. package/src/duckdb/src/function/table/system/test_vector_types.cpp +82 -26
  245. package/src/duckdb/src/function/table/table_scan.cpp +4 -4
  246. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  247. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  248. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -5
  249. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -0
  250. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +11 -1
  251. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
  252. package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +8 -2
  253. package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +97 -0
  254. package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
  255. package/src/duckdb/src/include/duckdb/common/arrow/arrow_appender.hpp +1 -1
  256. package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
  257. package/src/duckdb/src/include/duckdb/common/arrow/arrow_converter.hpp +2 -3
  258. package/src/duckdb/src/include/duckdb/common/arrow/arrow_options.hpp +8 -1
  259. package/src/duckdb/src/include/duckdb/common/arrow/result_arrow_wrapper.hpp +0 -1
  260. package/src/duckdb/src/include/duckdb/common/bit_utils.hpp +16 -22
  261. package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
  262. package/src/duckdb/src/include/duckdb/common/exception.hpp +5 -2
  263. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
  264. package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
  265. package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
  266. package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
  267. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
  268. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
  269. package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
  270. package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
  271. package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
  272. package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
  273. package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
  274. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
  275. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
  276. package/src/duckdb/src/include/duckdb/common/types/time.hpp +2 -0
  277. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +4 -14
  278. package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
  279. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
  280. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
  281. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +112 -76
  282. package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
  283. package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
  284. package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
  285. package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
  286. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +20 -24
  287. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +36 -39
  288. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +57 -53
  289. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +8 -9
  290. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +16 -18
  291. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +7 -8
  292. package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +9 -0
  293. package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +2 -6
  294. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +16 -36
  295. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
  296. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +13 -7
  297. package/src/duckdb/src/include/duckdb/execution/index/art/fixed_size_allocator.hpp +3 -0
  298. package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +1 -1
  299. package/src/duckdb/src/include/duckdb/execution/index/art/leaf_segment.hpp +2 -0
  300. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +13 -3
  301. package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +1 -0
  302. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
  303. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
  304. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
  305. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
  306. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +9 -30
  307. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +95 -0
  308. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
  309. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
  310. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
  311. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
  312. package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
  313. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +4 -2
  314. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
  315. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
  316. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +1 -1
  317. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +4 -3
  318. package/src/duckdb/src/include/duckdb/function/table_function.hpp +9 -8
  319. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +4 -1
  320. package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +3 -1
  321. package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
  322. package/src/duckdb/src/include/duckdb/main/config.hpp +5 -0
  323. package/src/duckdb/src/include/duckdb/main/database_manager.hpp +1 -0
  324. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +142 -136
  325. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  326. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
  327. package/src/duckdb/src/include/duckdb/main/query_result.hpp +23 -0
  328. package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
  329. package/src/duckdb/src/include/duckdb/main/settings.hpp +19 -0
  330. package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
  331. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
  332. package/src/duckdb/src/include/duckdb/optimizer/unnest_rewriter.hpp +4 -0
  333. package/src/duckdb/src/include/duckdb/parallel/meta_pipeline.hpp +12 -3
  334. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
  335. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
  336. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
  337. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
  338. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  339. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
  340. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
  341. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
  342. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
  343. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  344. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
  345. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
  346. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
  347. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
  348. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
  349. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
  350. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  351. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  352. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
  353. package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
  354. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
  355. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
  356. package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
  357. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  358. package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
  359. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
  360. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
  361. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
  362. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -2
  363. package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
  364. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  365. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +3 -3
  366. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
  367. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
  368. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
  369. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +106 -92
  370. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -2
  371. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
  372. package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
  373. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +37 -1
  374. package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
  375. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
  376. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
  377. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
  378. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
  379. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
  380. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
  381. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
  382. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
  383. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
  384. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
  385. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
  386. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
  387. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
  388. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
  389. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
  390. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
  391. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
  392. package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
  393. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
  394. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
  395. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
  396. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
  397. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +7 -2
  398. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +6 -2
  399. package/src/duckdb/src/include/duckdb/planner/operator/logical_execute.hpp +4 -0
  400. package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +5 -1
  401. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +5 -1
  402. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
  403. package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +6 -2
  404. package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +4 -0
  405. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
  406. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
  407. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  408. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/byte_reader.hpp +4 -0
  409. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
  410. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
  411. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
  412. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
  413. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +1 -1
  414. package/src/duckdb/src/include/duckdb/storage/in_memory_block_manager.hpp +13 -13
  415. package/src/duckdb/src/include/duckdb/storage/index.hpp +6 -4
  416. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
  417. package/src/duckdb/src/include/duckdb/storage/storage_extension.hpp +0 -6
  418. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
  419. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
  420. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
  421. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
  422. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +1 -1
  423. package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +2 -1
  424. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +2 -2
  425. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +2 -1
  426. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
  427. package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +2 -1
  428. package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +2 -1
  429. package/src/duckdb/src/include/duckdb/storage/table_storage_info.hpp +0 -2
  430. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
  431. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
  432. package/src/duckdb/src/main/attached_database.cpp +8 -0
  433. package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
  434. package/src/duckdb/src/main/capi/arrow-c.cpp +13 -13
  435. package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
  436. package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
  437. package/src/duckdb/src/main/capi/config-c.cpp +3 -6
  438. package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
  439. package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
  440. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
  441. package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
  442. package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
  443. package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
  444. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
  445. package/src/duckdb/src/main/capi/result-c.cpp +23 -23
  446. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  447. package/src/duckdb/src/main/client_context.cpp +7 -6
  448. package/src/duckdb/src/main/config.cpp +2 -0
  449. package/src/duckdb/src/main/database.cpp +1 -0
  450. package/src/duckdb/src/main/database_manager.cpp +22 -1
  451. package/src/duckdb/src/main/error_manager.cpp +1 -1
  452. package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
  453. package/src/duckdb/src/main/query_result.cpp +6 -2
  454. package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
  455. package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
  456. package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
  457. package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
  458. package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
  459. package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
  460. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  461. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  462. package/src/duckdb/src/main/relation.cpp +1 -1
  463. package/src/duckdb/src/main/settings/settings.cpp +41 -6
  464. package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
  465. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  466. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
  467. package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
  468. package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
  469. package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
  470. package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
  471. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
  472. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
  473. package/src/duckdb/src/optimizer/unnest_rewriter.cpp +27 -16
  474. package/src/duckdb/src/parallel/executor.cpp +39 -15
  475. package/src/duckdb/src/parallel/meta_pipeline.cpp +17 -3
  476. package/src/duckdb/src/parser/base_expression.cpp +2 -5
  477. package/src/duckdb/src/parser/column_definition.cpp +5 -8
  478. package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
  479. package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
  480. package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
  481. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
  482. package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
  483. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
  484. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
  485. package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
  486. package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
  487. package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
  488. package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
  489. package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
  490. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
  491. package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
  492. package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
  493. package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
  494. package/src/duckdb/src/parser/parsed_data/create_info.cpp +0 -3
  495. package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
  496. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
  497. package/src/duckdb/src/parser/parser.cpp +98 -38
  498. package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
  499. package/src/duckdb/src/parser/query_node.cpp +7 -6
  500. package/src/duckdb/src/parser/result_modifier.cpp +25 -18
  501. package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
  502. package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
  503. package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
  504. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
  505. package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
  506. package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
  507. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
  508. package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
  509. package/src/duckdb/src/parser/tableref.cpp +12 -3
  510. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
  511. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
  512. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
  513. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
  514. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
  515. package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
  516. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
  517. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
  518. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
  519. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +70 -75
  520. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
  521. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
  522. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
  523. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
  524. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +31 -29
  525. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
  526. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
  527. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
  528. package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +0 -2
  529. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
  530. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
  531. package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
  532. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
  533. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
  534. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
  535. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
  536. package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
  537. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
  538. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
  539. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
  540. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
  541. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
  542. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
  543. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
  544. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
  545. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
  546. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
  547. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
  548. package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
  549. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -25
  550. package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
  551. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
  552. package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
  553. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
  554. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
  555. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
  556. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
  557. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
  558. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
  559. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
  560. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
  561. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
  562. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
  563. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
  564. package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
  565. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
  566. package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
  567. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
  568. package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
  569. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
  570. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
  571. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
  572. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +30 -27
  573. package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
  574. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
  575. package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
  576. package/src/duckdb/src/parser/transformer.cpp +45 -47
  577. package/src/duckdb/src/planner/bind_context.cpp +9 -10
  578. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -3
  579. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
  580. package/src/duckdb/src/planner/binder/expression/bind_positional_reference_expression.cpp +8 -3
  581. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
  582. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
  583. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +39 -23
  584. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
  585. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +1 -28
  586. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +18 -1
  587. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +0 -25
  588. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
  589. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +2 -114
  590. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +7 -2
  591. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +7 -2
  592. package/src/duckdb/src/planner/binder.cpp +1 -1
  593. package/src/duckdb/src/planner/bound_result_modifier.cpp +30 -11
  594. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +11 -10
  595. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
  596. package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
  597. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
  598. package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
  599. package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
  600. package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
  601. package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
  602. package/src/duckdb/src/planner/expression/bound_default_expression.cpp +7 -1
  603. package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
  604. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
  605. package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
  606. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
  607. package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
  608. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
  609. package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
  610. package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
  611. package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
  612. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
  613. package/src/duckdb/src/planner/expression.cpp +18 -0
  614. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
  615. package/src/duckdb/src/planner/expression_binder.cpp +3 -2
  616. package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
  617. package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
  618. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  619. package/src/duckdb/src/planner/logical_operator.cpp +3 -4
  620. package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
  621. package/src/duckdb/src/planner/operator/logical_distinct.cpp +5 -4
  622. package/src/duckdb/src/planner/operator/logical_pivot.cpp +14 -2
  623. package/src/duckdb/src/planner/planner.cpp +5 -15
  624. package/src/duckdb/src/planner/table_filter.cpp +1 -1
  625. package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
  626. package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
  627. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
  628. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
  629. package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
  630. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
  631. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
  632. package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
  633. package/src/duckdb/src/storage/compression/rle.cpp +8 -8
  634. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
  635. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
  636. package/src/duckdb/src/storage/data_table.cpp +12 -10
  637. package/src/duckdb/src/storage/index.cpp +13 -0
  638. package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
  639. package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
  640. package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
  641. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
  642. package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
  643. package/src/duckdb/src/storage/storage_manager.cpp +6 -0
  644. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
  645. package/src/duckdb/src/storage/table/column_data.cpp +7 -3
  646. package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
  647. package/src/duckdb/src/storage/table/list_column_data.cpp +8 -7
  648. package/src/duckdb/src/storage/table/row_group.cpp +8 -7
  649. package/src/duckdb/src/storage/table/row_group_collection.cpp +6 -3
  650. package/src/duckdb/src/storage/table/standard_column_data.cpp +5 -4
  651. package/src/duckdb/src/storage/table/struct_column_data.cpp +4 -3
  652. package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
  653. package/src/duckdb/src/storage/wal_replay.cpp +5 -6
  654. package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
  655. package/src/duckdb/src/transaction/commit_state.cpp +8 -8
  656. package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
  657. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
  658. package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
  659. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
  660. package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
  661. package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
  662. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +0 -1
  663. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +0 -14
  664. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +12828 -12956
  665. package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
  666. package/src/duckdb/third_party/zstd/compress/zstd_compress.cpp +3 -0
  667. package/src/duckdb/third_party/zstd/include/zstd/compress/zstd_cwksp.h +4 -0
  668. package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +5 -5
  669. package/src/duckdb/ub_src_parser_transform_statement.cpp +0 -2
  670. package/test/extension.test.ts +11 -0
  671. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_database_info.hpp +0 -46
  672. package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +0 -28
@@ -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;
@@ -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);