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
@@ -521,8 +521,9 @@ struct DatePart {
521
521
  }
522
522
 
523
523
  template <typename P>
524
- static inline P HasPartValue(P *part_values, DatePartSpecifier part) {
525
- return part_values[int(part)];
524
+ static inline bool HasPartValue(P *part_values, DatePartSpecifier part, P &value) {
525
+ value = part_values[int(part)];
526
+ return value;
526
527
  }
527
528
 
528
529
  template <class TA, class TR>
@@ -534,28 +535,28 @@ struct DatePart {
534
535
  int32_t dd = 1;
535
536
  if (mask & YMD) {
536
537
  Date::Convert(input, yyyy, mm, dd);
537
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::YEAR))) {
538
+ if (HasPartValue(part_values, DatePartSpecifier::YEAR, part_data)) {
538
539
  part_data[idx] = yyyy;
539
540
  }
540
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::MONTH))) {
541
+ if (HasPartValue(part_values, DatePartSpecifier::MONTH, part_data)) {
541
542
  part_data[idx] = mm;
542
543
  }
543
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::DAY))) {
544
+ if (HasPartValue(part_values, DatePartSpecifier::DAY, part_data)) {
544
545
  part_data[idx] = dd;
545
546
  }
546
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::DECADE))) {
547
+ if (HasPartValue(part_values, DatePartSpecifier::DECADE, part_data)) {
547
548
  part_data[idx] = DecadeOperator::DecadeFromYear(yyyy);
548
549
  }
549
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::CENTURY))) {
550
+ if (HasPartValue(part_values, DatePartSpecifier::CENTURY, part_data)) {
550
551
  part_data[idx] = CenturyOperator::CenturyFromYear(yyyy);
551
552
  }
552
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::MILLENNIUM))) {
553
+ if (HasPartValue(part_values, DatePartSpecifier::MILLENNIUM, part_data)) {
553
554
  part_data[idx] = MillenniumOperator::MillenniumFromYear(yyyy);
554
555
  }
555
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::QUARTER))) {
556
+ if (HasPartValue(part_values, DatePartSpecifier::QUARTER, part_data)) {
556
557
  part_data[idx] = QuarterOperator::QuarterFromMonth(mm);
557
558
  }
558
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::ERA))) {
559
+ if (HasPartValue(part_values, DatePartSpecifier::ERA, part_data)) {
559
560
  part_data[idx] = EraOperator::EraFromYear(yyyy);
560
561
  }
561
562
  }
@@ -563,10 +564,10 @@ struct DatePart {
563
564
  // Week calculations
564
565
  if (mask & DOW) {
565
566
  auto isodow = Date::ExtractISODayOfTheWeek(input);
566
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::DOW))) {
567
+ if (HasPartValue(part_values, DatePartSpecifier::DOW, part_data)) {
567
568
  part_data[idx] = DayOfWeekOperator::DayOfWeekFromISO(isodow);
568
569
  }
569
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::ISODOW))) {
570
+ if (HasPartValue(part_values, DatePartSpecifier::ISODOW, part_data)) {
570
571
  part_data[idx] = isodow;
571
572
  }
572
573
  }
@@ -576,24 +577,24 @@ struct DatePart {
576
577
  int32_t ww = 0;
577
578
  int32_t iyyy = 0;
578
579
  Date::ExtractISOYearWeek(input, iyyy, ww);
579
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::WEEK))) {
580
+ if (HasPartValue(part_values, DatePartSpecifier::WEEK, part_data)) {
580
581
  part_data[idx] = ww;
581
582
  }
582
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::ISOYEAR))) {
583
+ if (HasPartValue(part_values, DatePartSpecifier::ISOYEAR, part_data)) {
583
584
  part_data[idx] = iyyy;
584
585
  }
585
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::YEARWEEK))) {
586
+ if (HasPartValue(part_values, DatePartSpecifier::YEARWEEK, part_data)) {
586
587
  part_data[idx] = YearWeekOperator::YearWeekFromParts(iyyy, ww);
587
588
  }
588
589
  }
589
590
 
590
591
  if (mask & EPOCH) {
591
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::EPOCH))) {
592
+ if (HasPartValue(part_values, DatePartSpecifier::EPOCH, part_data)) {
592
593
  part_data[idx] = Date::Epoch(input);
593
594
  }
594
595
  }
595
596
  if (mask & DOY) {
596
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::DOY))) {
597
+ if (HasPartValue(part_values, DatePartSpecifier::DOY, part_data)) {
597
598
  part_data[idx] = Date::ExtractDayOfTheYear(input);
598
599
  }
599
600
  }
