duckdb 0.8.1-dev2.0 → 0.8.1-dev219.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 (586) hide show
  1. package/binding.gyp +8 -8
  2. package/package.json +1 -1
  3. package/src/duckdb/extension/icu/icu-datepart.cpp +1 -1
  4. package/src/duckdb/extension/json/include/json_common.hpp +1 -1
  5. package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
  6. package/src/duckdb/extension/json/json_functions/json_create.cpp +6 -6
  7. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +1 -1
  8. package/src/duckdb/extension/json/json_functions/json_transform.cpp +1 -1
  9. package/src/duckdb/extension/parquet/column_reader.cpp +57 -52
  10. package/src/duckdb/extension/parquet/column_writer.cpp +57 -45
  11. package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +1 -1
  12. package/src/duckdb/extension/parquet/include/column_reader.hpp +5 -4
  13. package/src/duckdb/extension/parquet/include/column_writer.hpp +24 -0
  14. package/src/duckdb/extension/parquet/include/decode_utils.hpp +6 -0
  15. package/src/duckdb/extension/parquet/include/list_column_reader.hpp +1 -1
  16. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
  17. package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
  18. package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
  19. package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
  20. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
  21. package/src/duckdb/extension/parquet/parquet-extension.cpp +1 -1
  22. package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
  23. package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
  24. package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
  25. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
  26. package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
  27. package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
  28. package/src/duckdb/src/catalog/catalog.cpp +5 -21
  29. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +113 -0
  30. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +7 -0
  31. package/src/duckdb/src/catalog/catalog_entry.cpp +4 -4
  32. package/src/duckdb/src/catalog/catalog_search_path.cpp +49 -12
  33. package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
  34. package/src/duckdb/src/catalog/default/default_types.cpp +9 -84
  35. package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
  36. package/src/duckdb/src/catalog/duck_catalog.cpp +1 -0
  37. package/src/duckdb/src/common/adbc/adbc.cpp +301 -106
  38. package/src/duckdb/src/common/adbc/driver_manager.cpp +10 -22
  39. package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
  40. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +7 -7
  41. package/src/duckdb/src/common/checksum.cpp +1 -1
  42. package/src/duckdb/src/common/compressed_file_system.cpp +6 -6
  43. package/src/duckdb/src/common/crypto/md5.cpp +9 -9
  44. package/src/duckdb/src/common/exception.cpp +4 -1
  45. package/src/duckdb/src/common/exception_format_value.cpp +19 -14
  46. package/src/duckdb/src/common/field_writer.cpp +1 -1
  47. package/src/duckdb/src/common/file_system.cpp +15 -2
  48. package/src/duckdb/src/common/fsst.cpp +11 -6
  49. package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
  50. package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
  51. package/src/duckdb/src/common/local_file_system.cpp +11 -11
  52. package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
  53. package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
  54. package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
  55. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
  56. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
  57. package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
  58. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
  59. package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
  60. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
  61. package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
  62. package/src/duckdb/src/common/serializer.cpp +1 -1
  63. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  64. package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
  65. package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
  66. package/src/duckdb/src/common/types/bit.cpp +5 -5
  67. package/src/duckdb/src/common/types/blob.cpp +8 -8
  68. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
  69. package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
  70. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  71. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  72. package/src/duckdb/src/common/types/hash.cpp +2 -2
  73. package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
  74. package/src/duckdb/src/common/types/list_segment.cpp +77 -49
  75. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
  76. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +5 -4
  77. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
  78. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +59 -24
  79. package/src/duckdb/src/common/types/string_heap.cpp +1 -1
  80. package/src/duckdb/src/common/types/value.cpp +3 -2
  81. package/src/duckdb/src/common/types/vector.cpp +101 -101
  82. package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
  83. package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
  84. package/src/duckdb/src/common/types.cpp +44 -33
  85. package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
  86. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
  87. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
  88. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
  89. package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +30 -33
  90. package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +0 -4
  91. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +32 -36
  92. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +53 -66
  93. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +48 -48
  94. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +44 -44
  95. package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +32 -32
  96. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +34 -34
  97. package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +30 -31
  98. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +91 -103
  99. package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +17 -17
  100. package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +25 -27
  101. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +36 -37
  102. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
  103. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +48 -84
  104. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
  105. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +97 -121
  106. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +62 -99
  107. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
  108. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +22 -23
  109. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +16 -18
  110. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +22 -25
  111. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +19 -24
  112. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +18 -23
  113. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +14 -18
  114. package/src/duckdb/src/core_functions/function_list.cpp +1 -0
  115. package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
  116. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +45 -45
  117. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
  118. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
  119. package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
  120. package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
  121. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +14 -0
  122. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +3 -3
  123. package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
  124. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +3 -3
  125. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +6 -7
  126. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
  127. package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
  128. package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
  129. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +4 -1
  130. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
  131. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +3 -3
  132. package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
  133. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
  134. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
  135. package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
  136. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  137. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
  138. package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
  139. package/src/duckdb/src/execution/expression_executor.cpp +33 -28
  140. package/src/duckdb/src/execution/index/art/art.cpp +30 -32
  141. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +3 -4
  142. package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
  143. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
  144. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
  145. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  146. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
  147. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
  148. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
  149. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
  150. package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +5 -2
  151. package/src/duckdb/src/execution/operator/helper/physical_set.cpp +5 -1
  152. package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
  153. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
  154. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  155. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
  156. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
  157. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
  158. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
  159. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
  160. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
  161. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
  162. package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +2 -0
  163. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
  164. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  165. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
  166. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
  167. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -3
  168. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
  169. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
  170. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
  171. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  172. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
  173. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  174. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
  175. package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
  176. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
  177. package/src/duckdb/src/execution/reservoir_sample.cpp +2 -2
  178. package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
  179. package/src/duckdb/src/function/aggregate/distributive/count.cpp +158 -20
  180. package/src/duckdb/src/function/aggregate/distributive/first.cpp +66 -74
  181. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +13 -13
  182. package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
  183. package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
  184. package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
  185. package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
  186. package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
  187. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
  188. package/src/duckdb/src/function/pragma/pragma_queries.cpp +33 -23
  189. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
  190. package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
  191. package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -3
  192. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -3
  193. package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
  194. package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
  195. package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
  196. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
  197. package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
  198. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
  199. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
  200. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +25 -23
  201. package/src/duckdb/src/function/scalar_function.cpp +3 -3
  202. package/src/duckdb/src/function/table/arrow.cpp +6 -6
  203. package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
  204. package/src/duckdb/src/function/table/checkpoint.cpp +1 -1
  205. package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
  206. package/src/duckdb/src/function/table/glob.cpp +1 -1
  207. package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
  208. package/src/duckdb/src/function/table/range.cpp +4 -4
  209. package/src/duckdb/src/function/table/read_csv.cpp +15 -23
  210. package/src/duckdb/src/function/table/repeat.cpp +2 -2
  211. package/src/duckdb/src/function/table/repeat_row.cpp +10 -3
  212. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
  213. package/src/duckdb/src/function/table/system/test_vector_types.cpp +1 -1
  214. package/src/duckdb/src/function/table/table_scan.cpp +2 -2
  215. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  216. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  217. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -5
  218. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -0
  219. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +6 -0
  220. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
  221. package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +8 -2
  222. package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +97 -0
  223. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +5 -0
  224. package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
  225. package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
  226. package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
  227. package/src/duckdb/src/include/duckdb/common/exception.hpp +5 -2
  228. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
  229. package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
  230. package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
  231. package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
  232. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
  233. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
  234. package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
  235. package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
  236. package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
  237. package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
  238. package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
  239. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
  240. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
  241. package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
  242. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
  243. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
  244. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +112 -76
  245. package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
  246. package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
  247. package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
  248. package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
  249. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +20 -24
  250. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +36 -39
  251. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +57 -53
  252. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +8 -9
  253. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +16 -18
  254. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +7 -8
  255. package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +9 -0
  256. package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +2 -6
  257. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +16 -36
  258. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
  259. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +3 -3
  260. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
  261. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
  262. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
  263. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
  264. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +8 -29
  265. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +95 -0
  266. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
  267. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
  268. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
  269. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
  270. package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
  271. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +3 -1
  272. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
  273. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
  274. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
  275. package/src/duckdb/src/include/duckdb/function/table_function.hpp +6 -6
  276. package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
  277. package/src/duckdb/src/include/duckdb/main/config.hpp +2 -0
  278. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  279. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
  280. package/src/duckdb/src/include/duckdb/main/query_result.hpp +17 -0
  281. package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
  282. package/src/duckdb/src/include/duckdb/main/settings.hpp +9 -0
  283. package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
  284. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
  285. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
  286. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
  287. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
  288. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
  289. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  290. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
  291. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
  292. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
  293. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
  294. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  295. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
  296. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
  297. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
  298. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
  299. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
  300. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
  301. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  302. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  303. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
  304. package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
  305. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
  306. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
  307. package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
  308. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  309. package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
  310. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
  311. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
  312. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
  313. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -2
  314. package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
  315. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  316. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +1 -1
  317. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
  318. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
  319. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
  320. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +107 -91
  321. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -2
  322. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
  323. package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
  324. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +34 -1
  325. package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
  326. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
  327. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
  328. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
  329. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
  330. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
  331. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
  332. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
  333. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
  334. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
  335. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
  336. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
  337. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
  338. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
  339. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
  340. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
  341. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
  342. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
  343. package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
  344. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
  345. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
  346. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
  347. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
  348. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +2 -2
  349. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
  350. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
  351. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
  352. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  353. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
  354. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
  355. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
  356. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
  357. package/src/duckdb/src/include/duckdb/storage/index.hpp +2 -2
  358. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
  359. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
  360. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
  361. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
  362. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
  363. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
  364. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
  365. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
  366. package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
  367. package/src/duckdb/src/main/capi/arrow-c.cpp +10 -10
  368. package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
  369. package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
  370. package/src/duckdb/src/main/capi/config-c.cpp +1 -1
  371. package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
  372. package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
  373. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
  374. package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
  375. package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
  376. package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
  377. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
  378. package/src/duckdb/src/main/capi/result-c.cpp +23 -23
  379. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  380. package/src/duckdb/src/main/client_context.cpp +3 -3
  381. package/src/duckdb/src/main/config.cpp +1 -0
  382. package/src/duckdb/src/main/database_manager.cpp +1 -1
  383. package/src/duckdb/src/main/error_manager.cpp +1 -1
  384. package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
  385. package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
  386. package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
  387. package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
  388. package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
  389. package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
  390. package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
  391. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  392. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  393. package/src/duckdb/src/main/relation.cpp +1 -1
  394. package/src/duckdb/src/main/settings/settings.cpp +22 -6
  395. package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
  396. package/src/duckdb/src/optimizer/expression_heuristics.cpp +1 -0
  397. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  398. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
  399. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +4 -7
  400. package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
  401. package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
  402. package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
  403. package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
  404. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
  405. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
  406. package/src/duckdb/src/parallel/executor.cpp +1 -1
  407. package/src/duckdb/src/parser/base_expression.cpp +2 -5
  408. package/src/duckdb/src/parser/column_definition.cpp +5 -8
  409. package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
  410. package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
  411. package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
  412. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
  413. package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
  414. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
  415. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
  416. package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
  417. package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
  418. package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
  419. package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
  420. package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
  421. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
  422. package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
  423. package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
  424. package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
  425. package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
  426. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
  427. package/src/duckdb/src/parser/parser.cpp +4 -4
  428. package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
  429. package/src/duckdb/src/parser/query_node.cpp +7 -6
  430. package/src/duckdb/src/parser/result_modifier.cpp +25 -18
  431. package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
  432. package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
  433. package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
  434. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
  435. package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
  436. package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
  437. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
  438. package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
  439. package/src/duckdb/src/parser/tableref.cpp +12 -3
  440. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
  441. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
  442. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
  443. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
  444. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
  445. package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
  446. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
  447. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
  448. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
  449. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +70 -75
  450. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
  451. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
  452. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
  453. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
  454. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +28 -29
  455. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
  456. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
  457. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
  458. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
  459. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
  460. package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
  461. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
  462. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
  463. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
  464. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
  465. package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
  466. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
  467. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
  468. package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +3 -4
  469. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
  470. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
  471. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
  472. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
  473. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
  474. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
  475. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
  476. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
  477. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
  478. package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
  479. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -22
  480. package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
  481. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
  482. package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
  483. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
  484. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
  485. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
  486. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
  487. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
  488. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
  489. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
  490. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
  491. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
  492. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
  493. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
  494. package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
  495. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
  496. package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
  497. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
  498. package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
  499. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
  500. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
  501. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
  502. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +30 -27
  503. package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
  504. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
  505. package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
  506. package/src/duckdb/src/parser/transformer.cpp +46 -46
  507. package/src/duckdb/src/planner/bind_context.cpp +9 -10
  508. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -1
  509. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
  510. package/src/duckdb/src/planner/binder/expression/bind_positional_reference_expression.cpp +7 -2
  511. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
  512. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
  513. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +8 -8
  514. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
  515. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +13 -5
  516. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
  517. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +2 -114
  518. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +4 -2
  519. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +17 -7
  520. package/src/duckdb/src/planner/binder.cpp +1 -1
  521. package/src/duckdb/src/planner/bound_result_modifier.cpp +16 -11
  522. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +5 -5
  523. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
  524. package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
  525. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
  526. package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
  527. package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
  528. package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
  529. package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
  530. package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
  531. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
  532. package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
  533. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
  534. package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
  535. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
  536. package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
  537. package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
  538. package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
  539. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
  540. package/src/duckdb/src/planner/expression.cpp +15 -0
  541. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
  542. package/src/duckdb/src/planner/expression_binder.cpp +3 -2
  543. package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
  544. package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
  545. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  546. package/src/duckdb/src/planner/logical_operator.cpp +3 -4
  547. package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
  548. package/src/duckdb/src/planner/table_filter.cpp +1 -1
  549. package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
  550. package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
  551. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
  552. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
  553. package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
  554. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
  555. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
  556. package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
  557. package/src/duckdb/src/storage/compression/rle.cpp +8 -8
  558. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
  559. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
  560. package/src/duckdb/src/storage/data_table.cpp +8 -7
  561. package/src/duckdb/src/storage/index.cpp +1 -3
  562. package/src/duckdb/src/storage/local_storage.cpp +2 -1
  563. package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
  564. package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
  565. package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
  566. package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
  567. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
  568. package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
  569. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
  570. package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
  571. package/src/duckdb/src/storage/table/list_column_data.cpp +8 -7
  572. package/src/duckdb/src/storage/table/row_group.cpp +4 -4
  573. package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -1
  574. package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
  575. package/src/duckdb/src/storage/wal_replay.cpp +5 -6
  576. package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
  577. package/src/duckdb/src/transaction/commit_state.cpp +8 -8
  578. package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
  579. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
  580. package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
  581. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
  582. package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
  583. package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
  584. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +13479 -13564
  585. package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
  586. package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +5 -5
