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
@@ -116,7 +116,7 @@ static void ConstructValue(const_data_ptr_t data, idx_t size, data_t target[]) {
116
116
  }
117
117
 
118
118
  void StringStats::Update(BaseStatistics &stats, const string_t &value) {
119
- auto data = (const_data_ptr_t)value.GetData();
119
+ auto data = const_data_ptr_cast(value.GetData());
120
120
  auto size = value.GetSize();
121
121
 
122
122
  //! we can only fit 8 bytes, so we might need to trim our string
@@ -136,12 +136,12 @@ void StringStats::Update(BaseStatistics &stats, const string_t &value) {
136
136
  string_data.max_string_length = size;
137
137
  }
138
138
  if (stats.GetType().id() == LogicalTypeId::VARCHAR && !string_data.has_unicode) {
139
- auto unicode = Utf8Proc::Analyze((const char *)data, size);
139
+ auto unicode = Utf8Proc::Analyze(const_char_ptr_cast(data), size);
140
140
  if (unicode == UnicodeType::UNICODE) {
141
141
  string_data.has_unicode = true;
142
142
  } else if (unicode == UnicodeType::INVALID) {
143
- throw InvalidInputException(
144
- ErrorManager::InvalidUnicodeError(string((char *)data, size), "segment statistics update"));
143
+ throw InvalidInputException(ErrorManager::InvalidUnicodeError(string(const_char_ptr_cast(data), size),
144
+ "segment statistics update"));
145
145
  }
146
146
  }
147
147
  }