@@ -948,38 +949,37 @@ void DatePart::StructOperator::Operation(int64_t **part_values, const dtime_t &i
948
949
  int64_t *part_data;
949
950
  if (mask & TIME) {
950
951
  const auto micros = MicrosecondsOperator::Operation<dtime_t, int64_t>(input);
951
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::MICROSECONDS))) {
952
+ if (HasPartValue(part_values, DatePartSpecifier::MICROSECONDS, part_data)) {
952
953
  part_data[idx] = micros;
953
954
  }
954
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::MILLISECONDS))) {
955
+ if (HasPartValue(part_values, DatePartSpecifier::MILLISECONDS, part_data)) {
955
956
  part_data[idx] = micros / Interval::MICROS_PER_MSEC;
956
957
  }
957
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::SECOND))) {
958
+ if (HasPartValue(part_values, DatePartSpecifier::SECOND, part_data)) {
958
959
  part_data[idx] = micros / Interval::MICROS_PER_SEC;
959
960
  }
960
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::MINUTE))) {
961
+ if (HasPartValue(part_values, DatePartSpecifier::MINUTE, part_data)) {
961
962
  part_data[idx] = MinutesOperator::Operation<dtime_t, int64_t>(input);
962
963
  }
963
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::HOUR))) {
964
+ if (HasPartValue(part_values, DatePartSpecifier::HOUR, part_data)) {
964
965
  part_data[idx] = HoursOperator::Operation<dtime_t, int64_t>(input);
965
966
  }
966
967
  }
967
968
 
968
969
  if (mask & EPOCH) {
969
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::EPOCH))) {
970
+ if (HasPartValue(part_values, DatePartSpecifier::EPOCH, part_data)) {
970
971
  part_data[idx] = EpochOperator::Operation<dtime_t, int64_t>(input);
971
- ;
972
972
  }
973
973
  }
974
974
 
975
975
  if (mask & ZONE) {
976
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::TIMEZONE))) {
976
+ if (HasPartValue(part_values, DatePartSpecifier::TIMEZONE, part_data)) {
977
977
  part_data[idx] = 0;
978
978
  }
979
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::TIMEZONE_HOUR))) {
979
+ if (HasPartValue(part_values, DatePartSpecifier::TIMEZONE_HOUR, part_data)) {
980
980
  part_data[idx] = 0;
981
981
  }
982
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::TIMEZONE_MINUTE))) {
982
+ if (HasPartValue(part_values, DatePartSpecifier::TIMEZONE_MINUTE, part_data)) {
983
983
  part_data[idx] = 0;
984
984
  }
985
985
  }
@@ -998,8 +998,8 @@ void DatePart::StructOperator::Operation(int64_t **part_values, const timestamp_
998
998
  Operation(part_values, t, idx, mask & ~EPOCH);
999
999
 
1000
1000
  if (mask & EPOCH) {
1001
- auto part_data = HasPartValue(part_values, DatePartSpecifier::EPOCH);
1002
- if (part_data) {
1001
+ int64_t *part_data;
1002
+ if (HasPartValue(part_values, DatePartSpecifier::EPOCH, part_data)) {
1003
1003
  part_data[idx] = EpochOperator::Operation<timestamp_t, int64_t>(input);
1004
1004
  }
1005
1005
  }
@@ -1011,50 +1011,50 @@ void DatePart::StructOperator::Operation(int64_t **part_values, const interval_t
1011
1011
  int64_t *part_data;
1012
1012
  if (mask & YMD) {
1013
1013
  const auto mm = input.months % Interval::MONTHS_PER_YEAR;
1014
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::YEAR))) {
1014
+ if (HasPartValue(part_values, DatePartSpecifier::YEAR, part_data)) {
1015
1015
  part_data[idx] = input.months / Interval::MONTHS_PER_YEAR;
1016
1016
  }
1017
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::MONTH))) {
1017
+ if (HasPartValue(part_values, DatePartSpecifier::MONTH, part_data)) {
1018
1018
  part_data[idx] = mm;
1019
1019
  }
1020
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::DAY))) {
1020
+ if (HasPartValue(part_values, DatePartSpecifier::DAY, part_data)) {
1021
1021
  part_data[idx] = input.days;
1022
1022
  }
1023
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::DECADE))) {
1023
+ if (HasPartValue(part_values, DatePartSpecifier::DECADE, part_data)) {
1024
1024
  part_data[idx] = input.months / Interval::MONTHS_PER_DECADE;
1025
1025
  }
1026
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::CENTURY))) {
1026
+ if (HasPartValue(part_values, DatePartSpecifier::CENTURY, part_data)) {
1027
1027
  part_data[idx] = input.months / Interval::MONTHS_PER_CENTURY;
1028
1028
  }
1029
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::MILLENNIUM))) {
1029
+ if (HasPartValue(part_values, DatePartSpecifier::MILLENNIUM, part_data)) {
1030
1030
  part_data[idx] = input.months / Interval::MONTHS_PER_MILLENIUM;
1031
1031
  }
1032
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::QUARTER))) {
1032
+ if (HasPartValue(part_values, DatePartSpecifier::QUARTER, part_data)) {
1033
1033
  part_data[idx] = mm / Interval::MONTHS_PER_QUARTER + 1;
1034
1034
  }
1035
1035
  }
