duckdb 0.8.0 → 0.8.1-dev111.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 (556) 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 +57 -52
  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/decode_utils.hpp +6 -0
  14. package/src/duckdb/extension/parquet/include/list_column_reader.hpp +1 -1
  15. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
  16. package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
  17. package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
  18. package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
  19. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
  20. package/src/duckdb/extension/parquet/parquet-extension.cpp +1 -1
  21. package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
  22. package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
  23. package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
  24. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
  25. package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
  26. package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
  27. package/src/duckdb/src/catalog/catalog.cpp +0 -4
  28. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +3 -0
  29. package/src/duckdb/src/catalog/catalog_entry.cpp +4 -4
  30. package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
  31. package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
  32. package/src/duckdb/src/catalog/duck_catalog.cpp +1 -0
  33. package/src/duckdb/src/common/adbc/adbc.cpp +183 -94
  34. package/src/duckdb/src/common/adbc/driver_manager.cpp +10 -2
  35. package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
  36. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +7 -7
  37. package/src/duckdb/src/common/checksum.cpp +1 -1
  38. package/src/duckdb/src/common/compressed_file_system.cpp +6 -6
  39. package/src/duckdb/src/common/crypto/md5.cpp +9 -9
  40. package/src/duckdb/src/common/field_writer.cpp +1 -1
  41. package/src/duckdb/src/common/file_system.cpp +15 -2
  42. package/src/duckdb/src/common/fsst.cpp +11 -6
  43. package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
  44. package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
  45. package/src/duckdb/src/common/local_file_system.cpp +11 -11
  46. package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
  47. package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
  48. package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
  49. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
  50. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
  51. package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
  52. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
  53. package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
  54. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
  55. package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
  56. package/src/duckdb/src/common/serializer.cpp +1 -1
  57. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  58. package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
  59. package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
  60. package/src/duckdb/src/common/types/bit.cpp +5 -5
  61. package/src/duckdb/src/common/types/blob.cpp +8 -8
  62. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
  63. package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
  64. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  65. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  66. package/src/duckdb/src/common/types/hash.cpp +2 -2
  67. package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
  68. package/src/duckdb/src/common/types/list_segment.cpp +77 -49
  69. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
  70. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
  71. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +17 -17
  72. package/src/duckdb/src/common/types/string_heap.cpp +1 -1
  73. package/src/duckdb/src/common/types/value.cpp +2 -2
  74. package/src/duckdb/src/common/types/vector.cpp +101 -101
  75. package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
  76. package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
  77. package/src/duckdb/src/common/types.cpp +44 -33
  78. package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
  79. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
  80. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
  81. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
  82. package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +30 -33
  83. package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +0 -4
  84. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +32 -36
  85. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +53 -66
  86. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +48 -48
  87. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +43 -43
  88. package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +32 -32
  89. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +34 -34
  90. package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +30 -31
  91. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +91 -103
  92. package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +17 -17
  93. package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +25 -27
  94. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +36 -37
  95. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
  96. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +48 -84
  97. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
  98. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +83 -119
  99. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +62 -99
  100. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
  101. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +22 -23
  102. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +16 -18
  103. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +22 -25
  104. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +19 -24
  105. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +18 -23
  106. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +14 -18
  107. package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
  108. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +45 -45
  109. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
  110. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
  111. package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
  112. package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
  113. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +3 -3
  114. package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
  115. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +3 -3
  116. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +6 -7
  117. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
  118. package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
  119. package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
  120. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +1 -1
  121. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
  122. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +3 -3
  123. package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
  124. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
  125. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
  126. package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
  127. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  128. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
  129. package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
  130. package/src/duckdb/src/execution/expression_executor.cpp +33 -28
  131. package/src/duckdb/src/execution/index/art/art.cpp +30 -32
  132. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +3 -4
  133. package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
  134. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
  135. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
  136. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  137. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
  138. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
  139. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
  140. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
  141. package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
  142. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
  143. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  144. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
  145. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
  146. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
  147. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
  148. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
  149. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
  150. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
  151. package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +2 -0
  152. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
  153. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  154. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
  155. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
  156. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -3
  157. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
  158. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
  159. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
  160. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  161. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
  162. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  163. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
  164. package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
  165. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
  166. package/src/duckdb/src/execution/reservoir_sample.cpp +2 -2
  167. package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
  168. package/src/duckdb/src/function/aggregate/distributive/count.cpp +158 -20
  169. package/src/duckdb/src/function/aggregate/distributive/first.cpp +66 -74
  170. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +13 -13
  171. package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
  172. package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
  173. package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
  174. package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
  175. package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
  176. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
  177. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
  178. package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
  179. package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -3
  180. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -3
  181. package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
  182. package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
  183. package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
  184. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
  185. package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
  186. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
  187. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
  188. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +25 -23
  189. package/src/duckdb/src/function/scalar_function.cpp +3 -3
  190. package/src/duckdb/src/function/table/arrow.cpp +4 -4
  191. package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
  192. package/src/duckdb/src/function/table/checkpoint.cpp +1 -1
  193. package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
  194. package/src/duckdb/src/function/table/glob.cpp +1 -1
  195. package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
  196. package/src/duckdb/src/function/table/range.cpp +4 -4
  197. package/src/duckdb/src/function/table/read_csv.cpp +4 -7
  198. package/src/duckdb/src/function/table/repeat.cpp +2 -2
  199. package/src/duckdb/src/function/table/repeat_row.cpp +2 -2
  200. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
  201. package/src/duckdb/src/function/table/system/test_vector_types.cpp +1 -1
  202. package/src/duckdb/src/function/table/table_scan.cpp +2 -2
  203. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  204. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  205. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -2
  206. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
  207. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +5 -0
  208. package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
  209. package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
  210. package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
  211. package/src/duckdb/src/include/duckdb/common/exception.hpp +2 -2
  212. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
  213. package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
  214. package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
  215. package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
  216. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
  217. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
  218. package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
  219. package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
  220. package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
  221. package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
  222. package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
  223. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
  224. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
  225. package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
  226. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
  227. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
  228. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +112 -76
  229. package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
  230. package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
  231. package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
  232. package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
  233. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +20 -24
  234. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +36 -39
  235. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +57 -53
  236. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +8 -9
  237. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +16 -18
  238. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +7 -8
  239. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
  240. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +3 -3
  241. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
  242. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
  243. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
  244. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
  245. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +8 -29
  246. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +95 -0
  247. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
  248. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
  249. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
  250. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
  251. package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
  252. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
  253. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
  254. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
  255. package/src/duckdb/src/include/duckdb/function/table_function.hpp +6 -6
  256. package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
  257. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  258. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
  259. package/src/duckdb/src/include/duckdb/main/query_result.hpp +17 -0
  260. package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
  261. package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
  262. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
  263. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
  264. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
  265. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
  266. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
  267. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  268. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
  269. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
  270. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
  271. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
  272. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  273. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
  274. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
  275. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
  276. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
  277. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
  278. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
  279. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  280. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  281. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
  282. package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
  283. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
  284. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
  285. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  286. package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
  287. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
  288. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
  289. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
  290. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +1 -1
  291. package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
  292. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  293. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +1 -1
  294. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
  295. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
  296. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
  297. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +107 -91
  298. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +1 -1
  299. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
  300. package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
  301. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +34 -1
  302. package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
  303. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
  304. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
  305. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
  306. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
  307. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
  308. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
  309. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
  310. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
  311. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
  312. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
  313. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
  314. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
  315. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
  316. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
  317. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
  318. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
  319. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
  320. package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
  321. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
  322. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
  323. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
  324. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +2 -2
  325. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
  326. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
  327. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
  328. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  329. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
  330. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
  331. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
  332. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
  333. package/src/duckdb/src/include/duckdb/storage/index.hpp +2 -2
  334. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
  335. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
  336. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
  337. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
  338. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
  339. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
  340. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
  341. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
  342. package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
  343. package/src/duckdb/src/main/capi/arrow-c.cpp +10 -10
  344. package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
  345. package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
  346. package/src/duckdb/src/main/capi/config-c.cpp +1 -1
  347. package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
  348. package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
  349. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
  350. package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
  351. package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
  352. package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
  353. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
  354. package/src/duckdb/src/main/capi/result-c.cpp +23 -23
  355. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  356. package/src/duckdb/src/main/client_context.cpp +3 -3
  357. package/src/duckdb/src/main/database_manager.cpp +1 -1
  358. package/src/duckdb/src/main/error_manager.cpp +1 -1
  359. package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
  360. package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
  361. package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
  362. package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
  363. package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
  364. package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
  365. package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
  366. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  367. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  368. package/src/duckdb/src/main/relation.cpp +1 -1
  369. package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
  370. package/src/duckdb/src/optimizer/expression_heuristics.cpp +1 -0
  371. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  372. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
  373. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +4 -7
  374. package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
  375. package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
  376. package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
  377. package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
  378. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
  379. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
  380. package/src/duckdb/src/parallel/executor.cpp +1 -1
  381. package/src/duckdb/src/parser/base_expression.cpp +2 -5
  382. package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
  383. package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
  384. package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
  385. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
  386. package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
  387. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
  388. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
  389. package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
  390. package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
  391. package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
  392. package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
  393. package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
  394. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
  395. package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
  396. package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
  397. package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
  398. package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
  399. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
  400. package/src/duckdb/src/parser/parser.cpp +3 -3
  401. package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
  402. package/src/duckdb/src/parser/query_node.cpp +7 -6
  403. package/src/duckdb/src/parser/result_modifier.cpp +25 -18
  404. package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
  405. package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
  406. package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
  407. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
  408. package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
  409. package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
  410. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
  411. package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
  412. package/src/duckdb/src/parser/tableref.cpp +12 -3
  413. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
  414. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
  415. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
  416. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
  417. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
  418. package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
  419. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
  420. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
  421. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
  422. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +70 -75
  423. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
  424. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
  425. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
  426. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
  427. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +28 -29
  428. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
  429. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
  430. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
  431. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
  432. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
  433. package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
  434. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
  435. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
  436. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
  437. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
  438. package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
  439. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
  440. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
  441. package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +3 -4
  442. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
  443. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
  444. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
  445. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
  446. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
  447. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
  448. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
  449. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
  450. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
  451. package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
  452. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -22
  453. package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
  454. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
  455. package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
  456. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
  457. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
  458. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
  459. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
  460. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
  461. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
  462. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
  463. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
  464. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
  465. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
  466. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
  467. package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
  468. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
  469. package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
  470. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
  471. package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
  472. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
  473. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
  474. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
  475. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +27 -27
  476. package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
  477. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
  478. package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
  479. package/src/duckdb/src/parser/transformer.cpp +46 -46
  480. package/src/duckdb/src/planner/bind_context.cpp +6 -6
  481. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -1
  482. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
  483. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
  484. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
  485. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +8 -8
  486. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
  487. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +13 -5
  488. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
  489. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +1 -1
  490. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +1 -1
  491. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +14 -7
  492. package/src/duckdb/src/planner/binder.cpp +1 -1
  493. package/src/duckdb/src/planner/bound_result_modifier.cpp +16 -11
  494. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +5 -5
  495. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
  496. package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
  497. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
  498. package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
  499. package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
  500. package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
  501. package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
  502. package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
  503. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
  504. package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
  505. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
  506. package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
  507. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
  508. package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
  509. package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
  510. package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
  511. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
  512. package/src/duckdb/src/planner/expression.cpp +15 -0
  513. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
  514. package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
  515. package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
  516. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  517. package/src/duckdb/src/planner/logical_operator.cpp +3 -4
  518. package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
  519. package/src/duckdb/src/planner/table_filter.cpp +1 -1
  520. package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
  521. package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
  522. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
  523. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
  524. package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
  525. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
  526. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
  527. package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
  528. package/src/duckdb/src/storage/compression/rle.cpp +8 -8
  529. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
  530. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
  531. package/src/duckdb/src/storage/data_table.cpp +2 -2
  532. package/src/duckdb/src/storage/index.cpp +1 -3
  533. package/src/duckdb/src/storage/local_storage.cpp +2 -1
  534. package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
  535. package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
  536. package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
  537. package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
  538. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
  539. package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
  540. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
  541. package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
  542. package/src/duckdb/src/storage/table/list_column_data.cpp +8 -7
  543. package/src/duckdb/src/storage/table/row_group.cpp +4 -4
  544. package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -1
  545. package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
  546. package/src/duckdb/src/storage/wal_replay.cpp +1 -1
  547. package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
  548. package/src/duckdb/src/transaction/commit_state.cpp +8 -8
  549. package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
  550. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
  551. package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
  552. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
  553. package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
  554. package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
  555. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +13479 -13564
  556. package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
