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
@@ -7,6 +7,7 @@
7
7
  #include "duckdb/parser/parsed_expression_iterator.hpp"
8
8
  #include "duckdb/common/serializer/format_serializer.hpp"
9
9
  #include "duckdb/common/serializer/format_deserializer.hpp"
10
+ #include "duckdb/parser/expression_util.hpp"
10
11
 
11
12
  namespace duckdb {
12
13
 
@@ -48,46 +49,46 @@ bool ParsedExpression::HasSubquery() const {
48
49
  return has_subquery;
49
50
  }
50
51
 
51
- bool ParsedExpression::Equals(const BaseExpression *other) const {
52
+ bool ParsedExpression::Equals(const BaseExpression &other) const {
52
53
  if (!BaseExpression::Equals(other)) {
53
54
  return false;
54
55
  }
55
56
  switch (expression_class) {
56
57
  case ExpressionClass::BETWEEN:
57
- return BetweenExpression::Equal((BetweenExpression *)this, (BetweenExpression *)other);
58
+ return BetweenExpression::Equal(Cast<BetweenExpression>(), other.Cast<BetweenExpression>());
58
59
  case ExpressionClass::CASE:
59
- return CaseExpression::Equal((CaseExpression *)this, (CaseExpression *)other);
60
+ return CaseExpression::Equal(Cast<CaseExpression>(), other.Cast<CaseExpression>());
60
61
  case ExpressionClass::CAST:
61
- return CastExpression::Equal((CastExpression *)this, (CastExpression *)other);
62
+ return CastExpression::Equal(Cast<CastExpression>(), other.Cast<CastExpression>());
62
63
  case ExpressionClass::COLLATE:
63
- return CollateExpression::Equal((CollateExpression *)this, (CollateExpression *)other);
64
+ return CollateExpression::Equal(Cast<CollateExpression>(), other.Cast<CollateExpression>());
64
65
  case ExpressionClass::COLUMN_REF:
65
- return ColumnRefExpression::Equal((ColumnRefExpression *)this, (ColumnRefExpression *)other);
66
+ return ColumnRefExpression::Equal(Cast<ColumnRefExpression>(), other.Cast<ColumnRefExpression>());
66
67
  case ExpressionClass::COMPARISON:
67
- return ComparisonExpression::Equal((ComparisonExpression *)this, (ComparisonExpression *)other);
68
+ return ComparisonExpression::Equal(Cast<ComparisonExpression>(), other.Cast<ComparisonExpression>());
68
69
  case ExpressionClass::CONJUNCTION:
69
- return ConjunctionExpression::Equal((ConjunctionExpression *)this, (ConjunctionExpression *)other);
70
+ return ConjunctionExpression::Equal(Cast<ConjunctionExpression>(), other.Cast<ConjunctionExpression>());
70
71
  case ExpressionClass::CONSTANT:
71
- return ConstantExpression::Equal((ConstantExpression *)this, (ConstantExpression *)other);
72
+ return ConstantExpression::Equal(Cast<ConstantExpression>(), other.Cast<ConstantExpression>());
72
73
  case ExpressionClass::DEFAULT:
73
74
  return true;
74
75
  case ExpressionClass::FUNCTION:
75
- return FunctionExpression::Equal((FunctionExpression *)this, (FunctionExpression *)other);
76
+ return FunctionExpression::Equal(Cast<FunctionExpression>(), other.Cast<FunctionExpression>());
76
77
  case ExpressionClass::LAMBDA:
77
- return LambdaExpression::Equal((LambdaExpression *)this, (LambdaExpression *)other);
78
+ return LambdaExpression::Equal(Cast<LambdaExpression>(), other.Cast<LambdaExpression>());
78
79
  case ExpressionClass::OPERATOR:
79
- return OperatorExpression::Equal((OperatorExpression *)this, (OperatorExpression *)other);
80
+ return OperatorExpression::Equal(Cast<OperatorExpression>(), other.Cast<OperatorExpression>());
80
81
  case ExpressionClass::PARAMETER:
81
- return ParameterExpression::Equal((ParameterExpression *)this, (ParameterExpression *)other);
82
+ return ParameterExpression::Equal(Cast<ParameterExpression>(), other.Cast<ParameterExpression>());
82
83
  case ExpressionClass::POSITIONAL_REFERENCE:
83
- return PositionalReferenceExpression::Equal((PositionalReferenceExpression *)this,
84
- (PositionalReferenceExpression *)other);
84
+ return PositionalReferenceExpression::Equal(Cast<PositionalReferenceExpression>(),
85
+ other.Cast<PositionalReferenceExpression>());
85
86
  case ExpressionClass::STAR:
86
- return StarExpression::Equal((StarExpression *)this, (StarExpression *)other);
87
+ return StarExpression::Equal(Cast<StarExpression>(), other.Cast<StarExpression>());
87
88
  case ExpressionClass::SUBQUERY:
88
- return SubqueryExpression::Equal((SubqueryExpression *)this, (SubqueryExpression *)other);
89
+ return SubqueryExpression::Equal(Cast<SubqueryExpression>(), other.Cast<SubqueryExpression>());
89
90
  case ExpressionClass::WINDOW:
90
- return WindowExpression::Equal((WindowExpression *)this, (WindowExpression *)other);
91
+ return WindowExpression::Equal(Cast<WindowExpression>(), other.Cast<WindowExpression>());
91
92
  default:
92
93
  throw SerializationException("Unsupported type for expression comparison!");
93
94
  }
@@ -246,4 +247,19 @@ unique_ptr<ParsedExpression> ParsedExpression::Deserialize(Deserializer &source)
246
247
  return result;
247
248
  }
248
249
 
250
+ bool ParsedExpression::Equals(const unique_ptr<ParsedExpression> &left, const unique_ptr<ParsedExpression> &right) {
251
+ if (left.get() == right.get()) {
252
+ return true;
253
+ }
254
+ if (!left || !right) {
255
+ return false;
256
+ }
257
+ return left->Equals(*right);
258
+ }
259
+
260
+ bool ParsedExpression::ListEquals(const vector<unique_ptr<ParsedExpression>> &left,
261
+ const vector<unique_ptr<ParsedExpression>> &right) {
262
+ return ExpressionUtil::ListEquals(left, right);
263
+ }
264
+
249
265
  } // namespace duckdb
@@ -158,7 +158,7 @@ void ParsedExpressionIterator::EnumerateQueryNodeModifiers(
158
158
  for (auto &modifier : node.modifiers) {
159
159
  switch (modifier->type) {
160
160
  case ResultModifierType::LIMIT_MODIFIER: {
161
- auto &limit_modifier = (LimitModifier &)*modifier;
161
+ auto &limit_modifier = modifier->Cast<LimitModifier>();
162
162
  if (limit_modifier.limit) {
163
163
  callback(limit_modifier.limit);
164
164
  }
@@ -168,7 +168,7 @@ void ParsedExpressionIterator::EnumerateQueryNodeModifiers(
168
168
  } break;
169
169
 
170
170
  case ResultModifierType::LIMIT_PERCENT_MODIFIER: {
171
- auto &limit_modifier = (LimitPercentModifier &)*modifier;
171
+ auto &limit_modifier = modifier->Cast<LimitPercentModifier>();
172
172
  if (limit_modifier.limit) {
173
173
  callback(limit_modifier.limit);
174
174
  }
@@ -178,14 +178,14 @@ void ParsedExpressionIterator::EnumerateQueryNodeModifiers(
178
178
  } break;
179
179
 
180
180
  case ResultModifierType::ORDER_MODIFIER: {
181
- auto &order_modifier = (OrderModifier &)*modifier;
181
+ auto &order_modifier = modifier->Cast<OrderModifier>();
182
182
  for (auto &order : order_modifier.orders) {
183
183
  callback(order.expression);
184
184
  }
185
185
  } break;
186
186
 
187
187
  case ResultModifierType::DISTINCT_MODIFIER: {
188
- auto &distinct_modifier = (DistinctModifier &)*modifier;
188
+ auto &distinct_modifier = modifier->Cast<DistinctModifier>();
189
189
  for (auto &target : distinct_modifier.distinct_on_targets) {
190
190
  callback(target);
191
191
  }
@@ -51,7 +51,7 @@ static bool StripUnicodeSpaces(const string &query_str, string &new_query) {
51
51
  idx_t pos = 0;
52
52
  unsigned char quote;
53
53
  vector<UnicodeSpace> unicode_spaces;
54
- auto query = (unsigned char *)query_str.c_str();
54
+ auto query = const_uchar_ptr_cast(query_str.c_str());
55
55
  auto qsize = query_str.size();
56
56
 
57
57
  regular:
@@ -288,7 +288,7 @@ vector<OrderByNode> Parser::ParseOrderList(const string &select_list, ParserOpti
288
288
  select_node.modifiers.size() != 1) {
289
289
  throw ParserException("Expected a single ORDER clause");
290
290
  }
291
- auto &order = (OrderModifier &)*select_node.modifiers[0];
291
+ auto &order = select_node.modifiers[0]->Cast<OrderModifier>();
292
292
  return std::move(order.orders);
293
293
  }
294
294
 
@@ -341,7 +341,7 @@ ColumnList Parser::ParseColumnList(const string &column_list, ParserOptions opti
341
341
  if (create.info->type != CatalogType::TABLE_ENTRY) {
342
342
  throw InternalException("Expected a single CREATE TABLE statement");
343
343
  }
344
- auto &info = ((CreateTableInfo &)*create.info);
344
+ auto &info = create.info->Cast<CreateTableInfo>();
345
345
  return std::move(info.columns);
346
346
  }
347
347
 
@@ -19,7 +19,7 @@ string SelectNode::ToString() const {
19
19
  // search for a distinct modifier
20
20
  for (idx_t modifier_idx = 0; modifier_idx < modifiers.size(); modifier_idx++) {
21
21
  if (modifiers[modifier_idx]->type == ResultModifierType::DISTINCT_MODIFIER) {
22
- auto &distinct_modifier = (DistinctModifier &)*modifiers[modifier_idx];
22
+ auto &distinct_modifier = modifiers[modifier_idx]->Cast<DistinctModifier>();
23
23
  result += "DISTINCT ";
24
24
  if (!distinct_modifier.distinct_on_targets.empty()) {
25
25
  result += "ON (";
@@ -120,22 +120,15 @@ bool SelectNode::Equals(const QueryNode *other_p) const {
120
120
  return false;
121
121
  }
122
122
  // FROM
123
- if (from_table) {
124
- // we have a FROM clause, compare to the other one
125
- if (!from_table->Equals(other.from_table.get())) {
126
- return false;
127
- }
128
- } else if (other.from_table) {
129
- // we don't have a FROM clause, if the other statement has one they are
130
- // not equal
123
+ if (!TableRef::Equals(from_table, other.from_table)) {
131
124
  return false;
132
125
  }
133
126
  // WHERE
134
- if (!BaseExpression::Equals(where_clause.get(), other.where_clause.get())) {
127
+ if (!ParsedExpression::Equals(where_clause, other.where_clause)) {
135
128
  return false;
136
129
  }
137
130
  // GROUP BY
138
- if (!ExpressionUtil::ListEquals(groups.group_expressions, other.groups.group_expressions)) {
131
+ if (!ParsedExpression::ListEquals(groups.group_expressions, other.groups.group_expressions)) {
139
132
  return false;
140
133
  }
141
134
  if (groups.grouping_sets != other.groups.grouping_sets) {
@@ -145,11 +138,11 @@ bool SelectNode::Equals(const QueryNode *other_p) const {
145
138
  return false;
146
139
  }
147
140
  // HAVING
148
- if (!BaseExpression::Equals(having.get(), other.having.get())) {
141
+ if (!ParsedExpression::Equals(having, other.having)) {
149
142
  return false;
150
143
  }
151
144
  // QUALIFY
152
- if (!BaseExpression::Equals(qualify.get(), other.qualify.get())) {
145
+ if (!ParsedExpression::Equals(qualify, other.qualify)) {
153
146
  return false;
154
147
  }
155
148
  return true;
@@ -82,7 +82,7 @@ string QueryNode::ResultModifiersToString() const {
82
82
  for (idx_t modifier_idx = 0; modifier_idx < modifiers.size(); modifier_idx++) {
83
83
  auto &modifier = *modifiers[modifier_idx];
84
84
  if (modifier.type == ResultModifierType::ORDER_MODIFIER) {
85
- auto &order_modifier = (OrderModifier &)modifier;
85
+ auto &order_modifier = modifier.Cast<OrderModifier>();
86
86
  result += " ORDER BY ";
87
87
  for (idx_t k = 0; k < order_modifier.orders.size(); k++) {
88
88
  if (k > 0) {
@@ -91,7 +91,7 @@ string QueryNode::ResultModifiersToString() const {
91
91
  result += order_modifier.orders[k].ToString();
92
92
  }
93
93
  } else if (modifier.type == ResultModifierType::LIMIT_MODIFIER) {
94
- auto &limit_modifier = (LimitModifier &)modifier;
94
+ auto &limit_modifier = modifier.Cast<LimitModifier>();
95
95
  if (limit_modifier.limit) {
96
96
  result += " LIMIT " + limit_modifier.limit->ToString();
97
97
  }
@@ -99,7 +99,7 @@ string QueryNode::ResultModifiersToString() const {
99
99
  result += " OFFSET " + limit_modifier.offset->ToString();
100
100
  }
101
101
  } else if (modifier.type == ResultModifierType::LIMIT_PERCENT_MODIFIER) {
102
- auto &limit_p_modifier = (LimitPercentModifier &)modifier;
102
+ auto &limit_p_modifier = modifier.Cast<LimitPercentModifier>();
103
103
  if (limit_p_modifier.limit) {
104
104
  result += " LIMIT (" + limit_p_modifier.limit->ToString() + ") %";
105
105
  }
@@ -121,11 +121,12 @@ bool QueryNode::Equals(const QueryNode *other) const {
121
121
  if (other->type != this->type) {
122
122
  return false;
123
123
  }
124
+
124
125
  if (modifiers.size() != other->modifiers.size()) {
125
126
  return false;
126
127
  }
127
128
  for (idx_t i = 0; i < modifiers.size(); i++) {
128
- if (!modifiers[i]->Equals(other->modifiers[i].get())) {
129
+ if (!modifiers[i]->Equals(*other->modifiers[i])) {
129
130
  return false;
130
131
  }
131
132
  }
@@ -141,7 +142,7 @@ bool QueryNode::Equals(const QueryNode *other) const {
141
142
  if (entry.second->aliases != other_entry->second->aliases) {
142
143
  return false;
143
144
  }
144
- if (!entry.second->query->Equals(other_entry->second->query.get())) {
145
+ if (!entry.second->query->Equals(*other_entry->second->query)) {
145
146
  return false;
146
147
  }
147
148
  }
@@ -257,7 +258,7 @@ void QueryNode::AddDistinct() {
257
258
  for (idx_t modifier_idx = modifiers.size(); modifier_idx > 0; modifier_idx--) {
258
259
  auto &modifier = *modifiers[modifier_idx - 1];
259
260
  if (modifier.type == ResultModifierType::DISTINCT_MODIFIER) {
260
- auto &distinct_modifier = (DistinctModifier &)modifier;
261
+ auto &distinct_modifier = modifier.Cast<DistinctModifier>();
261
262
  if (distinct_modifier.distinct_on_targets.empty()) {
262
263
  // we have a DISTINCT without an ON clause - this distinct does not need to be added
263
264
  return;
@@ -6,11 +6,8 @@
6
6
 
7
7
  namespace duckdb {
8
8
 
9
- bool ResultModifier::Equals(const ResultModifier *other) const {
10
- if (!other) {
11
- return false;
12
- }
13
- return type == other->type;
9
+ bool ResultModifier::Equals(const ResultModifier &other) const {
10
+ return type == other.type;
14
11
  }
15
12
 
16
13
  void ResultModifier::Serialize(Serializer &serializer) const {
@@ -72,15 +69,15 @@ unique_ptr<ResultModifier> ResultModifier::Deserialize(Deserializer &source) {
72
69
  return result;
73
70
  }
74
71
 
75
- bool LimitModifier::Equals(const ResultModifier *other_p) const {
72
+ bool LimitModifier::Equals(const ResultModifier &other_p) const {
76
73
  if (!ResultModifier::Equals(other_p)) {
77
74
  return false;
78
75
  }
79
- auto &other = (LimitModifier &)*other_p;
80
- if (!BaseExpression::Equals(limit.get(), other.limit.get())) {
76
+ auto &other = other_p.Cast<LimitModifier>();
77
+ if (!ParsedExpression::Equals(limit, other.limit)) {
81
78
  return false;
82
79
  }
83
- if (!BaseExpression::Equals(offset.get(), other.offset.get())) {
80
+ if (!ParsedExpression::Equals(offset, other.offset)) {
84
81
  return false;
85
82
  }
86
83
  return true;
@@ -122,11 +119,11 @@ unique_ptr<ResultModifier> LimitModifier::Deserialize(FieldReader &reader) {
122
119
  return std::move(mod);
123
120
  }
124
121
 
125
- bool DistinctModifier::Equals(const ResultModifier *other_p) const {
122
+ bool DistinctModifier::Equals(const ResultModifier &other_p) const {
126
123
  if (!ResultModifier::Equals(other_p)) {
127
124
  return false;
128
125
  }
129
- auto &other = (DistinctModifier &)*other_p;
126
+ auto &other = other_p.Cast<DistinctModifier>();
130
127
  if (!ExpressionUtil::ListEquals(distinct_on_targets, other.distinct_on_targets)) {
131
128
  return false;
132
129
  }
@@ -162,11 +159,11 @@ unique_ptr<ResultModifier> DistinctModifier::Deserialize(FieldReader &reader) {
162
159
  return std::move(mod);
163
160
  }
164
161
 
165
- bool OrderModifier::Equals(const ResultModifier *other_p) const {
162
+ bool OrderModifier::Equals(const ResultModifier &other_p) const {
166
163
  if (!ResultModifier::Equals(other_p)) {
167
164
  return false;
168
165
  }
169
- auto &other = (OrderModifier &)*other_p;
166
+ auto &other = other_p.Cast<OrderModifier>();
170
167
  if (orders.size() != other.orders.size()) {
171
168
  return false;
172
169
  }
@@ -174,13 +171,23 @@ bool OrderModifier::Equals(const ResultModifier *other_p) const {
174
171
  if (orders[i].type != other.orders[i].type) {
175
172
  return false;
176
173
  }
177
- if (!BaseExpression::Equals(orders[i].expression.get(), other.orders[i].expression.get())) {
174
+ if (!BaseExpression::Equals(*orders[i].expression, *other.orders[i].expression)) {
178
175
  return false;
179
176
  }
180
177
  }
181
178
  return true;
182
179
  }
183
180
 
181
+ bool OrderModifier::Equals(const unique_ptr<OrderModifier> &left, const unique_ptr<OrderModifier> &right) {
182
+ if (left.get() == right.get()) {
183
+ return true;
184
+ }
185
+ if (!left || !right) {
186
+ return false;
187
+ }
188
+ return left->Equals(*right);
189
+ }
190
+
184
191
  unique_ptr<ResultModifier> OrderModifier::Copy() const {
185
192
  auto copy = make_uniq<OrderModifier>();
186
193
  for (auto &order : orders) {
@@ -265,15 +272,15 @@ unique_ptr<ResultModifier> OrderModifier::Deserialize(FieldReader &reader) {
265
272
  return std::move(mod);
266
273
  }
267
274
 
268
- bool LimitPercentModifier::Equals(const ResultModifier *other_p) const {
275
+ bool LimitPercentModifier::Equals(const ResultModifier &other_p) const {
269
276
  if (!ResultModifier::Equals(other_p)) {
270
277
  return false;
271
278
  }
272
- auto &other = (LimitPercentModifier &)*other_p;
273
- if (!BaseExpression::Equals(limit.get(), other.limit.get())) {
279
+ auto &other = other_p.Cast<LimitPercentModifier>();
280
+ if (!ParsedExpression::Equals(limit, other.limit)) {
274
281
  return false;
275
282
  }
276
- if (!BaseExpression::Equals(offset.get(), other.offset.get())) {
283
+ if (!ParsedExpression::Equals(offset, other.offset)) {
277
284
  return false;
278
285
  }
279
286
  return true;
@@ -33,11 +33,11 @@ unique_ptr<SelectStatement> SelectStatement::FormatDeserialize(FormatDeserialize
33
33
  return result;
34
34
  }
35
35
 
36
- bool SelectStatement::Equals(const SQLStatement *other_p) const {
37
- if (type != other_p->type) {
36
+ bool SelectStatement::Equals(const SQLStatement &other_p) const {
37
+ if (type != other_p.type) {
38
38
  return false;
39
39
  }
40
- auto &other = other_p->Cast<SelectStatement>();
40
+ auto &other = other_p.Cast<SelectStatement>();
41
41
  return node->Equals(other.node.get());
42
42
  }
43
43
 
@@ -15,13 +15,13 @@ string BaseTableRef::ToString() const {
15
15
  return BaseToString(result, column_name_alias);
16
16
  }
17
17
 
18
- bool BaseTableRef::Equals(const TableRef *other_p) const {
18
+ bool BaseTableRef::Equals(const TableRef &other_p) const {
19
19
  if (!TableRef::Equals(other_p)) {
20
20
  return false;
21
21
  }
22
- auto other = (BaseTableRef *)other_p;
23
- return other->catalog_name == catalog_name && other->schema_name == schema_name &&
24
- other->table_name == table_name && column_name_alias == other->column_name_alias;
22
+ auto &other = other_p.Cast<BaseTableRef>();
23
+ return other.catalog_name == catalog_name && other.schema_name == schema_name && other.table_name == table_name &&
24
+ column_name_alias == other.column_name_alias;
25
25
  }
26
26
 
27
27
  void BaseTableRef::Serialize(FieldWriter &writer) const {
@@ -8,7 +8,7 @@ string EmptyTableRef::ToString() const {
8
8
  return "";
9
9
  }
10
10
 
11
- bool EmptyTableRef::Equals(const TableRef *other) const {
11
+ bool EmptyTableRef::Equals(const TableRef &other) const {
12
12
  return TableRef::Equals(other);
13
13
  }
14
14
 
@@ -27,20 +27,20 @@ string ExpressionListRef::ToString() const {
27
27
  return BaseToString(result, expected_names);
28
28
  }
29
29
 
30
- bool ExpressionListRef::Equals(const TableRef *other_p) const {
30
+ bool ExpressionListRef::Equals(const TableRef &other_p) const {
31
31
  if (!TableRef::Equals(other_p)) {
32
32
  return false;
33
33
  }
34
- auto other = (ExpressionListRef *)other_p;
35
- if (values.size() != other->values.size()) {
34
+ auto &other = other_p.Cast<ExpressionListRef>();
35
+ if (values.size() != other.values.size()) {
36
36
  return false;
37
37
  }
38
38
  for (idx_t i = 0; i < values.size(); i++) {
39
- if (values[i].size() != other->values[i].size()) {
39
+ if (values[i].size() != other.values[i].size()) {
40
40
  return false;
41
41
  }
42
42
  for (idx_t j = 0; j < values[i].size(); j++) {
43
- if (!values[i][j]->Equals(other->values[i][j].get())) {
43
+ if (!values[i][j]->Equals(*other.values[i][j])) {
44
44
  return false;
45
45
  }
46
46
  }
@@ -48,21 +48,21 @@ string JoinRef::ToString() const {
48
48
  return result;
49
49
  }
50
50
 
51
- bool JoinRef::Equals(const TableRef *other_p) const {
51
+ bool JoinRef::Equals(const TableRef &other_p) const {
52
52
  if (!TableRef::Equals(other_p)) {
53
53
  return false;
54
54
  }
55
- auto other = (JoinRef *)other_p;
56
- if (using_columns.size() != other->using_columns.size()) {
55
+ auto &other = other_p.Cast<JoinRef>();
56
+ if (using_columns.size() != other.using_columns.size()) {
57
57
  return false;
58
58
  }
59
59
  for (idx_t i = 0; i < using_columns.size(); i++) {
60
- if (using_columns[i] != other->using_columns[i]) {
60
+ if (using_columns[i] != other.using_columns[i]) {
61
61
  return false;
62
62
  }
63
63
  }
64
- return left->Equals(other->left.get()) && right->Equals(other->right.get()) &&
65
- BaseExpression::Equals(condition.get(), other->condition.get()) && type == other->type;
64
+ return left->Equals(*other.left) && right->Equals(*other.right) &&
65
+ ParsedExpression::Equals(condition, other.condition) && type == other.type;
66
66
  }
67
67
 
68
68
  unique_ptr<TableRef> JoinRef::Copy() {
@@ -269,40 +269,35 @@ string PivotRef::ToString() const {
269
269
  return result;
270
270
  }
271
271
 
272
- bool PivotRef::Equals(const TableRef *other_p) const {
272
+ bool PivotRef::Equals(const TableRef &other_p) const {
273
273
  if (!TableRef::Equals(other_p)) {
274
274
  return false;
275
275
  }
276
- auto other = (PivotRef *)other_p;
277
- if (!source->Equals(other->source.get())) {
276
+ auto &other = other_p.Cast<PivotRef>();
277
+ if (!source->Equals(*other.source)) {
278
278
  return false;
279
279
  }
280
- if (aggregates.size() != other->aggregates.size()) {
280
+ if (!ParsedExpression::ListEquals(aggregates, other.aggregates)) {
281
281
  return false;
282
282
  }
283
- for (idx_t i = 0; i < aggregates.size(); i++) {
284
- if (!BaseExpression::Equals(aggregates[i].get(), other->aggregates[i].get())) {
285
- return false;
286
- }
287
- }
288
- if (pivots.size() != other->pivots.size()) {
283
+ if (pivots.size() != other.pivots.size()) {
289
284
  return false;
290
285
  }
291
286
  for (idx_t i = 0; i < pivots.size(); i++) {
292
- if (!pivots[i].Equals(other->pivots[i])) {
287
+ if (!pivots[i].Equals(other.pivots[i])) {
293
288
  return false;
294
289
  }
295
290
  }
296
- if (unpivot_names != other->unpivot_names) {
291
+ if (unpivot_names != other.unpivot_names) {
297
292
  return false;
298
293
  }
299
- if (alias != other->alias) {
294
+ if (alias != other.alias) {
300
295
  return false;
301
296
  }
302
- if (groups != other->groups) {
297
+ if (groups != other.groups) {
303
298
  return false;
304
299
  }
305
- if (include_nulls != other->include_nulls) {
300
+ if (include_nulls != other.include_nulls) {
306
301
  return false;
307
302
  }
308
303
  return true;
@@ -17,12 +17,12 @@ SubqueryRef::SubqueryRef(unique_ptr<SelectStatement> subquery_p, string alias_p)
17
17
  this->alias = std::move(alias_p);
18
18
  }
19
19
 
20
- bool SubqueryRef::Equals(const TableRef *other_p) const {
20
+ bool SubqueryRef::Equals(const TableRef &other_p) const {
21
21
  if (!TableRef::Equals(other_p)) {
22
22
  return false;
23
23
  }
24
- auto other = (SubqueryRef *)other_p;
25
- return subquery->Equals(other->subquery.get());
24
+ auto &other = other_p.Cast<SubqueryRef>();
25
+ return subquery->Equals(*other.subquery);
26
26
  }
27
27
 
28
28
  unique_ptr<TableRef> SubqueryRef::Copy() {
@@ -13,12 +13,12 @@ string TableFunctionRef::ToString() const {
13
13
  return BaseToString(function->ToString(), column_name_alias);
14
14
  }
15
15
 
16
- bool TableFunctionRef::Equals(const TableRef *other_p) const {
16
+ bool TableFunctionRef::Equals(const TableRef &other_p) const {
17
17
  if (!TableRef::Equals(other_p)) {
18
18
  return false;
19
19
  }
20
- auto other = (TableFunctionRef *)other_p;
21
- return function->Equals(other->function.get());
20
+ auto &other = other_p.Cast<TableFunctionRef>();
21
+ return function->Equals(*other.function);
22
22
  }
23
23
 
24
24
  void TableFunctionRef::Serialize(FieldWriter &writer) const {
@@ -40,9 +40,8 @@ string TableRef::BaseToString(string result, const vector<string> &column_name_a
40
40
  return result;
41
41
  }
42
42
 
43
- bool TableRef::Equals(const TableRef *other) const {
44
- return other && type == other->type && alias == other->alias &&
45
- SampleOptions::Equals(sample.get(), other->sample.get());
43
+ bool TableRef::Equals(const TableRef &other) const {
44
+ return type == other.type && alias == other.alias && SampleOptions::Equals(sample.get(), other.sample.get());
46
45
  }
47
46
 
48
47
  void TableRef::Serialize(Serializer &serializer) const {
@@ -149,4 +148,14 @@ void TableRef::Print() {
149
148
  Printer::Print(ToString());
150
149
  }
151
150
 
151
+ bool TableRef::Equals(const unique_ptr<TableRef> &left, const unique_ptr<TableRef> &right) {
152
+ if (left.get() == right.get()) {
153
+ return true;
154
+ }
155
+ if (!left || !right) {
156
+ return false;
157
+ }
158
+ return left->Equals(*right);
159
+ }
160
+
152
161
  } // namespace duckdb
@@ -6,23 +6,23 @@
6
6
 
7
7
  namespace duckdb {
8
8
 
9
- unique_ptr<ParsedExpression> Transformer::TransformArrayAccess(duckdb_libpgquery::PGAIndirection *indirection_node) {
9
+ unique_ptr<ParsedExpression> Transformer::TransformArrayAccess(duckdb_libpgquery::PGAIndirection &indirection_node) {
10
10
  // transform the source expression
11
11
  unique_ptr<ParsedExpression> result;
12
- result = TransformExpression(indirection_node->arg);
12
+ result = TransformExpression(indirection_node.arg);
13
13
 
14
14
  // now go over the indices
15
15
  // note that a single indirection node can contain multiple indices
16
16
  // this happens for e.g. more complex accesses (e.g. (foo).field1[42])
17
17
  idx_t list_size = 0;
18
- for (auto node = indirection_node->indirection->head; node != nullptr; node = node->next) {
18
+ for (auto node = indirection_node.indirection->head; node != nullptr; node = node->next) {
19
19
  auto target = reinterpret_cast<duckdb_libpgquery::PGNode *>(node->data.ptr_value);
20
20
  D_ASSERT(target);
21
21
 
22
22
  switch (target->type) {
23
23
  case duckdb_libpgquery::T_PGAIndices: {
24
24
  // index access (either slice or extract)
25
- auto index = (duckdb_libpgquery::PGAIndices *)target;
25
+ auto index = PGPointerCast<duckdb_libpgquery::PGAIndices>(target);
26
26
  vector<unique_ptr<ParsedExpression>> children;
27
27
  children.push_back(std::move(result));
28
28
  if (index->is_slice) {
@@ -42,7 +42,7 @@ unique_ptr<ParsedExpression> Transformer::TransformArrayAccess(duckdb_libpgquery
42
42
  break;
43
43
  }
44
44
  case duckdb_libpgquery::T_PGString: {
45
- auto val = (duckdb_libpgquery::PGValue *)target;
45
+ auto val = PGPointerCast<duckdb_libpgquery::PGValue>(target);
46
46
  vector<unique_ptr<ParsedExpression>> children;
47
47
  children.push_back(std::move(result));
48
48
  children.push_back(TransformValue(*val));
@@ -50,8 +50,8 @@ unique_ptr<ParsedExpression> Transformer::TransformArrayAccess(duckdb_libpgquery
50
50
  break;
51
51
  }
52
52
  case duckdb_libpgquery::T_PGFuncCall: {
53
- auto func = (duckdb_libpgquery::PGFuncCall *)target;
54
- auto function = TransformFuncCall(func);
53
+ auto func = PGPointerCast<duckdb_libpgquery::PGFuncCall>(target);
54
+ auto function = TransformFuncCall(*func);
55
55
  if (function->type != ExpressionType::FUNCTION) {
56
56
  throw ParserException("%s.%s() call must be a function", result->ToString(), function->ToString());
57
57
  }
@@ -4,12 +4,12 @@
4
4
 
5
5
  namespace duckdb {
6
6
 
7
- unique_ptr<ParsedExpression> Transformer::TransformBoolExpr(duckdb_libpgquery::PGBoolExpr *root) {
7
+ unique_ptr<ParsedExpression> Transformer::TransformBoolExpr(duckdb_libpgquery::PGBoolExpr &root) {
8
8
  unique_ptr<ParsedExpression> result;
9
- for (auto node = root->args->head; node != nullptr; node = node->next) {
10
- auto next = TransformExpression(reinterpret_cast<duckdb_libpgquery::PGNode *>(node->data.ptr_value));
9
+ for (auto node = root.args->head; node != nullptr; node = node->next) {
10
+ auto next = TransformExpression(PGPointerCast<duckdb_libpgquery::PGNode>(node->data.ptr_value));
11
11
 
12
- switch (root->boolop) {
12
+ switch (root.boolop) {
13
13
  case duckdb_libpgquery::PG_AND_EXPR: {
14
14
  if (!result) {
15
15
  result = std::move(next);