duckdb 0.8.1-dev31.0 → 0.8.1-dev327.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 (633) hide show
  1. package/binding.gyp +8 -8
  2. package/package.json +1 -1
  3. package/src/duckdb/extension/icu/icu-datepart.cpp +1 -1
  4. package/src/duckdb/extension/icu/icu-makedate.cpp +5 -4
  5. package/src/duckdb/extension/json/buffered_json_reader.cpp +23 -14
  6. package/src/duckdb/extension/json/include/buffered_json_reader.hpp +6 -6
  7. package/src/duckdb/extension/json/include/json_common.hpp +13 -3
  8. package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
  9. package/src/duckdb/extension/json/include/json_scan.hpp +3 -1
  10. package/src/duckdb/extension/json/json_functions/json_create.cpp +16 -16
  11. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +3 -3
  12. package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +2 -2
  13. package/src/duckdb/extension/json/json_functions/json_structure.cpp +5 -3
  14. package/src/duckdb/extension/json/json_functions/json_transform.cpp +12 -12
  15. package/src/duckdb/extension/json/json_functions/read_json.cpp +2 -1
  16. package/src/duckdb/extension/json/json_functions.cpp +6 -3
  17. package/src/duckdb/extension/json/json_scan.cpp +40 -25
  18. package/src/duckdb/extension/parquet/column_reader.cpp +57 -52
  19. package/src/duckdb/extension/parquet/column_writer.cpp +57 -45
  20. package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +1 -1
  21. package/src/duckdb/extension/parquet/include/column_reader.hpp +5 -4
  22. package/src/duckdb/extension/parquet/include/column_writer.hpp +24 -0
  23. package/src/duckdb/extension/parquet/include/decode_utils.hpp +6 -0
  24. package/src/duckdb/extension/parquet/include/list_column_reader.hpp +1 -1
  25. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
  26. package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
  27. package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
  28. package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
  29. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
  30. package/src/duckdb/extension/parquet/parquet-extension.cpp +25 -1
  31. package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
  32. package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
  33. package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
  34. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
  35. package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
  36. package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
  37. package/src/duckdb/src/catalog/catalog.cpp +5 -17
  38. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +113 -0
  39. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +7 -0
  40. package/src/duckdb/src/catalog/catalog_entry.cpp +4 -4
  41. package/src/duckdb/src/catalog/catalog_search_path.cpp +49 -12
  42. package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
  43. package/src/duckdb/src/catalog/default/default_types.cpp +9 -84
  44. package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
  45. package/src/duckdb/src/catalog/duck_catalog.cpp +1 -0
  46. package/src/duckdb/src/common/adbc/adbc.cpp +301 -106
  47. package/src/duckdb/src/common/adbc/driver_manager.cpp +10 -22
  48. package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
  49. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +7 -7
  50. package/src/duckdb/src/common/checksum.cpp +1 -1
  51. package/src/duckdb/src/common/compressed_file_system.cpp +6 -6
  52. package/src/duckdb/src/common/crypto/md5.cpp +9 -9
  53. package/src/duckdb/src/common/exception.cpp +4 -1
  54. package/src/duckdb/src/common/exception_format_value.cpp +19 -14
  55. package/src/duckdb/src/common/field_writer.cpp +1 -1
  56. package/src/duckdb/src/common/file_system.cpp +15 -2
  57. package/src/duckdb/src/common/fsst.cpp +11 -6
  58. package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
  59. package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
  60. package/src/duckdb/src/common/local_file_system.cpp +11 -11
  61. package/src/duckdb/src/common/multi_file_reader.cpp +3 -0
  62. package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
  63. package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
  64. package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
  65. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
  66. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
  67. package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
  68. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
  69. package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
  70. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
  71. package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
  72. package/src/duckdb/src/common/serializer.cpp +1 -1
  73. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  74. package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
  75. package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
  76. package/src/duckdb/src/common/types/bit.cpp +5 -5
  77. package/src/duckdb/src/common/types/blob.cpp +8 -8
  78. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
  79. package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
  80. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  81. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  82. package/src/duckdb/src/common/types/hash.cpp +2 -2
  83. package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
  84. package/src/duckdb/src/common/types/list_segment.cpp +77 -49
  85. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
  86. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +5 -4
  87. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
  88. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +61 -24
  89. package/src/duckdb/src/common/types/string_heap.cpp +1 -1
  90. package/src/duckdb/src/common/types/timestamp.cpp +37 -1
  91. package/src/duckdb/src/common/types/value.cpp +3 -2
  92. package/src/duckdb/src/common/types/vector.cpp +98 -101
  93. package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
  94. package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
  95. package/src/duckdb/src/common/types.cpp +44 -33
  96. package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
  97. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
  98. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
  99. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
  100. package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +30 -33
  101. package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +0 -4
  102. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +32 -36
  103. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +53 -66
  104. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +48 -48
  105. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +44 -44
  106. package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +32 -32
  107. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +34 -34
  108. package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +30 -31
  109. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +91 -103
  110. package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +17 -17
  111. package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +25 -27
  112. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +36 -37
  113. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
  114. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +48 -84
  115. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
  116. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +115 -133
  117. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +62 -99
  118. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
  119. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +22 -23
  120. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +16 -18
  121. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +22 -25
  122. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +19 -24
  123. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +18 -23
  124. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +14 -18
  125. package/src/duckdb/src/core_functions/function_list.cpp +1 -0
  126. package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
  127. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +45 -45
  128. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
  129. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
  130. package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
  131. package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
  132. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +14 -0
  133. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +3 -3
  134. package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
  135. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +3 -3
  136. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +6 -7
  137. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
  138. package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
  139. package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
  140. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +4 -1
  141. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
  142. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +3 -3
  143. package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
  144. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
  145. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
  146. package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
  147. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  148. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
  149. package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
  150. package/src/duckdb/src/execution/expression_executor.cpp +28 -28
  151. package/src/duckdb/src/execution/index/art/art.cpp +110 -39
  152. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +23 -5
  153. package/src/duckdb/src/execution/index/art/leaf.cpp +10 -11
  154. package/src/duckdb/src/execution/index/art/leaf_segment.cpp +10 -0
  155. package/src/duckdb/src/execution/index/art/node.cpp +47 -35
  156. package/src/duckdb/src/execution/index/art/node16.cpp +3 -0
  157. package/src/duckdb/src/execution/index/art/node256.cpp +1 -0
  158. package/src/duckdb/src/execution/index/art/node4.cpp +3 -0
  159. package/src/duckdb/src/execution/index/art/node48.cpp +2 -0
  160. package/src/duckdb/src/execution/index/art/prefix.cpp +2 -0
  161. package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
  162. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
  163. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
  164. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  165. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
  166. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
  167. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
  168. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +25 -9
  169. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
  170. package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +5 -2
  171. package/src/duckdb/src/execution/operator/helper/physical_set.cpp +5 -1
  172. package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
  173. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
  174. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  175. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
  176. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
  177. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
  178. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
  179. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
  180. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
  181. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
  182. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
  183. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  184. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
  185. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
  186. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -3
  187. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
  188. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
  189. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
  190. package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +29 -3
  191. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  192. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
  193. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  194. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
  195. package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
  196. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
  197. package/src/duckdb/src/execution/reservoir_sample.cpp +2 -2
  198. package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
  199. package/src/duckdb/src/function/aggregate/distributive/count.cpp +158 -20
  200. package/src/duckdb/src/function/aggregate/distributive/first.cpp +66 -74
  201. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +13 -13
  202. package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
  203. package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
  204. package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
  205. package/src/duckdb/src/function/cast/list_casts.cpp +2 -4
  206. package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
  207. package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
  208. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
  209. package/src/duckdb/src/function/pragma/pragma_queries.cpp +33 -23
  210. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
  211. package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
  212. package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -3
  213. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -3
  214. package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
  215. package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
  216. package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
  217. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
  218. package/src/duckdb/src/function/scalar/string/regexp/regexp_util.cpp +6 -2
  219. package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
  220. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
  221. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
  222. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +25 -23
  223. package/src/duckdb/src/function/scalar_function.cpp +3 -3
  224. package/src/duckdb/src/function/table/arrow.cpp +6 -6
  225. package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
  226. package/src/duckdb/src/function/table/checkpoint.cpp +1 -1
  227. package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
  228. package/src/duckdb/src/function/table/glob.cpp +1 -1
  229. package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
  230. package/src/duckdb/src/function/table/range.cpp +4 -4
  231. package/src/duckdb/src/function/table/read_csv.cpp +17 -20
  232. package/src/duckdb/src/function/table/repeat.cpp +5 -2
  233. package/src/duckdb/src/function/table/repeat_row.cpp +10 -3
  234. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
  235. package/src/duckdb/src/function/table/system/test_vector_types.cpp +82 -26
  236. package/src/duckdb/src/function/table/table_scan.cpp +2 -2
  237. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  238. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  239. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -5
  240. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -0
  241. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +6 -0
  242. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
  243. package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +8 -2
  244. package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +97 -0
  245. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +5 -0
  246. package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
  247. package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
  248. package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
  249. package/src/duckdb/src/include/duckdb/common/exception.hpp +5 -2
  250. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
  251. package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
  252. package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
  253. package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
  254. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
  255. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
  256. package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
  257. package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
  258. package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
  259. package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
  260. package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
  261. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
  262. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
  263. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +4 -14
  264. package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
  265. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
  266. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
  267. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +112 -76
  268. package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
  269. package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
  270. package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
  271. package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
  272. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +20 -24
  273. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +36 -39
  274. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +57 -53
  275. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +8 -9
  276. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +16 -18
  277. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +7 -8
  278. package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +9 -0
  279. package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +2 -6
  280. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +16 -36
  281. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
  282. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +13 -7
  283. package/src/duckdb/src/include/duckdb/execution/index/art/fixed_size_allocator.hpp +3 -0
  284. package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +1 -1
  285. package/src/duckdb/src/include/duckdb/execution/index/art/leaf_segment.hpp +2 -0
  286. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +13 -3
  287. package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +1 -0
  288. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
  289. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
  290. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
  291. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
  292. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +8 -29
  293. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +95 -0
  294. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
  295. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
  296. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
  297. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
  298. package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
  299. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +3 -1
  300. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
  301. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
  302. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
  303. package/src/duckdb/src/include/duckdb/function/table_function.hpp +8 -7
  304. package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
  305. package/src/duckdb/src/include/duckdb/main/config.hpp +2 -0
  306. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  307. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
  308. package/src/duckdb/src/include/duckdb/main/query_result.hpp +17 -0
  309. package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
  310. package/src/duckdb/src/include/duckdb/main/settings.hpp +9 -0
  311. package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
  312. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
  313. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
  314. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
  315. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
  316. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
  317. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  318. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
  319. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
  320. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
  321. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
  322. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  323. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
  324. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
  325. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
  326. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
  327. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
  328. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
  329. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  330. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  331. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
  332. package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
  333. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
  334. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
  335. package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
  336. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  337. package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
  338. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
  339. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
  340. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
  341. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -2
  342. package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
  343. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  344. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +1 -1
  345. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
  346. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
  347. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
  348. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +106 -92
  349. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -2
  350. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
  351. package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
  352. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +34 -1
  353. package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
  354. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
  355. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
  356. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
  357. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
  358. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
  359. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
  360. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
  361. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
  362. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
  363. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
  364. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
  365. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
  366. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
  367. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
  368. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
  369. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
  370. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
  371. package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
  372. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
  373. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
  374. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
  375. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
  376. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +7 -2
  377. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +6 -2
  378. package/src/duckdb/src/include/duckdb/planner/operator/logical_execute.hpp +4 -0
  379. package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +5 -1
  380. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +5 -1
  381. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
  382. package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +6 -2
  383. package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +4 -0
  384. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
  385. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
  386. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  387. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/byte_reader.hpp +4 -0
  388. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
  389. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
  390. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
  391. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
  392. package/src/duckdb/src/include/duckdb/storage/in_memory_block_manager.hpp +13 -13
  393. package/src/duckdb/src/include/duckdb/storage/index.hpp +6 -4
  394. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
  395. package/src/duckdb/src/include/duckdb/storage/storage_extension.hpp +0 -6
  396. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
  397. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
  398. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
  399. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
  400. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
  401. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
  402. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
  403. package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
  404. package/src/duckdb/src/main/capi/arrow-c.cpp +10 -10
  405. package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
  406. package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
  407. package/src/duckdb/src/main/capi/config-c.cpp +3 -6
  408. package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
  409. package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
  410. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
  411. package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
  412. package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
  413. package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
  414. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
  415. package/src/duckdb/src/main/capi/result-c.cpp +23 -23
  416. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  417. package/src/duckdb/src/main/client_context.cpp +3 -3
  418. package/src/duckdb/src/main/config.cpp +1 -0
  419. package/src/duckdb/src/main/database_manager.cpp +1 -1
  420. package/src/duckdb/src/main/error_manager.cpp +1 -1
  421. package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
  422. package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
  423. package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
  424. package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
  425. package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
  426. package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
  427. package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
  428. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  429. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  430. package/src/duckdb/src/main/relation.cpp +1 -1
  431. package/src/duckdb/src/main/settings/settings.cpp +22 -6
  432. package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
  433. package/src/duckdb/src/optimizer/expression_heuristics.cpp +1 -0
  434. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  435. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
  436. package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
  437. package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
  438. package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
  439. package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
  440. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
  441. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
  442. package/src/duckdb/src/parallel/executor.cpp +1 -1
  443. package/src/duckdb/src/parser/base_expression.cpp +2 -5
  444. package/src/duckdb/src/parser/column_definition.cpp +5 -8
  445. package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
  446. package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
  447. package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
  448. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
  449. package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
  450. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
  451. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
  452. package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
  453. package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
  454. package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
  455. package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
  456. package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
  457. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
  458. package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
  459. package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
  460. package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
  461. package/src/duckdb/src/parser/parsed_data/create_info.cpp +0 -3
  462. package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
  463. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
  464. package/src/duckdb/src/parser/parser.cpp +4 -4
  465. package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
  466. package/src/duckdb/src/parser/query_node.cpp +7 -6
  467. package/src/duckdb/src/parser/result_modifier.cpp +25 -18
  468. package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
  469. package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
  470. package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
  471. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
  472. package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
  473. package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
  474. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
  475. package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
  476. package/src/duckdb/src/parser/tableref.cpp +12 -3
  477. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
  478. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
  479. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
  480. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
  481. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
  482. package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
  483. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
  484. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
  485. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
  486. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +70 -75
  487. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
  488. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
  489. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
  490. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
  491. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +28 -29
  492. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
  493. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
  494. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
  495. package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +0 -2
  496. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
  497. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
  498. package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
  499. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
  500. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
  501. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
  502. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
  503. package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
  504. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
  505. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
  506. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
  507. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
  508. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
  509. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
  510. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
  511. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
  512. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
  513. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
  514. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
  515. package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
  516. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -25
  517. package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
  518. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
  519. package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
  520. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
  521. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
  522. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
  523. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
  524. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
  525. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
  526. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
  527. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
  528. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
  529. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
  530. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
  531. package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
  532. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
  533. package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
  534. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
  535. package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
  536. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
  537. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
  538. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
  539. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +30 -27
  540. package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
  541. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
  542. package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
  543. package/src/duckdb/src/parser/transformer.cpp +45 -47
  544. package/src/duckdb/src/planner/bind_context.cpp +9 -10
  545. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -1
  546. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
  547. package/src/duckdb/src/planner/binder/expression/bind_positional_reference_expression.cpp +8 -3
  548. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
  549. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
  550. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +8 -8
  551. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
  552. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +1 -28
  553. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +18 -1
  554. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +0 -25
  555. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
  556. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +2 -114
  557. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +4 -2
  558. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +5 -2
  559. package/src/duckdb/src/planner/binder.cpp +1 -1
  560. package/src/duckdb/src/planner/bound_result_modifier.cpp +16 -11
  561. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +5 -5
  562. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
  563. package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
  564. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
  565. package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
  566. package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
  567. package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
  568. package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
  569. package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
  570. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
  571. package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
  572. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
  573. package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
  574. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
  575. package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
  576. package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
  577. package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
  578. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
  579. package/src/duckdb/src/planner/expression.cpp +15 -0
  580. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
  581. package/src/duckdb/src/planner/expression_binder.cpp +3 -2
  582. package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
  583. package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
  584. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  585. package/src/duckdb/src/planner/logical_operator.cpp +3 -4
  586. package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
  587. package/src/duckdb/src/planner/operator/logical_pivot.cpp +14 -2
  588. package/src/duckdb/src/planner/planner.cpp +5 -15
  589. package/src/duckdb/src/planner/table_filter.cpp +1 -1
  590. package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
  591. package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
  592. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
  593. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
  594. package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
  595. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
  596. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
  597. package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
  598. package/src/duckdb/src/storage/compression/rle.cpp +8 -8
  599. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
  600. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
  601. package/src/duckdb/src/storage/data_table.cpp +8 -7
  602. package/src/duckdb/src/storage/index.cpp +14 -3
  603. package/src/duckdb/src/storage/local_storage.cpp +2 -1
  604. package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
  605. package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
  606. package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
  607. package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
  608. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
  609. package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
  610. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
  611. package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
  612. package/src/duckdb/src/storage/table/list_column_data.cpp +3 -3
  613. package/src/duckdb/src/storage/table/row_group.cpp +4 -4
  614. package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -1
  615. package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
  616. package/src/duckdb/src/storage/wal_replay.cpp +5 -6
  617. package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
  618. package/src/duckdb/src/transaction/commit_state.cpp +8 -8
  619. package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
  620. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
  621. package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
  622. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
  623. package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
  624. package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
  625. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +0 -14
  626. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +12828 -12956
  627. package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
  628. package/src/duckdb/third_party/zstd/compress/zstd_compress.cpp +3 -0
  629. package/src/duckdb/third_party/zstd/include/zstd/compress/zstd_cwksp.h +4 -0
  630. package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +5 -5
  631. package/src/duckdb/ub_src_parser_transform_statement.cpp +0 -2
  632. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_database_info.hpp +0 -46
  633. package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +0 -28
