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
@@ -41,7 +41,7 @@ public:
41
41
 
42
42
  public:
43
43
  //! Returns true if the two result modifiers are equivalent
44
- virtual bool Equals(const ResultModifier *other) const;
44
+ virtual bool Equals(const ResultModifier &other) const;
45
45
 
46
46
  //! Create a copy of this ResultModifier
47
47
  virtual unique_ptr<ResultModifier> Copy() const = 0;
@@ -54,6 +54,23 @@ public:
54
54
 
55
55
  virtual void FormatSerialize(FormatSerializer &serializer) const;
56
56
  static unique_ptr<ResultModifier> FormatDeserialize(FormatDeserializer &deserializer);
57
+
58
+ public:
59
+ template <class TARGET>
60
+ TARGET &Cast() {
61
+ if (type != TARGET::TYPE) {
62
+ throw InternalException("Failed to cast result modifier to type - result modifier type mismatch");
63
+ }
64
+ return reinterpret_cast<TARGET &>(*this);
65
+ }
66
+
67
+ template <class TARGET>
68
+ const TARGET &Cast() const {
69
+ if (type != TARGET::TYPE) {
70
+ throw InternalException("Failed to cast result modifier to type - result modifier type mismatch");
71
+ }
72
+ return reinterpret_cast<const TARGET &>(*this);
73
+ }
57
74
  };
58
75
 
59
76
  //! Single node in ORDER BY statement
@@ -79,6 +96,9 @@ public:
79
96
  };
80
97
 
81
98
  class LimitModifier : public ResultModifier {
99
+ public:
100
+ static constexpr const ResultModifierType TYPE = ResultModifierType::LIMIT_MODIFIER;
101
+
82
102
  public:
83
103
  LimitModifier() : ResultModifier(ResultModifierType::LIMIT_MODIFIER) {
84
104
  }
@@ -89,7 +109,7 @@ public:
89
109
  unique_ptr<ParsedExpression> offset;
90
110
 
91
111
  public:
92
- bool Equals(const ResultModifier *other) const override;
112
+ bool Equals(const ResultModifier &other) const override;
93
113
  unique_ptr<ResultModifier> Copy() const override;
94
114
  void Serialize(FieldWriter &writer) const override;
95
115
  static unique_ptr<ResultModifier> Deserialize(FieldReader &reader);
@@ -99,6 +119,9 @@ public:
99
119
  };
100
120
 
101
121
  class OrderModifier : public ResultModifier {
122
+ public:
123
+ static constexpr const ResultModifierType TYPE = ResultModifierType::ORDER_MODIFIER;
124
+
102
125
  public:
103
126
  OrderModifier() : ResultModifier(ResultModifierType::ORDER_MODIFIER) {
104
127
  }
@@ -107,16 +130,21 @@ public:
107
130
  vector<OrderByNode> orders;
108
131
 
109
132
  public:
110
- bool Equals(const ResultModifier *other) const override;
133
+ bool Equals(const ResultModifier &other) const override;
111
134
  unique_ptr<ResultModifier> Copy() const override;
112
135
  void Serialize(FieldWriter &writer) const override;
113
136
  static unique_ptr<ResultModifier> Deserialize(FieldReader &reader);
114
137
 
115
138
  void FormatSerialize(FormatSerializer &serializer) const override;
116
139
  static unique_ptr<ResultModifier> FormatDeserialize(FormatDeserializer &deserializer);
140
+
141
+ static bool Equals(const unique_ptr<OrderModifier> &left, const unique_ptr<OrderModifier> &right);
117
142
  };
118
143
 
119
144
  class DistinctModifier : public ResultModifier {
145
+ public:
146
+ static constexpr const ResultModifierType TYPE = ResultModifierType::DISTINCT_MODIFIER;
147
+
120
148
  public:
121
149
  DistinctModifier() : ResultModifier(ResultModifierType::DISTINCT_MODIFIER) {
122
150
  }
@@ -125,7 +153,7 @@ public:
125
153
  vector<unique_ptr<ParsedExpression>> distinct_on_targets;
126
154
 
127
155
  public:
128
- bool Equals(const ResultModifier *other) const override;
156
+ bool Equals(const ResultModifier &other) const override;
129
157
  unique_ptr<ResultModifier> Copy() const override;
130
158
  void Serialize(FieldWriter &writer) const override;
131
159
  static unique_ptr<ResultModifier> Deserialize(FieldReader &reader);
@@ -135,6 +163,9 @@ public:
135
163
  };
136
164
 
