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
@@ -67,7 +67,7 @@ void DeliminatorPlanUpdater::VisitOperator(LogicalOperator &op) {
67
67
  VisitOperatorExpressions(op);
68
68
  if (op.type == LogicalOperatorType::LOGICAL_DELIM_JOIN && DelimGetCount(op) == 0) {
69
69
  auto &delim_join = op.Cast<LogicalDelimJoin>();
70
- auto decs = &delim_join.duplicate_eliminated_columns;
70
+ auto &decs = delim_join.duplicate_eliminated_columns;
71
71
  for (auto &cond : delim_join.conditions) {
72
72
  if (!IsEqualityJoinCondition(cond)) {
73
73
  continue;
@@ -83,10 +83,10 @@ void DeliminatorPlanUpdater::VisitOperator(LogicalOperator &op) {
83
83
  auto &colref = rhs->Cast<BoundColumnRefExpression>();
84
84
  if (projection_map.find(colref.binding) != projection_map.end()) {
85
85
  // value on the right is a projection of removed DelimGet
86
- for (idx_t i = 0; i < decs->size(); i++) {
87
- if (decs->at(i)->Equals(cond.left.get())) {
86
+ for (idx_t i = 0; i < decs.size(); i++) {
87
+ if (decs[i]->Equals(*cond.left)) {
88
88
  // the value on the left no longer needs to be a duplicate-eliminated column
89
- decs->erase(decs->begin() + i);
89
+ decs.erase(decs.begin() + i);
90
90
  break;
91
91
  }
92
92
  }
@@ -95,7 +95,7 @@ void DeliminatorPlanUpdater::VisitOperator(LogicalOperator &op) {
95
95
  }
96
96
  }
97
97
  // change type if there are no more duplicate-eliminated columns
98
- if (decs->empty()) {
98
+ if (decs.empty()) {
99
99
  delim_join.type = LogicalOperatorType::LOGICAL_COMPARISON_JOIN;
100
100
  // sub-plans with DelimGets are not re-orderable (yet), however, we removed all DelimGet of this DelimJoin
101
101
  // the DelimGets are on the RHS of the DelimJoin, so we can call the JoinOrderOptimizer on the RHS now
@@ -198,9 +198,9 @@ bool Deliminator::RemoveCandidate(unique_ptr<LogicalOperator> *plan, unique_ptr<
198
198
  idx_t delim_idx = OperatorIsDelimGet(*join.children[0]) ? 0 : 1;
199
199
  D_ASSERT(OperatorIsDelimGet(*join.children[delim_idx]));
200
200
  // get the filter (if any)
201
- LogicalFilter *filter = nullptr;
201
+ optional_ptr<LogicalFilter> filter;
202
202
  if (join.children[delim_idx]->type == LogicalOperatorType::LOGICAL_FILTER) {
203
- filter = (LogicalFilter *)join.children[delim_idx].get();
203
+ filter = &join.children[delim_idx]->Cast<LogicalFilter>();
204
204
  }
205
205
  auto &delim_get = (filter ? filter->children[0] : join.children[delim_idx])->Cast<LogicalDelimGet>();
206
206
  if (join.conditions.size() != delim_get.chunk_types.size()) {
@@ -231,7 +231,7 @@ bool Deliminator::RemoveCandidate(unique_ptr<LogicalOperator> *plan, unique_ptr<
231
231
  updater.projection_map[cb] = true;
232
232
  updater.reverse_proj_or_agg_map[cb] = proj_or_agg.expressions[cb.column_index].get();
233
233
  for (auto &expr : nulls_are_not_equal_exprs) {
234
- if (proj_or_agg.expressions[cb.column_index]->Equals(&expr.get())) {
234
+ if (proj_or_agg.expressions[cb.column_index]->Equals(expr.get())) {
235
235
  updater.projection_map[cb] = false;
236
236
  break;
237
237
  }
@@ -254,8 +254,8 @@ bool Deliminator::RemoveCandidate(unique_ptr<LogicalOperator> *plan, unique_ptr<
254
254
  updater.projection_map[cb] = true;
255
255
  updater.reverse_proj_or_agg_map[cb] = all_agg_exprs[cb.column_index];
256
256
  for (auto &expr : nulls_are_not_equal_exprs) {
257
- if ((cb.table_index == agg.group_index && agg.groups[cb.column_index]->Equals(&expr.get())) ||
258
- (cb.table_index == agg.aggregate_index && agg.expressions[cb.column_index]->Equals(&expr.get()))) {
257
+ if ((cb.table_index == agg.group_index && agg.groups[cb.column_index]->Equals(expr.get())) ||
258
+ (cb.table_index == agg.aggregate_index && agg.expressions[cb.column_index]->Equals(expr.get()))) {
259
259
  updater.projection_map[cb] = false;
260
260
  break;
261
261
  }
@@ -386,7 +386,7 @@ bool Deliminator::RemoveInequalityCandidate(unique_ptr<LogicalOperator> *plan, u
386
386
  }
387
387
  // try to find the corresponding child condition
388
388
  // TODO: can be more flexible - allow CAST
389
- auto child_expr = it->second;
389
+ auto &child_expr = *it->second;
390
390
  bool found = false;
391
391
  for (auto &child_cond : join.conditions) {
392
392
  if (child_cond.left->Equals(child_expr) || child_cond.right->Equals(child_expr)) {
@@ -418,7 +418,7 @@ bool Deliminator::RemoveInequalityCandidate(unique_ptr<LogicalOperator> *plan, u
418
418
  auto &parent_expr = parent_delim_get_side == 0 ? parent_cond.left : parent_cond.right;
419
419
  auto &parent_colref = parent_expr->Cast<BoundColumnRefExpression>();
420
420
  auto it = updater.reverse_proj_or_agg_map.find(parent_colref.binding);
421
- auto child_expr = it->second;
421
+ auto &child_expr = *it->second;
422
422
  for (auto &child_cond : join.conditions) {
423
423
  if (!child_cond.left->Equals(child_expr) && !child_cond.right->Equals(child_expr)) {
424
424
  continue;
@@ -42,6 +42,7 @@ void ExpressionHeuristics::ReorderExpressions(vector<unique_ptr<Expression>> &ex
42
42
  };
43
43
 
44
44
  vector<ExpressionCosts> expression_costs;
45
+ expression_costs.reserve(expressions.size());
45
46
  // iterate expressions, get cost for each one
46
47
  for (idx_t i = 0; i < expressions.size(); i++) {
47
48
  idx_t cost = Cost(*expressions[i]);
@@ -635,7 +635,7 @@ FilterResult FilterCombiner::AddBoundComparisonFilter(Expression &expr) {
635
635
  // get the LHS and RHS nodes
636
636
  auto &left_node = GetNode(*comparison.left);
637
637
  auto &right_node = GetNode(*comparison.right);
638
- if (left_node.Equals(&right_node)) {
638
+ if (left_node.Equals(right_node)) {
639
639
  return FilterResult::UNSUPPORTED;
640
640
  }
641
641
  // get the equivalence sets of the LHS and RHS
@@ -806,7 +806,7 @@ FilterResult FilterCombiner::AddTransitiveFilters(BoundComparisonExpression &com
806
806
  }
807
807
  }
808
808
 
809
- if (left_node.Equals(&right_node.get())) {
809
+ if (left_node.Equals(right_node)) {
810
810
  return FilterResult::UNSUPPORTED;
811
811
  }
812
812
  // get the equivalence sets of the LHS and RHS
@@ -903,7 +903,7 @@ unique_ptr<Expression> FilterCombiner::FindTransitiveFilter(Expression &expr) {
903
903
  for (idx_t i = 0; i < remaining_filters.size(); i++) {
904
904
  if (remaining_filters[i]->GetExpressionClass() == ExpressionClass::BOUND_COMPARISON) {
905
905
  auto &comparison = remaining_filters[i]->Cast<BoundComparisonExpression>();
906
- if (expr.Equals(comparison.right.get()) && comparison.type != ExpressionType::COMPARE_NOTEQUAL) {
906
+ if (expr.Equals(*comparison.right) && comparison.type != ExpressionType::COMPARE_NOTEQUAL) {
907
907
  auto filter = std::move(remaining_filters[i]);
908
908
  remaining_filters.erase(remaining_filters.begin() + i);
909
909
  return filter;
@@ -479,15 +479,15 @@ optional_ptr<TableFilterSet> CardinalityEstimator::GetTableFilters(LogicalOperat
479
479
  return get ? &get->table_filters : nullptr;
480
480
  }
481
481
 
482
- idx_t CardinalityEstimator::InspectConjunctionAND(idx_t cardinality, idx_t column_index, ConjunctionAndFilter *filter,
482
+ idx_t CardinalityEstimator::InspectConjunctionAND(idx_t cardinality, idx_t column_index, ConjunctionAndFilter &filter,
483
483
  unique_ptr<BaseStatistics> base_stats) {
484
484
  auto has_equality_filter = false;
485
485
  auto cardinality_after_filters = cardinality;
486
- for (auto &child_filter : filter->child_filters) {
486
+ for (auto &child_filter : filter.child_filters) {
487
487
  if (child_filter->filter_type != TableFilterType::CONSTANT_COMPARISON) {
488
488
  continue;
489
489
  }
490
- auto comparison_filter = (ConstantFilter &)*child_filter;
490
+ auto &comparison_filter = child_filter->Cast<ConstantFilter>();
491
491
  if (comparison_filter.comparison_type != ExpressionType::COMPARE_EQUAL) {
492
492
  continue;
493
493
  }
@@ -510,15 +510,15 @@ idx_t CardinalityEstimator::InspectConjunctionAND(idx_t cardinality, idx_t colum
510
510
  return cardinality_after_filters;
511
511
  }
512
512
 
513
- idx_t CardinalityEstimator::InspectConjunctionOR(idx_t cardinality, idx_t column_index, ConjunctionOrFilter *filter,
513
+ idx_t CardinalityEstimator::InspectConjunctionOR(idx_t cardinality, idx_t column_index, ConjunctionOrFilter &filter,
514
514
  unique_ptr<BaseStatistics> base_stats) {
515
515
  auto has_equality_filter = false;
516
516
  auto cardinality_after_filters = cardinality;
517
- for (auto &child_filter : filter->child_filters) {
517
+ for (auto &child_filter : filter.child_filters) {
518
518
  if (child_filter->filter_type != TableFilterType::CONSTANT_COMPARISON) {
519
519
  continue;
520
520
  }
521
- auto comparison_filter = (ConstantFilter &)*child_filter;
521
+ auto &comparison_filter = child_filter->Cast<ConstantFilter>();
522
522
  if (comparison_filter.comparison_type == ExpressionType::COMPARE_EQUAL) {
523
523
  auto column_count = cardinality_after_filters;
524
524
  if (base_stats) {
@@ -549,14 +549,14 @@ idx_t CardinalityEstimator::InspectTableFilters(idx_t cardinality, LogicalOperat
549
549
  column_statistics = get->function.statistics(context, &table_scan_bind_data, it.first);
550
550
  }
551
551
  if (it.second->filter_type == TableFilterType::CONJUNCTION_AND) {
552
- auto &filter = (ConjunctionAndFilter &)*it.second;
552
+ auto &filter = it.second->Cast<ConjunctionAndFilter>();
553
553
  idx_t cardinality_with_and_filter =
554
- InspectConjunctionAND(cardinality, it.first, &filter, std::move(column_statistics));
554
+ InspectConjunctionAND(cardinality, it.first, filter, std::move(column_statistics));
555
555
  cardinality_after_filters = MinValue(cardinality_after_filters, cardinality_with_and_filter);
556
556
  } else if (it.second->filter_type == TableFilterType::CONJUNCTION_OR) {
557
- auto &filter = (ConjunctionOrFilter &)*it.second;
557
+ auto &filter = it.second->Cast<ConjunctionOrFilter>();
558
558
  idx_t cardinality_with_or_filter =
559
- InspectConjunctionOR(cardinality, it.first, &filter, std::move(column_statistics));
559
+ InspectConjunctionOR(cardinality, it.first, filter, std::move(column_statistics));
560
560
  cardinality_after_filters = MinValue(cardinality_after_filters, cardinality_with_or_filter);
561
561
  }
562
562
  }
@@ -19,7 +19,7 @@ bool ExpressionMatcher::Match(Expression &expr, vector<reference<Expression>> &b
19
19
  }
20
20
 
21
21
  bool ExpressionEqualityMatcher::Match(Expression &expr, vector<reference<Expression>> &bindings) {
22
- if (!expr.Equals(&expression)) {
22
+ if (!expr.Equals(expression)) {
23
23
  return false;
24
24
  }
25
25
  bindings.push_back(expr);
@@ -24,8 +24,8 @@ static void ReplaceExpressionBinding(vector<unique_ptr<Expression>> &proj_expres
24
24
  BoundColumnRefExpression &colref = expr.Cast<BoundColumnRefExpression>();
25
25
  // find the corresponding column index in the projection expressions
26
26
  for (idx_t proj_idx = 0; proj_idx < proj_expressions.size(); proj_idx++) {
27
- auto proj_expr = proj_expressions[proj_idx].get();
28
- if (proj_expr->type == ExpressionType::BOUND_COLUMN_REF) {
27
+ auto &proj_expr = *proj_expressions[proj_idx];
28
+ if (proj_expr.type == ExpressionType::BOUND_COLUMN_REF) {
29
29
  if (colref.Equals(proj_expr)) {
30
30
  colref.binding.table_index = proj_table_idx;
31
31
  colref.binding.column_index = proj_idx;
@@ -39,12 +39,10 @@ unique_ptr<LogicalOperator> RegexRangeFilter::Rewrite(unique_ptr<LogicalOperator
39
39
  }
40
40
  auto filter_left = make_uniq<BoundComparisonExpression>(
41
41
  ExpressionType::COMPARE_GREATERTHANOREQUALTO, func.children[0]->Copy(),
42
- make_uniq<BoundConstantExpression>(
43
- Value::BLOB((const_data_ptr_t)info.range_min.c_str(), info.range_min.size())));
42
+ make_uniq<BoundConstantExpression>(Value::BLOB_RAW(info.range_min)));
44
43
  auto filter_right = make_uniq<BoundComparisonExpression>(
45
44
  ExpressionType::COMPARE_LESSTHANOREQUALTO, func.children[0]->Copy(),
46
- make_uniq<BoundConstantExpression>(
47
- Value::BLOB((const_data_ptr_t)info.range_max.c_str(), info.range_max.size())));
45
+ make_uniq<BoundConstantExpression>(Value::BLOB_RAW(info.range_max)));
48
46
  auto filter_expr = make_uniq<BoundConjunctionExpression>(ExpressionType::CONJUNCTION_AND,
49
47
  std::move(filter_left), std::move(filter_right));
50
48
 
@@ -33,7 +33,7 @@ unique_ptr<Expression> DistributivityRule::ExtractExpression(BoundConjunctionExp
33
33
  // AND, remove expression from the list
34
34
  auto &and_expr = child->Cast<BoundConjunctionExpression>();
35
35
  for (idx_t i = 0; i < and_expr.children.size(); i++) {
36
- if (Expression::Equals(and_expr.children[i].get(), &expr)) {
36
+ if (and_expr.children[i]->Equals(expr)) {
37
37
  result = std::move(and_expr.children[i]);
38
38
  and_expr.children.erase(and_expr.children.begin() + i);
39
39
  break;
@@ -45,7 +45,7 @@ unique_ptr<Expression> DistributivityRule::ExtractExpression(BoundConjunctionExp
45
45
  } else {
46
46
  // not an AND node! remove the entire expression
47
47
  // this happens in the case of e.g. (X AND B) OR X
48
- D_ASSERT(Expression::Equals(child.get(), &expr));
48
+ D_ASSERT(child->Equals(expr));
49
49
  result = std::move(child);
50
50
  conj.children[idx] = nullptr;
51
51
  }
@@ -161,15 +161,15 @@ void StatisticsPropagator::UpdateFilterStatistics(Expression &left, Expression &
161
161
  SetStatisticsNotNull((right.Cast<BoundColumnRefExpression>()).binding);
162
162
  }
163
163
  // check if this is a comparison between a constant and a column ref
164
- BoundConstantExpression *constant = nullptr;
165
- BoundColumnRefExpression *columnref = nullptr;
164
+ optional_ptr<BoundConstantExpression> constant;
165
+ optional_ptr<BoundColumnRefExpression> columnref;
166
166
  if (left.type == ExpressionType::VALUE_CONSTANT && right.type == ExpressionType::BOUND_COLUMN_REF) {
167
- constant = (BoundConstantExpression *)&left;
168
- columnref = (BoundColumnRefExpression *)&right;
167
+ constant = &left.Cast<BoundConstantExpression>();
168
+ columnref = &right.Cast<BoundColumnRefExpression>();
169
169
  comparison_type = FlipComparisonExpression(comparison_type);
170
170
  } else if (left.type == ExpressionType::BOUND_COLUMN_REF && right.type == ExpressionType::VALUE_CONSTANT) {
171
- columnref = (BoundColumnRefExpression *)&left;
172
- constant = (BoundConstantExpression *)&right;
171
+ columnref = &left.Cast<BoundColumnRefExpression>();
172
+ constant = &right.Cast<BoundConstantExpression>();
173
173
  } else if (left.type == ExpressionType::BOUND_COLUMN_REF && right.type == ExpressionType::BOUND_COLUMN_REF) {
174
174
  // comparison between two column refs
175
175
  auto &left_column_ref = left.Cast<BoundColumnRefExpression>();
@@ -14,14 +14,14 @@ void StatisticsPropagator::UpdateFilterStatistics(BaseStatistics &input, TableFi
14
14
  // FIXME: update stats...
15
15
  switch (filter.filter_type) {
16
16
  case TableFilterType::CONJUNCTION_AND: {
17
- auto &conjunction_and = (ConjunctionAndFilter &)filter;
17
+ auto &conjunction_and = filter.Cast<ConjunctionAndFilter>();
18
18
  for (auto &child_filter : conjunction_and.child_filters) {
19
19
  UpdateFilterStatistics(input, *child_filter);
20
20
  }
21
21
  break;
22
22
  }
23
23
  case TableFilterType::CONSTANT_COMPARISON: {
24
- auto &constant_filter = (ConstantFilter &)filter;
24
+ auto &constant_filter = filter.Cast<ConstantFilter>();
25
25
  UpdateFilterStatistics(input, constant_filter.comparison_type, constant_filter.constant);
26
26
  break;
27
27
  }
@@ -562,7 +562,7 @@ bool Executor::HasResultCollector() {
562
562
 
563
563
  unique_ptr<QueryResult> Executor::GetResult() {
564
564
  D_ASSERT(HasResultCollector());
565
- auto &result_collector = (PhysicalResultCollector &)*physical_plan;
565
+ auto &result_collector = physical_plan->Cast<PhysicalResultCollector>();
566
566
  D_ASSERT(result_collector.sink_state);
567
567
  return result_collector.GetResult(*result_collector.sink_state);
568
568
  }
@@ -18,11 +18,8 @@ string BaseExpression::GetName() const {
18
18
  return !alias.empty() ? alias : ToString();
19
19
  }
20
20
 
21
- bool BaseExpression::Equals(const BaseExpression *other) const {
22
- if (!other) {
23
- return false;
24
- }
25
- if (this->expression_class != other->expression_class || this->type != other->type) {
21
+ bool BaseExpression::Equals(const BaseExpression &other) const {
22
+ if (expression_class != other.expression_class || type != other.type) {
26
23
  return false;
27
24
  }
28
25
  return true;
@@ -50,6 +50,7 @@ void ColumnDefinition::Serialize(Serializer &serializer) const {
50
50
  writer.WriteOptional(default_value);
51
51
  }
52
52
  writer.WriteField<TableColumnType>(category);
53
+ writer.WriteField<duckdb::CompressionType>(compression_type);
53
54
  writer.Finalize();
54
55
  }
55
56
 
@@ -59,16 +60,12 @@ ColumnDefinition ColumnDefinition::Deserialize(Deserializer &source) {
59
60
  auto column_type = reader.ReadRequiredSerializable<LogicalType, LogicalType>();
60
61
  auto expression = reader.ReadOptional<ParsedExpression>(nullptr);
61
62
  auto category = reader.ReadField<TableColumnType>(TableColumnType::STANDARD);
63
+ auto compression_type = reader.ReadField<duckdb::CompressionType>(duckdb::CompressionType::COMPRESSION_AUTO);
62
64
  reader.Finalize();
63
65
 
64
- switch (category) {
65
- case TableColumnType::STANDARD:
66
- return ColumnDefinition(column_name, column_type, std::move(expression), TableColumnType::STANDARD);
67
- case TableColumnType::GENERATED:
68
- return ColumnDefinition(column_name, column_type, std::move(expression), TableColumnType::GENERATED);
69
- default:
70
- throw NotImplementedException("Type not implemented for TableColumnType");
71
- }
66
+ ColumnDefinition result(column_name, column_type, std::move(expression), category);
67
+ result.compression_type = compression_type;
68
+ return result;
72
69
  }
73
70
 
74
71
  const unique_ptr<ParsedExpression> &ColumnDefinition::DefaultValue() const {
@@ -15,14 +15,14 @@ string BetweenExpression::ToString() const {
15
15
  return ToString<BetweenExpression, ParsedExpression>(*this);
16
16
  }
17
17
 
18
- bool BetweenExpression::Equal(const BetweenExpression *a, const BetweenExpression *b) {
19
- if (!a->input->Equals(b->input.get())) {
18
+ bool BetweenExpression::Equal(const BetweenExpression &a, const BetweenExpression &b) {
19
+ if (!a.input->Equals(*b.input)) {
20
20
  return false;
21
21
  }
22
- if (!a->lower->Equals(b->lower.get())) {
22
+ if (!a.lower->Equals(*b.lower)) {
23
23
  return false;
24
24
  }
25
- if (!a->upper->Equals(b->upper.get())) {
25
+ if (!a.upper->Equals(*b.upper)) {
26
26
  return false;
27
27
  }
28
28
  return true;
@@ -27,19 +27,19 @@ string CaseExpression::ToString() const {
27
27
  return ToString<CaseExpression, ParsedExpression>(*this);
28
28
  }
29
29
 
30
- bool CaseExpression::Equal(const CaseExpression *a, const CaseExpression *b) {
31
- if (a->case_checks.size() != b->case_checks.size()) {
30
+ bool CaseExpression::Equal(const CaseExpression &a, const CaseExpression &b) {
31
+ if (a.case_checks.size() != b.case_checks.size()) {
32
32
  return false;
33
33
  }
34
- for (idx_t i = 0; i < a->case_checks.size(); i++) {
35
- if (!a->case_checks[i].when_expr->Equals(b->case_checks[i].when_expr.get())) {
34
+ for (idx_t i = 0; i < a.case_checks.size(); i++) {
35
+ if (!a.case_checks[i].when_expr->Equals(*b.case_checks[i].when_expr)) {
36
36
  return false;
37
37
  }
38
- if (!a->case_checks[i].then_expr->Equals(b->case_checks[i].then_expr.get())) {
38
+ if (!a.case_checks[i].then_expr->Equals(*b.case_checks[i].then_expr)) {
39
39
  return false;
40
40
  }
41
41
  }
42
- if (!a->else_expr->Equals(b->else_expr.get())) {
42
+ if (!a.else_expr->Equals(*b.else_expr)) {
43
43
  return false;
44
44
  }
45
45
  return true;
@@ -19,14 +19,14 @@ string CastExpression::ToString() const {
19
19
  return ToString<CastExpression, ParsedExpression>(*this);
20
20
  }
21
21
 
22
- bool CastExpression::Equal(const CastExpression *a, const CastExpression *b) {
23
- if (!a->child->Equals(b->child.get())) {
22
+ bool CastExpression::Equal(const CastExpression &a, const CastExpression &b) {
23
+ if (!a.child->Equals(*b.child)) {
24
24
  return false;
25
25
  }
26
- if (a->cast_type != b->cast_type) {
26
+ if (a.cast_type != b.cast_type) {
27
27
  return false;
28
28
  }
29
- if (a->try_cast != b->try_cast) {
29
+ if (a.try_cast != b.try_cast) {
30
30
  return false;
31
31
  }
32
32
  return true;
@@ -18,11 +18,11 @@ string CollateExpression::ToString() const {
18
18
  return StringUtil::Format("%s COLLATE %s", child->ToString(), SQLIdentifier(collation));
19
19
  }
20
20
 
21
- bool CollateExpression::Equal(const CollateExpression *a, const CollateExpression *b) {
22
- if (!a->child->Equals(b->child.get())) {
21
+ bool CollateExpression::Equal(const CollateExpression &a, const CollateExpression &b) {
22
+ if (!a.child->Equals(*b.child)) {
23
23
  return false;
24
24
  }
25
- if (a->collation != b->collation) {
25
+ if (a.collation != b.collation) {
26
26
  return false;
27
27
  }
28
28
  return true;
@@ -64,12 +64,12 @@ string ColumnRefExpression::ToString() const {
64
64
  return result;
65
65
  }
66
66
 
67
- bool ColumnRefExpression::Equal(const ColumnRefExpression *a, const ColumnRefExpression *b) {
68
- if (a->column_names.size() != b->column_names.size()) {
67
+ bool ColumnRefExpression::Equal(const ColumnRefExpression &a, const ColumnRefExpression &b) {
68
+ if (a.column_names.size() != b.column_names.size()) {
69
69
  return false;
70
70
  }
71
- for (idx_t i = 0; i < a->column_names.size(); i++) {
72
- if (!StringUtil::CIEquals(a->column_names[i], b->column_names[i])) {
71
+ for (idx_t i = 0; i < a.column_names.size(); i++) {
72
+ if (!StringUtil::CIEquals(a.column_names[i], b.column_names[i])) {
73
73
  return false;
74
74
  }
75
75
  }
@@ -18,11 +18,11 @@ string ComparisonExpression::ToString() const {
18
18
  return ToString<ComparisonExpression, ParsedExpression>(*this);
19
19
  }
20
20
 
21
- bool ComparisonExpression::Equal(const ComparisonExpression *a, const ComparisonExpression *b) {
22
- if (!a->left->Equals(b->left.get())) {
21
+ bool ComparisonExpression::Equal(const ComparisonExpression &a, const ComparisonExpression &b) {
22
+ if (!a.left->Equals(*b.left)) {
23
23
  return false;
24
24
  }
25
- if (!a->right->Equals(b->right.get())) {
25
+ if (!a.right->Equals(*b.right)) {
26
26
  return false;
27
27
  }
28
28
  return true;
@@ -42,8 +42,8 @@ string ConjunctionExpression::ToString() const {
42
42
  return ToString<ConjunctionExpression, ParsedExpression>(*this);
43
43
  }
44
44
 
45
- bool ConjunctionExpression::Equal(const ConjunctionExpression *a, const ConjunctionExpression *b) {
46
- return ExpressionUtil::SetEquals(a->children, b->children);
45
+ bool ConjunctionExpression::Equal(const ConjunctionExpression &a, const ConjunctionExpression &b) {
46
+ return ExpressionUtil::SetEquals(a.children, b.children);
47
47
  }
48
48
 
49
49
  unique_ptr<ParsedExpression> ConjunctionExpression::Copy() const {
@@ -18,8 +18,8 @@ string ConstantExpression::ToString() const {
18
18
  return value.ToSQLString();
19
19
  }
20
20
 
21
- bool ConstantExpression::Equal(const ConstantExpression *a, const ConstantExpression *b) {
22
- return a->value.type() == b->value.type() && !ValueOperations::DistinctFrom(a->value, b->value);
21
+ bool ConstantExpression::Equal(const ConstantExpression &a, const ConstantExpression &b) {
22
+ return a.value.type() == b.value.type() && !ValueOperations::DistinctFrom(a.value, b.value);
23
23
  }
24
24
 
25
25
  hash_t ConstantExpression::Hash() const {
@@ -37,26 +37,26 @@ string FunctionExpression::ToString() const {
37
37
  filter.get(), order_bys.get(), export_state, true);
38
38
  }
39
39
 
40
- bool FunctionExpression::Equal(const FunctionExpression *a, const FunctionExpression *b) {
41
- if (a->catalog != b->catalog || a->schema != b->schema || a->function_name != b->function_name ||
42
- b->distinct != a->distinct) {
40
+ bool FunctionExpression::Equal(const FunctionExpression &a, const FunctionExpression &b) {
41
+ if (a.catalog != b.catalog || a.schema != b.schema || a.function_name != b.function_name ||
42
+ b.distinct != a.distinct) {
43
43
  return false;
44
44
  }
45
- if (b->children.size() != a->children.size()) {
45
+ if (b.children.size() != a.children.size()) {
46
46
  return false;
47
47
  }
48
- for (idx_t i = 0; i < a->children.size(); i++) {
49
- if (!a->children[i]->Equals(b->children[i].get())) {
48
+ for (idx_t i = 0; i < a.children.size(); i++) {
49
+ if (!a.children[i]->Equals(*b.children[i])) {
50
50
  return false;
51
51
  }
52
52
  }
53
- if (!BaseExpression::Equals(a->filter.get(), b->filter.get())) {
53
+ if (!ParsedExpression::Equals(a.filter, b.filter)) {
54
54
  return false;
55
55
  }
56
- if (!a->order_bys->Equals(b->order_bys.get())) {
56
+ if (!OrderModifier::Equals(a.order_bys, b.order_bys)) {
57
57
  return false;
58
58
  }
59
- if (a->export_state != b->export_state) {
59
+ if (a.export_state != b.export_state) {
60
60
  return false;
61
61
  }
62
62
  return true;
@@ -81,11 +81,7 @@ unique_ptr<ParsedExpression> FunctionExpression::Copy() const {
81
81
  if (filter) {
82
82
  filter_copy = filter->Copy();
83
83
  }
84
- unique_ptr<OrderModifier> order_copy;
85
- if (order_bys) {
86
- order_copy.reset(static_cast<OrderModifier *>(order_bys->Copy().release()));
87
- }
88
-
84
+ auto order_copy = order_bys ? unique_ptr_cast<ResultModifier, OrderModifier>(order_bys->Copy()) : nullptr;
89
85
  auto copy =
90
86
  make_uniq<FunctionExpression>(catalog, schema, function_name, std::move(copy_children), std::move(filter_copy),
91
87
  std::move(order_copy), distinct, is_operator, export_state);
@@ -16,8 +16,8 @@ string LambdaExpression::ToString() const {
16
16
  return lhs->ToString() + " -> " + expr->ToString();
17
17
  }
18
18
 
19
- bool LambdaExpression::Equal(const LambdaExpression *a, const LambdaExpression *b) {
20
- return a->lhs->Equals(b->lhs.get()) && a->expr->Equals(b->expr.get());
19
+ bool LambdaExpression::Equal(const LambdaExpression &a, const LambdaExpression &b) {
20
+ return a.lhs->Equals(*b.lhs) && a.expr->Equals(*b.expr);
21
21
  }
22
22
 
23
23
  hash_t LambdaExpression::Hash() const {
@@ -27,12 +27,12 @@ string OperatorExpression::ToString() const {
27
27
  return ToString<OperatorExpression, ParsedExpression>(*this);
28
28
  }
29
29
 
30
- bool OperatorExpression::Equal(const OperatorExpression *a, const OperatorExpression *b) {
31
- if (a->children.size() != b->children.size()) {
30
+ bool OperatorExpression::Equal(const OperatorExpression &a, const OperatorExpression &b) {
31
+ if (a.children.size() != b.children.size()) {
32
32
  return false;
33
33
  }
34
- for (idx_t i = 0; i < a->children.size(); i++) {
35
- if (!a->children[i]->Equals(b->children[i].get())) {
34
+ for (idx_t i = 0; i < a.children.size(); i++) {
35
+ if (!a.children[i]->Equals(*b.children[i])) {
36
36
  return false;
37
37
  }
38
38
  }
@@ -25,8 +25,8 @@ unique_ptr<ParsedExpression> ParameterExpression::Copy() const {
25
25
  return std::move(copy);
26
26
  }
27
27
 
28
- bool ParameterExpression::Equal(const ParameterExpression *a, const ParameterExpression *b) {
29
- return a->parameter_nr == b->parameter_nr;
28
+ bool ParameterExpression::Equal(const ParameterExpression &a, const ParameterExpression &b) {
29
+ return a.parameter_nr == b.parameter_nr;
30
30
  }
31
31
 
32
32
  hash_t ParameterExpression::Hash() const {
@@ -18,9 +18,9 @@ string PositionalReferenceExpression::ToString() const {
18
18
  return "#" + to_string(index);
19
19
  }
20
20
 
21
- bool PositionalReferenceExpression::Equal(const PositionalReferenceExpression *a,
22
- const PositionalReferenceExpression *b) {
23
- return a->index == b->index;
21
+ bool PositionalReferenceExpression::Equal(const PositionalReferenceExpression &a,
22
+ const PositionalReferenceExpression &b) {
23
+ return a.index == b.index;
24
24
  }
25
25
 
26
26
  unique_ptr<ParsedExpression> PositionalReferenceExpression::Copy() const {
@@ -54,26 +54,26 @@ string StarExpression::ToString() const {
54
54
  return result;
55
55
  }
56
56
 
57
- bool StarExpression::Equal(const StarExpression *a, const StarExpression *b) {
58
- if (a->relation_name != b->relation_name || a->exclude_list != b->exclude_list) {
57
+ bool StarExpression::Equal(const StarExpression &a, const StarExpression &b) {
58
+ if (a.relation_name != b.relation_name || a.exclude_list != b.exclude_list) {
59
59
  return false;
60
60
  }
61
- if (a->columns != b->columns) {
61
+ if (a.columns != b.columns) {
62
62
  return false;
63
63
  }
64
- if (a->replace_list.size() != b->replace_list.size()) {
64
+ if (a.replace_list.size() != b.replace_list.size()) {
65
65
  return false;
66
66
  }
67
- for (auto &entry : a->replace_list) {
68
- auto other_entry = b->replace_list.find(entry.first);
69
- if (other_entry == b->replace_list.end()) {
67
+ for (auto &entry : a.replace_list) {
68
+ auto other_entry = b.replace_list.find(entry.first);
69
+ if (other_entry == b.replace_list.end()) {
70
70
  return false;
71
71
  }
72
- if (!entry.second->Equals(other_entry->second.get())) {
72
+ if (!entry.second->Equals(*other_entry->second)) {
73
73
  return false;
74
74
  }
75
75
  }
76
- if (!BaseExpression::Equals(a->expr.get(), b->expr.get())) {
76
+ if (!ParsedExpression::Equals(a.expr, b.expr)) {
77
77
  return false;
78
78
  }
79
79
  return true;
@@ -28,15 +28,15 @@ string SubqueryExpression::ToString() const {
28
28
  }
29
29
  }
30
30
 
31
- bool SubqueryExpression::Equal(const SubqueryExpression *a, const SubqueryExpression *b) {
32
- if (!a->subquery || !b->subquery) {
31
+ bool SubqueryExpression::Equal(const SubqueryExpression &a, const SubqueryExpression &b) {
32
+ if (!a.subquery || !b.subquery) {
33
33
  return false;
34
34
  }
35
- if (!BaseExpression::Equals(a->child.get(), b->child.get())) {
35
+ if (!ParsedExpression::Equals(a.child, b.child)) {
36
36
  return false;
37
37
  }
38
- return a->comparison_type == b->comparison_type && a->subquery_type == b->subquery_type &&
39
- a->subquery->Equals(b->subquery.get());
38
+ return a.comparison_type == b.comparison_type && a.subquery_type == b.subquery_type &&
39
+ a.subquery->Equals(*b.subquery);
40
40
  }
41
41
 
42
42
  unique_ptr<ParsedExpression> SubqueryExpression::Copy() const {