1036
1036
 
1037
1037
  if (mask & TIME) {
1038
1038
  const auto micros = MicrosecondsOperator::Operation<interval_t, int64_t>(input);
1039
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::MICROSECONDS))) {
1039
+ if (HasPartValue(part_values, DatePartSpecifier::MICROSECONDS, part_data)) {
1040
1040
  part_data[idx] = micros;
1041
1041
  }
1042
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::MILLISECONDS))) {
1042
+ if (HasPartValue(part_values, DatePartSpecifier::MILLISECONDS, part_data)) {
1043
1043
  part_data[idx] = micros / Interval::MICROS_PER_MSEC;
1044
1044
  }
1045
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::SECOND))) {
1045
+ if (HasPartValue(part_values, DatePartSpecifier::SECOND, part_data)) {
1046
1046
  part_data[idx] = micros / Interval::MICROS_PER_SEC;
1047
1047
  }
1048
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::MINUTE))) {
1048
+ if (HasPartValue(part_values, DatePartSpecifier::MINUTE, part_data)) {
1049
1049
  part_data[idx] = MinutesOperator::Operation<interval_t, int64_t>(input);
1050
1050
  }
1051
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::HOUR))) {
1051
+ if (HasPartValue(part_values, DatePartSpecifier::HOUR, part_data)) {
1052
1052
  part_data[idx] = HoursOperator::Operation<interval_t, int64_t>(input);
1053
1053
  }
1054
1054
  }
1055
1055
 