137
165
  class LimitPercentModifier : public ResultModifier {
166
+ public:
167
+ static constexpr const ResultModifierType TYPE = ResultModifierType::LIMIT_PERCENT_MODIFIER;
168
+
138
169
  public:
139
170
  LimitPercentModifier() : ResultModifier(ResultModifierType::LIMIT_PERCENT_MODIFIER) {
140
171
  }
@@ -145,7 +176,7 @@ public:
145
176
  unique_ptr<ParsedExpression> offset;
146
177
 
147
178
  public:
148
- bool Equals(const ResultModifier *other) const override;
179
+ bool Equals(const ResultModifier &other) const override;
149
180
  unique_ptr<ResultModifier> Copy() const override;
150
181
  void Serialize(FieldWriter &writer) const override;
151
182
  static unique_ptr<ResultModifier> Deserialize(FieldReader &reader);
@@ -18,6 +18,9 @@ namespace duckdb {
18
18
 
19
19
  //! SQLStatement is the base class of any type of SQL statement.
20
20
  class SQLStatement {
21
+ public:
22
+ static constexpr const StatementType TYPE = StatementType::INVALID_STATEMENT;
23
+
21
24
  public:
22
25
  explicit SQLStatement(StatementType type) : type(type) {
23
26
  }
@@ -52,18 +55,18 @@ public:
52
55
  public:
53
56
  template <class TARGET>
54
57
  TARGET &Cast() {
55
- if (type != TARGET::TYPE) {
58
+ if (type != TARGET::TYPE && TARGET::TYPE != StatementType::INVALID_STATEMENT) {
56
59
  throw InternalException("Failed to cast statement to type - statement type mismatch");
57
60
  }
58
- return (TARGET &)*this;
61
+ return reinterpret_cast<TARGET &>(*this);
59
62
  }
60
63
 
61
64
  template <class TARGET>
62
65
  const TARGET &Cast() const {
63
- if (type != TARGET::TYPE) {
66
+ if (type != TARGET::TYPE && TARGET::TYPE != StatementType::INVALID_STATEMENT) {
64
67
  throw InternalException("Failed to cast statement to type - statement type mismatch");
65
68
  }
66
- return (const TARGET &)*this;
69
+ return reinterpret_cast<const TARGET &>(*this);
67
70
  }
68
71
  };
69
72
  } // namespace duckdb
@@ -46,7 +46,7 @@ public:
46
46
  //! deserialization is not possible
47
47
  static unique_ptr<SelectStatement> Deserialize(Deserializer &source);
48
48
  //! Whether or not the statements are equivalent
49
- bool Equals(const SQLStatement *other) const;
49
+ bool Equals(const SQLStatement &other) const;
50
50
 
51
51
  void FormatSerialize(FormatSerializer &serializer) const;
52
52
  static unique_ptr<SelectStatement> FormatDeserialize(FormatDeserializer &deserializer);
@@ -33,7 +33,7 @@ public:
33
33
 
34
34
  public:
35
35
  string ToString() const override;
36
- bool Equals(const TableRef *other_p) const override;
36
+ bool Equals(const TableRef &other_p) const override;
37
37
 
38
38
  unique_ptr<TableRef> Copy() override;
39
39
 
@@ -22,7 +22,7 @@ public:
22
22
 
23
23
  public:
24
24
  string ToString() const override;
25
- bool Equals(const TableRef *other_p) const override;
25
+ bool Equals(const TableRef &other_p) const override;
26
26
 
27
27
  unique_ptr<TableRef> Copy() override;
28
28
 
@@ -32,7 +32,7 @@ public:
32
32
 
33
33
  public:
34
34
  string ToString() const override;
35
- bool Equals(const TableRef *other_p) const override;
35
+ bool Equals(const TableRef &other_p) const override;
36
36
 
37
37
  unique_ptr<TableRef> Copy() override;
38
38
 
@@ -42,7 +42,7 @@ public:
42
42
 
43
43
  public:
44
44
  string ToString() const override;
45
- bool Equals(const TableRef *other_p) const override;
45
+ bool Equals(const TableRef &other_p) const override;
46
46
 
47
47
  unique_ptr<TableRef> Copy() override;
48
48
 
@@ -89,7 +89,7 @@ public:
89
89
 
90
90
  public:
91
91
  string ToString() const override;
92
- bool Equals(const TableRef *other_p) const override;
92
+ bool Equals(const TableRef &other_p) const override;
93
93
 
94
94
  unique_ptr<TableRef> Copy() override;
95
95
 
@@ -27,7 +27,7 @@ public:
27
27
 
28
28
  public:
29
29
  string ToString() const override;
30
- bool Equals(const TableRef *other_p) const override;
30
+ bool Equals(const TableRef &other_p) const override;
31
31
 
32
32
  unique_ptr<TableRef> Copy() override;
33
33
 
@@ -35,7 +35,7 @@ public:
35
35
  public:
36
36
  string ToString() const override;
37
37
 
38
- bool Equals(const TableRef *other_p) const override;
38
+ bool Equals(const TableRef &other_p) const override;
39
39
 
40
40
  unique_ptr<TableRef> Copy() override;
41
41
 
@@ -41,7 +41,8 @@ public:
41
41
  string BaseToString(string result, const vector<string> &column_name_alias) const;
42
42
  void Print();
43
43
 
44
- virtual bool Equals(const TableRef *other) const;
44
+ virtual bool Equals(const TableRef &other) const;
45
+ static bool Equals(const unique_ptr<TableRef> &left, const unique_ptr<TableRef> &right);
45
46
 
46
47
  virtual unique_ptr<TableRef> Copy() = 0;
47
48
 
@@ -63,7 +64,7 @@ public:
63
64
  if (type != TARGET::TYPE && TARGET::TYPE != TableReferenceType::INVALID) {
64
65
  throw InternalException("Failed to cast constraint to type - constraint type mismatch");
65
66
  }
66
- return (TARGET &)*this;
67
+ return reinterpret_cast<TARGET &>(*this);
67
68
  }
68
69
 
69
70
  template <class TARGET>
@@ -71,7 +72,7 @@ public:
71
72
  if (type != TARGET::TYPE && TARGET::TYPE != TableReferenceType::INVALID) {
72
73
  throw InternalException("Failed to cast constraint to type - constraint type mismatch");
73
74
  }
74
- return (const TARGET &)*this;
75
+ return reinterpret_cast<const TARGET &>(*this);
75
76
  }
76
77
  };
77
78
  } // namespace duckdb
@@ -97,42 +97,44 @@ private:
97
97
 