@@ -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
@@ -41,7 +41,7 @@ public:
41
41
  if (type != TARGET::TYPE) {
42
42
  throw InternalException("Failed to cast bound query node to type - query node type mismatch");
43
43
  }
44
- return (TARGET &)*this;
44
+ return reinterpret_cast<TARGET &>(*this);
45
45
  }
46
46
 
47
47
  template <class TARGET>
@@ -49,7 +49,7 @@ public:
49
49
  if (type != TARGET::TYPE) {
50
50
  throw InternalException("Failed to cast bound query node to type - query node type mismatch");
51
51
  }
52
- return (const TARGET &)*this;
52
+ return reinterpret_cast<const TARGET &>(*this);
53
53
  }
54
54
  };
55
55
 
@@ -23,9 +23,29 @@ public:
23
23
  virtual ~BoundResultModifier();
24
24
 
25
25
  ResultModifierType type;
26
+
27
+ public:
28
+ template <class TARGET>
29
+ TARGET &Cast() {
30
+ if (type != TARGET::TYPE) {
31
+ throw InternalException("Failed to cast result modifier to type - result modifier type mismatch");
32
+ }
33
+ return reinterpret_cast<TARGET &>(*this);
34
+ }
35
+
36
+ template <class TARGET>
37
+ const TARGET &Cast() const {
38
+ if (type != TARGET::TYPE) {
39
+ throw InternalException("Failed to cast result modifier to type - result modifier type mismatch");
40
+ }
41
+ return reinterpret_cast<const TARGET &>(*this);
42
+ }
26
43
  };