@@ -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));
@@ -243,18 +243,26 @@ void Binder::BindLogicalType(ClientContext &context, LogicalType &type, optional
243
243
  type = LogicalType::UNION(member_types);
244
244
  type.SetAlias(alias);
245
245
  } else if (type.id() == LogicalTypeId::USER) {
246
- auto &user_type_name = UserType::GetTypeName(type);
246
+ auto user_type_name = UserType::GetTypeName(type);
247
247
  if (catalog) {
248
+ // The search order is:
249
+ // 1) In the same schema as the table
250
+ // 2) In the same catalog
251
+ // 3) System catalog
248
252
  type = catalog->GetType(context, schema, user_type_name, OnEntryNotFound::RETURN_NULL);
253
+
249
254
  if (type.id() == LogicalTypeId::INVALID) {
250
- // look in the system catalog if the type was not found
251
- type = Catalog::GetType(context, SYSTEM_CATALOG, schema, user_type_name);
255
+ type = catalog->GetType(context, INVALID_SCHEMA, user_type_name, OnEntryNotFound::RETURN_NULL);
256
+ }
257
+
258
+ if (type.id() == LogicalTypeId::INVALID) {
259
+ type = Catalog::GetType(context, INVALID_CATALOG, schema, user_type_name);
252
260
  }
253
261
  } else {
254
262
  type = Catalog::GetType(context, INVALID_CATALOG, schema, user_type_name);
255
263
  }
256
264
  } else if (type.id() == LogicalTypeId::ENUM) {
257
- auto &enum_type_name = EnumType::GetTypeName(type);
265
+ auto enum_type_name = EnumType::GetTypeName(type);
258
266
  optional_ptr<TypeCatalogEntry> enum_type_catalog;
259
267
  if (catalog) {
260
268
  enum_type_catalog =
@@ -493,7 +501,7 @@ BoundStatement Binder::Bind(CreateStatement &stmt) {
493
501
  result.plan = make_uniq<LogicalCreate>(LogicalOperatorType::LOGICAL_CREATE_SCHEMA, std::move(stmt.info));
494
502
  break;
495
503
  case CatalogType::VIEW_ENTRY: {
496
- auto &base = (CreateViewInfo &)*stmt.info;
504
+ auto &base = stmt.info->Cast<CreateViewInfo>();
497
505
  // bind the schema
498
506
  auto &schema = BindCreateSchema(*stmt.info);
499
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
@@ -20,119 +20,6 @@
20
20
 
21
21
  namespace duckdb {
22
22
 
23
- static void BindExtraColumns(TableCatalogEntry &table, LogicalGet &get, LogicalProjection &proj, LogicalUpdate &update,
24
- physical_index_set_t &bound_columns) {
25
- if (bound_columns.size() <= 1) {
26
- return;
27
- }
28
- idx_t found_column_count = 0;
29
- physical_index_set_t found_columns;
30
- for (idx_t i = 0; i < update.columns.size(); i++) {
31
- if (bound_columns.find(update.columns[i]) != bound_columns.end()) {
32
- // this column is referenced in the CHECK constraint
33
- found_column_count++;
34
- found_columns.insert(update.columns[i]);
35
- }
36
- }
37
- if (found_column_count > 0 && found_column_count != bound_columns.size()) {
38
- // columns in this CHECK constraint were referenced, but not all were part of the UPDATE
39
- // add them to the scan and update set
40
- for (auto &check_column_id : bound_columns) {
41
- if (found_columns.find(check_column_id) != found_columns.end()) {
42
- // column is already projected
43
- continue;
44
- }
45
- // column is not projected yet: project it by adding the clause "i=i" to the set of updated columns
46
- auto &column = table.GetColumns().GetColumn(check_column_id);
47
- update.expressions.push_back(make_uniq<BoundColumnRefExpression>(
48
- column.Type(), ColumnBinding(proj.table_index, proj.expressions.size())));
49
- proj.expressions.push_back(make_uniq<BoundColumnRefExpression>(
50
- column.Type(), ColumnBinding(get.table_index, get.column_ids.size())));
51
- get.column_ids.push_back(check_column_id.index);
52
- update.columns.push_back(check_column_id);
53
- }
54
- }
55
- }
56
-
57
- static bool TypeSupportsRegularUpdate(const LogicalType &type) {
58
- switch (type.id()) {
59
- case LogicalTypeId::LIST:
60
- case LogicalTypeId::MAP:
61
- case LogicalTypeId::UNION:
62
- // lists and maps and unions don't support updates directly
63
- return false;
64
- case LogicalTypeId::STRUCT: {
65
- auto &child_types = StructType::GetChildTypes(type);
66
- for (auto &entry : child_types) {
67
- if (!TypeSupportsRegularUpdate(entry.second)) {
68
- return false;
69
- }
70
- }
71
- return true;
72
- }
73
- default:
74
- return true;
75
- }
76
- }
77
-
78
- static void BindUpdateConstraints(TableCatalogEntry &table, LogicalGet &get, LogicalProjection &proj,
79
- LogicalUpdate &update) {
80
- if (!table.IsDuckTable()) {
81
- return;
82
- }
83
- // check the constraints and indexes of the table to see if we need to project any additional columns
84
- // we do this for indexes with multiple columns and CHECK constraints in the UPDATE clause
85
- // suppose we have a constraint CHECK(i + j < 10); now we need both i and j to check the constraint
86
- // if we are only updating one of the two columns we add the other one to the UPDATE set
87
- // with a "useless" update (i.e. i=i) so we can verify that the CHECK constraint is not violated
88
- for (auto &constraint : table.GetBoundConstraints()) {
89
- if (constraint->type == ConstraintType::CHECK) {
90
- auto &check = *reinterpret_cast<BoundCheckConstraint *>(constraint.get());
91
- // check constraint! check if we need to add any extra columns to the UPDATE clause
92
- BindExtraColumns(table, get, proj, update, check.bound_columns);
93
- }
94
- }
95
- auto &storage = table.GetStorage();
96
- if (update.return_chunk) {
97
- physical_index_set_t all_columns;
98
- for (idx_t i = 0; i < storage.column_definitions.size(); i++) {
99
- all_columns.insert(PhysicalIndex(i));
100
- }
101
- BindExtraColumns(table, get, proj, update, all_columns);
102
- }
103
- // for index updates we always turn any update into an insert and a delete
104
- // we thus need all the columns to be available, hence we check if the update touches any index columns
105
- // If the returning keyword is used, we need access to the whole row in case the user requests it.
106
- // Therefore switch the update to a delete and insert.
107
- update.update_is_del_and_insert = false;
108
- storage.info->indexes.Scan([&](Index &index) {
109
- if (index.IndexIsUpdated(update.columns)) {
110
- update.update_is_del_and_insert = true;
111
- return true;
112
- }
113
- return false;
114
- });
115
-
116
- // we also convert any updates on LIST columns into delete + insert
117
- for (auto &col_index : update.columns) {
118
- auto &column = table.GetColumns().GetColumn(col_index);
119
- if (!TypeSupportsRegularUpdate(column.Type())) {
120
- update.update_is_del_and_insert = true;
121
- break;
122
- }
123
- }
124
-
125
- if (update.update_is_del_and_insert) {
126
- // the update updates a column required by an index or requires returning the updated rows,
127
- // push projections for all columns
128
- physical_index_set_t all_columns;
129
- for (idx_t i = 0; i < storage.column_definitions.size(); i++) {
130
- all_columns.insert(PhysicalIndex(i));
131
- }
132
- BindExtraColumns(table, get, proj, update, all_columns);
133
- }
134
- }
135
-
136
23
  // This creates a LogicalProjection and moves 'root' into it as a child
137
24
  // unless there are no expressions to project, in which case it just returns 'root'
138
25
  unique_ptr<LogicalOperator> Binder::BindUpdateSet(LogicalOperator &op, unique_ptr<LogicalOperator> root,
@@ -239,7 +126,8 @@ BoundStatement Binder::Bind(UpdateStatement &stmt) {
239
126
  auto proj = unique_ptr_cast<LogicalOperator, LogicalProjection>(std::move(proj_tmp));
240
127
 
241
128
  // bind any extra columns necessary for CHECK constraints or indexes
242
- BindUpdateConstraints(table, *get, *proj, *update);
129
+ table.BindUpdateConstraints(*get, *proj, *update);
130
+
243
131
  // finally add the row id column to the projection list
244
132
  proj->expressions.push_back(make_uniq<BoundColumnRefExpression>(
245
133
  LogicalType::ROW_TYPE, ColumnBinding(get->table_index, get->column_ids.size())));
@@ -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(
@@ -250,7 +250,9 @@ unique_ptr<BoundTableRef> Binder::BindBoundPivot(PivotRef &ref) {
250
250
  auto &aggregates = result->bound_pivot.aggregates;
251
251
  ExtractPivotAggregates(*result->child, aggregates);
252
252
  if (aggregates.size() != ref.bound_aggregate_names.size()) {
253
- throw InternalException("Pivot - aggregate count mismatch");
253
+ throw BinderException("Pivot aggregate count mismatch. Expected %llu aggregates but found %llu. Are all pivot "
254
+ "expressions aggregate functions?",
255
+ ref.bound_aggregate_names.size(), aggregates.size());
254
256
  }
255
257
 
256
258
  vector<string> child_names;
@@ -78,6 +78,15 @@ bool Binder::BindTableFunctionParameters(TableFunctionCatalogEntry &table_functi
78
78
  }
79
79
  }
80
80
  if (child->type == ExpressionType::SUBQUERY) {
81
+ auto fun = table_function.functions.GetFunctionByOffset(0);
82
+ if (table_function.functions.Size() != 1 || fun.arguments.empty() ||
83
+ fun.arguments[0].id() != LogicalTypeId::TABLE) {
84
+ throw BinderException(
85
+ "Only table-in-out functions can have subquery parameters - %s only accepts constant parameters",
86
+ fun.name);
87
+ }
88
+ // this separate subquery binding path is only used by python_map
89
+ // FIXME: this should be unified with `BindTableInTableOutFunction` above
81
90
  if (seen_subquery) {
82
91
  error = "Table function can have at most one subquery parameter ";
83
92
  return false;
@@ -98,8 +107,8 @@ bool Binder::BindTableFunctionParameters(TableFunctionCatalogEntry &table_functi
98
107
  throw ParameterNotResolvedException();
99
108
  }
100
109
  if (!expr->IsScalar()) {
101
- error = "Table function requires a constant parameter";
102
- return false;
110
+ // should have been eliminated before
111
+ throw InternalException("Table function requires a constant parameter");
103
112
  }
104
113
  auto constant = ExpressionExecutor::EvaluateScalar(context, *expr, true);
105
114
  if (parameter_name.empty()) {
@@ -141,8 +150,8 @@ Binder::BindTableFunctionInternal(TableFunction &table_function, const string &f
141
150
  }
142
151
  bind_data = table_function.bind(context, bind_input, return_types, return_names);
143
152
  if (table_function.name == "pandas_scan" || table_function.name == "arrow_scan") {
144
- auto arrow_bind = (PyTableFunctionData *)bind_data.get();
145
- 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);
146
155
  }
147
156
  if (table_function.name == "read_csv" || table_function.name == "read_csv_auto") {
148
157
  auto &csv_bind = bind_data->Cast<ReadCSVData>();
@@ -152,11 +161,12 @@ Binder::BindTableFunctionInternal(TableFunction &table_function, const string &f
152
161
  table_function.extra_info = "(Multi-Threaded)";
153
162
  }
154
163
  }
164
+ } else {
165
+ throw InvalidInputException("Cannot call function \"%s\" directly - it has no bind function",
166
+ table_function.name);
155
167
  }
156
168
  if (return_types.size() != return_names.size()) {
157
- throw InternalException(
158
- "Failed to bind \"%s\": Table function return_types and return_names must be of the same size",
159
- table_function.name);
169
+ throw InternalException("Failed to bind \"%s\": return_types/names must have same size", table_function.name);
160
170
  }
161
171
  if (return_types.empty()) {
162
172
  throw InternalException("Failed to bind \"%s\": Table function must return at least one column",
@@ -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