98
98
  private:
99
99
  //! Transforms a Postgres statement into a single SQL statement
100
- unique_ptr<SQLStatement> TransformStatement(duckdb_libpgquery::PGNode *stmt);
100
+ unique_ptr<SQLStatement> TransformStatement(duckdb_libpgquery::PGNode &stmt);
101
101
  //! Transforms a Postgres statement into a single SQL statement
102
- unique_ptr<SQLStatement> TransformStatementInternal(duckdb_libpgquery::PGNode *stmt);
102
+ unique_ptr<SQLStatement> TransformStatementInternal(duckdb_libpgquery::PGNode &stmt);
103
103
  //===--------------------------------------------------------------------===//
104
104
  // Statement transformation
105
105
  //===--------------------------------------------------------------------===//
106
106
  //! Transform a Postgres duckdb_libpgquery::T_PGSelectStmt node into a SelectStatement
107
- unique_ptr<SelectStatement> TransformSelect(duckdb_libpgquery::PGNode *node, bool isSelect = true);
107
+ unique_ptr<SelectStatement> TransformSelect(optional_ptr<duckdb_libpgquery::PGNode> node, bool is_select = true);
108
+ //! Transform a Postgres duckdb_libpgquery::T_PGSelectStmt node into a SelectStatement
109
+ unique_ptr<SelectStatement> TransformSelect(duckdb_libpgquery::PGSelectStmt &select, bool is_select = true);
108
110
  //! Transform a Postgres T_AlterStmt node into a AlterStatement
109
- unique_ptr<AlterStatement> TransformAlter(duckdb_libpgquery::PGNode *node);
111
+ unique_ptr<AlterStatement> TransformAlter(duckdb_libpgquery::PGAlterTableStmt &stmt);
110
112
  //! Transform a Postgres duckdb_libpgquery::T_PGRenameStmt node into a RenameStatement
111
- unique_ptr<AlterStatement> TransformRename(duckdb_libpgquery::PGNode *node);
113
+ unique_ptr<AlterStatement> TransformRename(duckdb_libpgquery::PGRenameStmt &stmt);
112
114
  //! Transform a Postgres duckdb_libpgquery::T_PGCreateStmt node into a CreateStatement
113
- unique_ptr<CreateStatement> TransformCreateTable(duckdb_libpgquery::PGNode *node);
115
+ unique_ptr<CreateStatement> TransformCreateTable(duckdb_libpgquery::PGCreateStmt &node);
114
116
  //! Transform a Postgres duckdb_libpgquery::T_PGCreateStmt node into a CreateStatement
115
- unique_ptr<CreateStatement> TransformCreateTableAs(duckdb_libpgquery::PGNode *node);
117
+ unique_ptr<CreateStatement> TransformCreateTableAs(duckdb_libpgquery::PGCreateTableAsStmt &stmt);
116
118
  //! Transform a Postgres node into a CreateStatement
117
- unique_ptr<CreateStatement> TransformCreateSchema(duckdb_libpgquery::PGNode *node);
119
+ unique_ptr<CreateStatement> TransformCreateSchema(duckdb_libpgquery::PGCreateSchemaStmt &stmt);
118
120
  //! Transform a Postgres duckdb_libpgquery::T_PGCreateSeqStmt node into a CreateStatement
119
- unique_ptr<CreateStatement> TransformCreateSequence(duckdb_libpgquery::PGNode *node);
121
+ unique_ptr<CreateStatement> TransformCreateSequence(duckdb_libpgquery::PGCreateSeqStmt &node);
120
122
  //! Transform a Postgres duckdb_libpgquery::T_PGViewStmt node into a CreateStatement
121
- unique_ptr<CreateStatement> TransformCreateView(duckdb_libpgquery::PGNode *node);
123
+ unique_ptr<CreateStatement> TransformCreateView(duckdb_libpgquery::PGViewStmt &node);
122
124
  //! Transform a Postgres duckdb_libpgquery::T_PGIndexStmt node into CreateStatement
123
- unique_ptr<CreateStatement> TransformCreateIndex(duckdb_libpgquery::PGNode *node);
125
+ unique_ptr<CreateStatement> TransformCreateIndex(duckdb_libpgquery::PGIndexStmt &stmt);
124
126
  //! Transform a Postgres duckdb_libpgquery::T_PGCreateFunctionStmt node into CreateStatement
125
- unique_ptr<CreateStatement> TransformCreateFunction(duckdb_libpgquery::PGNode *node);
127
+ unique_ptr<CreateStatement> TransformCreateFunction(duckdb_libpgquery::PGCreateFunctionStmt &stmt);
126
128
  //! Transform a Postgres duckdb_libpgquery::T_PGCreateTypeStmt node into CreateStatement
127
- unique_ptr<CreateStatement> TransformCreateType(duckdb_libpgquery::PGNode *node);
129
+ unique_ptr<CreateStatement> TransformCreateType(duckdb_libpgquery::PGCreateTypeStmt &stmt);
128
130
  //! Transform a Postgres duckdb_libpgquery::T_PGCreateDatabaseStmt node into a CreateStatement
129
- unique_ptr<CreateStatement> TransformCreateDatabase(duckdb_libpgquery::PGNode *node);
131
+ unique_ptr<CreateStatement> TransformCreateDatabase(duckdb_libpgquery::PGCreateDatabaseStmt &stmt);
130
132
  //! Transform a Postgres duckdb_libpgquery::T_PGAlterSeqStmt node into CreateStatement