27
44
 
28
45
  struct BoundOrderByNode {
46
+ public:
47
+ static constexpr const ResultModifierType TYPE = ResultModifierType::ORDER_MODIFIER;
48
+
29
49
  public:
30
50
  BoundOrderByNode(OrderType type, OrderByNullType null_order, unique_ptr<Expression> expression);
31
51
  BoundOrderByNode(OrderType type, OrderByNullType null_order, unique_ptr<Expression> expression,
@@ -46,6 +66,9 @@ public:
46
66
  };
47
67
 
48
68
  class BoundLimitModifier : public BoundResultModifier {
69
+ public:
70
+ static constexpr const ResultModifierType TYPE = ResultModifierType::LIMIT_MODIFIER;
71
+
49
72
  public:
50
73
  BoundLimitModifier();
51
74
 
@@ -60,6 +83,9 @@ public:
60
83
  };
61
84
 
62
85
  class BoundOrderModifier : public BoundResultModifier {
86
+ public:
87
+ static constexpr const ResultModifierType TYPE = ResultModifierType::ORDER_MODIFIER;
88
+
63
89
  public:
64
90
  BoundOrderModifier();
65
91
 
@@ -67,12 +93,16 @@ public:
67
93
  vector<BoundOrderByNode> orders;
68
94
 
69
95
  unique_ptr<BoundOrderModifier> Copy() const;
70
- static bool Equals(const BoundOrderModifier *left, const BoundOrderModifier *right);
96
+ static bool Equals(const BoundOrderModifier &left, const BoundOrderModifier &right);
97
+ static bool Equals(const unique_ptr<BoundOrderModifier> &left, const unique_ptr<BoundOrderModifier> &right);
71
98
  };
72
99
 
73
100
  enum class DistinctType : uint8_t { DISTINCT = 0, DISTINCT_ON = 1 };
74
101
 
75
102
  class BoundDistinctModifier : public BoundResultModifier {
103
+ public:
104
+ static constexpr const ResultModifierType TYPE = ResultModifierType::DISTINCT_MODIFIER;
105
+
76
106
  public:
77
107
  BoundDistinctModifier();
78
108
 
@@ -83,6 +113,9 @@ public:
83
113
  };
84
114
 
85
115
  class BoundLimitPercentModifier : public BoundResultModifier {
116
+ public:
117
+ static constexpr const ResultModifierType TYPE = ResultModifierType::LIMIT_PERCENT_MODIFIER;
118
+
86
119
  public:
87
120
  BoundLimitPercentModifier();
88
121
 
@@ -32,7 +32,7 @@ public:
32
32
  if (type != TARGET::TYPE) {
33
33
  throw InternalException("Failed to cast bound table ref to type - table ref type mismatch");
34
34
  }
35
- return (TARGET &)*this;
35
+ return reinterpret_cast<TARGET &>(*this);
36
36
  }
37
37
 
38
38
  template <class TARGET>
@@ -40,7 +40,7 @@ public:
40
40
  if (type != TARGET::TYPE) {
41
41
  throw InternalException("Failed to cast bound table ref to type - table ref type mismatch");
42
42
  }
43
- return (const TARGET &)*this;
43
+ return reinterpret_cast<const TARGET &>(*this);
44
44
  }
