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
@@ -70,7 +70,7 @@ struct BinaryLambdaWrapperWithNulls {
70
70
  struct BinaryExecutor {
71
71
  template <class LEFT_TYPE, class RIGHT_TYPE, class RESULT_TYPE, class OPWRAPPER, class OP, class FUNC,
72
72
  bool LEFT_CONSTANT, bool RIGHT_CONSTANT>
73
- static void ExecuteFlatLoop(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rdata,
73
+ static void ExecuteFlatLoop(const LEFT_TYPE *__restrict ldata, const RIGHT_TYPE *__restrict rdata,
74
74
  RESULT_TYPE *__restrict result_data, idx_t count, ValidityMask &mask, FUNC fun) {
75
75
  if (!LEFT_CONSTANT) {
76
76
  ASSERT_RESTRICT(ldata, ldata + count, result_data, result_data + count);
@@ -184,7 +184,7 @@ struct BinaryExecutor {
184
184
  }
185
185
 
186
186
  template <class LEFT_TYPE, class RIGHT_TYPE, class RESULT_TYPE, class OPWRAPPER, class OP, class FUNC>
187
- static void ExecuteGenericLoop(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rdata,
187
+ static void ExecuteGenericLoop(const LEFT_TYPE *__restrict ldata, const RIGHT_TYPE *__restrict rdata,
188
188
  RESULT_TYPE *__restrict result_data, const SelectionVector *__restrict lsel,
189
189
  const SelectionVector *__restrict rsel, idx_t count, ValidityMask &lvalidity,
190
190
  ValidityMask &rvalidity, ValidityMask &result_validity, FUNC fun) {
@@ -221,8 +221,9 @@ struct BinaryExecutor {
221
221
  result.SetVectorType(VectorType::FLAT_VECTOR);
222
222
  auto result_data = FlatVector::GetData<RESULT_TYPE>(result);
223
223
  ExecuteGenericLoop<LEFT_TYPE, RIGHT_TYPE, RESULT_TYPE, OPWRAPPER, OP, FUNC>(
224
- (LEFT_TYPE *)ldata.data, (RIGHT_TYPE *)rdata.data, result_data, ldata.sel, rdata.sel, count, ldata.validity,
225
- rdata.validity, FlatVector::Validity(result), fun);
224
+ UnifiedVectorFormat::GetData<LEFT_TYPE>(ldata), UnifiedVectorFormat::GetData<RIGHT_TYPE>(rdata),
225
+ result_data, ldata.sel, rdata.sel, count, ldata.validity, rdata.validity, FlatVector::Validity(result),
226
+ fun);
226
227
  }
227
228
 
228
229
  template <class LEFT_TYPE, class RIGHT_TYPE, class RESULT_TYPE, class OPWRAPPER, class OP, class FUNC>
@@ -300,7 +301,7 @@ public:
300
301
 
301
302
  template <class LEFT_TYPE, class RIGHT_TYPE, class OP, bool LEFT_CONSTANT, bool RIGHT_CONSTANT, bool HAS_TRUE_SEL,
302
303
  bool HAS_FALSE_SEL>
303
- static inline idx_t SelectFlatLoop(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rdata,
304
+ static inline idx_t SelectFlatLoop(const LEFT_TYPE *__restrict ldata, const RIGHT_TYPE *__restrict rdata,
304
305
  const SelectionVector *sel, idx_t count, ValidityMask &validity_mask,
305
306
  SelectionVector *true_sel, SelectionVector *false_sel) {
306
307
  idx_t true_count = 0, false_count = 0;
@@ -364,7 +365,7 @@ public:
364
365
  }
365
366
 
366
367
  template <class LEFT_TYPE, class RIGHT_TYPE, class OP, bool LEFT_CONSTANT, bool RIGHT_CONSTANT>
367
- static inline idx_t SelectFlatLoopSwitch(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rdata,
368
+ static inline idx_t SelectFlatLoopSwitch(const LEFT_TYPE *__restrict ldata, const RIGHT_TYPE *__restrict rdata,
368
369
  const SelectionVector *sel, idx_t count, ValidityMask &mask,
369
370
  SelectionVector *true_sel, SelectionVector *false_sel) {
370
371
  if (true_sel && false_sel) {
@@ -419,10 +420,10 @@ public:
419
420
 
420
421
  template <class LEFT_TYPE, class RIGHT_TYPE, class OP, bool NO_NULL, bool HAS_TRUE_SEL, bool HAS_FALSE_SEL>
421
422
  static inline idx_t
422
- SelectGenericLoop(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rdata, const SelectionVector *__restrict lsel,
423
- const SelectionVector *__restrict rsel, const SelectionVector *__restrict result_sel, idx_t count,
424
- ValidityMask &lvalidity, ValidityMask &rvalidity, SelectionVector *true_sel,
425
- SelectionVector *false_sel) {
423
+ SelectGenericLoop(const LEFT_TYPE *__restrict ldata, const RIGHT_TYPE *__restrict rdata,
424
+ const SelectionVector *__restrict lsel, const SelectionVector *__restrict rsel,
425
+ const SelectionVector *__restrict result_sel, idx_t count, ValidityMask &lvalidity,
426
+ ValidityMask &rvalidity, SelectionVector *true_sel, SelectionVector *false_sel) {
426
427
  idx_t true_count = 0, false_count = 0;
427
428
  for (idx_t i = 0; i < count; i++) {
428
429
  auto result_idx = result_sel->get_index(i);
@@ -447,7 +448,7 @@ public:
447
448
  }
448
449
  template <class LEFT_TYPE, class RIGHT_TYPE, class OP, bool NO_NULL>
449
450
  static inline idx_t
450
- SelectGenericLoopSelSwitch(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rdata,
451
+ SelectGenericLoopSelSwitch(const LEFT_TYPE *__restrict ldata, const RIGHT_TYPE *__restrict rdata,
451
452
  const SelectionVector *__restrict lsel, const SelectionVector *__restrict rsel,
452
453
  const SelectionVector *__restrict result_sel, idx_t count, ValidityMask &lvalidity,
453
454
  ValidityMask &rvalidity, SelectionVector *true_sel, SelectionVector *false_sel) {
@@ -466,7 +467,7 @@ public:
466
467
 
467
468
  template <class LEFT_TYPE, class RIGHT_TYPE, class OP>
468
469
  static inline idx_t
469
- SelectGenericLoopSwitch(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rdata,
470
+ SelectGenericLoopSwitch(const LEFT_TYPE *__restrict ldata, const RIGHT_TYPE *__restrict rdata,
470
471
  const SelectionVector *__restrict lsel, const SelectionVector *__restrict rsel,
471
472
  const SelectionVector *__restrict result_sel, idx_t count, ValidityMask &lvalidity,
472
473
  ValidityMask &rvalidity, SelectionVector *true_sel, SelectionVector *false_sel) {
@@ -487,9 +488,9 @@ public:
487
488
  left.ToUnifiedFormat(count, ldata);
488
489
  right.ToUnifiedFormat(count, rdata);
489
490
 
490
- return SelectGenericLoopSwitch<LEFT_TYPE, RIGHT_TYPE, OP>((LEFT_TYPE *)ldata.data, (RIGHT_TYPE *)rdata.data,
491
- ldata.sel, rdata.sel, sel, count, ldata.validity,
492
- rdata.validity, true_sel, false_sel);
491
+ return SelectGenericLoopSwitch<LEFT_TYPE, RIGHT_TYPE, OP>(
492
+ UnifiedVectorFormat::GetData<LEFT_TYPE>(ldata), UnifiedVectorFormat::GetData<RIGHT_TYPE>(rdata), ldata.sel,
493
+ rdata.sel, sel, count, ldata.validity, rdata.validity, true_sel, false_sel);
493
494
  }
494
495
 
495
496
  template <class LEFT_TYPE, class RIGHT_TYPE, class OP>
@@ -38,7 +38,7 @@ struct PrimitiveType {
38
38
  static bool ConstructType(STRUCT_STATE &state, idx_t i, PrimitiveType<INPUT_TYPE> &result) {
39
39
  auto &vdata = state.main_data;
40
40
  auto idx = vdata.sel->get_index(i);
41
- auto ptr = (INPUT_TYPE *)vdata.data;
41
+ auto ptr = UnifiedVectorFormat::GetData<INPUT_TYPE>(vdata);
42
42
  result.val = ptr[idx];
43
43
  return true;
44
44
  }
@@ -77,7 +77,7 @@ struct StructTypeUnary {
77
77
  if (!a_data.validity.RowIsValid(a_idx)) {
78
78
  return false;
79
79
  }
80
- auto a_ptr = (A_TYPE *)a_data.data;
80
+ auto a_ptr = UnifiedVectorFormat::GetData<A_TYPE>(a_data);
81
81
  result.a_val = a_ptr[a_idx];
82
82
  return true;
83
83
  }
@@ -106,8 +106,8 @@ struct StructTypeBinary {
106
106
  if (!a_data.validity.RowIsValid(a_idx) || !b_data.validity.RowIsValid(b_idx)) {
107
107
  return false;
108
108
  }
109
- auto a_ptr = (A_TYPE *)a_data.data;
110
- auto b_ptr = (B_TYPE *)b_data.data;
109
+ auto a_ptr = UnifiedVectorFormat::GetData<A_TYPE>(a_data);
110
+ auto b_ptr = UnifiedVectorFormat::GetData<B_TYPE>(b_data);
111
111
  result.a_val = a_ptr[a_idx];
112
112
  result.b_val = b_ptr[b_idx];
113
113
  return true;
@@ -143,9 +143,9 @@ struct StructTypeTernary {
143
143
  !c_data.validity.RowIsValid(c_idx)) {
144
144
  return false;
145
145
  }
146
- auto a_ptr = (A_TYPE *)a_data.data;
147
- auto b_ptr = (B_TYPE *)b_data.data;
148
- auto c_ptr = (C_TYPE *)c_data.data;
146
+ auto a_ptr = UnifiedVectorFormat::GetData<A_TYPE>(a_data);
147
+ auto b_ptr = UnifiedVectorFormat::GetData<B_TYPE>(b_data);
148
+ auto c_ptr = UnifiedVectorFormat::GetData<C_TYPE>(c_data);
149
149
  result.a_val = a_ptr[a_idx];
150
150
  result.b_val = b_ptr[b_idx];
151
151
  result.c_val = c_ptr[c_idx];
@@ -188,10 +188,10 @@ struct StructTypeQuaternary {
188
188
  !c_data.validity.RowIsValid(c_idx) || !d_data.validity.RowIsValid(d_idx)) {
189
189
  return false;
190
190
  }
191
- auto a_ptr = (A_TYPE *)a_data.data;
192
- auto b_ptr = (B_TYPE *)b_data.data;
193
- auto c_ptr = (C_TYPE *)c_data.data;
194
- auto d_ptr = (D_TYPE *)d_data.data;
191
+ auto a_ptr = UnifiedVectorFormat::GetData<A_TYPE>(a_data);
192
+ auto b_ptr = UnifiedVectorFormat::GetData<B_TYPE>(b_data);
193
+ auto c_ptr = UnifiedVectorFormat::GetData<C_TYPE>(c_data);
194
+ auto d_ptr = UnifiedVectorFormat::GetData<D_TYPE>(d_data);
195
195
  result.a_val = a_ptr[a_idx];
196
196
  result.b_val = b_ptr[b_idx];
197
197
  result.c_val = c_ptr[c_idx];
@@ -41,11 +41,11 @@ struct TernaryLambdaWrapperWithNulls {
41
41
  struct TernaryExecutor {
42
42
  private:
43
43
  template <class A_TYPE, class B_TYPE, class C_TYPE, class RESULT_TYPE, class OPWRAPPER, class FUN>
44
- static inline void ExecuteLoop(A_TYPE *__restrict adata, B_TYPE *__restrict bdata, C_TYPE *__restrict cdata,
45
- RESULT_TYPE *__restrict result_data, idx_t count, const SelectionVector &asel,
46
- const SelectionVector &bsel, const SelectionVector &csel, ValidityMask &avalidity,
47
- ValidityMask &bvalidity, ValidityMask &cvalidity, ValidityMask &result_validity,
48
- FUN fun) {
44
+ static inline void ExecuteLoop(const A_TYPE *__restrict adata, const B_TYPE *__restrict bdata,
45
+ const C_TYPE *__restrict cdata, RESULT_TYPE *__restrict result_data, idx_t count,
46
+ const SelectionVector &asel, const SelectionVector &bsel,
47
+ const SelectionVector &csel, ValidityMask &avalidity, ValidityMask &bvalidity,
48
+ ValidityMask &cvalidity, ValidityMask &result_validity, FUN fun) {
49
49
  if (!avalidity.AllValid() || !bvalidity.AllValid() || !cvalidity.AllValid()) {
50
50
  for (idx_t i = 0; i < count; i++) {
51
51
  auto aidx = asel.get_index(i);
@@ -95,9 +95,10 @@ public:
95
95
  c.ToUnifiedFormat(count, cdata);
96
96
 
97
97
  ExecuteLoop<A_TYPE, B_TYPE, C_TYPE, RESULT_TYPE, OPWRAPPER>(
98
- (A_TYPE *)adata.data, (B_TYPE *)bdata.data, (C_TYPE *)cdata.data,
99
- FlatVector::GetData<RESULT_TYPE>(result), count, *adata.sel, *bdata.sel, *cdata.sel, adata.validity,
100
- bdata.validity, cdata.validity, FlatVector::Validity(result), fun);
98
+ UnifiedVectorFormat::GetData<A_TYPE>(adata), UnifiedVectorFormat::GetData<B_TYPE>(bdata),
99
+ UnifiedVectorFormat::GetData<C_TYPE>(cdata), FlatVector::GetData<RESULT_TYPE>(result), count,
100
+ *adata.sel, *bdata.sel, *cdata.sel, adata.validity, bdata.validity, cdata.validity,
101
+ FlatVector::Validity(result), fun);
101
102
  }
102
103
  }
103
104
 
@@ -122,11 +123,11 @@ public:
122
123
 
123
124
  private:
124
125
  template <class A_TYPE, class B_TYPE, class C_TYPE, class OP, bool NO_NULL, bool HAS_TRUE_SEL, bool HAS_FALSE_SEL>
125
- static inline idx_t SelectLoop(A_TYPE *__restrict adata, B_TYPE *__restrict bdata, C_TYPE *__restrict cdata,
126
- const SelectionVector *result_sel, idx_t count, const SelectionVector &asel,
127
- const SelectionVector &bsel, const SelectionVector &csel, ValidityMask &avalidity,
128
- ValidityMask &bvalidity, ValidityMask &cvalidity, SelectionVector *true_sel,
129
- SelectionVector *false_sel) {
126
+ static inline idx_t SelectLoop(const A_TYPE *__restrict adata, const B_TYPE *__restrict bdata,
127
+ const C_TYPE *__restrict cdata, const SelectionVector *result_sel, idx_t count,
128
+ const SelectionVector &asel, const SelectionVector &bsel,
129
+ const SelectionVector &csel, ValidityMask &avalidity, ValidityMask &bvalidity,
130
+ ValidityMask &cvalidity, SelectionVector *true_sel, SelectionVector *false_sel) {
130
131
  idx_t true_count = 0, false_count = 0;
131
132
  for (idx_t i = 0; i < count; i++) {
132
133
  auto result_idx = result_sel->get_index(i);
@@ -158,17 +159,20 @@ private:
158
159
  SelectionVector *true_sel, SelectionVector *false_sel) {
159
160
  if (true_sel && false_sel) {
160
161
  return SelectLoop<A_TYPE, B_TYPE, C_TYPE, OP, NO_NULL, true, true>(
161
- (A_TYPE *)adata.data, (B_TYPE *)bdata.data, (C_TYPE *)cdata.data, sel, count, *adata.sel, *bdata.sel,
162
- *cdata.sel, adata.validity, bdata.validity, cdata.validity, true_sel, false_sel);
162
+ UnifiedVectorFormat::GetData<A_TYPE>(adata), UnifiedVectorFormat::GetData<B_TYPE>(bdata),
163
+ UnifiedVectorFormat::GetData<C_TYPE>(cdata), sel, count, *adata.sel, *bdata.sel, *cdata.sel,
164
+ adata.validity, bdata.validity, cdata.validity, true_sel, false_sel);
163
165
  } else if (true_sel) {
164
166
  return SelectLoop<A_TYPE, B_TYPE, C_TYPE, OP, NO_NULL, true, false>(
165
- (A_TYPE *)adata.data, (B_TYPE *)bdata.data, (C_TYPE *)cdata.data, sel, count, *adata.sel, *bdata.sel,
166
- *cdata.sel, adata.validity, bdata.validity, cdata.validity, true_sel, false_sel);
167
+ UnifiedVectorFormat::GetData<A_TYPE>(adata), UnifiedVectorFormat::GetData<B_TYPE>(bdata),
168
+ UnifiedVectorFormat::GetData<C_TYPE>(cdata), sel, count, *adata.sel, *bdata.sel, *cdata.sel,
169
+ adata.validity, bdata.validity, cdata.validity, true_sel, false_sel);
167
170
  } else {
168
171
  D_ASSERT(false_sel);
169
172
  return SelectLoop<A_TYPE, B_TYPE, C_TYPE, OP, NO_NULL, false, true>(
170
- (A_TYPE *)adata.data, (B_TYPE *)bdata.data, (C_TYPE *)cdata.data, sel, count, *adata.sel, *bdata.sel,
171
- *cdata.sel, adata.validity, bdata.validity, cdata.validity, true_sel, false_sel);
173
+ UnifiedVectorFormat::GetData<A_TYPE>(adata), UnifiedVectorFormat::GetData<B_TYPE>(bdata),
174
+ UnifiedVectorFormat::GetData<C_TYPE>(cdata), sel, count, *adata.sel, *bdata.sel, *cdata.sel,
175
+ adata.validity, bdata.validity, cdata.validity, true_sel, false_sel);
172
176
  }
173
177
  }
174
178
 
@@ -58,7 +58,7 @@ struct UnaryStringOperator {
58
58
  struct UnaryExecutor {
59
59
  private:
60
60
  template <class INPUT_TYPE, class RESULT_TYPE, class OPWRAPPER, class OP>
61
- static inline void ExecuteLoop(INPUT_TYPE *__restrict ldata, RESULT_TYPE *__restrict result_data, idx_t count,
61
+ static inline void ExecuteLoop(const INPUT_TYPE *__restrict ldata, RESULT_TYPE *__restrict result_data, idx_t count,
62
62
  const SelectionVector *__restrict sel_vector, ValidityMask &mask,
63
63
  ValidityMask &result_mask, void *dataptr, bool adds_nulls) {
64
64
  #ifdef DEBUG
@@ -95,7 +95,7 @@ private:
95
95
  }
96
96
 
97
97
  template <class INPUT_TYPE, class RESULT_TYPE, class OPWRAPPER, class OP>
98
- static inline void ExecuteFlat(INPUT_TYPE *__restrict ldata, RESULT_TYPE *__restrict result_data, idx_t count,
98
+ static inline void ExecuteFlat(const INPUT_TYPE *__restrict ldata, RESULT_TYPE *__restrict result_data, idx_t count,
99
99
  ValidityMask &mask, ValidityMask &result_mask, void *dataptr, bool adds_nulls) {
100
100
  ASSERT_RESTRICT(ldata, ldata + count, result_data, result_data + count);
101
101
 
@@ -175,7 +175,7 @@ private:
175
175
 
176
176
  result.SetVectorType(VectorType::FLAT_VECTOR);
177
177
  auto result_data = FlatVector::GetData<RESULT_TYPE>(result);
178
- auto ldata = (INPUT_TYPE *)vdata.data;
178
+ auto ldata = UnifiedVectorFormat::GetData<INPUT_TYPE>(vdata);
179
179
 
180
180
  ExecuteLoop<INPUT_TYPE, RESULT_TYPE, OPWRAPPER, OP>(ldata, result_data, count, vdata.sel, vdata.validity,
181
181
  FlatVector::Validity(result), dataptr, adds_nulls);
@@ -31,7 +31,7 @@ struct CorrOperation {
31
31
  }
32
32
 
33
33
  template <class A_TYPE, class B_TYPE, class STATE, class OP>
34
- static void Operation(STATE *state, AggregateInputData &aggr_input_data, A_TYPE *x_data, B_TYPE *y_data,
34
+ static void Operation(STATE *state, AggregateInputData &aggr_input_data, const A_TYPE *x_data, const B_TYPE *y_data,
35
35
  ValidityMask &amask, ValidityMask &bmask, idx_t xidx, idx_t yidx) {
36
36
  CovarOperation::Operation<A_TYPE, B_TYPE, CovarState, OP>(&state->cov_pop, aggr_input_data, x_data, y_data,
37
37
  amask, bmask, xidx, yidx);
@@ -29,7 +29,7 @@ struct CovarOperation {
29
29
  }
30
30
 
31
31
  template <class A_TYPE, class B_TYPE, class STATE, class OP>
32
- static void Operation(STATE *state, AggregateInputData &, A_TYPE *x_data, B_TYPE *y_data, ValidityMask &amask,
32
+ static void Operation(STATE *state, AggregateInputData &, const A_TYPE *x_data, const B_TYPE *y_data, ValidityMask &amask,
33
33
  ValidityMask &bmask, idx_t xidx, idx_t yidx) {
34
34
  // update running mean and d^2
35
35
  const uint64_t n = ++(state->count);
@@ -30,7 +30,7 @@ struct STDDevBaseOperation {
30
30
  }
31
31
 
32
32
  template <class INPUT_TYPE, class STATE, class OP>
33
- static void Operation(STATE *state, AggregateInputData &, INPUT_TYPE *input_data, ValidityMask &mask, idx_t idx) {
33
+ static void Operation(STATE *state, AggregateInputData &, const INPUT_TYPE *input_data, ValidityMask &mask, idx_t idx) {
34
34
  // update running mean and d^2
35
35
  state->count++;
36
36
  const double input = input_data[idx];
@@ -33,7 +33,7 @@ struct RegrCountFunction {
33
33
  return true;
34
34
  }
35
35
  template <class A_TYPE, class B_TYPE, class STATE, class OP>
36
- static void Operation(STATE *state, AggregateInputData &, A_TYPE *x_data, B_TYPE *y_data, ValidityMask &amask,
36
+ static void Operation(STATE *state, AggregateInputData &, const A_TYPE *x_data, const B_TYPE *y_data, ValidityMask &amask,
37
37
  ValidityMask &bmask, idx_t xidx, idx_t yidx) {
38
38
  *state += 1;
39
39
  }
@@ -25,7 +25,7 @@ struct RegrSlopeOperation {
25
25
  }
26
26
 
27
27
  template <class A_TYPE, class B_TYPE, class STATE, class OP>
28
- static void Operation(STATE *state, AggregateInputData &aggr_input_data, A_TYPE *x_data, B_TYPE *y_data,
28
+ static void Operation(STATE *state, AggregateInputData &aggr_input_data, const A_TYPE *x_data, const B_TYPE *y_data,
29
29
  ValidityMask &amask, ValidityMask &bmask, idx_t xidx, idx_t yidx) {
30
30
  CovarOperation::Operation<A_TYPE, B_TYPE, CovarState, OP>(&state->cov_pop, aggr_input_data, y_data, x_data,
31
31
  bmask, amask, yidx, xidx);
@@ -144,13 +144,13 @@ struct BaseSumOperation {
144
144
  }
145
145
 
146
146
  template <class INPUT_TYPE, class STATE, class OP>
147
- static void Operation(STATE *state, AggregateInputData &, INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
147
+ static void Operation(STATE *state, AggregateInputData &, const INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
148
148
  STATEOP::template AddValues<STATE>(state, 1);
149
149
  ADDOP::template AddNumber<STATE, INPUT_TYPE>(*state, input[idx]);
150
150
  }
151
151
 
152
152
  template <class INPUT_TYPE, class STATE, class OP>
153
- static void ConstantOperation(STATE *state, AggregateInputData &, INPUT_TYPE *input, ValidityMask &mask,
153
+ static void ConstantOperation(STATE *state, AggregateInputData &, const INPUT_TYPE *input, ValidityMask &mask,
154
154
  idx_t count) {
155
155
  STATEOP::template AddValues<STATE>(state, count);
156
156
  ADDOP::template AddConstant<STATE, INPUT_TYPE>(*state, *input, count);
@@ -39,6 +39,18 @@ public:
39
39
  DUCKDB_API ClientContext &GetContext();
40
40
 
41
41
  void Verify(ExpressionExecutorState &root);
42
+
43
+ public:
44
+ template <class TARGET>
45
+ TARGET &Cast() {
46
+ D_ASSERT(dynamic_cast<TARGET *>(this));
47
+ return reinterpret_cast<TARGET &>(*this);
48
+ }
49
+ template <class TARGET>
50
+ const TARGET &Cast() const {
51
+ D_ASSERT(dynamic_cast<const TARGET *>(this));
52
+ return reinterpret_cast<const TARGET &>(*this);
53
+ }
42
54
  };
43
55
 
44
56
  struct ExecuteFunctionState : public ExpressionState {
@@ -48,8 +60,8 @@ struct ExecuteFunctionState : public ExpressionState {
48
60
  unique_ptr<FunctionLocalState> local_state;
49
61
 
50
62
  public:
51
- static FunctionLocalState *GetFunctionState(ExpressionState &state) {
52
- return ((ExecuteFunctionState &)state).local_state.get();
63
+ static optional_ptr<FunctionLocalState> GetFunctionState(ExpressionState &state) {
64
+ return state.Cast<ExecuteFunctionState>().local_state.get();
53
65
  }
54
66
  };
55
67
 
@@ -110,13 +110,13 @@ private:
110
110
  //! Find the node with a matching key, or return nullptr if not found
111
111
  Node Lookup(Node node, const ARTKey &key, idx_t depth);
112
112
  //! Returns all row IDs belonging to a key greater (or equal) than the search key
113
- bool SearchGreater(ARTIndexScanState *state, ARTKey &key, bool inclusive, idx_t max_count,
113
+ bool SearchGreater(ARTIndexScanState &state, ARTKey &key, bool inclusive, idx_t max_count,
114
114
  vector<row_t> &result_ids);
115
115
  //! Returns all row IDs belonging to a key less (or equal) than the upper_bound
116
- bool SearchLess(ARTIndexScanState *state, ARTKey &upper_bound, bool inclusive, idx_t max_count,
116
+ bool SearchLess(ARTIndexScanState &state, ARTKey &upper_bound, bool inclusive, idx_t max_count,
117
117
  vector<row_t> &result_ids);
118
118
  //! Returns all row IDs belonging to a key within the range of lower_bound and upper_bound
119
- bool SearchCloseRange(ARTIndexScanState *state, ARTKey &lower_bound, ARTKey &upper_bound, bool left_inclusive,
119
+ bool SearchCloseRange(ARTIndexScanState &state, ARTKey &lower_bound, ARTKey &upper_bound, bool left_inclusive,
120
120
  bool right_inclusive, idx_t max_count, vector<row_t> &result_ids);
121
121
 
122
122
  //! Initializes a merge operation by returning a set containing the buffer count of each fixed-size allocator
@@ -16,6 +16,9 @@ class PreparedStatementData;
16
16
 
17
17
  //! PhysicalResultCollector is an abstract class that is used to generate the final result of a query
18
18
  class PhysicalResultCollector : public PhysicalOperator {
19
+ public:
20
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::RESULT_COLLECTOR;
21
+
19
22
  public:
20
23
  explicit PhysicalResultCollector(PreparedStatementData &data);
21
24
 
@@ -50,7 +50,7 @@ public:
50
50
  BufferHandle AllocateBuffer(idx_t buffer_size);
51
51
 
52
52
  char *Ptr() {
53
- return (char *)handle.Ptr();
53
+ return char_ptr_cast(handle.Ptr());
54
54
  }
55
55
 
56
56
  private:
@@ -30,6 +30,9 @@ class MetaPipeline;
30
30
  //! PhysicalOperator is the base class of the physical operators present in the
31
31
  //! execution plan
32
32
  class PhysicalOperator {
33
+ public:
34
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::INVALID;
35
+
33
36
  public:
34
37
  PhysicalOperator(PhysicalOperatorType type, vector<LogicalType> types, idx_t estimated_cardinality)
35
38
  : type(type), types(std::move(types)), estimated_cardinality(estimated_cardinality) {
@@ -184,7 +187,7 @@ public:
184
187
  if (TARGET::TYPE != PhysicalOperatorType::INVALID && type != TARGET::TYPE) {
185
188
  throw InternalException("Failed to cast physical operator to type - physical operator type mismatch");
186
189
  }
187
- return (TARGET &)*this;
190
+ return reinterpret_cast<TARGET &>(*this);
188
191
  }
189
192
 
190
193
  template <class TARGET>
@@ -192,7 +195,7 @@ public:
192
195
  if (TARGET::TYPE != PhysicalOperatorType::INVALID && type != TARGET::TYPE) {
193
196
  throw InternalException("Failed to cast physical operator to type - physical operator type mismatch");
194
197
  }
195
- return (const TARGET &)*this;
198
+ return reinterpret_cast<const TARGET &>(*this);
196
199
  }
197
200
  };
198
201
 
@@ -48,12 +48,12 @@ public:
48
48
  template <class TARGET>
49
49
  TARGET &Cast() {
50
50
  D_ASSERT(dynamic_cast<TARGET *>(this));
51
- return (TARGET &)*this;
51
+ return reinterpret_cast<TARGET &>(*this);
52
52
  }
53
53
  template <class TARGET>
54
54
  const TARGET &Cast() const {
55
55
  D_ASSERT(dynamic_cast<const TARGET *>(this));
56
- return (const TARGET &)*this;
56
+ return reinterpret_cast<const TARGET &>(*this);
57
57
  }
58
58
  };
59
59
 
@@ -65,12 +65,12 @@ public:
65
65
  template <class TARGET>
66
66
  TARGET &Cast() {
67
67
  D_ASSERT(dynamic_cast<TARGET *>(this));
68
- return (TARGET &)*this;
68
+ return reinterpret_cast<TARGET &>(*this);
69
69
  }
70
70
  template <class TARGET>
71
71
  const TARGET &Cast() const {
72
72
  D_ASSERT(dynamic_cast<const TARGET *>(this));
73
- return (const TARGET &)*this;
73
+ return reinterpret_cast<const TARGET &>(*this);
74
74
  }
75
75
  };
76
76
 
@@ -86,12 +86,12 @@ public:
86
86
  template <class TARGET>
87
87
  TARGET &Cast() {
88
88
  D_ASSERT(dynamic_cast<TARGET *>(this));
89
- return (TARGET &)*this;
89
+ return reinterpret_cast<TARGET &>(*this);
90
90
  }
91
91
  template <class TARGET>
92
92
  const TARGET &Cast() const {
93
93
  D_ASSERT(dynamic_cast<const TARGET *>(this));
94
- return (const TARGET &)*this;
94
+ return reinterpret_cast<const TARGET &>(*this);
95
95
  }
96
96
  };
97
97
 
@@ -106,12 +106,12 @@ public:
106
106
  template <class TARGET>
107
107
  TARGET &Cast() {
108
108
  D_ASSERT(dynamic_cast<TARGET *>(this));
109
- return (TARGET &)*this;
109
+ return reinterpret_cast<TARGET &>(*this);
110
110
  }
111
111
  template <class TARGET>
112
112
  const TARGET &Cast() const {
113
113
  D_ASSERT(dynamic_cast<const TARGET *>(this));
114
- return (const TARGET &)*this;
114
+ return reinterpret_cast<const TARGET &>(*this);
115
115
  }
116
116
  };
117
117
 
@@ -127,12 +127,12 @@ public:
127
127
  template <class TARGET>
128
128
  TARGET &Cast() {
129
129
  D_ASSERT(dynamic_cast<TARGET *>(this));
130
- return (TARGET &)*this;
130
+ return reinterpret_cast<TARGET &>(*this);
131
131
  }
132
132
  template <class TARGET>
133
133
  const TARGET &Cast() const {
134
134
  D_ASSERT(dynamic_cast<const TARGET *>(this));
135
- return (const TARGET &)*this;
135
+ return reinterpret_cast<const TARGET &>(*this);
136
136
  }
137
137
  };
138
138
 
@@ -144,12 +144,12 @@ public:
144
144
  template <class TARGET>
145
145
  TARGET &Cast() {
146
146
  D_ASSERT(dynamic_cast<TARGET *>(this));
147
- return (TARGET &)*this;
147
+ return reinterpret_cast<TARGET &>(*this);
148
148
  }
149
149
  template <class TARGET>
150
150
  const TARGET &Cast() const {
151
151
  D_ASSERT(dynamic_cast<const TARGET *>(this));
152
- return (const TARGET &)*this;
152
+ return reinterpret_cast<const TARGET &>(*this);
153
153
  }
154
154
  };
155
155
 
@@ -22,6 +22,17 @@ struct FunctionLocalState;
22
22
  //! Extra data that can be attached to a bind function of a cast, and is available during binding
23
23
  struct BindCastInfo {
24
24
  DUCKDB_API virtual ~BindCastInfo();
25
+
26
+ template <class TARGET>
27
+ TARGET &Cast() {
28
+ D_ASSERT(dynamic_cast<TARGET *>(this));
29
+ return reinterpret_cast<TARGET &>(*this);
30
+ }
31
+ template <class TARGET>
32
+ const TARGET &Cast() const {
33
+ D_ASSERT(dynamic_cast<const TARGET *>(this));
34
+ return reinterpret_cast<const TARGET &>(*this);
35
+ }
25
36
  };
26
37
 
27
38
  //! Extra data that can be returned by the bind of a cast, and is available during execution of a cast
@@ -33,12 +44,12 @@ struct BoundCastData {
33
44
  template <class TARGET>
34
45
  TARGET &Cast() {
35
46
  D_ASSERT(dynamic_cast<TARGET *>(this));
36
- return (TARGET &)*this;
47
+ return reinterpret_cast<TARGET &>(*this);
37
48
  }
38
49
  template <class TARGET>
39
50
  const TARGET &Cast() const {
40
51
  D_ASSERT(dynamic_cast<const TARGET *>(this));
41
- return (const TARGET &)*this;
52
+ return reinterpret_cast<const TARGET &>(*this);
42
53
  }
43
54
  };
44
55
 
@@ -201,15 +201,15 @@ struct VectorCastHelpers {
201
201
  struct VectorStringToList {
202
202
  static idx_t CountPartsList(const string_t &input);
203
203
  static bool SplitStringList(const string_t &input, string_t *child_data, idx_t &child_start, Vector &child);
204
- static bool StringToNestedTypeCastLoop(string_t *source_data, ValidityMask &source_mask, Vector &result,
204
+ static bool StringToNestedTypeCastLoop(const string_t *source_data, ValidityMask &source_mask, Vector &result,
205
205
  ValidityMask &result_mask, idx_t count, CastParameters &parameters,
206
206
  const SelectionVector *sel);
207
207
  };
208
208
 
209
209
  struct VectorStringToStruct {
210
- static bool SplitStruct(string_t &input, vector<unique_ptr<Vector>> &varchar_vectors, idx_t &row_idx,
210
+ static bool SplitStruct(const string_t &input, vector<unique_ptr<Vector>> &varchar_vectors, idx_t &row_idx,
211
211
  string_map_t<idx_t> &child_names, vector<ValidityMask *> &child_masks);
212
- static bool StringToNestedTypeCastLoop(string_t *source_data, ValidityMask &source_mask, Vector &result,
212
+ static bool StringToNestedTypeCastLoop(const string_t *source_data, ValidityMask &source_mask, Vector &result,
213
213
  ValidityMask &result_mask, idx_t count, CastParameters &parameters,
214
214
  const SelectionVector *sel);
215
215
  };
@@ -218,7 +218,7 @@ struct VectorStringToMap {
218
218
  static idx_t CountPartsMap(const string_t &input);
219
219
  static bool SplitStringMap(const string_t &input, string_t *child_key_data, string_t *child_val_data,
220
220
  idx_t &child_start, Vector &varchar_key, Vector &varchar_val);
221
- static bool StringToNestedTypeCastLoop(string_t *source_data, ValidityMask &source_mask, Vector &result,
221
+ static bool StringToNestedTypeCastLoop(const string_t *source_data, ValidityMask &source_mask, Vector &result,
222
222
  ValidityMask &result_mask, idx_t count, CastParameters &parameters,
223
223
  const SelectionVector *sel);
224
224
  };
@@ -29,16 +29,49 @@ struct SegmentScanState;
29
29
  struct AnalyzeState {
30
30
  virtual ~AnalyzeState() {
31
31
  }
32
+
33
+ template <class TARGET>
34
+ TARGET &Cast() {
35
+ D_ASSERT(dynamic_cast<TARGET *>(this));
36
+ return reinterpret_cast<TARGET &>(*this);
37
+ }
38
+ template <class TARGET>
39
+ const TARGET &Cast() const {
40
+ D_ASSERT(dynamic_cast<const TARGET *>(this));
41
+ return reinterpret_cast<const TARGET &>(*this);
42
+ }
32
43
  };
33
44
 
34
45
  struct CompressionState {
35
46
  virtual ~CompressionState() {
36
47
  }
48
+
49
+ template <class TARGET>
50
+ TARGET &Cast() {
51
+ D_ASSERT(dynamic_cast<TARGET *>(this));
52
+ return reinterpret_cast<TARGET &>(*this);
53
+ }
54
+ template <class TARGET>
55
+ const TARGET &Cast() const {
56
+ D_ASSERT(dynamic_cast<const TARGET *>(this));
57
+ return reinterpret_cast<const TARGET &>(*this);
58
+ }
37
59
  };
38
60
 
39
61
  struct CompressedSegmentState {
40
62
  virtual ~CompressedSegmentState() {
41
63
  }
64
+
65
+ template <class TARGET>
66
+ TARGET &Cast() {
67
+ D_ASSERT(dynamic_cast<TARGET *>(this));
68
+ return reinterpret_cast<TARGET &>(*this);
69
+ }
70
+ template <class TARGET>
71
+ const TARGET &Cast() const {
72
+ D_ASSERT(dynamic_cast<const TARGET *>(this));
73
+ return reinterpret_cast<const TARGET &>(*this);
74
+ }
42
75
  };
43
76
 
44
77
  struct CompressionAppendState {
@@ -48,6 +81,17 @@ struct CompressionAppendState {
48
81
  }
49
82
 
50
83
  BufferHandle handle;
84
+
85
+ template <class TARGET>
86
+ TARGET &Cast() {
87
+ D_ASSERT(dynamic_cast<TARGET *>(this));
88
+ return reinterpret_cast<TARGET &>(*this);
89
+ }
90
+ template <class TARGET>
91
+ const TARGET &Cast() const {
92
+ D_ASSERT(dynamic_cast<const TARGET *>(this));
93
+ return reinterpret_cast<const TARGET &>(*this);
94
+ }
51
95
  };
52
96
 
53
97
  //===--------------------------------------------------------------------===//