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
@@ -113,7 +113,7 @@ void Binder::BindModifiers(OrderBinder &order_binder, QueryNode &statement, Boun
113
113
  unique_ptr<BoundResultModifier> bound_modifier;
114
114
  switch (mod->type) {
115
115
  case ResultModifierType::DISTINCT_MODIFIER: {
116
- auto &distinct = (DistinctModifier &)*mod;
116
+ auto &distinct = mod->Cast<DistinctModifier>();
117
117
  auto bound_distinct = make_uniq<BoundDistinctModifier>();
118
118
  bound_distinct->distinct_type =
119
119
  distinct.distinct_on_targets.empty() ? DistinctType::DISTINCT : DistinctType::DISTINCT_ON;
@@ -133,7 +133,7 @@ void Binder::BindModifiers(OrderBinder &order_binder, QueryNode &statement, Boun
133
133
  break;
134
134
  }
135
135
  case ResultModifierType::ORDER_MODIFIER: {
136
- auto &order = (OrderModifier &)*mod;
136
+ auto &order = mod->Cast<OrderModifier>();
137
137
  auto bound_order = make_uniq<BoundOrderModifier>();
138
138
  auto &config = DBConfig::GetConfig(context);
139
139
  D_ASSERT(!order.orders.empty());
@@ -174,10 +174,10 @@ void Binder::BindModifiers(OrderBinder &order_binder, QueryNode &statement, Boun
174
174
  break;
175
175
  }
176
176
  case ResultModifierType::LIMIT_MODIFIER:
177
- bound_modifier = BindLimit(order_binder, (LimitModifier &)*mod);
177
+ bound_modifier = BindLimit(order_binder, mod->Cast<LimitModifier>());
178
178
  break;
179
179
  case ResultModifierType::LIMIT_PERCENT_MODIFIER:
180
- bound_modifier = BindLimitPercent(order_binder, (LimitPercentModifier &)*mod);
180
+ bound_modifier = BindLimitPercent(order_binder, mod->Cast<LimitPercentModifier>());
181
181
  break;
182
182
  default:
183
183
  throw Exception("Unsupported result modifier");
@@ -203,7 +203,7 @@ void Binder::BindModifierTypes(BoundQueryNode &result, const vector<LogicalType>
203
203
  for (auto &bound_mod : result.modifiers) {
204
204
  switch (bound_mod->type) {
205
205
  case ResultModifierType::DISTINCT_MODIFIER: {
206
- auto &distinct = (BoundDistinctModifier &)*bound_mod;
206
+ auto &distinct = bound_mod->Cast<BoundDistinctModifier>();
207
207
  D_ASSERT(!distinct.target_distincts.empty());
208
208
  // set types of distinct targets
209
209
  for (auto &expr : distinct.target_distincts) {
@@ -226,19 +226,19 @@ void Binder::BindModifierTypes(BoundQueryNode &result, const vector<LogicalType>
226
226
  break;
227
227
  }
228
228
  case ResultModifierType::LIMIT_MODIFIER: {
229
- auto &limit = (BoundLimitModifier &)*bound_mod;
229
+ auto &limit = bound_mod->Cast<BoundLimitModifier>();
230
230
  AssignReturnType(limit.limit, sql_types);
231
231
  AssignReturnType(limit.offset, sql_types);
232
232
  break;
233
233
  }
234
234
  case ResultModifierType::LIMIT_PERCENT_MODIFIER: {
235
- auto &limit = (BoundLimitPercentModifier &)*bound_mod;
235
+ auto &limit = bound_mod->Cast<BoundLimitPercentModifier>();
236
236
  AssignReturnType(limit.limit, sql_types);
237
237
  AssignReturnType(limit.offset, sql_types);
238
238
  break;
239
239
  }
240
240
  case ResultModifierType::ORDER_MODIFIER: {
241
- auto &order = (BoundOrderModifier &)*bound_mod;
241
+ auto &order = bound_mod->Cast<BoundOrderModifier>();
242
242
  for (auto &order_node : order.orders) {
243
243
  auto &expr = order_node.expression;
244
244
  D_ASSERT(expr->type == ExpressionType::BOUND_COLUMN_REF);
@@ -13,14 +13,14 @@ unique_ptr<LogicalOperator> Binder::VisitQueryNode(BoundQueryNode &node, unique_
13
13
  for (auto &mod : node.modifiers) {
14
14
  switch (mod->type) {
15
15
  case ResultModifierType::DISTINCT_MODIFIER: {
16
- auto &bound = (BoundDistinctModifier &)*mod;
16
+ auto &bound = mod->Cast<BoundDistinctModifier>();
17
17
  auto distinct = make_uniq<LogicalDistinct>(std::move(bound.target_distincts), bound.distinct_type);
18
18
  distinct->AddChild(std::move(root));
19
19
  root = std::move(distinct);
20
20
  break;
21
21
  }
22
22
  case ResultModifierType::ORDER_MODIFIER: {
23
- auto &bound = (BoundOrderModifier &)*mod;
23
+ auto &bound = mod->Cast<BoundOrderModifier>();
24
24
  if (root->type == LogicalOperatorType::LOGICAL_DISTINCT) {
25
25
  auto &distinct = root->Cast<LogicalDistinct>();
26
26
  if (distinct.distinct_type == DistinctType::DISTINCT_ON) {
@@ -37,7 +37,7 @@ unique_ptr<LogicalOperator> Binder::VisitQueryNode(BoundQueryNode &node, unique_
37
37
  break;
38
38
  }
39
39
  case ResultModifierType::LIMIT_MODIFIER: {
40
- auto &bound = (BoundLimitModifier &)*mod;
40
+ auto &bound = mod->Cast<BoundLimitModifier>();
41
41
  auto limit = make_uniq<LogicalLimit>(bound.limit_val, bound.offset_val, std::move(bound.limit),
42
42
  std::move(bound.offset));
43
43
  limit->AddChild(std::move(root));
@@ -45,7 +45,7 @@ unique_ptr<LogicalOperator> Binder::VisitQueryNode(BoundQueryNode &node, unique_
45
45
  break;
46
46
  }
47
47
  case ResultModifierType::LIMIT_PERCENT_MODIFIER: {
48
- auto &bound = (BoundLimitPercentModifier &)*mod;
48
+ auto &bound = mod->Cast<BoundLimitPercentModifier>();
49
49
  auto limit = make_uniq<LogicalLimitPercent>(bound.limit_percent, bound.offset_val, std::move(bound.limit),
50
50
  std::move(bound.offset));
51
51
  limit->AddChild(std::move(root));
@@ -501,7 +501,7 @@ BoundStatement Binder::Bind(CreateStatement &stmt) {
501
501
  result.plan = make_uniq<LogicalCreate>(LogicalOperatorType::LOGICAL_CREATE_SCHEMA, std::move(stmt.info));
502
502
  break;
503
503
  case CatalogType::VIEW_ENTRY: {
504
- auto &base = (CreateViewInfo &)*stmt.info;
504
+ auto &base = stmt.info->Cast<CreateViewInfo>();
505
505
  // bind the schema
506
506
  auto &schema = BindCreateSchema(*stmt.info);
507
507
  BindCreateViewInfo(base);
@@ -350,7 +350,7 @@ void Binder::BindOnConflictClause(LogicalInsert &insert, TableCatalogEntry &tabl
350
350
  // Get the column_ids we need to fetch later on from the conflicting tuples
351
351
  // of the original table, to execute the expressions
352
352
  D_ASSERT(original_binding->binding_type == BindingType::TABLE);
353
- auto &table_binding = (TableBinding &)*original_binding;
353
+ auto &table_binding = original_binding->Cast<TableBinding>();
354
354
  insert.columns_to_fetch = table_binding.GetBoundColumnIds();
355
355
  return;
356
356
  }
@@ -376,7 +376,7 @@ void Binder::BindOnConflictClause(LogicalInsert &insert, TableCatalogEntry &tabl
376
376
  // Get the column_ids we need to fetch later on from the conflicting tuples
377
377
  // of the original table, to execute the expressions
378
378
  D_ASSERT(original_binding->binding_type == BindingType::TABLE);
379
- auto &table_binding = (TableBinding &)*original_binding;
379
+ auto &table_binding = original_binding->Cast<TableBinding>();
380
380
  insert.columns_to_fetch = table_binding.GetBoundColumnIds();
381
381
 
382
382
  // Replace the column bindings to refer to the child operator
@@ -87,7 +87,7 @@ static void BindUpdateConstraints(TableCatalogEntry &table, LogicalGet &get, Log
87
87
  // with a "useless" update (i.e. i=i) so we can verify that the CHECK constraint is not violated
88
88
  for (auto &constraint : table.GetBoundConstraints()) {
89
89
  if (constraint->type == ConstraintType::CHECK) {
90
- auto &check = *reinterpret_cast<BoundCheckConstraint *>(constraint.get());
90
+ auto &check = constraint->Cast<BoundCheckConstraint>();
91
91
  // check constraint! check if we need to add any extra columns to the UPDATE clause
92
92
  BindExtraColumns(table, get, proj, update, check.bound_columns);
93
93
  }
@@ -84,7 +84,7 @@ static unique_ptr<SelectNode> PivotInitialAggregate(PivotBindState &bind_state,
84
84
  if (entry->type != ExpressionType::COLUMN_REF) {
85
85
  throw InternalException("Unexpected child of pivot source - not a ColumnRef");
86
86
  }
87
- auto &columnref = (ColumnRefExpression &)*entry;
87
+ auto &columnref = entry->Cast<ColumnRefExpression>();
88
88
  if (handled_columns.find(columnref.GetColumnName()) == handled_columns.end()) {
89
89
  // not handled - add to grouping set
90
90
  subquery_stage1->groups.group_expressions.push_back(
@@ -150,8 +150,8 @@ Binder::BindTableFunctionInternal(TableFunction &table_function, const string &f
150
150
  }
151
151
  bind_data = table_function.bind(context, bind_input, return_types, return_names);
152
152
  if (table_function.name == "pandas_scan" || table_function.name == "arrow_scan") {
153
- auto arrow_bind = (PyTableFunctionData *)bind_data.get();
154
- arrow_bind->external_dependency = std::move(external_dependency);
153
+ auto &arrow_bind = bind_data->Cast<PyTableFunctionData>();
154
+ arrow_bind.external_dependency = std::move(external_dependency);
155
155
  }
156
156
  if (table_function.name == "read_csv" || table_function.name == "read_csv_auto") {
157
157
  auto &csv_bind = bind_data->Cast<ReadCSVData>();
@@ -208,7 +208,7 @@ unique_ptr<LogicalOperator> Binder::CreatePlan(BoundTableRef &ref) {
208
208
  root = CreatePlan(ref.Cast<BoundCTERef>());
209
209
  break;
210
210
  case TableReferenceType::PIVOT:
211
- root = CreatePlan((BoundPivotRef &)ref);
211
+ root = CreatePlan(ref.Cast<BoundPivotRef>());
212
212
  break;
213
213
  case TableReferenceType::INVALID:
214
214
  default:
@@ -29,7 +29,7 @@ bool BoundOrderByNode::Equals(const BoundOrderByNode &other) const {
29
29
  if (type != other.type || null_order != other.null_order) {
30
30
  return false;
31
31
  }
32
- if (!expression->Equals(other.expression.get())) {
32
+ if (!expression->Equals(*other.expression)) {
33
33
  return false;
34
34
  }
35
35
 
@@ -88,24 +88,29 @@ unique_ptr<BoundOrderModifier> BoundOrderModifier::Copy() const {
88
88
  return result;
89
89
  }
90
90
 
91
- bool BoundOrderModifier::Equals(const BoundOrderModifier *left, const BoundOrderModifier *right) {
92
- if (left == right) {
93
- return true;
94
- }
95
- if (!left || !right) {
91
+ bool BoundOrderModifier::Equals(const BoundOrderModifier &left, const BoundOrderModifier &right) {
92
+ if (left.orders.size() != right.orders.size()) {
96
93
  return false;
97
94
  }
98
- if (left->orders.size() != right->orders.size()) {
99
- return false;
100
- }
101
- for (idx_t i = 0; i < left->orders.size(); i++) {
102
- if (!left->orders[i].Equals(right->orders[i])) {
95
+ for (idx_t i = 0; i < left.orders.size(); i++) {
96
+ if (!left.orders[i].Equals(right.orders[i])) {
103
97
  return false;
104
98
  }
105
99
  }
106
100
  return true;
107
101
  }
108
102
 
103
+ bool BoundOrderModifier::Equals(const unique_ptr<BoundOrderModifier> &left,
104
+ const unique_ptr<BoundOrderModifier> &right) {
105
+ if (left.get() == right.get()) {
106
+ return true;
107
+ }
108
+ if (!left || !right) {
109
+ return false;
110
+ }
111
+ return BoundOrderModifier::Equals(*left, *right);
112
+ }
113
+
109
114
  BoundLimitModifier::BoundLimitModifier() : BoundResultModifier(ResultModifierType::LIMIT_MODIFIER) {
110
115
  }
111
116
 
@@ -30,11 +30,11 @@ hash_t BoundAggregateExpression::Hash() const {
30
30
  return result;
31
31
  }
32
32
 
33
- bool BoundAggregateExpression::Equals(const BaseExpression *other_p) const {
33
+ bool BoundAggregateExpression::Equals(const BaseExpression &other_p) const {
34
34
  if (!Expression::Equals(other_p)) {
35
35
  return false;
36
36
  }
37
- auto &other = other_p->Cast<BoundAggregateExpression>();
37
+ auto &other = other_p.Cast<BoundAggregateExpression>();
38
38
  if (other.aggr_type != aggr_type) {
39
39
  return false;
40
40
  }
@@ -44,18 +44,18 @@ bool BoundAggregateExpression::Equals(const BaseExpression *other_p) const {
44
44
  if (children.size() != other.children.size()) {
45
45
  return false;
46
46
  }
47
- if (!Expression::Equals(other.filter.get(), filter.get())) {
47
+ if (!Expression::Equals(other.filter, filter)) {
48
48
  return false;
49
49
  }
50
50
  for (idx_t i = 0; i < children.size(); i++) {
51
- if (!Expression::Equals(children[i].get(), other.children[i].get())) {
51
+ if (!Expression::Equals(*children[i], *other.children[i])) {
52
52
  return false;
53
53
  }
54
54
  }
55
55
  if (!FunctionData::Equals(bind_info.get(), other.bind_info.get())) {
56
56
  return false;
57
57
  }
58
- if (!BoundOrderModifier::Equals(order_bys.get(), other.order_bys.get())) {
58
+ if (!BoundOrderModifier::Equals(order_bys, other.order_bys)) {
59
59
  return false;
60
60
  }
61
61
  return true;
@@ -15,18 +15,18 @@ string BoundBetweenExpression::ToString() const {
15
15
  return BetweenExpression::ToString<BoundBetweenExpression, Expression>(*this);
16
16
  }
17
17
 
18
- bool BoundBetweenExpression::Equals(const BaseExpression *other_p) const {
18
+ bool BoundBetweenExpression::Equals(const BaseExpression &other_p) const {
19
19
  if (!Expression::Equals(other_p)) {
20
20
  return false;
21
21
  }
22
- auto &other = other_p->Cast<BoundBetweenExpression>();
23
- if (!Expression::Equals(input.get(), other.input.get())) {
22
+ auto &other = other_p.Cast<BoundBetweenExpression>();
23
+ if (!Expression::Equals(*input, *other.input)) {
24
24
  return false;
25
25
  }
26
- if (!Expression::Equals(lower.get(), other.lower.get())) {
26
+ if (!Expression::Equals(*lower, *other.lower)) {
27
27
  return false;
28
28
  }
29
- if (!Expression::Equals(upper.get(), other.upper.get())) {
29
+ if (!Expression::Equals(*upper, *other.upper)) {
30
30
  return false;
31
31
  }
32
32
  return lower_inclusive == other.lower_inclusive && upper_inclusive == other.upper_inclusive;
@@ -22,23 +22,23 @@ string BoundCaseExpression::ToString() const {
22
22
  return CaseExpression::ToString<BoundCaseExpression, Expression>(*this);
23
23
  }
24
24
 
25
- bool BoundCaseExpression::Equals(const BaseExpression *other_p) const {
25
+ bool BoundCaseExpression::Equals(const BaseExpression &other_p) const {
26
26
  if (!Expression::Equals(other_p)) {
27
27
  return false;
28
28
  }
29
- auto &other = other_p->Cast<BoundCaseExpression>();
29
+ auto &other = other_p.Cast<BoundCaseExpression>();
30
30
  if (case_checks.size() != other.case_checks.size()) {
31
31
  return false;
32
32
  }
33
33
  for (idx_t i = 0; i < case_checks.size(); i++) {
34
- if (!Expression::Equals(case_checks[i].when_expr.get(), other.case_checks[i].when_expr.get())) {
34
+ if (!Expression::Equals(*case_checks[i].when_expr, *other.case_checks[i].when_expr)) {
35
35
  return false;
36
36
  }
37
- if (!Expression::Equals(case_checks[i].then_expr.get(), other.case_checks[i].then_expr.get())) {
37
+ if (!Expression::Equals(*case_checks[i].then_expr, *other.case_checks[i].then_expr)) {
38
38
  return false;
39
39
  }
40
40
  }
41
- if (!Expression::Equals(else_expr.get(), other.else_expr.get())) {
41
+ if (!Expression::Equals(*else_expr, *other.else_expr)) {
42
42
  return false;
43
43
  }
44
44
  return true;
@@ -169,12 +169,12 @@ string BoundCastExpression::ToString() const {
169
169
  return (try_cast ? "TRY_CAST(" : "CAST(") + child->GetName() + " AS " + return_type.ToString() + ")";
170
170
  }
171
171
 
172
- bool BoundCastExpression::Equals(const BaseExpression *other_p) const {
172
+ bool BoundCastExpression::Equals(const BaseExpression &other_p) const {
173
173
  if (!Expression::Equals(other_p)) {
174
174
  return false;
175
175
  }
176
- auto &other = other_p->Cast<BoundCastExpression>();
177
- if (!Expression::Equals(child.get(), other.child.get())) {
176
+ auto &other = other_p.Cast<BoundCastExpression>();
177
+ if (!Expression::Equals(*child, *other.child)) {
178
178
  return false;
179
179
  }
180
180
  if (try_cast != other.try_cast) {
@@ -27,11 +27,11 @@ hash_t BoundColumnRefExpression::Hash() const {
27
27
  return CombineHash(result, duckdb::Hash<uint64_t>(depth));
28
28
  }
29
29
 
30
- bool BoundColumnRefExpression::Equals(const BaseExpression *other_p) const {
30
+ bool BoundColumnRefExpression::Equals(const BaseExpression &other_p) const {
31
31
  if (!Expression::Equals(other_p)) {
32
32
  return false;
33
33
  }
34
- auto &other = other_p->Cast<BoundColumnRefExpression>();
34
+ auto &other = other_p.Cast<BoundColumnRefExpression>();
35
35
  return other.binding == binding && other.depth == depth;
36
36
  }
37
37
 
@@ -14,15 +14,15 @@ string BoundComparisonExpression::ToString() const {
14
14
  return ComparisonExpression::ToString<BoundComparisonExpression, Expression>(*this);
15
15
  }
16
16
 
17
- bool BoundComparisonExpression::Equals(const BaseExpression *other_p) const {
17
+ bool BoundComparisonExpression::Equals(const BaseExpression &other_p) const {
18
18
  if (!Expression::Equals(other_p)) {
19
19
  return false;
20
20
  }
21
- auto &other = other_p->Cast<BoundComparisonExpression>();
22
- if (!Expression::Equals(left.get(), other.left.get())) {
21
+ auto &other = other_p.Cast<BoundComparisonExpression>();
22
+ if (!Expression::Equals(*left, *other.left)) {
23
23
  return false;
24
24
  }
25
- if (!Expression::Equals(right.get(), other.right.get())) {
25
+ if (!Expression::Equals(*right, *other.right)) {
26
26
  return false;
27
27
  }
28
28
  return true;
@@ -20,11 +20,11 @@ string BoundConjunctionExpression::ToString() const {
20
20
  return ConjunctionExpression::ToString<BoundConjunctionExpression, Expression>(*this);
21
21
  }
22
22
 
23
- bool BoundConjunctionExpression::Equals(const BaseExpression *other_p) const {
23
+ bool BoundConjunctionExpression::Equals(const BaseExpression &other_p) const {
24
24
  if (!Expression::Equals(other_p)) {
25
25
  return false;
26
26
  }
27
- auto &other = other_p->Cast<BoundConjunctionExpression>();
27
+ auto &other = other_p.Cast<BoundConjunctionExpression>();
28
28
  return ExpressionUtil::SetEquals(children, other.children);
29
29
  }
30
30
 
@@ -14,11 +14,11 @@ string BoundConstantExpression::ToString() const {
14
14
  return value.ToSQLString();
15
15
  }
16
16
 
17
- bool BoundConstantExpression::Equals(const BaseExpression *other_p) const {
17
+ bool BoundConstantExpression::Equals(const BaseExpression &other_p) const {
18
18
  if (!Expression::Equals(other_p)) {
19
19
  return false;
20
20
  }
21
- auto &other = other_p->Cast<BoundConstantExpression>();
21
+ auto &other = other_p.Cast<BoundConstantExpression>();
22
22
  return value.type() == other.value.type() && !ValueOperations::DistinctFrom(value, other.value);
23
23
  }
24
24
 
@@ -22,7 +22,7 @@ string BoundExpression::ToString() const {
22
22
  return expr->ToString();
23
23
  }
24
24
 
25
- bool BoundExpression::Equals(const BaseExpression *other) const {
25
+ bool BoundExpression::Equals(const BaseExpression &other) const {
26
26
  return false;
27
27
  }
28
28
  hash_t BoundExpression::Hash() const {
@@ -2,7 +2,6 @@
2
2
  #include "duckdb/parser/expression/function_expression.hpp"
3
3
  #include "duckdb/catalog/catalog_entry/scalar_function_catalog_entry.hpp"
4
4
  #include "duckdb/common/types/hash.hpp"
5
- #include "duckdb/parser/expression_util.hpp"
6
5
  #include "duckdb/function/function_serialization.hpp"
7
6
 
8
7
  namespace duckdb {
@@ -39,15 +38,15 @@ hash_t BoundFunctionExpression::Hash() const {
39
38
  return CombineHash(result, function.Hash());
40
39
  }
41
40
 
42
- bool BoundFunctionExpression::Equals(const BaseExpression *other_p) const {
41
+ bool BoundFunctionExpression::Equals(const BaseExpression &other_p) const {
43
42
  if (!Expression::Equals(other_p)) {
44
43
  return false;
45
44
  }
46
- auto &other = other_p->Cast<BoundFunctionExpression>();
45
+ auto &other = other_p.Cast<BoundFunctionExpression>();
47
46
  if (other.function != function) {
48
47
  return false;
49
48
  }
50
- if (!ExpressionUtil::ListEquals(children, other.children)) {
49
+ if (!Expression::ListEquals(children, other.children)) {
51
50
  return false;
52
51
  }
53
52
  if (!FunctionData::Equals(bind_info.get(), other.bind_info.get())) {
@@ -1,6 +1,5 @@
1
1
  #include "duckdb/planner/expression/bound_lambda_expression.hpp"
2
2
  #include "duckdb/common/string_util.hpp"
3
- #include "duckdb/parser/expression_util.hpp"
4
3
 
5
4
  namespace duckdb {
6
5
 
@@ -14,15 +13,15 @@ string BoundLambdaExpression::ToString() const {
14
13
  return lambda_expr->ToString();
15
14
  }
16
15
 
17
- bool BoundLambdaExpression::Equals(const BaseExpression *other_p) const {
16
+ bool BoundLambdaExpression::Equals(const BaseExpression &other_p) const {
18
17
  if (!Expression::Equals(other_p)) {
19
18
  return false;
20
19
  }
21
- auto &other = other_p->Cast<BoundLambdaExpression>();
22
- if (!Expression::Equals(lambda_expr.get(), other.lambda_expr.get())) {
20
+ auto &other = other_p.Cast<BoundLambdaExpression>();
21
+ if (!Expression::Equals(*lambda_expr, *other.lambda_expr)) {
23
22
  return false;
24
23
  }
25
- if (!ExpressionUtil::ListEquals(captures, other.captures)) {
24
+ if (!Expression::ListEquals(captures, other.captures)) {
26
25
  return false;
27
26
  }
28
27
  if (parameter_count != other.parameter_count) {
@@ -30,11 +30,11 @@ hash_t BoundLambdaRefExpression::Hash() const {
30
30
  return CombineHash(result, duckdb::Hash<uint64_t>(depth));
31
31
  }
32
32
 
33
- bool BoundLambdaRefExpression::Equals(const BaseExpression *other_p) const {
33
+ bool BoundLambdaRefExpression::Equals(const BaseExpression &other_p) const {
34
34
  if (!Expression::Equals(other_p)) {
35
35
  return false;
36
36
  }
37
- auto &other = other_p->Cast<BoundLambdaRefExpression>();
37
+ auto &other = other_p.Cast<BoundLambdaRefExpression>();
38
38
  return other.binding == binding && other.lambda_index == lambda_index && other.depth == depth;
39
39
  }
40
40
 
@@ -1,6 +1,5 @@
1
1
  #include "duckdb/planner/expression/bound_operator_expression.hpp"
2
2
  #include "duckdb/common/string_util.hpp"
3
- #include "duckdb/parser/expression_util.hpp"
4
3
  #include "duckdb/parser/expression/operator_expression.hpp"
5
4
  #include "duckdb/common/field_writer.hpp"
6
5
 
@@ -14,12 +13,12 @@ string BoundOperatorExpression::ToString() const {
14
13
  return OperatorExpression::ToString<BoundOperatorExpression, Expression>(*this);
15
14
  }
16
15
 
17
- bool BoundOperatorExpression::Equals(const BaseExpression *other_p) const {
16
+ bool BoundOperatorExpression::Equals(const BaseExpression &other_p) const {
18
17
  if (!Expression::Equals(other_p)) {
19
18
  return false;
20
19
  }
21
- auto &other = other_p->Cast<BoundOperatorExpression>();
22
- if (!ExpressionUtil::ListEquals(children, other.children)) {
20
+ auto &other = other_p.Cast<BoundOperatorExpression>();
21
+ if (!Expression::ListEquals(children, other.children)) {
23
22
  return false;
24
23
  }
25
24
  return true;
@@ -43,11 +43,11 @@ string BoundParameterExpression::ToString() const {
43
43
  return "$" + to_string(parameter_nr);
44
44
  }
45
45
 
46
- bool BoundParameterExpression::Equals(const BaseExpression *other_p) const {
46
+ bool BoundParameterExpression::Equals(const BaseExpression &other_p) const {
47
47
  if (!Expression::Equals(other_p)) {
48
48
  return false;
49
49
  }
50
- auto &other = other_p->Cast<BoundParameterExpression>();
50
+ auto &other = other_p.Cast<BoundParameterExpression>();
51
51
  return parameter_nr == other.parameter_nr;
52
52
  }
53
53
 
@@ -28,11 +28,11 @@ string BoundReferenceExpression::ToString() const {
28
28
  return "#" + to_string(index);
29
29
  }
30
30
 
31
- bool BoundReferenceExpression::Equals(const BaseExpression *other_p) const {
31
+ bool BoundReferenceExpression::Equals(const BaseExpression &other_p) const {
32
32
  if (!Expression::Equals(other_p)) {
33
33
  return false;
34
34
  }
35
- auto &other = other_p->Cast<BoundReferenceExpression>();
35
+ auto &other = other_p.Cast<BoundReferenceExpression>();
36
36
  return other.index == index;
37
37
  }
38
38
 
@@ -12,7 +12,7 @@ string BoundSubqueryExpression::ToString() const {
12
12
  return "SUBQUERY";
13
13
  }
14
14
 
15
- bool BoundSubqueryExpression::Equals(const BaseExpression *other_p) const {
15
+ bool BoundSubqueryExpression::Equals(const BaseExpression &other_p) const {
16
16
  // equality between bound subqueries not implemented currently
17
17
  return false;
18
18
  }
@@ -23,12 +23,12 @@ hash_t BoundUnnestExpression::Hash() const {
23
23
  return CombineHash(result, duckdb::Hash("unnest"));
24
24
  }
25
25
 
26
- bool BoundUnnestExpression::Equals(const BaseExpression *other_p) const {
26
+ bool BoundUnnestExpression::Equals(const BaseExpression &other_p) const {
27
27
  if (!Expression::Equals(other_p)) {
28
28
  return false;
29
29
  }
30
- auto &other = other_p->Cast<BoundUnnestExpression>();
31
- if (!Expression::Equals(child.get(), other.child.get())) {
30
+ auto &other = other_p.Cast<BoundUnnestExpression>();
31
+ if (!Expression::Equals(*child, *other.child)) {
32
32
  return false;
33
33
  }
34
34
  return true;
@@ -21,11 +21,11 @@ string BoundWindowExpression::ToString() const {
21
21
  function_name);
22
22
  }
23
23
 
24
- bool BoundWindowExpression::Equals(const BaseExpression *other_p) const {
24
+ bool BoundWindowExpression::Equals(const BaseExpression &other_p) const {
25
25
  if (!Expression::Equals(other_p)) {
26
26
  return false;
27
27
  }
28
- auto &other = other_p->Cast<BoundWindowExpression>();
28
+ auto &other = other_p.Cast<BoundWindowExpression>();
29
29
 
30
30
  if (ignore_nulls != other.ignore_nulls) {
31
31
  return false;
@@ -34,24 +34,17 @@ bool BoundWindowExpression::Equals(const BaseExpression *other_p) const {
34
34
  return false;
35
35
  }
36
36
  // check if the child expressions are equivalent
37
- if (other.children.size() != children.size()) {
37
+ if (!Expression::ListEquals(children, other.children)) {
38
38
  return false;
39
39
  }
40
- for (idx_t i = 0; i < children.size(); i++) {
41
- if (!Expression::Equals(children[i].get(), other.children[i].get())) {
42
- return false;
43
- }
44
- }
45
40
  // check if the filter expressions are equivalent
46
- if (!Expression::Equals(filter_expr.get(), other.filter_expr.get())) {
41
+ if (!Expression::Equals(filter_expr, other.filter_expr)) {
47
42
  return false;
48
43
  }
49
44
 
50
45
  // check if the framing expressions are equivalent
51
- if (!Expression::Equals(start_expr.get(), other.start_expr.get()) ||
52
- !Expression::Equals(end_expr.get(), other.end_expr.get()) ||
53
- !Expression::Equals(offset_expr.get(), other.offset_expr.get()) ||
54
- !Expression::Equals(default_expr.get(), other.default_expr.get())) {
46
+ if (!Expression::Equals(start_expr, other.start_expr) || !Expression::Equals(end_expr, other.end_expr) ||
47
+ !Expression::Equals(offset_expr, other.offset_expr) || !Expression::Equals(default_expr, other.default_expr)) {
55
48
  return false;
56
49
  }
57
50
 
@@ -60,14 +53,9 @@ bool BoundWindowExpression::Equals(const BaseExpression *other_p) const {
60
53
 
61
54
  bool BoundWindowExpression::KeysAreCompatible(const BoundWindowExpression &other) const {
62
55
  // check if the partitions are equivalent
63
- if (partitions.size() != other.partitions.size()) {
56
+ if (!Expression::ListEquals(partitions, other.partitions)) {
64
57
  return false;
65
58
  }
66
- for (idx_t i = 0; i < partitions.size(); i++) {
67
- if (!Expression::Equals(partitions[i].get(), other.partitions[i].get())) {
68
- return false;
69
- }
70
- }
71
59
  // check if the orderings are equivalent
72
60
  if (orders.size() != other.orders.size()) {
73
61
  return false;
@@ -76,8 +64,7 @@ bool BoundWindowExpression::KeysAreCompatible(const BoundWindowExpression &other
76
64
  if (orders[i].type != other.orders[i].type) {
77
65
  return false;
78
66
  }
79
- if (!BaseExpression::Equals((BaseExpression *)orders[i].expression.get(),
80
- (BaseExpression *)other.orders[i].expression.get())) {
67
+ if (!Expression::Equals(*orders[i].expression, *other.orders[i].expression)) {
81
68
  return false;
82
69
  }
83
70
  }