45
45
  };
46
46
  } // namespace duckdb
@@ -53,7 +53,7 @@ public:
53
53
  string ToString() const override;
54
54
 
55
55
  hash_t Hash() const override;
56
- bool Equals(const BaseExpression *other) const override;
56
+ bool Equals(const BaseExpression &other) const override;
57
57
  unique_ptr<Expression> Copy() override;
58
58
  void Serialize(FieldWriter &writer) const override;
59
59
  static unique_ptr<Expression> Deserialize(ExpressionDeserializationState &state, FieldReader &reader);
@@ -29,7 +29,7 @@ public:
29
29
  public:
30
30
  string ToString() const override;
31
31
 
32
- bool Equals(const BaseExpression *other) const override;
32
+ bool Equals(const BaseExpression &other) const override;
33
33
 
34
34
  unique_ptr<Expression> Copy() override;
35
35
  void Serialize(FieldWriter &writer) const override;
@@ -35,7 +35,7 @@ public:
35
35
  public:
36
36
  string ToString() const override;
37
37
 
38
- bool Equals(const BaseExpression *other) const override;
38
+ bool Equals(const BaseExpression &other) const override;
39
39
 
40
40
  unique_ptr<Expression> Copy() override;
41
41
 
@@ -46,7 +46,7 @@ public:
46
46
 