@@ -166,7 +166,7 @@ void StringStats::Merge(BaseStatistics &stats, const BaseStatistics &other) {
166
166
  FilterPropagateResult StringStats::CheckZonemap(const BaseStatistics &stats, ExpressionType comparison_type,
167
167
  const string &constant) {
168
168
  auto &string_data = StringStats::GetDataUnsafe(stats);
169
- auto data = (const_data_ptr_t)constant.c_str();
169
+ auto data = const_data_ptr_cast(constant.c_str());
170
170
  auto size = constant.size();
171
171
 
172
172
  idx_t value_size = size > StringStatsData::MAX_STRING_MINMAX_SIZE ? StringStatsData::MAX_STRING_MINMAX_SIZE : size;
@@ -219,10 +219,11 @@ string StringStats::ToString(const BaseStatistics &stats) {
219
219
  auto &string_data = StringStats::GetDataUnsafe(stats);
220
220
  idx_t min_len = GetValidMinMaxSubstring(string_data.min);
221
221
  idx_t max_len = GetValidMinMaxSubstring(string_data.max);
222
- return StringUtil::Format(
223
- "[Min: %s, Max: %s, Has Unicode: %s, Max String Length: %s]", string((const char *)string_data.min, min_len),
224
- string((const char *)string_data.max, max_len), string_data.has_unicode ? "true" : "false",
225
- string_data.has_max_string_length ? to_string(string_data.max_string_length) : "?");
222
+ return StringUtil::Format("[Min: %s, Max: %s, Has Unicode: %s, Max String Length: %s]",
223
+ string(const_char_ptr_cast(string_data.min), min_len),
224
+ string(const_char_ptr_cast(string_data.max), max_len),
225
+ string_data.has_unicode ? "true" : "false",
226
+ string_data.has_max_string_length ? to_string(string_data.max_string_length) : "?");
226
227
  }
227
228
 
228
229
  void StringStats::Verify(const BaseStatistics &stats, Vector &vector, const SelectionVector &sel, idx_t count) {
@@ -230,7 +231,7 @@ void StringStats::Verify(const BaseStatistics &stats, Vector &vector, const Sele
230
231
 
231
232
  UnifiedVectorFormat vdata;
232
233
  vector.ToUnifiedFormat(count, vdata);
233
- auto data = (string_t *)vdata.data;
234
+ auto data = UnifiedVectorFormat::GetData<string_t>(vdata);
234
235
  for (idx_t i = 0; i < count; i++) {
235
236
  auto idx = sel.get_index(i);
236
237
  auto index = vdata.sel->get_index(idx);
@@ -256,13 +257,13 @@ void StringStats::Verify(const BaseStatistics &stats, Vector &vector, const Sele
256
257
  throw InternalException("Invalid unicode detected in vector: %s", vector.ToString(count));
257
258
  }
258
259
  }
259
- if (StringValueComparison((const_data_ptr_t)data, MinValue<idx_t>(len, StringStatsData::MAX_STRING_MINMAX_SIZE),
260
- string_data.min) < 0) {
260
+ if (StringValueComparison(const_data_ptr_cast(data),
261
+ MinValue<idx_t>(len, StringStatsData::MAX_STRING_MINMAX_SIZE), string_data.min) < 0) {
261
262
  throw InternalException("Statistics mismatch: value is smaller than min.\nStatistics: %s\nVector: %s",
262
263
  stats.ToString(), vector.ToString(count));
263
264
  }
264
- if (StringValueComparison((const_data_ptr_t)data, MinValue<idx_t>(len, StringStatsData::MAX_STRING_MINMAX_SIZE),
265
- string_data.max) > 0) {
265
+ if (StringValueComparison(const_data_ptr_cast(data),
266
+ MinValue<idx_t>(len, StringStatsData::MAX_STRING_MINMAX_SIZE), string_data.max) > 0) {
266
267
  throw InternalException("Statistics mismatch: value is bigger than max.\nStatistics: %s\nVector: %s",
267
268
  stats.ToString(), vector.ToString(count));
268
269
  }
@@ -241,7 +241,7 @@ void ChunkVectorInfo::Serialize(Serializer &serializer) {
241
241
  for (idx_t i = 0; i < count; i++) {
242
242
  deleted_tuples[sel.get_index(i)] = false;
243
243
  }
244
- serializer.WriteData((data_ptr_t)deleted_tuples, sizeof(bool) * STANDARD_VECTOR_SIZE);
244
+ serializer.WriteData(data_ptr_cast(deleted_tuples), sizeof(bool) * STANDARD_VECTOR_SIZE);
245
245
  }
246
246
 
247
247
  unique_ptr<ChunkInfo> ChunkVectorInfo::Deserialize(Deserializer &source) {
@@ -250,7 +250,7 @@ unique_ptr<ChunkInfo> ChunkVectorInfo::Deserialize(Deserializer &source) {
250
250
  auto result = make_uniq<ChunkVectorInfo>(start);
251
251
  result->any_deleted = true;
252
252
  bool deleted_tuples[STANDARD_VECTOR_SIZE];
253
- source.ReadData((data_ptr_t)deleted_tuples, sizeof(bool) * STANDARD_VECTOR_SIZE);
253
+ source.ReadData(data_ptr_cast(deleted_tuples), sizeof(bool) * STANDARD_VECTOR_SIZE);
254
254
  for (idx_t i = 0; i < STANDARD_VECTOR_SIZE; i++) {
255
255
  if (deleted_tuples[i]) {
256
256
  result->deleted[i] = 0;
@@ -331,7 +331,7 @@ idx_t ColumnSegment::FilterSelection(SelectionVector &sel, Vector &result, const
331
331
  // similar to the CONJUNCTION_AND, but we need to take care of the SelectionVectors (OR all of them)
332
332
  idx_t count_total = 0;
333
333
  SelectionVector result_sel(approved_tuple_count);
334
- auto &conjunction_or = (const ConjunctionOrFilter &)filter;
334
+ auto &conjunction_or = filter.Cast<ConjunctionOrFilter>();
335
335
  for (auto &child_filter : conjunction_or.child_filters) {
336
336
  SelectionVector temp_sel;
337
337
  temp_sel.Initialize(sel);
@@ -357,14 +357,14 @@ idx_t ColumnSegment::FilterSelection(SelectionVector &sel, Vector &result, const
357
357
  return approved_tuple_count;
358
358
  }
359
359
  case TableFilterType::CONJUNCTION_AND: {
360
- auto &conjunction_and = (const ConjunctionAndFilter &)filter;
360
+ auto &conjunction_and = filter.Cast<ConjunctionAndFilter>();
361
361
  for (auto &child_filter : conjunction_and.child_filters) {
362
362
  FilterSelection(sel, result, *child_filter, approved_tuple_count, mask);
363
363
  }
364
364
  return approved_tuple_count;
365
365
  }
366
366
  case TableFilterType::CONSTANT_COMPARISON: {
367
- auto &constant_filter = (const ConstantFilter &)filter;
367
+ auto &constant_filter = filter.Cast<ConstantFilter>();
368
368
  // the inplace loops take the result as the last parameter
369
369
  switch (result.GetType().InternalType()) {
370
370
  case PhysicalType::UINT8: {
@@ -167,7 +167,7 @@ void ListColumnData::Append(BaseStatistics &stats, ColumnAppendState &state, Vec
167
167
  auto &list_validity = list_data.validity;
168
168
 
169
169
  // construct the list_entry_t entries to append to the column data
170
- auto input_offsets = (list_entry_t *)list_data.data;
170
+ auto input_offsets = UnifiedVectorFormat::GetData<list_entry_t>(list_data);
171
171
  auto start_offset = child_column->GetMaxEntry();
172
172
  idx_t child_count = 0;
173
173
 
@@ -210,7 +210,7 @@ void ListColumnData::Append(BaseStatistics &stats, ColumnAppendState &state, Vec
210
210
 
211
211
  UnifiedVectorFormat vdata;
212
212
  vdata.sel = FlatVector::IncrementalSelectionVector();
213
- vdata.data = (data_ptr_t)append_offsets.get();
213
+ vdata.data = data_ptr_cast(append_offsets.get());
214
214
 
215
215
  // append the list offsets
216
216
  ColumnData::AppendData(stats, state, vdata, count);
@@ -337,7 +337,7 @@ unique_ptr<ColumnCheckpointState> ListColumnData::Checkpoint(RowGroup &row_group
337
337
  auto base_state = ColumnData::Checkpoint(row_group, partial_block_manager, checkpoint_info);
338
338
  auto child_state = child_column->Checkpoint(row_group, partial_block_manager, checkpoint_info);
339
339
 
340
- auto &checkpoint_state = (ListColumnCheckpointState &)*base_state;
340
+ auto &checkpoint_state = base_state->Cast<ListColumnCheckpointState>();
341
341
  checkpoint_state.validity_state = std::move(validity_state);
342
342
  checkpoint_state.child_state = std::move(child_state);
343
343
  return base_state;
@@ -502,7 +502,7 @@ void RowGroup::TemplatedScan(TransactionData transaction, CollectionScanState &s
502
502
  if (column == COLUMN_IDENTIFIER_ROW_ID) {
503
503
  D_ASSERT(result.data[i].GetType().InternalType() == PhysicalType::INT64);
504
504
  result.data[i].SetVectorType(VectorType::FLAT_VECTOR);
505
- auto result_data = (int64_t *)FlatVector::GetData(result.data[i]);
505
+ auto result_data = FlatVector::GetData<int64_t>(result.data[i]);
506
506
  for (size_t sel_idx = 0; sel_idx < approved_tuple_count; sel_idx++) {
507
507
  result_data[sel_idx] = this->start + current_row + sel.get_index(sel_idx);
508
508
  }
@@ -650,7 +650,7 @@ void RowGroup::AppendVersionInfo(TransactionData transaction, idx_t count) {
650
650
  } else {
651
651
  D_ASSERT(version_info->info[vector_idx]->type == ChunkInfoType::VECTOR_INFO);
652
652
  // use existing vector
653
- info = (ChunkVectorInfo *)version_info->info[vector_idx].get();
653
+ info = &version_info->info[vector_idx]->Cast<ChunkVectorInfo>();
654
654
  }
655
655
  info->Append(start, end, transaction.transaction_id);
656
656
  }
@@ -985,7 +985,7 @@ void VersionDeleteState::Delete(row_t row_id) {
985
985
  info.version_info->info[vector_idx] =
986
986
  make_uniq<ChunkVectorInfo>(info.start + vector_idx * STANDARD_VECTOR_SIZE);
987
987
  } else if (info.version_info->info[vector_idx]->type == ChunkInfoType::CONSTANT_INFO) {
988
- auto &constant = (ChunkConstantInfo &)*info.version_info->info[vector_idx];
988
+ auto &constant = info.version_info->info[vector_idx]->Cast<ChunkConstantInfo>();
989
989
  // info exists but it's a constant info: convert to a vector info
990
990
  auto new_info = make_uniq<ChunkVectorInfo>(info.start + vector_idx * STANDARD_VECTOR_SIZE);
991
991
  new_info->insert_id = constant.insert_id.load();
@@ -995,7 +995,7 @@ void VersionDeleteState::Delete(row_t row_id) {
995
995
  info.version_info->info[vector_idx] = std::move(new_info);
996
996
  }
997
997
  D_ASSERT(info.version_info->info[vector_idx]->type == ChunkInfoType::VECTOR_INFO);
998
- current_info = (ChunkVectorInfo *)info.version_info->info[vector_idx].get();
998
+ current_info = &info.version_info->info[vector_idx]->Cast<ChunkVectorInfo>();
999
999
  current_chunk = vector_idx;
1000
1000
  chunk_row = vector_idx * STANDARD_VECTOR_SIZE;
1001
1001
  }
@@ -189,7 +189,7 @@ unique_ptr<ColumnCheckpointState> StandardColumnData::Checkpoint(RowGroup &row_g
189
189
  ColumnCheckpointInfo &checkpoint_info) {
190
190
  auto validity_state = validity.Checkpoint(row_group, partial_block_manager, checkpoint_info);
191
191
  auto base_state = ColumnData::Checkpoint(row_group, partial_block_manager, checkpoint_info);
192
- auto &checkpoint_state = (StandardColumnCheckpointState &)*base_state;
192
+ auto &checkpoint_state = base_state->Cast<StandardColumnCheckpointState>();
193
193
  checkpoint_state.validity_state = std::move(validity_state);
194
194
  return base_state;
195
195
  }
@@ -48,9 +48,9 @@ Value UpdateInfo::GetValue(idx_t index) {
48
48
 
49
49
  switch (type.id()) {
50
50
  case LogicalTypeId::VALIDITY:
51
- return Value::BOOLEAN(((bool *)tuple_data)[index]);
51
+ return Value::BOOLEAN(reinterpret_cast<bool *>(tuple_data)[index]);
52
52
  case LogicalTypeId::INTEGER:
53
- return Value::INTEGER(((int32_t *)tuple_data)[index]);
53
+ return Value::INTEGER(reinterpret_cast<int32_t *>(tuple_data)[index]);
54
54
  default:
55
55
  throw NotImplementedException("Unimplemented type for UpdateInfo::GetValue");
56
56
  }
@@ -85,7 +85,7 @@ void UpdateInfo::Verify() {
85
85
  // Update Fetch
86
86
  //===--------------------------------------------------------------------===//
87
87
  static void MergeValidityInfo(UpdateInfo *current, ValidityMask &result_mask) {
88
- auto info_data = (bool *)current->tuple_data;
88
+ auto info_data = reinterpret_cast<bool *>(current->tuple_data);
89
89
  for (idx_t i = 0; i < current->N; i++) {
90
90
  result_mask.Set(current->tuples[i], info_data[i]);
91
91
  }
@@ -100,7 +100,7 @@ static void UpdateMergeValidity(transaction_t start_time, transaction_t transact
100
100
 
101
101
  template <class T>
102
102
  static void MergeUpdateInfo(UpdateInfo *current, T *result_data) {
103
- auto info_data = (T *)current->tuple_data;
103
+ auto info_data = reinterpret_cast<T *>(current->tuple_data);
104
104
  if (current->N == STANDARD_VECTOR_SIZE) {
105
105
  // special case: update touches ALL tuples of this vector
106
106
  // in this case we can just memcpy the data
@@ -241,7 +241,7 @@ void UpdateSegment::FetchCommitted(idx_t vector_index, Vector &result) {
241
241
  //===--------------------------------------------------------------------===//
242
242
  static void MergeUpdateInfoRangeValidity(UpdateInfo *current, idx_t start, idx_t end, idx_t result_offset,
243
243
  ValidityMask &result_mask) {
244
- auto info_data = (bool *)current->tuple_data;
244
+ auto info_data = reinterpret_cast<bool *>(current->tuple_data);
245
245
  for (idx_t i = 0; i < current->N; i++) {
246
246
  auto tuple_idx = current->tuples[i];
247
247
  if (tuple_idx < start) {
@@ -261,7 +261,7 @@ static void FetchCommittedRangeValidity(UpdateInfo *info, idx_t start, idx_t end
261
261
 
262
262
  template <class T>
263
263
  static void MergeUpdateInfoRange(UpdateInfo *current, idx_t start, idx_t end, idx_t result_offset, T *result_data) {
264
- auto info_data = (T *)current->tuple_data;
264
+ auto info_data = reinterpret_cast<T *>(current->tuple_data);
265
265
  for (idx_t i = 0; i < current->N; i++) {
266
266
  auto tuple_idx = current->tuples[i];
267
267
  if (tuple_idx < start) {
@@ -352,7 +352,7 @@ static void FetchRowValidity(transaction_t start_time, transaction_t transaction
352
352
  Vector &result, idx_t result_idx) {
353
353
  auto &result_mask = FlatVector::Validity(result);
354
354
  UpdateInfo::UpdatesForTransaction(info, start_time, transaction_id, [&](UpdateInfo *current) {
355
- auto info_data = (bool *)current->tuple_data;
355
+ auto info_data = reinterpret_cast<bool *>(current->tuple_data);
356
356
  // FIXME: we could do a binary search in here
357
357
  for (idx_t i = 0; i < current->N; i++) {
358
358
  if (current->tuples[i] == row_idx) {
@@ -576,7 +576,7 @@ void UpdateSegment::InitializeUpdateInfo(UpdateInfo &info, row_t *ids, const Sel
576
576
  static void InitializeUpdateValidity(UpdateInfo *base_info, Vector &base_data, UpdateInfo *update_info, Vector &update,
577
577
  const SelectionVector &sel) {
578
578
  auto &update_mask = FlatVector::Validity(update);
579
- auto tuple_data = (bool *)update_info->tuple_data;
579
+ auto tuple_data = reinterpret_cast<bool *>(update_info->tuple_data);
580
580
 
581
581
  if (!update_mask.AllValid()) {
582
582
  for (idx_t i = 0; i < update_info->N; i++) {
@@ -590,7 +590,7 @@ static void InitializeUpdateValidity(UpdateInfo *base_info, Vector &base_data, U
590
590
  }
591
591
 
592
592
  auto &base_mask = FlatVector::Validity(base_data);
593
- auto base_tuple_data = (bool *)base_info->tuple_data;
593
+ auto base_tuple_data = reinterpret_cast<bool *>(base_info->tuple_data);
594
594
  if (!base_mask.AllValid()) {
595
595
  for (idx_t i = 0; i < base_info->N; i++) {
596
596
  base_tuple_data[i] = base_mask.RowIsValidUnsafe(base_info->tuples[i]);
@@ -1045,10 +1045,10 @@ static idx_t SortSelectionVector(SelectionVector &sel, idx_t count, row_t *ids)
1045
1045
  UpdateInfo *CreateEmptyUpdateInfo(TransactionData transaction, idx_t type_size, idx_t count,
1046
1046
  unsafe_unique_array<char> &data) {
1047
1047
  data = make_unsafe_uniq_array<char>(sizeof(UpdateInfo) + (sizeof(sel_t) + type_size) * STANDARD_VECTOR_SIZE);
1048
- auto update_info = (UpdateInfo *)data.get();
1048
+ auto update_info = reinterpret_cast<UpdateInfo *>(data.get());
1049
1049
  update_info->max = STANDARD_VECTOR_SIZE;
1050
- update_info->tuples = (sel_t *)(((data_ptr_t)update_info) + sizeof(UpdateInfo));
1051
- update_info->tuple_data = ((data_ptr_t)update_info) + sizeof(UpdateInfo) + sizeof(sel_t) * update_info->max;
1050
+ update_info->tuples = reinterpret_cast<sel_t *>((data_ptr_cast(update_info)) + sizeof(UpdateInfo));
1051
+ update_info->tuple_data = (data_ptr_cast(update_info)) + sizeof(UpdateInfo) + sizeof(sel_t) * update_info->max;
1052
1052
  update_info->version_number = transaction.transaction_id;
1053
1053
  return update_info;
1054
1054
  }
@@ -486,7 +486,7 @@ void ReplayState::ReplayDelete() {
486
486
 
487
487
  D_ASSERT(chunk.ColumnCount() == 1 && chunk.data[0].GetType() == LogicalType::ROW_TYPE);
488
488
  row_t row_ids[1];
489
- Vector row_identifiers(LogicalType::ROW_TYPE, (data_ptr_t)row_ids);
489
+ Vector row_identifiers(LogicalType::ROW_TYPE, data_ptr_cast(row_ids));
490
490
 
491
491
  auto source_ids = FlatVector::GetData<row_t>(chunk.data[0]);
492
492
  // delete the tuples from the current table
@@ -28,12 +28,12 @@ void CleanupState::CleanupEntry(UndoFlags type, data_ptr_t data) {
28
28
  break;
29
29
  }
30
30
  case UndoFlags::DELETE_TUPLE: {
31
- auto info = (DeleteInfo *)data;
31
+ auto info = reinterpret_cast<DeleteInfo *>(data);
32
32
  CleanupDelete(*info);
33
33
  break;
34
34
  }
35
35
  case UndoFlags::UPDATE_TUPLE: {
36
- auto info = (UpdateInfo *)data;
36
+ auto info = reinterpret_cast<UpdateInfo *>(data);
37
37
  CleanupUpdate(*info);
38
38
  break;
39
39
  }
@@ -80,7 +80,7 @@ void CleanupState::Flush() {
80
80
  }
81
81
 
82
82
  // set up the row identifiers vector
83
- Vector row_identifiers(LogicalType::ROW_TYPE, (data_ptr_t)row_numbers);
83
+ Vector row_identifiers(LogicalType::ROW_TYPE, data_ptr_cast(row_numbers));
84
84
 
85
85
  // delete the tuples from all the indexes
86
86
  try {
@@ -45,7 +45,7 @@ void CommitState::WriteCatalogEntry(CatalogEntry &entry, data_ptr_t dataptr) {
45
45
  D_ASSERT(table_entry.IsDuckTable());
46
46
  // ALTER TABLE statement, read the extra data after the entry
47
47
  auto extra_data_size = Load<idx_t>(dataptr);
48
- auto extra_data = (data_ptr_t)(dataptr + sizeof(idx_t));
48
+ auto extra_data = data_ptr_cast(dataptr + sizeof(idx_t));
49
49
 
50
50
  BufferedDeserializer source(extra_data, extra_data_size);
51
51
  string column_name = source.Read<string>();
@@ -72,7 +72,7 @@ void CommitState::WriteCatalogEntry(CatalogEntry &entry, data_ptr_t dataptr) {
72
72
  if (entry.type == CatalogType::VIEW_ENTRY) {
73
73
  // ALTER TABLE statement, read the extra data after the entry
74
74
  auto extra_data_size = Load<idx_t>(dataptr);
75
- auto extra_data = (data_ptr_t)(dataptr + sizeof(idx_t));
75
+ auto extra_data = data_ptr_cast(dataptr + sizeof(idx_t));
76
76
  // deserialize it
77
77
  BufferedDeserializer source(extra_data, extra_data_size);
78
78
  string column_name = source.Read<string>();
@@ -247,7 +247,7 @@ void CommitState::CommitEntry(UndoFlags type, data_ptr_t data) {
247
247
  }
248
248
  case UndoFlags::INSERT_TUPLE: {
249
249
  // append:
250
- auto info = (AppendInfo *)data;
250
+ auto info = reinterpret_cast<AppendInfo *>(data);
251
251
  if (HAS_LOG && !info->table->info->IsTemporary()) {
252
252
  info->table->WriteToLog(*log, info->start_row, info->count);
253
253
  }
@@ -257,7 +257,7 @@ void CommitState::CommitEntry(UndoFlags type, data_ptr_t data) {
257
257
  }
258
258
  case UndoFlags::DELETE_TUPLE: {
259
259
  // deletion:
260
- auto info = (DeleteInfo *)data;
260
+ auto info = reinterpret_cast<DeleteInfo *>(data);
261
261
  if (HAS_LOG && !info->table->info->IsTemporary()) {
262
262
  WriteDelete(*info);
263
263
  }
@@ -267,7 +267,7 @@ void CommitState::CommitEntry(UndoFlags type, data_ptr_t data) {
267
267
  }
268
268
  case UndoFlags::UPDATE_TUPLE: {
269
269
  // update:
270
- auto info = (UpdateInfo *)data;
270
+ auto info = reinterpret_cast<UpdateInfo *>(data);
271
271
  if (HAS_LOG && !info->segment->column_data.GetTableInfo().IsTemporary()) {
272
272
  WriteUpdate(*info);
273
273
  }
@@ -293,14 +293,14 @@ void CommitState::RevertCommit(UndoFlags type, data_ptr_t data) {
293
293
  break;
294
294
  }
295
295
  case UndoFlags::INSERT_TUPLE: {
296
- auto info = (AppendInfo *)data;
296
+ auto info = reinterpret_cast<AppendInfo *>(data);
297
297
  // revert this append
298
298
  info->table->RevertAppend(info->start_row, info->count);
299
299
  break;
300
300
  }
301
301
  case UndoFlags::DELETE_TUPLE: {
302
302
  // deletion:
303
- auto info = (DeleteInfo *)data;
303
+ auto info = reinterpret_cast<DeleteInfo *>(data);
304
304
  info->table->info->cardinality += info->count;
305
305
  // revert the commit by writing the (uncommitted) transaction_id back into the version info
306
306
  info->vinfo->CommitDelete(transaction_id, info->rows, info->count);
@@ -308,7 +308,7 @@ void CommitState::RevertCommit(UndoFlags type, data_ptr_t data) {
308
308
  }
309
309
  case UndoFlags::UPDATE_TUPLE: {
310
310
  // update:
311
- auto info = (UpdateInfo *)data;
311
+ auto info = reinterpret_cast<UpdateInfo *>(data);
312
312
  info->version_number = transaction_id;
313
313
  break;
314
314
  }
@@ -44,7 +44,7 @@ DuckTransaction &DuckTransaction::Get(ClientContext &context, Catalog &catalog)
44
44
  if (!transaction.IsDuckTransaction()) {
45
45
  throw InternalException("DuckTransaction::Get called on non-DuckDB transaction");
46
46
  }
47
- return (DuckTransaction &)transaction;
47
+ return transaction.Cast<DuckTransaction>();
48
48
  }
49
49
 
50
50
  LocalStorage &DuckTransaction::GetLocalStorage() {
@@ -71,8 +71,8 @@ void DuckTransaction::PushCatalogEntry(CatalogEntry &entry, data_ptr_t extra_dat
71
71
  }
72
72
 
73
73
  void DuckTransaction::PushDelete(DataTable &table, ChunkVectorInfo *vinfo, row_t rows[], idx_t count, idx_t base_row) {
74
- auto delete_info =
75
- (DeleteInfo *)undo_buffer.CreateEntry(UndoFlags::DELETE_TUPLE, sizeof(DeleteInfo) + sizeof(row_t) * count);
74
+ auto delete_info = reinterpret_cast<DeleteInfo *>(
75
+ undo_buffer.CreateEntry(UndoFlags::DELETE_TUPLE, sizeof(DeleteInfo) + sizeof(row_t) * count));
76
76
  delete_info->vinfo = vinfo;
77
77
  delete_info->table = &table;
78
78
  delete_info->count = count;
@@ -81,18 +81,20 @@ void DuckTransaction::PushDelete(DataTable &table, ChunkVectorInfo *vinfo, row_t
81
81
  }
82
82
 
83
83
  void DuckTransaction::PushAppend(DataTable &table, idx_t start_row, idx_t row_count) {
84
- auto append_info = (AppendInfo *)undo_buffer.CreateEntry(UndoFlags::INSERT_TUPLE, sizeof(AppendInfo));
84
+ auto append_info =
85
+ reinterpret_cast<AppendInfo *>(undo_buffer.CreateEntry(UndoFlags::INSERT_TUPLE, sizeof(AppendInfo)));
85
86
  append_info->table = &table;
86
87
  append_info->start_row = start_row;
87
88
  append_info->count = row_count;
88
89
  }
89
90
 
90
91
  UpdateInfo *DuckTransaction::CreateUpdateInfo(idx_t type_size, idx_t entries) {
91
- auto update_info = (UpdateInfo *)undo_buffer.CreateEntry(
92
+ data_ptr_t base_info = undo_buffer.CreateEntry(
92
93
  UndoFlags::UPDATE_TUPLE, sizeof(UpdateInfo) + (sizeof(sel_t) + type_size) * STANDARD_VECTOR_SIZE);
94
+ auto update_info = reinterpret_cast<UpdateInfo *>(base_info);
93
95
  update_info->max = STANDARD_VECTOR_SIZE;
94
- update_info->tuples = (sel_t *)(((data_ptr_t)update_info) + sizeof(UpdateInfo));
95
- update_info->tuple_data = ((data_ptr_t)update_info) + sizeof(UpdateInfo) + sizeof(sel_t) * update_info->max;
96
+ update_info->tuples = reinterpret_cast<sel_t *>(base_info + sizeof(UpdateInfo));
97
+ update_info->tuple_data = base_info + sizeof(UpdateInfo) + sizeof(sel_t) * update_info->max;
96
98
  update_info->version_number = transaction_id;
97
99
  return update_info;
98
100
  }
@@ -61,7 +61,7 @@ DuckTransactionManager &DuckTransactionManager::Get(AttachedDatabase &db) {
61
61
  if (!transaction_manager.IsDuckTransactionManager()) {
62
62
  throw InternalException("Calling DuckTransactionManager::Get on non-DuckDB transaction manager");
63
63
  }
64
- return (DuckTransactionManager &)transaction_manager;
64
+ return reinterpret_cast<DuckTransactionManager &>(transaction_manager);
65
65
  }
66
66
 
67
67
  Transaction *DuckTransactionManager::StartTransaction(ClientContext &context) {
@@ -152,7 +152,7 @@ void DuckTransactionManager::Checkpoint(ClientContext &context, bool force) {
152
152
 
153
153
  // remove the transaction id from the list of active transactions
154
154
  // potentially resulting in garbage collection
155
- RemoveTransaction(transaction.get());
155
+ RemoveTransaction(*transaction);
156
156
  if (transaction_context) {
157
157
  transaction_context->transaction.ClearTransaction();
158
158
  }
@@ -164,7 +164,7 @@ void DuckTransactionManager::Checkpoint(ClientContext &context, bool force) {
164
164
  storage_manager.CreateCheckpoint();
165
165
  }
166
166
 
167
- bool DuckTransactionManager::CanCheckpoint(DuckTransaction *current) {
167
+ bool DuckTransactionManager::CanCheckpoint(optional_ptr<DuckTransaction> current) {
168
168
  if (db.IsSystem()) {
169
169
  return false;
170
170
  }
@@ -176,7 +176,7 @@ bool DuckTransactionManager::CanCheckpoint(DuckTransaction *current) {
176
176
  return false;
177
177
  }
178
178
  for (auto &transaction : active_transactions) {
179
- if (transaction.get() != current) {
179
+ if (transaction.get() != current.get()) {
180
180
  return false;
181
181
  }
182
182
  }
@@ -184,14 +184,14 @@ bool DuckTransactionManager::CanCheckpoint(DuckTransaction *current) {
184
184
  }
185
185
 
186
186
  string DuckTransactionManager::CommitTransaction(ClientContext &context, Transaction *transaction_p) {
187
- auto transaction = (DuckTransaction *)transaction_p;
187
+ auto &transaction = transaction_p->Cast<DuckTransaction>();
188
188
  vector<ClientLockWrapper> client_locks;
189
189
  auto lock = make_uniq<lock_guard<mutex>>(transaction_lock);
190
190
  CheckpointLock checkpoint_lock(*this);
191
191
  // check if we can checkpoint
192
- bool checkpoint = thread_is_checkpointing ? false : CanCheckpoint(transaction);
192
+ bool checkpoint = thread_is_checkpointing ? false : CanCheckpoint(&transaction);
193
193
  if (checkpoint) {
194
- if (transaction->AutomaticCheckpoint(db)) {
194
+ if (transaction.AutomaticCheckpoint(db)) {
195
195
  checkpoint_lock.Lock();
196
196
  // we might be able to checkpoint: lock all clients
197
197
  // to avoid deadlock we release the transaction lock while locking the clients
@@ -200,7 +200,7 @@ string DuckTransactionManager::CommitTransaction(ClientContext &context, Transac
200
200
  LockClients(client_locks, context);
201
201
 
202
202
  lock = make_uniq<lock_guard<mutex>>(transaction_lock);
203
- checkpoint = CanCheckpoint(transaction);
203
+ checkpoint = CanCheckpoint(&transaction);
204
204
  if (!checkpoint) {
205
205
  checkpoint_lock.Unlock();
206
206
  client_locks.clear();
@@ -212,12 +212,12 @@ string DuckTransactionManager::CommitTransaction(ClientContext &context, Transac
212
212
  // obtain a commit id for the transaction
213
213
  transaction_t commit_id = current_start_timestamp++;
214
214
  // commit the UndoBuffer of the transaction
215
- string error = transaction->Commit(db, commit_id, checkpoint);
215
+ string error = transaction.Commit(db, commit_id, checkpoint);
216
216
  if (!error.empty()) {
217
217
  // commit unsuccessful: rollback the transaction instead
218
218
  checkpoint = false;
219
- transaction->commit_id = 0;
220
- transaction->Rollback();
219
+ transaction.commit_id = 0;
220
+ transaction.Rollback();
221
221
  }
222
222
  if (!checkpoint) {
223
223
  // we won't checkpoint after all: unlock the clients again
@@ -239,19 +239,19 @@ string DuckTransactionManager::CommitTransaction(ClientContext &context, Transac
239
239
  }
240
240
 
241
241
  void DuckTransactionManager::RollbackTransaction(Transaction *transaction_p) {
242
- auto transaction = (DuckTransaction *)transaction_p;
242
+ auto &transaction = transaction_p->Cast<DuckTransaction>();
243
243
  // obtain the transaction lock during this function
244
244
  lock_guard<mutex> lock(transaction_lock);
245
245
 
246
246
  // rollback the transaction
247
- transaction->Rollback();
247
+ transaction.Rollback();
248
248
 
249
249
  // remove the transaction id from the list of active transactions
250
250
  // potentially resulting in garbage collection
251
251
  RemoveTransaction(transaction);
252
252
  }
253
253
 
254
- void DuckTransactionManager::RemoveTransaction(DuckTransaction *transaction) noexcept {
254
+ void DuckTransactionManager::RemoveTransaction(DuckTransaction &transaction) noexcept {
255
255
  // remove the transaction from the list of active transactions
256
256
  idx_t t_index = active_transactions.size();
257
257
  // check for the lowest and highest start time in the list of transactions
@@ -259,7 +259,7 @@ void DuckTransactionManager::RemoveTransaction(DuckTransaction *transaction) noe
259
259
  transaction_t lowest_transaction_id = MAX_TRANSACTION_ID;
260
260
  transaction_t lowest_active_query = MAXIMUM_QUERY_ID;
261
261
  for (idx_t i = 0; i < active_transactions.size(); i++) {
262
- if (active_transactions[i].get() == transaction) {
262
+ if (active_transactions[i].get() == &transaction) {
263
263
  t_index = i;
264
264
  } else {
265
265
  transaction_t active_query = active_transactions[i]->active_query;
@@ -275,7 +275,7 @@ void DuckTransactionManager::RemoveTransaction(DuckTransaction *transaction) noe
275
275
  D_ASSERT(t_index != active_transactions.size());
276
276
  auto current_transaction = std::move(active_transactions[t_index]);
277
277
  auto current_query = DatabaseManager::Get(db).ActiveQueryNumber();
278
- if (transaction->commit_id != 0) {
278
+ if (transaction.commit_id != 0) {
279
279
  // the transaction was committed, add it to the list of recently
280
280
  // committed transactions
281
281
  recently_committed_transactions.push_back(std::move(current_transaction));
@@ -22,19 +22,19 @@ void RollbackState::RollbackEntry(UndoFlags type, data_ptr_t data) {
22
22
  break;
23
23
  }
24
24
  case UndoFlags::INSERT_TUPLE: {
25
- auto info = (AppendInfo *)data;
25
+ auto info = reinterpret_cast<AppendInfo *>(data);
26
26
  // revert the append in the base table
27
27
  info->table->RevertAppend(info->start_row, info->count);
28
28
  break;
29
29
  }
30
30
  case UndoFlags::DELETE_TUPLE: {
31
- auto info = (DeleteInfo *)data;
31
+ auto info = reinterpret_cast<DeleteInfo *>(data);
32
32
  // reset the deleted flag on rollback
33
33
  info->vinfo->CommitDelete(NOT_DELETED_ID, info->rows, info->count);
34
34
  break;
35
35
  }
36
36
  case UndoFlags::UPDATE_TUPLE: {
37
- auto info = (UpdateInfo *)data;
37
+ auto info = reinterpret_cast<UpdateInfo *>(data);
38
38
  info->segment->RollbackUpdate(*info);
39
39
  break;
40
40
  }
@@ -50,7 +50,7 @@ void PreparedStatementVerifier::ConvertConstants(unique_ptr<ParsedExpression> &c
50
50
  // check if the value already exists
51
51
  idx_t index = values.size();
52
52
  for (idx_t v_idx = 0; v_idx < values.size(); v_idx++) {
53
- if (values[v_idx]->Equals(child.get())) {
53
+ if (values[v_idx]->Equals(*child)) {
54
54
  // duplicate value! refer to the original value
55
55
  index = v_idx;
56
56
  break;
@@ -57,7 +57,7 @@ void StatementVerifier::CheckExpressions(const StatementVerifier &other) const {
57
57
 
58
58
  // Check equality
59
59
  if (other.RequireEquality()) {
60
- D_ASSERT(statement->Equals(other.statement.get()));
60
+ D_ASSERT(statement->Equals(*other.statement));
61
61
  }
62
62
 
63
63
  #ifdef DEBUG
@@ -66,7 +66,6 @@ void StatementVerifier::CheckExpressions(const StatementVerifier &other) const {
66
66
  const auto expr_count = select_list.size();
67
67
  if (other.RequireEquality()) {
68
68
  for (idx_t i = 0; i < expr_count; i++) {
69
- D_ASSERT(!select_list[i]->Equals(nullptr));
70
69
  // Run the ToString, to verify that it doesn't crash
71
70
  select_list[i]->ToString();
72
71
 
@@ -75,7 +74,7 @@ void StatementVerifier::CheckExpressions(const StatementVerifier &other) const {
75
74
  }
76
75
 
77
76
  // Check that the expressions are equivalent
78
- D_ASSERT(select_list[i]->Equals(other.select_list[i].get()));
77
+ D_ASSERT(select_list[i]->Equals(*other.select_list[i]));
79
78
  // Check that the hashes are equivalent too
80
79
  D_ASSERT(select_list[i]->Hash() == other.select_list[i]->Hash());
81
80
 
@@ -96,7 +95,7 @@ void StatementVerifier::CheckExpressions() const {
96
95
  auto hash2 = select_list[inner_idx]->Hash();
97
96
  if (hash != hash2) {
98
97
  // if the hashes are not equivalent, the expressions should not be equivalent
99
- D_ASSERT(!select_list[outer_idx]->Equals(select_list[inner_idx].get()));
98
+ D_ASSERT(!select_list[outer_idx]->Equals(*select_list[inner_idx]));
100
99
  }
101
100
  }
102
101
  }
@@ -17,9 +17,9 @@ namespace duckdb_hll {
17
17
  #define HLL_C_OK 0
18
18
  #define HLL_C_ERR -1
19
19
 
20
- typedef struct {
20
+ struct robj {
21
21
  void *ptr;
22
- } robj;
22
+ };
23
23
 
24
24
  //! Create a new empty HyperLogLog object
25
25
  robj *hll_create(void);
@@ -46,7 +46,7 @@
46
46
  #include <iterator>
47
47
 
48
48
  #ifdef __GNUC__
49
- #include <cxxabi.h>
49
+ #include <cxxabi.h>
50
50
  #endif
51
51
 
52
52
  /*