@@ -32,10 +32,10 @@ static void TransformPivotInList(unique_ptr<ParsedExpression> &expr, PivotColumn
32
32
  }
33
33
  }
34
34
 
35
- PivotColumn Transformer::TransformPivotColumn(duckdb_libpgquery::PGPivot *pivot) {
35
+ PivotColumn Transformer::TransformPivotColumn(duckdb_libpgquery::PGPivot &pivot) {
36
36
  PivotColumn col;
37
- if (pivot->pivot_columns) {
38
- TransformExpressionList(*pivot->pivot_columns, col.pivot_expressions);
37
+ if (pivot.pivot_columns) {
38
+ TransformExpressionList(*pivot.pivot_columns, col.pivot_expressions);
39
39
  for (auto &expr : col.pivot_expressions) {
40
40
  if (expr->IsScalar()) {
41
41
  throw ParserException("Cannot pivot on constant value \"%s\"", expr->ToString());
@@ -44,14 +44,14 @@ PivotColumn Transformer::TransformPivotColumn(duckdb_libpgquery::PGPivot *pivot)
44
44
  throw ParserException("Cannot pivot on subquery \"%s\"", expr->ToString());
45
45
  }
46
46
  }
47
- } else if (pivot->unpivot_columns) {
48
- col.unpivot_names = TransformStringList(pivot->unpivot_columns);
47
+ } else if (pivot.unpivot_columns) {
48
+ col.unpivot_names = TransformStringList(pivot.unpivot_columns);
49
49
  } else {
50
50
  throw InternalException("Either pivot_columns or unpivot_columns must be defined");
51
51
  }
52
- if (pivot->pivot_value) {
53
- for (auto node = pivot->pivot_value->head; node != nullptr; node = node->next) {
54
- auto n = (duckdb_libpgquery::PGNode *)node->data.ptr_value;
52
+ if (pivot.pivot_value) {
53
+ for (auto node = pivot.pivot_value->head; node != nullptr; node = node->next) {
54
+ auto n = PGPointerCast<duckdb_libpgquery::PGNode>(node->data.ptr_value);
55
55
  auto expr = TransformExpression(n);
56
56
  PivotColumnEntry entry;
57
57
  entry.alias = expr->alias;
@@ -59,36 +59,39 @@ PivotColumn Transformer::TransformPivotColumn(duckdb_libpgquery::PGPivot *pivot)
59
59
  col.entries.push_back(std::move(entry));
60
60
  }
61
61
  }
62
- if (pivot->subquery) {
63
- col.subquery = TransformSelectNode(reinterpret_cast<duckdb_libpgquery::PGSelectStmt *>(pivot->subquery));
62
+ if (pivot.subquery) {
63
+ col.subquery = TransformSelectNode(*PGPointerCast<duckdb_libpgquery::PGSelectStmt>(pivot.subquery));
64
64
  }
65
- if (pivot->pivot_enum) {
66
- col.pivot_enum = pivot->pivot_enum;
65
+ if (pivot.pivot_enum) {
66
+ col.pivot_enum = pivot.pivot_enum;
67
67
  }
68
68
  return col;
69
69
  }
70
70
 
71
- vector<PivotColumn> Transformer::TransformPivotList(duckdb_libpgquery::PGList *list) {
71
+ vector<PivotColumn> Transformer::TransformPivotList(duckdb_libpgquery::PGList &list) {
72
72
  vector<PivotColumn> result;
73
- for (auto node = list->head; node != nullptr; node = node->next) {
74
- auto pivot = (duckdb_libpgquery::PGPivot *)node->data.ptr_value;
75
- result.push_back(TransformPivotColumn(pivot));
73
+ for (auto node = list.head; node != nullptr; node = node->next) {
74
+ auto pivot = PGPointerCast<duckdb_libpgquery::PGPivot>(node->data.ptr_value);
75
+ result.push_back(TransformPivotColumn(*pivot));
76
76
  }
77
77
  return result;
78
78
  }
79
79
 
80
- unique_ptr<TableRef> Transformer::TransformPivot(duckdb_libpgquery::PGPivotExpr *root) {
80
+ unique_ptr<TableRef> Transformer::TransformPivot(duckdb_libpgquery::PGPivotExpr &root) {
81
81
  auto result = make_uniq<PivotRef>();
82
- result->source = TransformTableRefNode(root->source);
83
- if (root->aggrs) {
84
- TransformExpressionList(*root->aggrs, result->aggregates);
82
+ result->source = TransformTableRefNode(*root.source);
83
+ if (root.aggrs) {
84
+ TransformExpressionList(*root.aggrs, result->aggregates);
85
85
  }
86
- if (root->unpivots) {
87
- result->unpivot_names = TransformStringList(root->unpivots);
86
+ if (root.unpivots) {
87
+ result->unpivot_names = TransformStringList(root.unpivots);
88
88
  }
89
- result->pivots = TransformPivotList(root->pivots);
90
- if (root->groups) {
91
- result->groups = TransformStringList(root->groups);
89
+ result->pivots = TransformPivotList(*root.pivots);
90
+ if (!result->unpivot_names.empty() && result->pivots.size() > 1) {
91
+ throw ParserException("UNPIVOT requires a single pivot element");
92
+ }
93
+ if (root.groups) {
94
+ result->groups = TransformStringList(root.groups);
92
95
  }
93
96
  for (auto &pivot : result->pivots) {
94
97
  idx_t expected_size;
@@ -116,8 +119,8 @@ unique_ptr<TableRef> Transformer::TransformPivot(duckdb_libpgquery::PGPivotExpr
116
119
  }
117
120
  }
118
121
  }
119
- result->include_nulls = root->include_nulls;
120
- result->alias = TransformAlias(root->alias, result->column_name_alias);
122
+ result->include_nulls = root.include_nulls;
123
+ result->alias = TransformAlias(root.alias, result->column_name_alias);
121
124
  return std::move(result);
122
125
  }
123
126
 
@@ -3,16 +3,16 @@
3
3
 
4
4
  namespace duckdb {
5
5
 
6
- unique_ptr<TableRef> Transformer::TransformRangeSubselect(duckdb_libpgquery::PGRangeSubselect *root) {
6
+ unique_ptr<TableRef> Transformer::TransformRangeSubselect(duckdb_libpgquery::PGRangeSubselect &root) {
7
7
  Transformer subquery_transformer(*this);
8
- auto subquery = subquery_transformer.TransformSelect(root->subquery);
8
+ auto subquery = subquery_transformer.TransformSelect(root.subquery);
9
9
  if (!subquery) {
10
10
  return nullptr;
11
11
  }
12
12
  auto result = make_uniq<SubqueryRef>(std::move(subquery));
13
- result->alias = TransformAlias(root->alias, result->column_name_alias);
14
- if (root->sample) {
15
- result->sample = TransformSampleOptions(root->sample);
13
+ result->alias = TransformAlias(root.alias, result->column_name_alias);
14
+ if (root.sample) {
15
+ result->sample = TransformSampleOptions(root.sample);
16
16
  }
17
17
  return std::move(result);
18
18
  }
@@ -4,19 +4,19 @@
4
4
 
5
5
  namespace duckdb {
6
6
 
7
- unique_ptr<TableRef> Transformer::TransformRangeFunction(duckdb_libpgquery::PGRangeFunction *root) {
8
- if (root->ordinality) {
7
+ unique_ptr<TableRef> Transformer::TransformRangeFunction(duckdb_libpgquery::PGRangeFunction &root) {
8
+ if (root.ordinality) {
9
9
  throw NotImplementedException("WITH ORDINALITY not implemented");
10
10
  }
11
- if (root->is_rowsfrom) {
11
+ if (root.is_rowsfrom) {
12
12
  throw NotImplementedException("ROWS FROM() not implemented");
13
13
  }
14
- if (root->functions->length != 1) {
14
+ if (root.functions->length != 1) {
15
15
  throw NotImplementedException("Need exactly one function");
16
16
  }
17
- auto function_sublist = (duckdb_libpgquery::PGList *)root->functions->head->data.ptr_value;
17
+ auto function_sublist = PGPointerCast<duckdb_libpgquery::PGList>(root.functions->head->data.ptr_value);
18
18
  D_ASSERT(function_sublist->length == 2);
19
- auto call_tree = (duckdb_libpgquery::PGNode *)function_sublist->head->data.ptr_value;
19
+ auto call_tree = PGPointerCast<duckdb_libpgquery::PGNode>(function_sublist->head->data.ptr_value);
20
20
  auto coldef = function_sublist->head->next->data.ptr_value;
21
21
 
22
22
  if (coldef) {
@@ -26,20 +26,21 @@ unique_ptr<TableRef> Transformer::TransformRangeFunction(duckdb_libpgquery::PGRa
26
26
  auto result = make_uniq<TableFunctionRef>();
27
27
  switch (call_tree->type) {
28
28
  case duckdb_libpgquery::T_PGFuncCall: {
29
- auto func_call = (duckdb_libpgquery::PGFuncCall *)call_tree;
30
- result->function = TransformFuncCall(func_call);
29
+ auto func_call = PGPointerCast<duckdb_libpgquery::PGFuncCall>(call_tree.get());
30
+ result->function = TransformFuncCall(*func_call);
31
31
  result->query_location = func_call->location;
32
32
  break;
33
33
  }
34
34
  case duckdb_libpgquery::T_PGSQLValueFunction:
35
- result->function = TransformSQLValueFunction((duckdb_libpgquery::PGSQLValueFunction *)call_tree);
35
+ result->function =
36
+ TransformSQLValueFunction(*PGPointerCast<duckdb_libpgquery::PGSQLValueFunction>(call_tree.get()));
36
37
  break;
37
38
  default:
38
39
  throw ParserException("Not a function call or value function");
39
40
  }
40
- result->alias = TransformAlias(root->alias, result->column_name_alias);
41
- if (root->sample) {
42
- result->sample = TransformSampleOptions(root->sample);
41
+ result->alias = TransformAlias(root.alias, result->column_name_alias);
42
+ if (root.sample) {
43
+ result->sample = TransformSampleOptions(root.sample);
43
44
  }
44
45
  return std::move(result);
45
46
  }
@@ -4,22 +4,22 @@
4
4
 
5
5
  namespace duckdb {
6
6
 
7
- unique_ptr<TableRef> Transformer::TransformTableRefNode(duckdb_libpgquery::PGNode *n) {
7
+ unique_ptr<TableRef> Transformer::TransformTableRefNode(duckdb_libpgquery::PGNode &n) {
8
8
  auto stack_checker = StackCheck();
9
9
 
10
- switch (n->type) {
10
+ switch (n.type) {
11
11
  case duckdb_libpgquery::T_PGRangeVar:
12
- return TransformRangeVar(reinterpret_cast<duckdb_libpgquery::PGRangeVar *>(n));
12
+ return TransformRangeVar(PGCast<duckdb_libpgquery::PGRangeVar>(n));
13
13
  case duckdb_libpgquery::T_PGJoinExpr:
14
- return TransformJoin(reinterpret_cast<duckdb_libpgquery::PGJoinExpr *>(n));
14
+ return TransformJoin(PGCast<duckdb_libpgquery::PGJoinExpr>(n));
15
15
  case duckdb_libpgquery::T_PGRangeSubselect:
16
- return TransformRangeSubselect(reinterpret_cast<duckdb_libpgquery::PGRangeSubselect *>(n));
16
+ return TransformRangeSubselect(PGCast<duckdb_libpgquery::PGRangeSubselect>(n));
17
17
  case duckdb_libpgquery::T_PGRangeFunction:
18
- return TransformRangeFunction(reinterpret_cast<duckdb_libpgquery::PGRangeFunction *>(n));
18
+ return TransformRangeFunction(PGCast<duckdb_libpgquery::PGRangeFunction>(n));
19
19
  case duckdb_libpgquery::T_PGPivotExpr:
20
- return TransformPivot(reinterpret_cast<duckdb_libpgquery::PGPivotExpr *>(n));
20
+ return TransformPivot(PGCast<duckdb_libpgquery::PGPivotExpr>(n));
21
21
  default:
22
- throw NotImplementedException("From Type %d not supported", n->type);
22
+ throw NotImplementedException("From Type %d not supported", n.type);
23
23
  }
24
24
  }
25
25
 
@@ -42,8 +42,8 @@ bool Transformer::TransformParseTree(duckdb_libpgquery::PGList *tree, vector<uni
42
42
  InitializeStackCheck();
43
43
  for (auto entry = tree->head; entry != nullptr; entry = entry->next) {
44
44
  Clear();
45
- auto n = (duckdb_libpgquery::PGNode *)entry->data.ptr_value;
46
- auto stmt = TransformStatement(n);
45
+ auto n = PGPointerCast<duckdb_libpgquery::PGNode>(entry->data.ptr_value);
46
+ auto stmt = TransformStatement(*n);
47
47
  D_ASSERT(stmt);
48
48
  if (HasPivotEntries()) {
49
49
  stmt = CreatePivotStatement(std::move(stmt));
@@ -69,7 +69,7 @@ StackChecker Transformer::StackCheck(idx_t extra_stack) {
69
69
  return StackChecker(root, extra_stack);
70
70
  }
71
71
 
72
- unique_ptr<SQLStatement> Transformer::TransformStatement(duckdb_libpgquery::PGNode *stmt) {
72
+ unique_ptr<SQLStatement> Transformer::TransformStatement(duckdb_libpgquery::PGNode &stmt) {
73
73
  auto result = TransformStatementInternal(stmt);
74
74
  result->n_param = ParamCount();
75
75
  if (!named_param_map.empty()) {
@@ -123,91 +123,89 @@ bool Transformer::HasNamedParameters() const {
123
123
  return !root.named_param_map.empty();
124
124
  }
125
125
 
126
- unique_ptr<SQLStatement> Transformer::TransformStatementInternal(duckdb_libpgquery::PGNode *stmt) {
127
- switch (stmt->type) {
126
+ unique_ptr<SQLStatement> Transformer::TransformStatementInternal(duckdb_libpgquery::PGNode &stmt) {
127
+ switch (stmt.type) {
128
128
  case duckdb_libpgquery::T_PGRawStmt: {
129
- auto raw_stmt = (duckdb_libpgquery::PGRawStmt *)stmt;
130
- auto result = TransformStatement(raw_stmt->stmt);
129
+ auto &raw_stmt = PGCast<duckdb_libpgquery::PGRawStmt>(stmt);
130
+ auto result = TransformStatement(*raw_stmt.stmt);
131
131
  if (result) {
132
- result->stmt_location = raw_stmt->stmt_location;
133
- result->stmt_length = raw_stmt->stmt_len;
132
+ result->stmt_location = raw_stmt.stmt_location;
133
+ result->stmt_length = raw_stmt.stmt_len;
134
134
  }
135
135
  return result;
136
136
  }
137
137
  case duckdb_libpgquery::T_PGSelectStmt:
138
- return TransformSelect(stmt);
138
+ return TransformSelect(PGCast<duckdb_libpgquery::PGSelectStmt>(stmt));
139
139
  case duckdb_libpgquery::T_PGCreateStmt:
140
- return TransformCreateTable(stmt);
140
+ return TransformCreateTable(PGCast<duckdb_libpgquery::PGCreateStmt>(stmt));
141
141
  case duckdb_libpgquery::T_PGCreateSchemaStmt:
142
- return TransformCreateSchema(stmt);
142
+ return TransformCreateSchema(PGCast<duckdb_libpgquery::PGCreateSchemaStmt>(stmt));
143
143
  case duckdb_libpgquery::T_PGViewStmt:
144
- return TransformCreateView(stmt);
144
+ return TransformCreateView(PGCast<duckdb_libpgquery::PGViewStmt>(stmt));
145
145
  case duckdb_libpgquery::T_PGCreateSeqStmt:
146
- return TransformCreateSequence(stmt);
146
+ return TransformCreateSequence(PGCast<duckdb_libpgquery::PGCreateSeqStmt>(stmt));
147
147
  case duckdb_libpgquery::T_PGCreateFunctionStmt:
148
- return TransformCreateFunction(stmt);
148
+ return TransformCreateFunction(PGCast<duckdb_libpgquery::PGCreateFunctionStmt>(stmt));
149
149
  case duckdb_libpgquery::T_PGDropStmt:
150
- return TransformDrop(stmt);
150
+ return TransformDrop(PGCast<duckdb_libpgquery::PGDropStmt>(stmt));
151
151
  case duckdb_libpgquery::T_PGInsertStmt:
152
- return TransformInsert(stmt);
152
+ return TransformInsert(PGCast<duckdb_libpgquery::PGInsertStmt>(stmt));
153
153
  case duckdb_libpgquery::T_PGCopyStmt:
154
- return TransformCopy(stmt);
154
+ return TransformCopy(PGCast<duckdb_libpgquery::PGCopyStmt>(stmt));
155
155
  case duckdb_libpgquery::T_PGTransactionStmt:
156
- return TransformTransaction(stmt);
156
+ return TransformTransaction(PGCast<duckdb_libpgquery::PGTransactionStmt>(stmt));
157
157
  case duckdb_libpgquery::T_PGDeleteStmt:
158
- return TransformDelete(stmt);
158
+ return TransformDelete(PGCast<duckdb_libpgquery::PGDeleteStmt>(stmt));
159
159
  case duckdb_libpgquery::T_PGUpdateStmt:
160
- return TransformUpdate(stmt);
160
+ return TransformUpdate(PGCast<duckdb_libpgquery::PGUpdateStmt>(stmt));
161
161
  case duckdb_libpgquery::T_PGIndexStmt:
162
- return TransformCreateIndex(stmt);
162
+ return TransformCreateIndex(PGCast<duckdb_libpgquery::PGIndexStmt>(stmt));
163
163
  case duckdb_libpgquery::T_PGAlterTableStmt:
164
- return TransformAlter(stmt);
164
+ return TransformAlter(PGCast<duckdb_libpgquery::PGAlterTableStmt>(stmt));
165
165
  case duckdb_libpgquery::T_PGRenameStmt:
166
- return TransformRename(stmt);
166
+ return TransformRename(PGCast<duckdb_libpgquery::PGRenameStmt>(stmt));
167
167
  case duckdb_libpgquery::T_PGPrepareStmt:
168
- return TransformPrepare(stmt);
168
+ return TransformPrepare(PGCast<duckdb_libpgquery::PGPrepareStmt>(stmt));
169
169
  case duckdb_libpgquery::T_PGExecuteStmt:
170
- return TransformExecute(stmt);
170
+ return TransformExecute(PGCast<duckdb_libpgquery::PGExecuteStmt>(stmt));
171
171
  case duckdb_libpgquery::T_PGDeallocateStmt:
172
- return TransformDeallocate(stmt);
172
+ return TransformDeallocate(PGCast<duckdb_libpgquery::PGDeallocateStmt>(stmt));
173
173
  case duckdb_libpgquery::T_PGCreateTableAsStmt:
174
- return TransformCreateTableAs(stmt);
174
+ return TransformCreateTableAs(PGCast<duckdb_libpgquery::PGCreateTableAsStmt>(stmt));
175
175
  case duckdb_libpgquery::T_PGPragmaStmt:
176
- return TransformPragma(stmt);
176
+ return TransformPragma(PGCast<duckdb_libpgquery::PGPragmaStmt>(stmt));
177
177
  case duckdb_libpgquery::T_PGExportStmt:
178
- return TransformExport(stmt);
178
+ return TransformExport(PGCast<duckdb_libpgquery::PGExportStmt>(stmt));
179
179
  case duckdb_libpgquery::T_PGImportStmt:
180
- return TransformImport(stmt);
180
+ return TransformImport(PGCast<duckdb_libpgquery::PGImportStmt>(stmt));
181
181
  case duckdb_libpgquery::T_PGExplainStmt:
182
- return TransformExplain(stmt);
182
+ return TransformExplain(PGCast<duckdb_libpgquery::PGExplainStmt>(stmt));
183
183
  case duckdb_libpgquery::T_PGVacuumStmt:
184
- return TransformVacuum(stmt);
184
+ return TransformVacuum(PGCast<duckdb_libpgquery::PGVacuumStmt>(stmt));
185
185
  case duckdb_libpgquery::T_PGVariableShowStmt:
186
- return TransformShow(stmt);
186
+ return TransformShow(PGCast<duckdb_libpgquery::PGVariableShowStmt>(stmt));
187
187
  case duckdb_libpgquery::T_PGVariableShowSelectStmt:
188
- return TransformShowSelect(stmt);
188
+ return TransformShowSelect(PGCast<duckdb_libpgquery::PGVariableShowSelectStmt>(stmt));
189
189
  case duckdb_libpgquery::T_PGCallStmt:
190
- return TransformCall(stmt);
190
+ return TransformCall(PGCast<duckdb_libpgquery::PGCallStmt>(stmt));
191
191
  case duckdb_libpgquery::T_PGVariableSetStmt:
192
- return TransformSet(stmt);
192
+ return TransformSet(PGCast<duckdb_libpgquery::PGVariableSetStmt>(stmt));
193
193
  case duckdb_libpgquery::T_PGCheckPointStmt:
194
- return TransformCheckpoint(stmt);
194
+ return TransformCheckpoint(PGCast<duckdb_libpgquery::PGCheckPointStmt>(stmt));
195
195
  case duckdb_libpgquery::T_PGLoadStmt:
196
- return TransformLoad(stmt);
196
+ return TransformLoad(PGCast<duckdb_libpgquery::PGLoadStmt>(stmt));
197
197
  case duckdb_libpgquery::T_PGCreateTypeStmt:
198
- return TransformCreateType(stmt);
198
+ return TransformCreateType(PGCast<duckdb_libpgquery::PGCreateTypeStmt>(stmt));
199
199
  case duckdb_libpgquery::T_PGAlterSeqStmt:
200
- return TransformAlterSequence(stmt);
200
+ return TransformAlterSequence(PGCast<duckdb_libpgquery::PGAlterSeqStmt>(stmt));
201
201
  case duckdb_libpgquery::T_PGAttachStmt:
202
- return TransformAttach(stmt);
202
+ return TransformAttach(PGCast<duckdb_libpgquery::PGAttachStmt>(stmt));
203
203
  case duckdb_libpgquery::T_PGDetachStmt:
204
- return TransformDetach(stmt);
204
+ return TransformDetach(PGCast<duckdb_libpgquery::PGDetachStmt>(stmt));
205
205
  case duckdb_libpgquery::T_PGUseStmt:
206
- return TransformUse(stmt);
207
- case duckdb_libpgquery::T_PGCreateDatabaseStmt:
208
- return TransformCreateDatabase(stmt);
206
+ return TransformUse(PGCast<duckdb_libpgquery::PGUseStmt>(stmt));
209
207
  default:
210
- throw NotImplementedException(NodetypeToString(stmt->type));
208
+ throw NotImplementedException(NodetypeToString(stmt.type));
211
209
  }
212
210
  }
213
211
 
@@ -12,6 +12,7 @@
12
12
  #include "duckdb/parser/tableref/table_function_ref.hpp"
13
13
  #include "duckdb/planner/bound_query_node.hpp"
14
14
  #include "duckdb/planner/expression/bound_columnref_expression.hpp"
15
+ #include "duckdb/catalog/catalog_entry/view_catalog_entry.hpp"
15
16
  #include "duckdb/catalog/catalog_entry/table_catalog_entry.hpp"
16
17
  #include "duckdb/planner/expression_binder/constant_binder.hpp"
17
18
 
@@ -161,7 +162,7 @@ unique_ptr<ParsedExpression> BindContext::ExpandGeneratedColumn(const string &ta
161
162
 
162
163
  auto binding = GetBinding(table_name, error_message);
163
164
  D_ASSERT(binding);
164
- auto &table_binding = (TableBinding &)*binding;
165
+ auto &table_binding = binding->Cast<TableBinding>();
165
166
  auto result = table_binding.ExpandGeneratedColumn(column_name);
166
167
  result->alias = column_name;
167
168
  return result;
@@ -176,7 +177,7 @@ static bool ColumnIsGenerated(Binding &binding, column_t index) {
176
177
  if (binding.binding_type != BindingType::TABLE) {
177
178
  return false;
178
179
  }
179
- auto &table_binding = (TableBinding &)binding;
180
+ auto &table_binding = binding.Cast<TableBinding>();
180
181
  auto catalog_entry = table_binding.GetStandardEntry();
181
182
  if (!catalog_entry) {
182
183
  return false;
@@ -285,15 +286,14 @@ string BindContext::BindColumn(PositionalReferenceExpression &ref, string &table
285
286
  return StringUtil::Format("Positional reference %d out of range (total %d columns)", ref.index, total_columns);
286
287
  }
287
288
 
288
- BindResult BindContext::BindColumn(PositionalReferenceExpression &ref, idx_t depth) {
289
+ unique_ptr<ColumnRefExpression> BindContext::PositionToColumn(PositionalReferenceExpression &ref) {
289
290
  string table_name, column_name;
290
291
 
291
292
  string error = BindColumn(ref, table_name, column_name);
292
293
  if (!error.empty()) {
293
- return BindResult(error);
294
+ throw BinderException(error);
294
295
  }
295
- auto column_ref = make_uniq<ColumnRefExpression>(column_name, table_name);
296
- return BindColumn(*column_ref, depth);
296
+ return make_uniq<ColumnRefExpression>(column_name, table_name);
297
297
  }
298
298
 
299
299
  bool BindContext::CheckExclusionList(StarExpression &expr, const string &column_name,
@@ -483,15 +483,14 @@ void BindContext::AddSubquery(idx_t index, const string &alias, SubqueryRef &ref
483
483
  }
484
484
 
485
485
  void BindContext::AddEntryBinding(idx_t index, const string &alias, const vector<string> &names,
486
- const vector<LogicalType> &types, StandardEntry *entry) {
487
- D_ASSERT(entry);
488
- AddBinding(alias, make_uniq<EntryBinding>(alias, types, names, index, *entry));
486
+ const vector<LogicalType> &types, StandardEntry &entry) {
487
+ AddBinding(alias, make_uniq<EntryBinding>(alias, types, names, index, entry));
489
488
  }
490
489
 
491
490
  void BindContext::AddView(idx_t index, const string &alias, SubqueryRef &ref, BoundQueryNode &subquery,
492
491
  ViewCatalogEntry *view) {
493
492
  auto names = AliasColumnNames(alias, subquery.names, ref.column_name_alias);
494
- AddEntryBinding(index, alias, names, subquery.types, (StandardEntry *)view);
493
+ AddEntryBinding(index, alias, names, subquery.types, view->Cast<StandardEntry>());
495
494
  }
496
495
 
497
496
  void BindContext::AddSubquery(idx_t index, const string &alias, TableFunctionRef &ref, BoundQueryNode &subquery) {
@@ -189,7 +189,7 @@ BindResult ExpressionBinder::BindLambdaFunction(FunctionExpression &function, Sc
189
189
  }
190
190
 
191
191
  // capture the (lambda) columns
192
- auto &bound_lambda_expr = (BoundLambdaExpression &)*children.back();
192
+ auto &bound_lambda_expr = children.back()->Cast<BoundLambdaExpression>();
193
193
  CaptureLambdaColumns(bound_lambda_expr.captures, list_child_type, bound_lambda_expr.lambda_expr);
194
194
 
195
195
  FunctionBinder function_binder(context);
@@ -110,7 +110,7 @@ void ExpressionBinder::TransformCapturedLambdaColumn(unique_ptr<Expression> &ori
110
110
  if (original->expression_class == ExpressionClass::BOUND_LAMBDA_REF) {
111
111
 
112
112
  // determine if this is the lambda parameter
113
- auto &bound_lambda_ref = (BoundLambdaRefExpression &)*original;
113
+ auto &bound_lambda_ref = original->Cast<BoundLambdaRefExpression>();
114
114
  auto alias = bound_lambda_ref.alias;
115
115
 
116
116
  if (lambda_bindings && bound_lambda_ref.lambda_index != lambda_bindings->size()) {
@@ -4,11 +4,16 @@
4
4
 
5
5
  namespace duckdb {
6
6
 
7
- BindResult ExpressionBinder::BindExpression(PositionalReferenceExpression &ref, idx_t depth) {
7
+ BindResult ExpressionBinder::BindPositionalReference(unique_ptr<ParsedExpression> &expr, idx_t depth,
8
+ bool root_expression) {
9
+ auto &ref = expr->Cast<PositionalReferenceExpression>();
8
10
  if (depth != 0) {
9
- return BindResult("Positional reference expression could not be bound");
11
+ throw InternalException("Positional reference expression could not be bound");
10
12
  }
11
- return binder.bind_context.BindColumn(ref, depth);
13
+ // replace the positional reference with a column
14
+ auto column = binder.bind_context.PositionToColumn(ref);
15
+ expr = std::move(column);
16
+ return BindExpression(expr, depth, root_expression);
12
17
  }
13
18
 
14
19
  } // namespace duckdb
@@ -55,7 +55,7 @@ bool Binder::FindStarExpression(unique_ptr<ParsedExpression> &expr, StarExpressi
55
55
  in_columns = true;
56
56
  if (*star) {
57
57
  // we can have multiple
58
- if (!StarExpression::Equal(*star, &current_star)) {
58
+ if (!(*star)->Equals(current_star)) {
59
59
  throw BinderException(
60
60
  FormatError(*expr, "Multiple different STAR/COLUMNS in the same expression are not supported"));
61
61
  }
@@ -8,6 +8,9 @@
8
8
  namespace duckdb {
9
9
 
10
10
  class BoundSubqueryNode : public QueryNode {
11
+ public:
12
+ static constexpr const QueryNodeType TYPE = QueryNodeType::BOUND_SUBQUERY_NODE;
13
+
11
14
  public:
12
15
  BoundSubqueryNode(shared_ptr<Binder> subquery_binder, unique_ptr<BoundQueryNode> bound_node,
13
16
  unique_ptr<SelectStatement> subquery)
@@ -74,9 +77,9 @@ BindResult ExpressionBinder::BindExpression(SubqueryExpression &expr, idx_t dept
74
77
  }
75
78
  // both binding the child and binding the subquery was successful
76
79
  D_ASSERT(expr.subquery->node->type == QueryNodeType::BOUND_SUBQUERY_NODE);
77
- auto bound_subquery = (BoundSubqueryNode *)expr.subquery->node.get();
78
- auto subquery_binder = std::move(bound_subquery->subquery_binder);
79
- auto bound_node = std::move(bound_subquery->bound_node);
80
+ auto &bound_subquery = expr.subquery->node->Cast<BoundSubqueryNode>();
81
+ auto subquery_binder = std::move(bound_subquery.subquery_binder);
82
+ auto bound_node = std::move(bound_subquery.bound_node);
80
83
  LogicalType return_type =
81
84
  expr.subquery_type == SubqueryType::SCALAR ? bound_node->types[0] : LogicalType(LogicalTypeId::BOOLEAN);
82
85
  if (return_type.id() == LogicalTypeId::UNKNOWN) {
@@ -113,7 +113,7 @@ void Binder::BindModifiers(OrderBinder &order_binder, QueryNode &statement, Boun
113
113
  unique_ptr<BoundResultModifier> bound_modifier;
114
114
  switch (mod->type) {
115
115
  case ResultModifierType::DISTINCT_MODIFIER: {
116
- auto &distinct = (DistinctModifier &)*mod;
116
+ auto &distinct = mod->Cast<DistinctModifier>();
117
117
  auto bound_distinct = make_uniq<BoundDistinctModifier>();
118
118
  bound_distinct->distinct_type =
119
119
  distinct.distinct_on_targets.empty() ? DistinctType::DISTINCT : DistinctType::DISTINCT_ON;
@@ -133,7 +133,7 @@ void Binder::BindModifiers(OrderBinder &order_binder, QueryNode &statement, Boun
133
133
  break;
134
134
  }
135
135
  case ResultModifierType::ORDER_MODIFIER: {
136
- auto &order = (OrderModifier &)*mod;
136
+ auto &order = mod->Cast<OrderModifier>();
137
137
  auto bound_order = make_uniq<BoundOrderModifier>();
138
138
  auto &config = DBConfig::GetConfig(context);
139
139
  D_ASSERT(!order.orders.empty());
@@ -174,10 +174,10 @@ void Binder::BindModifiers(OrderBinder &order_binder, QueryNode &statement, Boun
174
174
  break;
175
175
  }
176
176
  case ResultModifierType::LIMIT_MODIFIER:
177
- bound_modifier = BindLimit(order_binder, (LimitModifier &)*mod);
177
+ bound_modifier = BindLimit(order_binder, mod->Cast<LimitModifier>());
178
178
  break;
179
179
  case ResultModifierType::LIMIT_PERCENT_MODIFIER:
180
- bound_modifier = BindLimitPercent(order_binder, (LimitPercentModifier &)*mod);
180
+ bound_modifier = BindLimitPercent(order_binder, mod->Cast<LimitPercentModifier>());
181
181
  break;
182
182
  default:
183
183
  throw Exception("Unsupported result modifier");
@@ -203,7 +203,7 @@ void Binder::BindModifierTypes(BoundQueryNode &result, const vector<LogicalType>
203
203
  for (auto &bound_mod : result.modifiers) {
204
204
  switch (bound_mod->type) {
205
205
  case ResultModifierType::DISTINCT_MODIFIER: {
206
- auto &distinct = (BoundDistinctModifier &)*bound_mod;
206
+ auto &distinct = bound_mod->Cast<BoundDistinctModifier>();
207
207
  D_ASSERT(!distinct.target_distincts.empty());
208
208
  // set types of distinct targets
209
209
  for (auto &expr : distinct.target_distincts) {
@@ -226,19 +226,19 @@ void Binder::BindModifierTypes(BoundQueryNode &result, const vector<LogicalType>
226
226
  break;
227
227
  }
228
228
  case ResultModifierType::LIMIT_MODIFIER: {
229
- auto &limit = (BoundLimitModifier &)*bound_mod;
229
+ auto &limit = bound_mod->Cast<BoundLimitModifier>();
230
230
  AssignReturnType(limit.limit, sql_types);
231
231
  AssignReturnType(limit.offset, sql_types);
232
232
  break;
233
233
  }
234
234
  case ResultModifierType::LIMIT_PERCENT_MODIFIER: {
235
- auto &limit = (BoundLimitPercentModifier &)*bound_mod;
235
+ auto &limit = bound_mod->Cast<BoundLimitPercentModifier>();
236
236
  AssignReturnType(limit.limit, sql_types);
237
237
  AssignReturnType(limit.offset, sql_types);
238
238
  break;
239
239
  }
240
240
  case ResultModifierType::ORDER_MODIFIER: {
241
- auto &order = (BoundOrderModifier &)*bound_mod;
241
+ auto &order = bound_mod->Cast<BoundOrderModifier>();
242
242
  for (auto &order_node : order.orders) {
243
243
  auto &expr = order_node.expression;
244
244
  D_ASSERT(expr->type == ExpressionType::BOUND_COLUMN_REF);
@@ -13,14 +13,14 @@ unique_ptr<LogicalOperator> Binder::VisitQueryNode(BoundQueryNode &node, unique_
13
13
  for (auto &mod : node.modifiers) {
14
14
  switch (mod->type) {
15
15
  case ResultModifierType::DISTINCT_MODIFIER: {
16
- auto &bound = (BoundDistinctModifier &)*mod;
16
+ auto &bound = mod->Cast<BoundDistinctModifier>();
17
17
  auto distinct = make_uniq<LogicalDistinct>(std::move(bound.target_distincts), bound.distinct_type);
18
18
  distinct->AddChild(std::move(root));
19
19
  root = std::move(distinct);
20
20
  break;
21
21
  }
22
22
  case ResultModifierType::ORDER_MODIFIER: {
23
- auto &bound = (BoundOrderModifier &)*mod;
23
+ auto &bound = mod->Cast<BoundOrderModifier>();
24
24
  if (root->type == LogicalOperatorType::LOGICAL_DISTINCT) {
25
25
  auto &distinct = root->Cast<LogicalDistinct>();
26
26
  if (distinct.distinct_type == DistinctType::DISTINCT_ON) {
@@ -37,7 +37,7 @@ unique_ptr<LogicalOperator> Binder::VisitQueryNode(BoundQueryNode &node, unique_
37
37
  break;
38
38
  }
39
39
  case ResultModifierType::LIMIT_MODIFIER: {
40
- auto &bound = (BoundLimitModifier &)*mod;
40
+ auto &bound = mod->Cast<BoundLimitModifier>();
41
41
  auto limit = make_uniq<LogicalLimit>(bound.limit_val, bound.offset_val, std::move(bound.limit),
42
42
  std::move(bound.offset));
43
43
  limit->AddChild(std::move(root));
@@ -45,7 +45,7 @@ unique_ptr<LogicalOperator> Binder::VisitQueryNode(BoundQueryNode &node, unique_
45
45
  break;
46
46
  }
47
47
  case ResultModifierType::LIMIT_PERCENT_MODIFIER: {
48
- auto &bound = (BoundLimitPercentModifier &)*mod;
48
+ auto &bound = mod->Cast<BoundLimitPercentModifier>();
49
49
  auto limit = make_uniq<LogicalLimitPercent>(bound.limit_percent, bound.offset_val, std::move(bound.limit),
50
50
  std::move(bound.offset));
51
51
  limit->AddChild(std::move(root));