1056
1056
  if (mask & EPOCH) {
1057
- if ((part_data = HasPartValue(part_values, DatePartSpecifier::EPOCH))) {
1057
+ if (HasPartValue(part_values, DatePartSpecifier::EPOCH, part_data)) {
1058
1058
  part_data[idx] = EpochOperator::Operation<interval_t, int64_t>(input);
1059
1059
  }
1060
1060
  }
@@ -1264,7 +1264,7 @@ struct StructDatePart {
1264
1264
  template <typename INPUT_TYPE>
1265
1265
  static void Function(DataChunk &args, ExpressionState &state, Vector &result) {
1266
1266
  auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
1267
- auto &info = (BindData &)*func_expr.bind_info;
1267
+ auto &info = func_expr.bind_info->Cast<BindData>();
1268
1268
  D_ASSERT(args.ColumnCount() == 1);
1269
1269
 
1270
1270
  const auto count = args.size();
@@ -1313,7 +1313,7 @@ struct StructDatePart {
1313
1313
  input.ToUnifiedFormat(count, rdata);
1314
1314
 
1315
1315
  const auto &arg_valid = rdata.validity;
1316
- auto tdata = (const INPUT_TYPE *)rdata.data;
1316
+ auto tdata = UnifiedVectorFormat::GetData<INPUT_TYPE>(rdata);
1317
1317
 
1318
1318
  // Start with a valid flat vector
1319
1319
  result.SetVectorType(VectorType::FLAT_VECTOR);
@@ -1372,7 +1372,7 @@ struct StructDatePart {
1372
1372
  static void SerializeFunction(FieldWriter &writer, const FunctionData *bind_data_p,
1373
1373
  const ScalarFunction &function) {
1374
1374
  D_ASSERT(bind_data_p);
1375
- auto &info = (BindData &)*bind_data_p;
1375
+ auto &info = bind_data_p->Cast<BindData>();
1376
1376
  writer.WriteSerializable(info.stype);
1377
1377
  writer.WriteList<DatePartSpecifier>(info.part_codes);
1378
1378
  }
@@ -25,7 +25,7 @@ struct StrfTimeBindData : public FunctionData {
25
25
  }
26
26
 
27
27
  bool Equals(const FunctionData &other_p) const override {
28
- auto &other = (const StrfTimeBindData &)other_p;
28
+ auto &other = other_p.Cast<StrfTimeBindData>();
29
29
  return format_string == other.format_string;
30
30
  }
31
31
  };
@@ -111,7 +111,7 @@ struct StrpTimeBindData : public FunctionData {
111
111
  }
112
112
 
113
113
  bool Equals(const FunctionData &other_p) const override {
114
- auto &other = (const StrpTimeBindData &)other_p;
114
+ auto &other = other_p.Cast<StrpTimeBindData>();
115
115
  return format_strings == other.format_strings;
116
116
  }
117
117
  };
@@ -19,7 +19,7 @@ public:
19
19
  }
20
20
 
21
21
  bool Equals(const FunctionData &other_p) const override {
22
- auto &other = (const CurrentSettingBindData &)other_p;
22
+ auto &other = other_p.Cast<CurrentSettingBindData>();
23
23
  return Value::NotDistinctFrom(value, other.value);
24
24
  }
25
25
  };
@@ -37,7 +37,7 @@ static void LeastGreatestFunction(DataChunk &args, ExpressionState &state, Vecto
37
37
  {
38
38
  UnifiedVectorFormat vdata;
39
39
  args.data[0].ToUnifiedFormat(args.size(), vdata);
40
- auto input_data = (T *)vdata.data;
40
+ auto input_data = UnifiedVectorFormat::GetData<T>(vdata);
41
41
  for (idx_t i = 0; i < args.size(); i++) {
42
42
  auto vindex = vdata.sel->get_index(i);
43
43
  if (vdata.validity.RowIsValid(vindex)) {
@@ -59,7 +59,7 @@ static void LeastGreatestFunction(DataChunk &args, ExpressionState &state, Vecto
59
59
  UnifiedVectorFormat vdata;
60
60
  args.data[col_idx].ToUnifiedFormat(args.size(), vdata);
61
61
 
62
- auto input_data = (T *)vdata.data;
62
+ auto input_data = UnifiedVectorFormat::GetData<T>(vdata);
63
63
  if (!vdata.validity.AllValid()) {
64
64
  // potential new null entries: have to check the null mask
65
65
  for (idx_t i = 0; i < args.size(); i++) {
@@ -15,7 +15,7 @@ public:
15
15
  }
16
16
 
17
17
  bool Equals(const FunctionData &other_p) const override {
18
- auto &other = (const StatsBindData &)other_p;
18
+ auto &other = other_p.Cast<StatsBindData>();
19
19
  return stats == other.stats;
20
20
  }
21
21
  };
@@ -107,9 +107,9 @@ static void ExecuteSlice(Vector &result, Vector &s, Vector &b, Vector &e, const
107
107
  auto bidx = bdata.sel->get_index(i);
108
108
  auto eidx = edata.sel->get_index(i);
109
109
 
110
- auto sliced = ((INPUT_TYPE *)sdata.data)[sidx];
111
- auto begin = ((INDEX_TYPE *)bdata.data)[bidx];
112
- auto end = ((INDEX_TYPE *)edata.data)[eidx];
110
+ auto sliced = (UnifiedVectorFormat::GetData<INPUT_TYPE>(sdata))[sidx];
111
+ auto begin = (UnifiedVectorFormat::GetData<INDEX_TYPE>(bdata))[bidx];
112
+ auto end = (UnifiedVectorFormat::GetData<INDEX_TYPE>(edata))[eidx];
113
113
 
114
114
  auto svalid = sdata.validity.RowIsValid(sidx);
115
115
  auto bvalid = bdata.validity.RowIsValid(bidx);
@@ -19,8 +19,7 @@ void ListFlattenFunction(DataChunk &args, ExpressionState &state, Vector &result
19
19
 
20
20
  UnifiedVectorFormat list_data;
21
21
  input.ToUnifiedFormat(count, list_data);
22
- auto list_entries = (list_entry_t *)list_data.data;
23
-
22
+ auto list_entries = UnifiedVectorFormat::GetData<list_entry_t>(list_data);
24
23
  auto &child_vector = ListVector::GetEntry(input);
25
24
 
26
25
  result.SetVectorType(VectorType::FLAT_VECTOR);
@@ -28,7 +27,6 @@ void ListFlattenFunction(DataChunk &args, ExpressionState &state, Vector &result
28
27
  auto &result_validity = FlatVector::Validity(result);
29
28
 
30
29
  if (child_vector.GetType().id() == LogicalTypeId::SQLNULL) {
31
- auto result_entries = FlatVector::GetData<list_entry_t>(result);
32
30
  for (idx_t i = 0; i < count; i++) {
33
31
  auto list_index = list_data.sel->get_index(i);
34
32
  if (!list_data.validity.RowIsValid(list_index)) {
@@ -47,7 +45,7 @@ void ListFlattenFunction(DataChunk &args, ExpressionState &state, Vector &result
47
45
  auto child_size = ListVector::GetListSize(input);
48
46
  UnifiedVectorFormat child_data;
49
47
  child_vector.ToUnifiedFormat(child_size, child_data);
50
- auto child_entries = (list_entry_t *)child_data.data;
48
+ auto child_entries = UnifiedVectorFormat::GetData<list_entry_t>(child_data);
51
49
  auto &data_vector = ListVector::GetEntry(child_vector);
52
50
 
53
51
  idx_t offset = 0;
@@ -27,8 +27,8 @@ struct ListAggregatesBindData : public FunctionData {
27
27
  }
28
28
 
29
29
  bool Equals(const FunctionData &other_p) const override {
30
- auto &other = (const ListAggregatesBindData &)other_p;
31
- return stype == other.stype && aggr_expr->Equals(other.aggr_expr.get());
30
+ auto &other = other_p.Cast<ListAggregatesBindData>();
31
+ return stype == other.stype && aggr_expr->Equals(*other.aggr_expr);
32
32
  }
33
33
  static void Serialize(FieldWriter &writer, const FunctionData *bind_data_p, const ScalarFunction &function) {
34
34
  throw NotImplementedException("FIXME: list aggr serialize");
@@ -175,7 +175,7 @@ static void ListAggregatesFunction(DataChunk &args, ExpressionState &state, Vect
175
175
 
176
176
  UnifiedVectorFormat lists_data;
177
177
  lists.ToUnifiedFormat(count, lists_data);
178
- auto list_entries = (list_entry_t *)lists_data.data;
178
+ auto list_entries = UnifiedVectorFormat::GetData<list_entry_t>(lists_data);
179
179
 
180
180
  // state_buffer holds the state for each list of this chunk
181
181
  idx_t size = aggr.function.state_size();
@@ -40,7 +40,7 @@ unique_ptr<FunctionData> ListLambdaBindData::Copy() const {
40
40
 
41
41
  bool ListLambdaBindData::Equals(const FunctionData &other_p) const {
42
42
  auto &other = other_p.Cast<ListLambdaBindData>();
43
- return lambda_expr->Equals(other.lambda_expr.get()) && stype == other.stype;
43
+ return lambda_expr->Equals(*other.lambda_expr) && stype == other.stype;
44
44
  }
45
45
 
46
46
  ListLambdaBindData::~ListLambdaBindData() {
@@ -63,7 +63,7 @@ static void AppendFilteredToResult(Vector &lambda_vector, list_entry_t *result_e
63
63
  UnifiedVectorFormat lambda_data;
64
64
  lambda_vector.ToUnifiedFormat(elem_cnt, lambda_data);
65
65
 
66
- auto lambda_values = (bool *)lambda_data.data;
66
+ auto lambda_values = UnifiedVectorFormat::GetData<bool>(lambda_data);
67
67
  auto &lambda_validity = lambda_data.validity;
68
68
 
69
69
  // compute the new lengths and offsets, and create a selection vector
@@ -167,7 +167,7 @@ static void ListLambdaFunction(DataChunk &args, ExpressionState &state, Vector &
167
167
  // get the lists data
168
168
  UnifiedVectorFormat lists_data;
169
169
  lists.ToUnifiedFormat(count, lists_data);
170
- auto list_entries = (list_entry_t *)lists_data.data;
170
+ auto list_entries = UnifiedVectorFormat::GetData<list_entry_t>(lists_data);
171
171
 
172
172
  // get the lambda expression
173
173
  auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
@@ -321,8 +321,7 @@ static void ListFilterFunction(DataChunk &args, ExpressionState &state, Vector &
321
321
  template <int64_t LAMBDA_PARAM_CNT>
322
322
  static unique_ptr<FunctionData> ListLambdaBind(ClientContext &context, ScalarFunction &bound_function,
323
323
  vector<unique_ptr<Expression>> &arguments) {
324
-
325
- auto &bound_lambda_expr = (BoundLambdaExpression &)*arguments[1];
324
+ auto &bound_lambda_expr = arguments[1]->Cast<BoundLambdaExpression>();
326
325
  if (bound_lambda_expr.parameter_count != LAMBDA_PARAM_CNT) {
327
326
  throw BinderException("Incorrect number of parameters in lambda function! " + bound_function.name +
328
327
  " expects " + to_string(LAMBDA_PARAM_CNT) + " parameter(s).");
@@ -355,7 +354,7 @@ static unique_ptr<FunctionData> ListTransformBind(ClientContext &context, Scalar
355
354
  throw BinderException("Invalid lambda expression!");
356
355
  }
357
356
 
358
- auto &bound_lambda_expr = (BoundLambdaExpression &)*arguments[1];
357
+ auto &bound_lambda_expr = arguments[1]->Cast<BoundLambdaExpression>();
359
358
  bound_function.return_type = LogicalType::LIST(bound_lambda_expr.lambda_expr->return_type);
360
359
  return ListLambdaBind<1>(context, bound_function, arguments);
361
360
  }
@@ -370,7 +369,7 @@ static unique_ptr<FunctionData> ListFilterBind(ClientContext &context, ScalarFun
370
369
  }
371
370
 
372
371
  // try to cast to boolean, if the return type of the lambda filter expression is not already boolean
373
- auto &bound_lambda_expr = (BoundLambdaExpression &)*arguments[1];
372
+ auto &bound_lambda_expr = arguments[1]->Cast<BoundLambdaExpression>();
374
373
  if (bound_lambda_expr.lambda_expr->return_type != LogicalType::BOOLEAN) {
375
374
  auto cast_lambda_expr =
376
375
  BoundCastExpression::AddCastToType(context, std::move(bound_lambda_expr.lambda_expr), LogicalType::BOOLEAN);
@@ -132,7 +132,7 @@ static void ListSortFunction(DataChunk &args, ExpressionState &state, Vector &re
132
132
  // get the lists data
133
133
  UnifiedVectorFormat lists_data;
134
134
  result.ToUnifiedFormat(count, lists_data);
135
- auto list_entries = (list_entry_t *)lists_data.data;
135
+ auto list_entries = UnifiedVectorFormat::GetData<list_entry_t>(lists_data);
136
136
 
137
137
  // create the lists_indices vector, this contains an element for each list's entry,
138
138
  // the element corresponds to the list's index, e.g. for [1, 2, 4], [5, 4]
@@ -16,7 +16,7 @@ static void CardinalityFunction(DataChunk &args, ExpressionState &state, Vector
16
16
 
17
17
  map.ToUnifiedFormat(args.size(), map_data);
18
18
  for (idx_t row = 0; row < args.size(); row++) {
19
- auto list_entry = ((list_entry_t *)map_data.data)[map_data.sel->get_index(row)];
19
+ auto list_entry = UnifiedVectorFormat::GetData<list_entry_t>(map_data)[map_data.sel->get_index(row)];
20
20
  result_data[row] = list_entry.length;
21
21
  result_validity.Set(row, map_data.validity.RowIsValid(map_data.sel->get_index(row)));
22
22
  }
@@ -55,8 +55,8 @@ static bool ListEntriesEqual(Vector &keys, Vector &values, idx_t count) {
55
55
  keys.ToUnifiedFormat(count, keys_data);
56
56
  values.ToUnifiedFormat(count, values_data);
57
57
 
58
- auto keys_entries = (list_entry_t *)keys_data.data;
59
- auto values_entries = (list_entry_t *)values_data.data;
58
+ auto keys_entries = UnifiedVectorFormat::GetData<list_entry_t>(keys_data);
59
+ auto values_entries = UnifiedVectorFormat::GetData<list_entry_t>(values_data);
60
60
 
61
61
  if (same_vector_type) {
62
62
  const auto key_data = keys_data.data;
@@ -69,7 +69,7 @@ static void MapConcatFunction(DataChunk &args, ExpressionState &state, Vector &r
69
69
  auto &keys = MapVector::GetKeys(args.data[map_idx]);
70
70
 
71
71
  auto index = map_format.sel->get_index(i);
72
- auto entry = ((list_entry_t *)map_format.data)[index];
72
+ auto entry = UnifiedVectorFormat::GetData<list_entry_t>(map_format)[index];
73
73
 
74
74
  // Update the list for this row
75
75
  for (idx_t list_idx = 0; list_idx < entry.length; list_idx++) {
@@ -30,9 +30,7 @@ void FillResult(Vector &map, Vector &offsets, Vector &result, idx_t count) {
30
30
  UnifiedVectorFormat offset_data;
31
31
  offsets.ToUnifiedFormat(count, offset_data);
32
32
 
33
- UnifiedVectorFormat result_data;
34
- result.ToUnifiedFormat(count, result_data);
35
-
33
+ auto result_data = FlatVector::GetData<list_entry_t>(result);
36
34
  auto entry_count = ListVector::GetListSize(map);
37
35
  auto &values_entries = MapVector::GetValues(map);
38
36
  UnifiedVectorFormat values_entry_data;
@@ -41,14 +39,13 @@ void FillResult(Vector &map, Vector &offsets, Vector &result, idx_t count) {
41
39
 
42
40
  for (idx_t row = 0; row < count; row++) {
43
41
  idx_t offset_idx = offset_data.sel->get_index(row);
44
- auto offset = ((int32_t *)offset_data.data)[offset_idx];
42
+ auto offset = UnifiedVectorFormat::GetData<int32_t>(offset_data)[offset_idx];
45
43
 
46
44
  // Get the current size of the list, for the offset
47
45
  idx_t current_offset = ListVector::GetListSize(result);
48
46
  if (!offset_data.validity.RowIsValid(offset_idx) || !offset) {
49
47
  // Set the entry data for this result row
50
- idx_t result_index = result_data.sel->get_index(row);
51
- auto &entry = ((list_entry_t *)result_data.data)[result_index];
48
+ auto &entry = result_data[row];
52
49
  entry.length = 0;
53
50
  entry.offset = current_offset;
54
51
  continue;
@@ -58,7 +55,7 @@ void FillResult(Vector &map, Vector &offsets, Vector &result, idx_t count) {
58
55
 
59
56
  // Get the 'values' list entry corresponding to the offset
60
57
  idx_t value_index = map_data.sel->get_index(row);
61
- auto &value_list_entry = ((list_entry_t *)map_data.data)[value_index];
58
+ auto &value_list_entry = UnifiedVectorFormat::GetData<list_entry_t>(map_data)[value_index];
62
59
 
63
60
  // Add the values to the result
64
61
  idx_t list_offset = value_list_entry.offset + offset;
@@ -67,8 +64,7 @@ void FillResult(Vector &map, Vector &offsets, Vector &result, idx_t count) {
67
64
  ListVector::Append(result, values_entries, length + list_offset, list_offset);
68
65
 
69
66
  // Set the entry data for this result row
70
- idx_t result_index = result_data.sel->get_index(row);
71
- auto &entry = ((list_entry_t *)result_data.data)[result_index];
67
+ auto &entry = result_data[row];
72
68
  entry.length = length;
73
69
  entry.offset = current_offset;
74
70
  }
@@ -563,7 +563,7 @@ struct RoundPrecisionFunctionData : public FunctionData {
563
563
  }
564
564
 
565
565
  bool Equals(const FunctionData &other_p) const override {
566
- auto &other = (const RoundPrecisionFunctionData &)other_p;
566
+ auto &other = other_p.Cast<RoundPrecisionFunctionData>();
567
567
  return target_scale == other.target_scale;
568
568
  }
569
569
  };
@@ -571,7 +571,7 @@ struct RoundPrecisionFunctionData : public FunctionData {
571
571
  template <class T, class POWERS_OF_TEN_CLASS>
572
572
  static void DecimalRoundNegativePrecisionFunction(DataChunk &input, ExpressionState &state, Vector &result) {
573
573
  auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
574
- auto &info = (RoundPrecisionFunctionData &)*func_expr.bind_info;
574
+ auto &info = func_expr.bind_info->Cast<RoundPrecisionFunctionData>();
575
575
  auto source_scale = DecimalType::GetScale(func_expr.children[0]->return_type);
576
576
  auto width = DecimalType::GetWidth(func_expr.children[0]->return_type);
577
577
  if (-info.target_scale >= width) {
@@ -597,7 +597,7 @@ static void DecimalRoundNegativePrecisionFunction(DataChunk &input, ExpressionSt
597
597
  template <class T, class POWERS_OF_TEN_CLASS>
598
598
  static void DecimalRoundPositivePrecisionFunction(DataChunk &input, ExpressionState &state, Vector &result) {
599
599
  auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
600
- auto &info = (RoundPrecisionFunctionData &)*func_expr.bind_info;
600
+ auto &info = func_expr.bind_info->Cast<RoundPrecisionFunctionData>();
601
601
  auto source_scale = DecimalType::GetScale(func_expr.children[0]->return_type);
602
602
  T power_of_ten = POWERS_OF_TEN_CLASS::POWERS_OF_TEN[source_scale - info.target_scale];
603
603
  T addition = power_of_ten / 2;
@@ -17,9 +17,10 @@ static bool StartsWith(const unsigned char *haystack, idx_t haystack_size, const
17
17
  }
18
18
 
19
19
  static bool StartsWith(const string_t &haystack_s, const string_t &needle_s) {
20
- auto haystack = (const unsigned char *)haystack_s.GetData();
20
+
21
+ auto haystack = const_uchar_ptr_cast(haystack_s.GetData());
21
22
  auto haystack_size = haystack_s.GetSize();
22
- auto needle = (const unsigned char *)needle_s.GetData();
23
+ auto needle = const_uchar_ptr_cast(needle_s.GetData());
23
24
  auto needle_size = needle_s.GetSize();
24
25
  if (needle_size == 0) {
25
26
  // empty needle: always true
@@ -36,7 +36,7 @@ struct RegularStringSplit {
36
36
  if (delim_size == 0) {
37
37
  return 0;
38
38
  }
39
- return ContainsFun::Find((const unsigned char *)input_data, input_size, (const unsigned char *)delim_data,
39
+ return ContainsFun::Find(const_uchar_ptr_cast(input_data), input_size, const_uchar_ptr_cast(delim_data),
40
40
  delim_size);
41
41
  }
42
42
  };
@@ -45,7 +45,7 @@ struct ConstantRegexpStringSplit {
45
45
  static idx_t Find(const char *input_data, idx_t input_size, const char *delim_data, idx_t delim_size,
46
46
  idx_t &match_size, void *data) {
47
47
  D_ASSERT(data);
48
- auto regex = (duckdb_re2::RE2 *)data;
48
+ auto regex = reinterpret_cast<duckdb_re2::RE2 *>(data);
49
49
  duckdb_re2::StringPiece match;
50
50
  if (!regex->Match(duckdb_re2::StringPiece(input_data, input_size), 0, input_size, RE2::UNANCHORED, &match, 1)) {
51
51
  return DConstants::INVALID_INDEX;
@@ -109,11 +109,11 @@ template <class OP>
109
109
  static void StringSplitExecutor(DataChunk &args, ExpressionState &state, Vector &result, void *data = nullptr) {
110
110
  UnifiedVectorFormat input_data;
111
111
  args.data[0].ToUnifiedFormat(args.size(), input_data);
112
- auto inputs = (string_t *)input_data.data;
112
+ auto inputs = UnifiedVectorFormat::GetData<string_t>(input_data);
113
113
 
114
114
  UnifiedVectorFormat delim_data;
115
115
  args.data[1].ToUnifiedFormat(args.size(), delim_data);
116
- auto delims = (string_t *)delim_data.data;
116
+ auto delims = UnifiedVectorFormat::GetData<string_t>(delim_data);
117
117
 
118
118
  D_ASSERT(result.GetType().id() == LogicalTypeId::LIST);
119
119
 
@@ -64,7 +64,7 @@ static void UnaryTrimFunction(DataChunk &args, ExpressionState &state, Vector &r
64
64
  }
65
65
 
66
66
  static void GetIgnoredCodepoints(string_t ignored, unordered_set<utf8proc_int32_t> &ignored_codepoints) {
67
- auto dataptr = (utf8proc_uint8_t *)ignored.GetData();
67
+ auto dataptr = reinterpret_cast<const utf8proc_uint8_t *>(ignored.GetData());
68
68
  auto size = ignored.GetSize();
69
69
  idx_t pos = 0;
70
70
  while (pos < size) {
@@ -20,7 +20,7 @@ public:
20
20
  return make_uniq<UnionExtractBindData>(key, index, type);
21
21
  }
22
22
  bool Equals(const FunctionData &other_p) const override {
23
- auto &other = (const UnionExtractBindData &)other_p;
23
+ auto &other = other_p.Cast<UnionExtractBindData>();
24
24
  return key == other.key && index == other.index && type == other.type;
25
25
  }
26
26
  };
@@ -7,7 +7,7 @@ namespace duckdb {
7
7
 
8
8
  AdaptiveFilter::AdaptiveFilter(const Expression &expr)
9
9
  : iteration_count(0), observe_interval(10), execute_interval(20), warmup(true) {
10
- auto &conj_expr = (const BoundConjunctionExpression &)expr;
10
+ auto &conj_expr = expr.Cast<BoundConjunctionExpression>();
11
11
  D_ASSERT(conj_expr.children.size() > 1);
12
12
  for (idx_t idx = 0; idx < conj_expr.children.size(); idx++) {
13
13
  permutation.push_back(idx);