47
47
  string ToString() const override;
48
48
 
49
- bool Equals(const BaseExpression *other) const override;
49
+ bool Equals(const BaseExpression &other) const override;
50
50
 
51
51
  unique_ptr<Expression> Copy() override;
52
52
 
@@ -44,7 +44,7 @@ public:
44
44
  string ToString() const override;
45
45
  string GetName() const override;
46
46
 
47
- bool Equals(const BaseExpression *other) const override;
47
+ bool Equals(const BaseExpression &other) const override;
48
48
  hash_t Hash() const override;
49
49
 
50
50
  unique_ptr<Expression> Copy() override;
@@ -25,7 +25,7 @@ public:
25
25
  public:
26
26
  string ToString() const override;
27
27
 
28
- bool Equals(const BaseExpression *other) const override;
28
+ bool Equals(const BaseExpression &other) const override;
29
29
 
30
30
  unique_ptr<Expression> Copy() override;
31
31
  void Serialize(FieldWriter &writer) const override;
@@ -25,7 +25,7 @@ public:
25
25
  public:
26
26
  string ToString() const override;
27
27
 
28
- bool Equals(const BaseExpression *other) const override;
28
+ bool Equals(const BaseExpression &other) const override;
29
29
 
30
30
  bool PropagatesNullValues() const override;
31
31
 
@@ -25,7 +25,7 @@ public:
25
25
  public:
26
26
  string ToString() const override;
27
27
 
28
- bool Equals(const BaseExpression *other) const override;
28
+ bool Equals(const BaseExpression &other) const override;
29
29
  hash_t Hash() const override;
30
30
 
31
31
  unique_ptr<Expression> Copy() override;
@@ -39,7 +39,7 @@ public:
39
39
  string ToString() const override;
40
40
  bool PropagatesNullValues() const override;
41
41
  hash_t Hash() const override;
42
- bool Equals(const BaseExpression *other) const override;
42
+ bool Equals(const BaseExpression &other) const override;
43
43
 
44
44
  unique_ptr<Expression> Copy() override;
45
45
  void Verify() const override;
@@ -28,7 +28,7 @@ public:
28
28
  public:
29
29
  string ToString() const override;
30
30
 
31
- bool Equals(const BaseExpression *other) const override;
31
+ bool Equals(const BaseExpression &other) const override;
32
32
 
33
33
  unique_ptr<Expression> Copy() override;
34
34
 
@@ -46,7 +46,7 @@ public:
46
46
 
47
47
  string ToString() const override;
48
48
 
49
- bool Equals(const BaseExpression *other) const override;
49
+ bool Equals(const BaseExpression &other) const override;
50
50
  hash_t Hash() const override;
51
51
 
52
52
  unique_ptr<Expression> Copy() override;
@@ -24,7 +24,7 @@ public:
24
24
  public:
25
25
  string ToString() const override;
26
26
 
27
- bool Equals(const BaseExpression *other) const override;
27
+ bool Equals(const BaseExpression &other) const override;
28
28
 
29
29
  unique_ptr<Expression> Copy() override;
30
30
 
@@ -35,7 +35,7 @@ public:
35
35
 
36
36
  string ToString() const override;
37
37
 
38
- bool Equals(const BaseExpression *other) const override;
38
+ bool Equals(const BaseExpression &other) const override;
39
39
  hash_t Hash() const override;
40
40
 
41
41
  unique_ptr<Expression> Copy() override;
@@ -35,7 +35,7 @@ public:
35
35
  string ToString() const override;
36
36
 
37
37
  hash_t Hash() const override;
38
- bool Equals(const BaseExpression *other) const override;
38
+ bool Equals(const BaseExpression &other) const override;
39
39
 
40
40
  unique_ptr<Expression> Copy() override;
41
41