131
- unique_ptr<AlterStatement> TransformAlterSequence(duckdb_libpgquery::PGNode *node);
133
+ unique_ptr<AlterStatement> TransformAlterSequence(duckdb_libpgquery::PGAlterSeqStmt &stmt);
132
134
  //! Transform a Postgres duckdb_libpgquery::T_PGDropStmt node into a Drop[Table,Schema]Statement
133
- unique_ptr<SQLStatement> TransformDrop(duckdb_libpgquery::PGNode *node);
135
+ unique_ptr<SQLStatement> TransformDrop(duckdb_libpgquery::PGDropStmt &stmt);
134
136
  //! Transform a Postgres duckdb_libpgquery::T_PGInsertStmt node into a InsertStatement
135
- unique_ptr<InsertStatement> TransformInsert(duckdb_libpgquery::PGNode *node);
137
+ unique_ptr<InsertStatement> TransformInsert(duckdb_libpgquery::PGInsertStmt &stmt);
136
138
 
137
139
  //! Transform a Postgres duckdb_libpgquery::T_PGOnConflictClause node into a OnConflictInfo
138
140
  unique_ptr<OnConflictInfo> TransformOnConflictClause(duckdb_libpgquery::PGOnConflictClause *node,
@@ -141,99 +143,100 @@ private:
141
143
  unique_ptr<OnConflictInfo> DummyOnConflictClause(duckdb_libpgquery::PGOnConflictActionAlias type,
142
144
  const string &relname);
143
145
  //! Transform a Postgres duckdb_libpgquery::T_PGCopyStmt node into a CopyStatement
144
- unique_ptr<CopyStatement> TransformCopy(duckdb_libpgquery::PGNode *node);
145
- void TransformCopyOptions(CopyInfo &info, duckdb_libpgquery::PGList *options);
146
+ unique_ptr<CopyStatement> TransformCopy(duckdb_libpgquery::PGCopyStmt &stmt);
147
+ void TransformCopyOptions(CopyInfo &info, optional_ptr<duckdb_libpgquery::PGList> options);
146
148
  //! Transform a Postgres duckdb_libpgquery::T_PGTransactionStmt node into a TransactionStatement
147
- unique_ptr<TransactionStatement> TransformTransaction(duckdb_libpgquery::PGNode *node);
149
+ unique_ptr<TransactionStatement> TransformTransaction(duckdb_libpgquery::PGTransactionStmt &stmt);
148
150
  //! Transform a Postgres T_DeleteStatement node into a DeleteStatement
149
- unique_ptr<DeleteStatement> TransformDelete(duckdb_libpgquery::PGNode *node);
151
+ unique_ptr<DeleteStatement> TransformDelete(duckdb_libpgquery::PGDeleteStmt &stmt);
150
152
  //! Transform a Postgres duckdb_libpgquery::T_PGUpdateStmt node into a UpdateStatement
151
- unique_ptr<UpdateStatement> TransformUpdate(duckdb_libpgquery::PGNode *node);
153
+ unique_ptr<UpdateStatement> TransformUpdate(duckdb_libpgquery::PGUpdateStmt &stmt);
152
154
  //! Transform a Postgres duckdb_libpgquery::T_PGPragmaStmt node into a PragmaStatement
153
- unique_ptr<SQLStatement> TransformPragma(duckdb_libpgquery::PGNode *node);
155
+ unique_ptr<SQLStatement> TransformPragma(duckdb_libpgquery::PGPragmaStmt &stmt);
154
156
  //! Transform a Postgres duckdb_libpgquery::T_PGExportStmt node into a ExportStatement
155
- unique_ptr<ExportStatement> TransformExport(duckdb_libpgquery::PGNode *node);
157
+ unique_ptr<ExportStatement> TransformExport(duckdb_libpgquery::PGExportStmt &stmt);
156
158
  //! Transform a Postgres duckdb_libpgquery::T_PGImportStmt node into a PragmaStatement
157
- unique_ptr<PragmaStatement> TransformImport(duckdb_libpgquery::PGNode *node);
158
- unique_ptr<ExplainStatement> TransformExplain(duckdb_libpgquery::PGNode *node);
159
- unique_ptr<SQLStatement> TransformVacuum(duckdb_libpgquery::PGNode *node);
160
- unique_ptr<SQLStatement> TransformShow(duckdb_libpgquery::PGNode *node);
161
- unique_ptr<ShowStatement> TransformShowSelect(duckdb_libpgquery::PGNode *node);
162
- unique_ptr<AttachStatement> TransformAttach(duckdb_libpgquery::PGNode *node);
163
- unique_ptr<DetachStatement> TransformDetach(duckdb_libpgquery::PGNode *node);
164
- unique_ptr<SetStatement> TransformUse(duckdb_libpgquery::PGNode *node);
165
-
166
- unique_ptr<PrepareStatement> TransformPrepare(duckdb_libpgquery::PGNode *node);
167
- unique_ptr<ExecuteStatement> TransformExecute(duckdb_libpgquery::PGNode *node);
168
- unique_ptr<CallStatement> TransformCall(duckdb_libpgquery::PGNode *node);
169
- unique_ptr<DropStatement> TransformDeallocate(duckdb_libpgquery::PGNode *node);
170
- unique_ptr<QueryNode> TransformPivotStatement(duckdb_libpgquery::PGSelectStmt *stmt);
159
+ unique_ptr<PragmaStatement> TransformImport(duckdb_libpgquery::PGImportStmt &stmt);
160
+ unique_ptr<ExplainStatement> TransformExplain(duckdb_libpgquery::PGExplainStmt &stmt);
161
+ unique_ptr<SQLStatement> TransformVacuum(duckdb_libpgquery::PGVacuumStmt &stmt);
162
+ unique_ptr<SQLStatement> TransformShow(duckdb_libpgquery::PGVariableShowStmt &stmt);
163
+ unique_ptr<ShowStatement> TransformShowSelect(duckdb_libpgquery::PGVariableShowSelectStmt &stmt);
164
+ unique_ptr<AttachStatement> TransformAttach(duckdb_libpgquery::PGAttachStmt &stmt);
165
+ unique_ptr<DetachStatement> TransformDetach(duckdb_libpgquery::PGDetachStmt &stmt);
166
+ unique_ptr<SetStatement> TransformUse(duckdb_libpgquery::PGUseStmt &stmt);
167
+
168
+ unique_ptr<PrepareStatement> TransformPrepare(duckdb_libpgquery::PGPrepareStmt &stmt);
169
+ unique_ptr<ExecuteStatement> TransformExecute(duckdb_libpgquery::PGExecuteStmt &stmt);
170
+ unique_ptr<CallStatement> TransformCall(duckdb_libpgquery::PGCallStmt &stmt);
171
+ unique_ptr<DropStatement> TransformDeallocate(duckdb_libpgquery::PGDeallocateStmt &stmt);
172
+ unique_ptr<QueryNode> TransformPivotStatement(duckdb_libpgquery::PGSelectStmt &select);
171
173
  unique_ptr<SQLStatement> CreatePivotStatement(unique_ptr<SQLStatement> statement);
172
- PivotColumn TransformPivotColumn(duckdb_libpgquery::PGPivot *pivot);
173
- vector<PivotColumn> TransformPivotList(duckdb_libpgquery::PGList *list);
174
+ PivotColumn TransformPivotColumn(duckdb_libpgquery::PGPivot &pivot);
175
+ vector<PivotColumn> TransformPivotList(duckdb_libpgquery::PGList &list);
174
176
 
175
177
  //===--------------------------------------------------------------------===//
176
178
  // SetStatement Transform
177
179
  //===--------------------------------------------------------------------===//
178
- unique_ptr<SetStatement> TransformSet(duckdb_libpgquery::PGNode *node);
179
- unique_ptr<SetStatement> TransformSetVariable(duckdb_libpgquery::PGVariableSetStmt *stmt);
180
- unique_ptr<SetStatement> TransformResetVariable(duckdb_libpgquery::PGVariableSetStmt *stmt);
180
+ unique_ptr<SetStatement> TransformSet(duckdb_libpgquery::PGVariableSetStmt &set);
181
+ unique_ptr<SetStatement> TransformSetVariable(duckdb_libpgquery::PGVariableSetStmt &stmt);
182
+ unique_ptr<SetStatement> TransformResetVariable(duckdb_libpgquery::PGVariableSetStmt &stmt);
181
183
 
182
- unique_ptr<SQLStatement> TransformCheckpoint(duckdb_libpgquery::PGNode *node);
183
- unique_ptr<LoadStatement> TransformLoad(duckdb_libpgquery::PGNode *node);
184
+ unique_ptr<SQLStatement> TransformCheckpoint(duckdb_libpgquery::PGCheckPointStmt &stmt);
185
+ unique_ptr<LoadStatement> TransformLoad(duckdb_libpgquery::PGLoadStmt &stmt);
184
186
 
185
187
  //===--------------------------------------------------------------------===//
186
188
  // Query Node Transform
187
189
  //===--------------------------------------------------------------------===//
188
190
  //! Transform a Postgres duckdb_libpgquery::T_PGSelectStmt node into a QueryNode
189
- unique_ptr<QueryNode> TransformSelectNode(duckdb_libpgquery::PGSelectStmt *node);
190
- unique_ptr<QueryNode> TransformSelectInternal(duckdb_libpgquery::PGSelectStmt *node);
191
+ unique_ptr<QueryNode> TransformSelectNode(duckdb_libpgquery::PGSelectStmt &select);
192
+ unique_ptr<QueryNode> TransformSelectInternal(duckdb_libpgquery::PGSelectStmt &select);
191
193
  void TransformModifiers(duckdb_libpgquery::PGSelectStmt &stmt, QueryNode &node);
192
194
 
193
195
  //===--------------------------------------------------------------------===//
194
196
  // Expression Transform
195
197
  //===--------------------------------------------------------------------===//
196
198
  //! Transform a Postgres boolean expression into an Expression
197
- unique_ptr<ParsedExpression> TransformBoolExpr(duckdb_libpgquery::PGBoolExpr *root);
199
+ unique_ptr<ParsedExpression> TransformBoolExpr(duckdb_libpgquery::PGBoolExpr &root);
198
200
  //! Transform a Postgres case expression into an Expression
199
- unique_ptr<ParsedExpression> TransformCase(duckdb_libpgquery::PGCaseExpr *root);
201
+ unique_ptr<ParsedExpression> TransformCase(duckdb_libpgquery::PGCaseExpr &root);
200
202
  //! Transform a Postgres type cast into an Expression
201
- unique_ptr<ParsedExpression> TransformTypeCast(duckdb_libpgquery::PGTypeCast *root);
203
+ unique_ptr<ParsedExpression> TransformTypeCast(duckdb_libpgquery::PGTypeCast &root);
202
204
  //! Transform a Postgres coalesce into an Expression
203
- unique_ptr<ParsedExpression> TransformCoalesce(duckdb_libpgquery::PGAExpr *root);
205
+ unique_ptr<ParsedExpression> TransformCoalesce(duckdb_libpgquery::PGAExpr &root);
204
206
  //! Transform a Postgres column reference into an Expression
205
- unique_ptr<ParsedExpression> TransformColumnRef(duckdb_libpgquery::PGColumnRef *root);
207
+ unique_ptr<ParsedExpression> TransformColumnRef(duckdb_libpgquery::PGColumnRef &root);
206
208
  //! Transform a Postgres constant value into an Expression
207
209
  unique_ptr<ConstantExpression> TransformValue(duckdb_libpgquery::PGValue val);
208
210
  //! Transform a Postgres operator into an Expression
209
- unique_ptr<ParsedExpression> TransformAExpr(duckdb_libpgquery::PGAExpr *root);
210
- unique_ptr<ParsedExpression> TransformAExprInternal(duckdb_libpgquery::PGAExpr *root);
211
+ unique_ptr<ParsedExpression> TransformAExpr(duckdb_libpgquery::PGAExpr &root);
212
+ unique_ptr<ParsedExpression> TransformAExprInternal(duckdb_libpgquery::PGAExpr &root);
211
213
  //! Transform a Postgres abstract expression into an Expression
212
- unique_ptr<ParsedExpression> TransformExpression(duckdb_libpgquery::PGNode *node);
214
+ unique_ptr<ParsedExpression> TransformExpression(optional_ptr<duckdb_libpgquery::PGNode> node);
215
+ unique_ptr<ParsedExpression> TransformExpression(duckdb_libpgquery::PGNode &node);
213
216
  //! Transform a Postgres function call into an Expression
214
- unique_ptr<ParsedExpression> TransformFuncCall(duckdb_libpgquery::PGFuncCall *root);
217
+ unique_ptr<ParsedExpression> TransformFuncCall(duckdb_libpgquery::PGFuncCall &root);
215
218
  //! Transform a Postgres boolean expression into an Expression
216
- unique_ptr<ParsedExpression> TransformInterval(duckdb_libpgquery::PGIntervalConstant *root);
219
+ unique_ptr<ParsedExpression> TransformInterval(duckdb_libpgquery::PGIntervalConstant &root);
217
220
  //! Transform a Postgres lambda node [e.g. (x, y) -> x + y] into a lambda expression
218
- unique_ptr<ParsedExpression> TransformLambda(duckdb_libpgquery::PGLambdaFunction *node);
221
+ unique_ptr<ParsedExpression> TransformLambda(duckdb_libpgquery::PGLambdaFunction &node);
219
222
  //! Transform a Postgres array access node (e.g. x[1] or x[1:3])
220
- unique_ptr<ParsedExpression> TransformArrayAccess(duckdb_libpgquery::PGAIndirection *node);
223
+ unique_ptr<ParsedExpression> TransformArrayAccess(duckdb_libpgquery::PGAIndirection &node);
221
224
  //! Transform a positional reference (e.g. #1)
222
- unique_ptr<ParsedExpression> TransformPositionalReference(duckdb_libpgquery::PGPositionalReference *node);
223
- unique_ptr<ParsedExpression> TransformStarExpression(duckdb_libpgquery::PGNode *node);
224
- unique_ptr<ParsedExpression> TransformBooleanTest(duckdb_libpgquery::PGBooleanTest *node);
225
+ unique_ptr<ParsedExpression> TransformPositionalReference(duckdb_libpgquery::PGPositionalReference &node);
226
+ unique_ptr<ParsedExpression> TransformStarExpression(duckdb_libpgquery::PGAStar &node);
227
+ unique_ptr<ParsedExpression> TransformBooleanTest(duckdb_libpgquery::PGBooleanTest &node);
225
228
 
226
229
  //! Transform a Postgres constant value into an Expression
227
- unique_ptr<ParsedExpression> TransformConstant(duckdb_libpgquery::PGAConst *c);
228
- unique_ptr<ParsedExpression> TransformGroupingFunction(duckdb_libpgquery::PGGroupingFunc *n);
229
- unique_ptr<ParsedExpression> TransformResTarget(duckdb_libpgquery::PGResTarget *root);
230
- unique_ptr<ParsedExpression> TransformNullTest(duckdb_libpgquery::PGNullTest *root);
231
- unique_ptr<ParsedExpression> TransformParamRef(duckdb_libpgquery::PGParamRef *node);
232
- unique_ptr<ParsedExpression> TransformNamedArg(duckdb_libpgquery::PGNamedArgExpr *root);
230
+ unique_ptr<ParsedExpression> TransformConstant(duckdb_libpgquery::PGAConst &c);
231
+ unique_ptr<ParsedExpression> TransformGroupingFunction(duckdb_libpgquery::PGGroupingFunc &n);
232
+ unique_ptr<ParsedExpression> TransformResTarget(duckdb_libpgquery::PGResTarget &root);
233
+ unique_ptr<ParsedExpression> TransformNullTest(duckdb_libpgquery::PGNullTest &root);
234
+ unique_ptr<ParsedExpression> TransformParamRef(duckdb_libpgquery::PGParamRef &node);
235
+ unique_ptr<ParsedExpression> TransformNamedArg(duckdb_libpgquery::PGNamedArgExpr &root);
233
236
 
234
- unique_ptr<ParsedExpression> TransformSQLValueFunction(duckdb_libpgquery::PGSQLValueFunction *node);
237
+ unique_ptr<ParsedExpression> TransformSQLValueFunction(duckdb_libpgquery::PGSQLValueFunction &node);
235
238
 
236
- unique_ptr<ParsedExpression> TransformSubquery(duckdb_libpgquery::PGSubLink *root);
239
+ unique_ptr<ParsedExpression> TransformSubquery(duckdb_libpgquery::PGSubLink &root);
237
240
  //===--------------------------------------------------------------------===//
238
241
  // Constraints transform
239
242
  //===--------------------------------------------------------------------===//
@@ -251,25 +254,25 @@ private:
251
254
  //===--------------------------------------------------------------------===//
252
255
  // Index transform
253
256
  //===--------------------------------------------------------------------===//
254
- vector<unique_ptr<ParsedExpression>> TransformIndexParameters(duckdb_libpgquery::PGList *list,
257
+ vector<unique_ptr<ParsedExpression>> TransformIndexParameters(duckdb_libpgquery::PGList &list,
255
258
  const string &relation_name);
256
259
 
257
260
  //===--------------------------------------------------------------------===//
258
261
  // Collation transform
259
262
  //===--------------------------------------------------------------------===//
260
- unique_ptr<ParsedExpression> TransformCollateExpr(duckdb_libpgquery::PGCollateClause *collate);
263
+ unique_ptr<ParsedExpression> TransformCollateExpr(duckdb_libpgquery::PGCollateClause &collate);
261
264
 
262
- string TransformCollation(duckdb_libpgquery::PGCollateClause *collate);
265
+ string TransformCollation(optional_ptr<duckdb_libpgquery::PGCollateClause> collate);
263
266
 
264
- ColumnDefinition TransformColumnDefinition(duckdb_libpgquery::PGColumnDef *cdef);
267
+ ColumnDefinition TransformColumnDefinition(duckdb_libpgquery::PGColumnDef &cdef);
265
268
  //===--------------------------------------------------------------------===//
266
269
  // Helpers
267
270
  //===--------------------------------------------------------------------===//
268
271
  OnCreateConflict TransformOnConflict(duckdb_libpgquery::PGOnCreateConflict conflict);
269
272
  string TransformAlias(duckdb_libpgquery::PGAlias *root, vector<string> &column_name_alias);
270
273
  vector<string> TransformStringList(duckdb_libpgquery::PGList *list);
271
- void TransformCTE(duckdb_libpgquery::PGWithClause *de_with_clause, CommonTableExpressionMap &cte_map);
272
- unique_ptr<SelectStatement> TransformRecursiveCTE(duckdb_libpgquery::PGCommonTableExpr *node,
274
+ void TransformCTE(duckdb_libpgquery::PGWithClause &de_with_clause, CommonTableExpressionMap &cte_map);
275
+ unique_ptr<SelectStatement> TransformRecursiveCTE(duckdb_libpgquery::PGCommonTableExpr &cte,
273
276
  CommonTableExpressionInfo &info);
274
277
 
275
278
  unique_ptr<ParsedExpression> TransformUnaryOperator(const string &op, unique_ptr<ParsedExpression> child);
@@ -279,35 +282,35 @@ private:
279
282
  // TableRef transform
280
283
  //===--------------------------------------------------------------------===//
281
284
  //! Transform a Postgres node into a TableRef
282
- unique_ptr<TableRef> TransformTableRefNode(duckdb_libpgquery::PGNode *node);
285
+ unique_ptr<TableRef> TransformTableRefNode(duckdb_libpgquery::PGNode &n);
283
286
  //! Transform a Postgres FROM clause into a TableRef
284
- unique_ptr<TableRef> TransformFrom(duckdb_libpgquery::PGList *root);
287
+ unique_ptr<TableRef> TransformFrom(optional_ptr<duckdb_libpgquery::PGList> root);
285
288
  //! Transform a Postgres table reference into a TableRef
286
- unique_ptr<TableRef> TransformRangeVar(duckdb_libpgquery::PGRangeVar *root);
289
+ unique_ptr<TableRef> TransformRangeVar(duckdb_libpgquery::PGRangeVar &root);
287
290
  //! Transform a Postgres table-producing function into a TableRef
288
- unique_ptr<TableRef> TransformRangeFunction(duckdb_libpgquery::PGRangeFunction *root);
291
+ unique_ptr<TableRef> TransformRangeFunction(duckdb_libpgquery::PGRangeFunction &root);
289
292
  //! Transform a Postgres join node into a TableRef
290
- unique_ptr<TableRef> TransformJoin(duckdb_libpgquery::PGJoinExpr *root);
293
+ unique_ptr<TableRef> TransformJoin(duckdb_libpgquery::PGJoinExpr &root);
291
294
  //! Transform a Postgres pivot node into a TableRef
292
- unique_ptr<TableRef> TransformPivot(duckdb_libpgquery::PGPivotExpr *root);
295
+ unique_ptr<TableRef> TransformPivot(duckdb_libpgquery::PGPivotExpr &root);
293
296
  //! Transform a table producing subquery into a TableRef
294
- unique_ptr<TableRef> TransformRangeSubselect(duckdb_libpgquery::PGRangeSubselect *root);
297
+ unique_ptr<TableRef> TransformRangeSubselect(duckdb_libpgquery::PGRangeSubselect &root);
295
298
  //! Transform a VALUES list into a set of expressions
296
299
  unique_ptr<TableRef> TransformValuesList(duckdb_libpgquery::PGList *list);
297
300
 
298
301
  //! Transform a range var into a (schema) qualified name
299
- QualifiedName TransformQualifiedName(duckdb_libpgquery::PGRangeVar *root);
302
+ QualifiedName TransformQualifiedName(duckdb_libpgquery::PGRangeVar &root);
300
303
 
301
304
  //! Transform a Postgres TypeName string into a LogicalType
302
- LogicalType TransformTypeName(duckdb_libpgquery::PGTypeName *name);
305
+ LogicalType TransformTypeName(duckdb_libpgquery::PGTypeName &name);
303
306
 
304
307
  //! Transform a Postgres GROUP BY expression into a list of Expression
305
- bool TransformGroupBy(duckdb_libpgquery::PGList *group, SelectNode &result);
306
- void TransformGroupByNode(duckdb_libpgquery::PGNode *n, GroupingExpressionMap &map, SelectNode &result,
308
+ bool TransformGroupBy(optional_ptr<duckdb_libpgquery::PGList> group, SelectNode &result);
309
+ void TransformGroupByNode(duckdb_libpgquery::PGNode &n, GroupingExpressionMap &map, SelectNode &result,
307
310
  vector<GroupingSet> &result_sets);
308
311
  void AddGroupByExpression(unique_ptr<ParsedExpression> expression, GroupingExpressionMap &map, GroupByNode &result,
309
312
  vector<idx_t> &result_set);
310
- void TransformGroupByExpression(duckdb_libpgquery::PGNode *n, GroupingExpressionMap &map, GroupByNode &result,
313
+ void TransformGroupByExpression(duckdb_libpgquery::PGNode &n, GroupingExpressionMap &map, GroupByNode &result,
311
314
  vector<idx_t> &result_set);
312
315
  //! Transform a Postgres ORDER BY expression into an OrderByDescription
313
316
  bool TransformOrderBy(duckdb_libpgquery::PGList *order, vector<OrderByNode> &result);
@@ -316,23 +319,36 @@ private:
316
319
  void TransformExpressionList(duckdb_libpgquery::PGList &list, vector<unique_ptr<ParsedExpression>> &result);
317
320
 
318
321
  //! Transform a Postgres PARTITION BY/ORDER BY specification into lists of expressions
319
- void TransformWindowDef(duckdb_libpgquery::PGWindowDef *window_spec, WindowExpression *expr,
322
+ void TransformWindowDef(duckdb_libpgquery::PGWindowDef &window_spec, WindowExpression &expr,
320
323
  const char *window_name = nullptr);
321
324
  //! Transform a Postgres window frame specification into frame expressions
322
- void TransformWindowFrame(duckdb_libpgquery::PGWindowDef *window_spec, WindowExpression *expr);
325
+ void TransformWindowFrame(duckdb_libpgquery::PGWindowDef &window_spec, WindowExpression &expr);
323
326
 
324
- unique_ptr<SampleOptions> TransformSampleOptions(duckdb_libpgquery::PGNode *options);
327
+ unique_ptr<SampleOptions> TransformSampleOptions(optional_ptr<duckdb_libpgquery::PGNode> options);
325
328
  //! Returns true if an expression is only a star (i.e. "*", without any other decorators)
326
329
  bool ExpressionIsEmptyStar(ParsedExpression &expr);
327
330
 
328
331
  OnEntryNotFound TransformOnEntryNotFound(bool missing_ok);
329
332
 
333
+ Vector PGListToVector(optional_ptr<duckdb_libpgquery::PGList> column_list, idx_t &size);
334
+ vector<string> TransformConflictTarget(duckdb_libpgquery::PGList &list);
335
+
330
336
  private:
331
337
  //! Current stack depth
332
338
  idx_t stack_depth;
333
339
 
334
340
  void InitializeStackCheck();
335
341
  StackChecker StackCheck(idx_t extra_stack = 1);
342
+
343
+ public:
344
+ template <class T>
345
+ static T &PGCast(duckdb_libpgquery::PGNode &node) {
346
+ return reinterpret_cast<T &>(node);
347
+ }
348
+ template <class T>
349
+ static optional_ptr<T> PGPointerCast(void *ptr) {
350
+ return optional_ptr<T>(reinterpret_cast<T *>(ptr));
351
+ }
336
352
  };
337
353
 
338
354
  class StackChecker {
@@ -96,7 +96,7 @@ public:
96
96
  void AddSubquery(idx_t index, const string &alias, TableFunctionRef &ref, BoundQueryNode &subquery);
97
97
  //! Adds a binding to a catalog entry with a given alias to the BindContext.
98
98
  void AddEntryBinding(idx_t index, const string &alias, const vector<string> &names,
99
- const vector<LogicalType> &types, StandardEntry *entry);
99
+ const vector<LogicalType> &types, StandardEntry &entry);
100
100
  //! Adds a base table with the given alias to the BindContext.
101
101
  void AddGenericBinding(idx_t index, const string &alias, const vector<string> &names,
102
102
  const vector<LogicalType> &types);
@@ -37,7 +37,7 @@ public:
37
37
  if (type != TARGET::TYPE) {
38
38
  throw InternalException("Failed to cast constraint to type - bound constraint type mismatch");
39
39
  }
40
- return (TARGET &)*this;
40
+ return reinterpret_cast<TARGET &>(*this);
41
41
  }
42
42
 
43
43
  template <class TARGET>
@@ -45,7 +45,7 @@ public:
45
45
  if (type != TARGET::TYPE) {
46
46
  throw InternalException("Failed to cast constraint to type - bound constraint type mismatch");
47
47
  }
48
- return (const TARGET &)*this;
48
+ return reinterpret_cast<const TARGET &>(*this);
49
49
  }
50
50
  };
51
51
  } // namespace duckdb