duckdb 0.8.1-dev31.0 → 0.8.1-dev341.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 (636) 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 +26 -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/optimizer/unnest_rewriter.hpp +4 -0
  314. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
  315. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
  316. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
  317. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
  318. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  319. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
  320. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
  321. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
  322. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
  323. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  324. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
  325. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
  326. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
  327. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
  328. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
  329. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
  330. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  331. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  332. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
  333. package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
  334. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
  335. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
  336. package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
  337. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  338. package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
  339. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
  340. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
  341. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
  342. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -2
  343. package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
  344. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  345. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +1 -1
  346. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
  347. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
  348. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
  349. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +106 -92
  350. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -2
  351. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
  352. package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
  353. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +34 -1
  354. package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
  355. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
  356. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
  357. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
  358. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
  359. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
  360. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
  361. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
  362. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
  363. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
  364. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
  365. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
  366. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
  367. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
  368. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
  369. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
  370. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
  371. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
  372. package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
  373. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
  374. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
  375. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
  376. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
  377. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +7 -2
  378. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +6 -2
  379. package/src/duckdb/src/include/duckdb/planner/operator/logical_execute.hpp +4 -0
  380. package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +5 -1
  381. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +5 -1
  382. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
  383. package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +6 -2
  384. package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +4 -0
  385. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
  386. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
  387. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  388. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/byte_reader.hpp +4 -0
  389. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
  390. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
  391. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
  392. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
  393. package/src/duckdb/src/include/duckdb/storage/in_memory_block_manager.hpp +13 -13
  394. package/src/duckdb/src/include/duckdb/storage/index.hpp +6 -4
  395. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
  396. package/src/duckdb/src/include/duckdb/storage/storage_extension.hpp +0 -6
  397. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
  398. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
  399. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
  400. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
  401. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
  402. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
  403. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
  404. package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
  405. package/src/duckdb/src/main/capi/arrow-c.cpp +10 -10
  406. package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
  407. package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
  408. package/src/duckdb/src/main/capi/config-c.cpp +3 -6
  409. package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
  410. package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
  411. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
  412. package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
  413. package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
  414. package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
  415. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
  416. package/src/duckdb/src/main/capi/result-c.cpp +23 -23
  417. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  418. package/src/duckdb/src/main/client_context.cpp +3 -3
  419. package/src/duckdb/src/main/config.cpp +1 -0
  420. package/src/duckdb/src/main/database_manager.cpp +1 -1
  421. package/src/duckdb/src/main/error_manager.cpp +1 -1
  422. package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
  423. package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
  424. package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
  425. package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
  426. package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
  427. package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
  428. package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
  429. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  430. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  431. package/src/duckdb/src/main/relation.cpp +1 -1
  432. package/src/duckdb/src/main/settings/settings.cpp +22 -6
  433. package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
  434. package/src/duckdb/src/optimizer/expression_heuristics.cpp +1 -0
  435. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  436. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
  437. package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
  438. package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
  439. package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
  440. package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
  441. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
  442. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
  443. package/src/duckdb/src/optimizer/unnest_rewriter.cpp +27 -16
  444. package/src/duckdb/src/parallel/executor.cpp +1 -1
  445. package/src/duckdb/src/parser/base_expression.cpp +2 -5
  446. package/src/duckdb/src/parser/column_definition.cpp +5 -8
  447. package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
  448. package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
  449. package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
  450. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
  451. package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
  452. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
  453. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
  454. package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
  455. package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
  456. package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
  457. package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
  458. package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
  459. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
  460. package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
  461. package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
  462. package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
  463. package/src/duckdb/src/parser/parsed_data/create_info.cpp +0 -3
  464. package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
  465. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
  466. package/src/duckdb/src/parser/parser.cpp +4 -4
  467. package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
  468. package/src/duckdb/src/parser/query_node.cpp +7 -6
  469. package/src/duckdb/src/parser/result_modifier.cpp +25 -18
  470. package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
  471. package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
  472. package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
  473. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
  474. package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
  475. package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
  476. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
  477. package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
  478. package/src/duckdb/src/parser/tableref.cpp +12 -3
  479. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
  480. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
  481. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
  482. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
  483. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
  484. package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
  485. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
  486. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
  487. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
  488. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +70 -75
  489. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
  490. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
  491. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
  492. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
  493. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +28 -29
  494. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
  495. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
  496. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
  497. package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +0 -2
  498. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
  499. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
  500. package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
  501. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
  502. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
  503. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
  504. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
  505. package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
  506. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
  507. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
  508. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
  509. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
  510. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
  511. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
  512. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
  513. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
  514. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
  515. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
  516. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
  517. package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
  518. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -25
  519. package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
  520. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
  521. package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
  522. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
  523. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
  524. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
  525. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
  526. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
  527. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
  528. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
  529. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
  530. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
  531. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
  532. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
  533. package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
  534. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
  535. package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
  536. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
  537. package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
  538. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
  539. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
  540. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
  541. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +30 -27
  542. package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
  543. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
  544. package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
  545. package/src/duckdb/src/parser/transformer.cpp +45 -47
  546. package/src/duckdb/src/planner/bind_context.cpp +9 -10
  547. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -1
  548. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
  549. package/src/duckdb/src/planner/binder/expression/bind_positional_reference_expression.cpp +8 -3
  550. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
  551. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
  552. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +8 -8
  553. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
  554. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +1 -28
  555. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +18 -1
  556. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +0 -25
  557. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
  558. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +2 -114
  559. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +4 -2
  560. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +5 -2
  561. package/src/duckdb/src/planner/binder.cpp +1 -1
  562. package/src/duckdb/src/planner/bound_result_modifier.cpp +16 -11
  563. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +5 -5
  564. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
  565. package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
  566. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
  567. package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
  568. package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
  569. package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
  570. package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
  571. package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
  572. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
  573. package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
  574. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
  575. package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
  576. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
  577. package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
  578. package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
  579. package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
  580. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
  581. package/src/duckdb/src/planner/expression.cpp +15 -0
  582. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
  583. package/src/duckdb/src/planner/expression_binder.cpp +3 -2
  584. package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
  585. package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
  586. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  587. package/src/duckdb/src/planner/logical_operator.cpp +3 -4
  588. package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
  589. package/src/duckdb/src/planner/operator/logical_pivot.cpp +14 -2
  590. package/src/duckdb/src/planner/planner.cpp +5 -15
  591. package/src/duckdb/src/planner/table_filter.cpp +1 -1
  592. package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
  593. package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
  594. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
  595. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
  596. package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
  597. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
  598. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
  599. package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
  600. package/src/duckdb/src/storage/compression/rle.cpp +8 -8
  601. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
  602. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
  603. package/src/duckdb/src/storage/data_table.cpp +8 -7
  604. package/src/duckdb/src/storage/index.cpp +14 -3
  605. package/src/duckdb/src/storage/local_storage.cpp +2 -1
  606. package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
  607. package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
  608. package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
  609. package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
  610. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
  611. package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
  612. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
  613. package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
  614. package/src/duckdb/src/storage/table/list_column_data.cpp +3 -3
  615. package/src/duckdb/src/storage/table/row_group.cpp +4 -4
  616. package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -1
  617. package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
  618. package/src/duckdb/src/storage/wal_replay.cpp +5 -6
  619. package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
  620. package/src/duckdb/src/transaction/commit_state.cpp +8 -8
  621. package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
  622. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
  623. package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
  624. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
  625. package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
  626. package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
  627. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +0 -1
  628. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +0 -14
  629. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +12828 -12956
  630. package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
  631. package/src/duckdb/third_party/zstd/compress/zstd_compress.cpp +3 -0
  632. package/src/duckdb/third_party/zstd/include/zstd/compress/zstd_cwksp.h +4 -0
  633. package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +5 -5
  634. package/src/duckdb/ub_src_parser_transform_statement.cpp +0 -2
  635. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_database_info.hpp +0 -46
  636. package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +0 -28
@@ -201,15 +201,15 @@ struct VectorCastHelpers {
201
201
  struct VectorStringToList {
202
202
  static idx_t CountPartsList(const string_t &input);
203
203
  static bool SplitStringList(const string_t &input, string_t *child_data, idx_t &child_start, Vector &child);
204
- static bool StringToNestedTypeCastLoop(string_t *source_data, ValidityMask &source_mask, Vector &result,
204
+ static bool StringToNestedTypeCastLoop(const string_t *source_data, ValidityMask &source_mask, Vector &result,
205
205
  ValidityMask &result_mask, idx_t count, CastParameters &parameters,
206
206
  const SelectionVector *sel);
207
207
  };
208
208
 
209
209
  struct VectorStringToStruct {
210
- static bool SplitStruct(string_t &input, vector<unique_ptr<Vector>> &varchar_vectors, idx_t &row_idx,
210
+ static bool SplitStruct(const string_t &input, vector<unique_ptr<Vector>> &varchar_vectors, idx_t &row_idx,
211
211
  string_map_t<idx_t> &child_names, vector<ValidityMask *> &child_masks);
212
- static bool StringToNestedTypeCastLoop(string_t *source_data, ValidityMask &source_mask, Vector &result,
212
+ static bool StringToNestedTypeCastLoop(const string_t *source_data, ValidityMask &source_mask, Vector &result,
213
213
  ValidityMask &result_mask, idx_t count, CastParameters &parameters,
214
214
  const SelectionVector *sel);
215
215
  };
@@ -218,7 +218,7 @@ struct VectorStringToMap {
218
218
  static idx_t CountPartsMap(const string_t &input);
219
219
  static bool SplitStringMap(const string_t &input, string_t *child_key_data, string_t *child_val_data,
220
220
  idx_t &child_start, Vector &varchar_key, Vector &varchar_val);
221
- static bool StringToNestedTypeCastLoop(string_t *source_data, ValidityMask &source_mask, Vector &result,
221
+ static bool StringToNestedTypeCastLoop(const string_t *source_data, ValidityMask &source_mask, Vector &result,
222
222
  ValidityMask &result_mask, idx_t count, CastParameters &parameters,
223
223
  const SelectionVector *sel);
224
224
  };
@@ -29,16 +29,49 @@ struct SegmentScanState;
29
29
  struct AnalyzeState {
30
30
  virtual ~AnalyzeState() {
31
31
  }
32
+
33
+ template <class TARGET>
34
+ TARGET &Cast() {
35
+ D_ASSERT(dynamic_cast<TARGET *>(this));
36
+ return reinterpret_cast<TARGET &>(*this);
37
+ }
38
+ template <class TARGET>
39
+ const TARGET &Cast() const {
40
+ D_ASSERT(dynamic_cast<const TARGET *>(this));
41
+ return reinterpret_cast<const TARGET &>(*this);
42
+ }
32
43
  };
33
44
 
34
45
  struct CompressionState {
35
46
  virtual ~CompressionState() {
36
47
  }
48
+
49
+ template <class TARGET>
50
+ TARGET &Cast() {
51
+ D_ASSERT(dynamic_cast<TARGET *>(this));
52
+ return reinterpret_cast<TARGET &>(*this);
53
+ }
54
+ template <class TARGET>
55
+ const TARGET &Cast() const {
56
+ D_ASSERT(dynamic_cast<const TARGET *>(this));
57
+ return reinterpret_cast<const TARGET &>(*this);
58
+ }
37
59
  };
38
60
 
39
61
  struct CompressedSegmentState {
40
62
  virtual ~CompressedSegmentState() {
41
63
  }
64
+
65
+ template <class TARGET>
66
+ TARGET &Cast() {
67
+ D_ASSERT(dynamic_cast<TARGET *>(this));
68
+ return reinterpret_cast<TARGET &>(*this);
69
+ }
70
+ template <class TARGET>
71
+ const TARGET &Cast() const {
72
+ D_ASSERT(dynamic_cast<const TARGET *>(this));
73
+ return reinterpret_cast<const TARGET &>(*this);
74
+ }
42
75
  };
43
76
 
44
77
  struct CompressionAppendState {
@@ -48,6 +81,17 @@ struct CompressionAppendState {
48
81
  }
49
82
 
50
83
  BufferHandle handle;
84
+
85
+ template <class TARGET>
86
+ TARGET &Cast() {
87
+ D_ASSERT(dynamic_cast<TARGET *>(this));
88
+ return reinterpret_cast<TARGET &>(*this);
89
+ }
90
+ template <class TARGET>
91
+ const TARGET &Cast() const {
92
+ D_ASSERT(dynamic_cast<const TARGET *>(this));
93
+ return reinterpret_cast<const TARGET &>(*this);
94
+ }
51
95
  };
52
96
 
53
97
  //===--------------------------------------------------------------------===//
@@ -27,12 +27,12 @@ struct LocalFunctionData {
27
27
  template <class TARGET>
28
28
  TARGET &Cast() {
29
29
  D_ASSERT(dynamic_cast<TARGET *>(this));
30
- return (TARGET &)*this;
30
+ return reinterpret_cast<TARGET &>(*this);
31
31
  }
32
32
  template <class TARGET>
33
33
  const TARGET &Cast() const {
34
34
  D_ASSERT(dynamic_cast<const TARGET *>(this));
35
- return (const TARGET &)*this;
35
+ return reinterpret_cast<const TARGET &>(*this);
36
36
  }
37
37
  };
38
38
 
@@ -43,12 +43,12 @@ struct GlobalFunctionData {
43
43
  template <class TARGET>
44
44
  TARGET &Cast() {
45
45
  D_ASSERT(dynamic_cast<TARGET *>(this));
46
- return (TARGET &)*this;
46
+ return reinterpret_cast<TARGET &>(*this);
47
47
  }
48
48
  template <class TARGET>
49
49
  const TARGET &Cast() const {
50
50
  D_ASSERT(dynamic_cast<const TARGET *>(this));
51
- return (const TARGET &)*this;
51
+ return reinterpret_cast<const TARGET &>(*this);
52
52
  }
53
53
  };
54
54
 
@@ -59,12 +59,12 @@ struct PreparedBatchData {
59
59
  template <class TARGET>
60
60
  TARGET &Cast() {
61
61
  D_ASSERT(dynamic_cast<TARGET *>(this));
62
- return (TARGET &)*this;
62
+ return reinterpret_cast<TARGET &>(*this);
63
63
  }
64
64
  template <class TARGET>
65
65
  const TARGET &Cast() const {
66
66
  D_ASSERT(dynamic_cast<const TARGET *>(this));
67
- return (const TARGET &)*this;
67
+ return reinterpret_cast<const TARGET &>(*this);
68
68
  }
69
69
  };
70
70
 
@@ -49,17 +49,17 @@ struct FunctionData {
49
49
  template <class TARGET>
50
50
  TARGET &Cast() {
51
51
  D_ASSERT(dynamic_cast<TARGET *>(this));
52
- return (TARGET &)*this;
52
+ return reinterpret_cast<TARGET &>(*this);
53
53
  }
54
54
  template <class TARGET>
55
55
  const TARGET &Cast() const {
56
56
  D_ASSERT(dynamic_cast<const TARGET *>(this));
57
- return (const TARGET &)*this;
57
+ return reinterpret_cast<const TARGET &>(*this);
58
58
  }
59
59
  // FIXME: this function should be removed in the future
60
60
  template <class TARGET>
61
61
  TARGET &CastNoConst() const {
62
- return (TARGET &)*this;
62
+ return const_cast<TARGET &>(reinterpret_cast<const TARGET &>(*this));
63
63
  }
64
64
  };
65
65
 
@@ -25,8 +25,10 @@ public:
25
25
  bool serialize = function.serialize;
26
26
  writer.WriteField(serialize);
27
27
  if (serialize) {
28
- D_ASSERT(function.deserialize);
29
28
  function.serialize(writer, bind_info, function);
29
+ // First check if serialize throws a NotImplementedException, in which case it doesn't require a deserialize
30
+ // function
31
+ D_ASSERT(function.deserialize);
30
32
  }
31
33
  }
32
34
 
@@ -57,7 +57,7 @@ public:
57
57
  if (type != TARGET::TYPE) {
58
58
  throw InternalException("Failed to cast macro to type - macro type mismatch");
59
59
  }
60
- return (TARGET &)*this;
60
+ return reinterpret_cast<TARGET &>(*this);
61
61
  }
62
62
 
63
63
  template <class TARGET>
@@ -65,7 +65,7 @@ public:
65
65
  if (type != TARGET::TYPE) {
66
66
  throw InternalException("Failed to cast macro to type - macro type mismatch");
67
67
  }
68
- return (const TARGET &)*this;
68
+ return reinterpret_cast<const TARGET &>(*this);
69
69
  }
70
70
  };
71
71
 
@@ -27,14 +27,14 @@ static void TemplatedContainsOrPosition(DataChunk &args, Vector &result, bool is
27
27
 
28
28
  UnifiedVectorFormat list_data;
29
29
  list.ToUnifiedFormat(count, list_data);
30
- auto list_entries = (list_entry_t *)list_data.data;
30
+ auto list_entries = UnifiedVectorFormat::GetData<list_entry_t>(list_data);
31
31
 
32
32
  UnifiedVectorFormat value_data;
33
33
  value_vector.ToUnifiedFormat(count, value_data);
34
34
 
35
35
  // not required for a comparison of nested types
36
- auto child_value = (CHILD_TYPE *)child_data.data;
37
- auto values = (CHILD_TYPE *)value_data.data;
36
+ auto child_value = UnifiedVectorFormat::GetData<CHILD_TYPE>(child_data);
37
+ auto values = UnifiedVectorFormat::GetData<CHILD_TYPE>(value_data);
38
38
 
39
39
  for (idx_t i = 0; i < count; i++) {
40
40
  auto list_index = list_data.sel->get_index(i);
@@ -25,12 +25,12 @@ struct FunctionLocalState {
25
25
  template <class TARGET>
26
26
  TARGET &Cast() {
27
27
  D_ASSERT(dynamic_cast<TARGET *>(this));
28
- return (TARGET &)*this;
28
+ return reinterpret_cast<TARGET &>(*this);
29
29
  }
30
30
  template <class TARGET>
31
31
  const TARGET &Cast() const {
32
32
  D_ASSERT(dynamic_cast<const TARGET *>(this));
33
- return (const TARGET &)*this;
33
+ return reinterpret_cast<const TARGET &>(*this);
34
34
  }
35
35
  };
36
36
 
@@ -9,12 +9,12 @@
9
9
  #pragma once
10
10
 
11
11
  #include "duckdb/common/enums/operator_result_type.hpp"
12
+ #include "duckdb/common/optional_ptr.hpp"
12
13
  #include "duckdb/execution/execution_context.hpp"
13
14
  #include "duckdb/function/function.hpp"
14
15
  #include "duckdb/planner/bind_context.hpp"
15
16
  #include "duckdb/planner/logical_operator.hpp"
16
17
  #include "duckdb/storage/statistics/node_statistics.hpp"
17
- #include "duckdb/common/optional_ptr.hpp"
18
18
 
19
19
  #include <functional>
20
20
 
@@ -31,12 +31,12 @@ struct TableFunctionInfo {
31
31
  template <class TARGET>
32
32
  TARGET &Cast() {
33
33
  D_ASSERT(dynamic_cast<TARGET *>(this));
34
- return (TARGET &)*this;
34
+ return reinterpret_cast<TARGET &>(*this);
35
35
  }
36
36
  template <class TARGET>
37
37
  const TARGET &Cast() const {
38
38
  D_ASSERT(dynamic_cast<const TARGET *>(this));
39
- return (const TARGET &)*this;
39
+ return reinterpret_cast<const TARGET &>(*this);
40
40
  }
41
41
  };
42
42
 
@@ -55,12 +55,12 @@ public:
55
55
  template <class TARGET>
56
56
  TARGET &Cast() {
57
57
  D_ASSERT(dynamic_cast<TARGET *>(this));
58
- return (TARGET &)*this;
58
+ return reinterpret_cast<TARGET &>(*this);
59
59
  }
60
60
  template <class TARGET>
61
61
  const TARGET &Cast() const {
62
62
  D_ASSERT(dynamic_cast<const TARGET *>(this));
63
- return (const TARGET &)*this;
63
+ return reinterpret_cast<const TARGET &>(*this);
64
64
  }
65
65
  };
66
66
 
@@ -70,12 +70,12 @@ struct LocalTableFunctionState {
70
70
  template <class TARGET>
71
71
  TARGET &Cast() {
72
72
  D_ASSERT(dynamic_cast<TARGET *>(this));
73
- return (TARGET &)*this;
73
+ return reinterpret_cast<TARGET &>(*this);
74
74
  }
75
75
  template <class TARGET>
76
76
  const TARGET &Cast() const {
77
77
  D_ASSERT(dynamic_cast<const TARGET *>(this));
78
- return (const TARGET &)*this;
78
+ return reinterpret_cast<const TARGET &>(*this);
79
79
  }
80
80
  };
81
81
 
@@ -265,6 +265,7 @@ public:
265
265
 
266
266
  table_function_serialize_t serialize;
267
267
  table_function_deserialize_t deserialize;
268
+ bool verify_serialization = true;
268
269
 
269
270
  //! Whether or not the table function supports projection pushdown. If not supported a projection will be added
270
271
  //! that filters out unused columns.
@@ -82,7 +82,7 @@ struct ToCStringCastWrapper {
82
82
  auto result_size = result_string.GetSize();
83
83
  auto result_data = result_string.GetData();
84
84
 
85
- char *allocated_data = (char *)duckdb_malloc(result_size + 1);
85
+ char *allocated_data = char_ptr_cast(duckdb_malloc(result_size + 1));
86
86
  memcpy(allocated_data, result_data, result_size);
87
87
  allocated_data[result_size] = '\0';
88
88
  result.data = allocated_data;
@@ -151,6 +151,8 @@ struct DBConfigOptions {
151
151
  DebugInitialize debug_initialize = DebugInitialize::NO_INITIALIZE;
152
152
  //! The set of unrecognized (other) options
153
153
  unordered_map<string, Value> unrecognized_options;
154
+ //! Whether or not the configuration settings can be altered
155
+ bool lock_configuration = false;
154
156
  //! Whether to print bindings when printing the plan (debug mode only)
155
157
  static bool debug_print_bindings;
156
158
 
@@ -17,6 +17,9 @@ namespace duckdb {
17
17
  class ClientContext;
18
18
 
19
19
  class MaterializedQueryResult : public QueryResult {
20
+ public:
21
+ static constexpr const QueryResultType TYPE = QueryResultType::MATERIALIZED_RESULT;
22
+
20
23
  public:
21
24
  friend class ClientContext;
22
25
  //! Creates a successful query result with the specified names and types
@@ -20,6 +20,9 @@ class PreparedStatementData;
20
20
  class PendingQueryResult : public BaseQueryResult {
21
21
  friend class ClientContext;
22
22
 
23
+ public:
24
+ static constexpr const QueryResultType TYPE = QueryResultType::PENDING_RESULT;
25
+
23
26
  public:
24
27
  DUCKDB_API PendingQueryResult(shared_ptr<ClientContext> context, PreparedStatementData &statement,
25
28
  vector<LogicalType> types, bool allow_stream_result);
@@ -89,6 +89,23 @@ public:
89
89
  //! To comply, we use the following variable to store the current chunk, and it's position.
90
90
  CurrentChunk current_chunk;
91
91
 
92
+ public:
93
+ template <class TARGET>
94
+ TARGET &Cast() {
95
+ if (type != TARGET::TYPE) {
96
+ throw InternalException("Failed to cast query result to type - query result type mismatch");
97
+ }
98
+ return reinterpret_cast<TARGET &>(*this);
99
+ }
100
+
101
+ template <class TARGET>
102
+ const TARGET &Cast() const {
103
+ if (type != TARGET::TYPE) {
104
+ throw InternalException("Failed to cast query result to type - query result type mismatch");
105
+ }
106
+ return reinterpret_cast<const TARGET &>(*this);
107
+ }
108
+
92
109
  public:
93
110
  //! Returns the name of the column for the given index
94
111
  DUCKDB_API const string &ColumnName(idx_t index) const;
@@ -163,6 +163,18 @@ public:
163
163
 
164
164
  protected:
165
165
  DUCKDB_API string RenderWhitespace(idx_t depth);
166
+
167
+ public:
168
+ template <class TARGET>
169
+ TARGET &Cast() {
170
+ D_ASSERT(dynamic_cast<TARGET *>(this));
171
+ return reinterpret_cast<TARGET &>(*this);
172
+ }
173
+ template <class TARGET>
174
+ const TARGET &Cast() const {
175
+ D_ASSERT(dynamic_cast<const TARGET *>(this));
176
+ return reinterpret_cast<const TARGET &>(*this);
177
+ }
166
178
  };
167
179
 
168
180
  } // namespace duckdb
@@ -309,6 +309,15 @@ struct LogQueryPathSetting {
309
309
  static Value GetSetting(ClientContext &context);
310
310
  };
311
311
 
312
+ struct LockConfigurationSetting {
313
+ static constexpr const char *Name = "lock_configuration";
314
+ static constexpr const char *Description = "Whether or not the configuration can be altered";
315
+ static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
316
+ static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
317
+ static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
318
+ static Value GetSetting(ClientContext &context);
319
+ };
320
+
312
321
  struct ImmediateTransactionModeSetting {
313
322
  static constexpr const char *Name = "immediate_transaction_mode";
314
323
  static constexpr const char *Description =
@@ -22,6 +22,9 @@ class PreparedStatementData;
22
22
  class StreamQueryResult : public QueryResult {
23
23
  friend class ClientContext;
24
24
 
25
+ public:
26
+ static constexpr const QueryResultType TYPE = QueryResultType::STREAM_RESULT;
27
+
25
28
  public:
26
29
  //! Create a successful StreamQueryResult. StreamQueryResults should always be successful initially (it makes no
27
30
  //! sense to stream an error).
@@ -111,9 +111,9 @@ private:
111
111
  void AddRelationTdom(FilterInfo &filter_info);
112
112
  bool EmptyFilter(FilterInfo &filter_info);
113
113
 
114
- idx_t InspectConjunctionAND(idx_t cardinality, idx_t column_index, ConjunctionAndFilter *fil,
114
+ idx_t InspectConjunctionAND(idx_t cardinality, idx_t column_index, ConjunctionAndFilter &fil,
115
115
  unique_ptr<BaseStatistics> base_stats);
116
- idx_t InspectConjunctionOR(idx_t cardinality, idx_t column_index, ConjunctionOrFilter *fil,
116
+ idx_t InspectConjunctionOR(idx_t cardinality, idx_t column_index, ConjunctionOrFilter &fil,
117
117
  unique_ptr<BaseStatistics> base_stats);
118
118
  idx_t InspectTableFilters(idx_t cardinality, LogicalOperator &op, TableFilterSet &table_filters, idx_t table_index);
119
119
  };
@@ -45,6 +45,8 @@ public:
45
45
 
46
46
  //! Contains all bindings that need to be updated
47
47
  vector<ReplaceBinding> replace_bindings;
48
+ //! Stores the table index of the former child of the LOGICAL_UNNEST
49
+ idx_t overwritten_tbl_idx;
48
50
  };
49
51
 
50
52
  //! The UnnestRewriter optimizer traverses the logical operator tree and rewrites duplicate
@@ -79,6 +81,8 @@ private:
79
81
  vector<LHSBinding> lhs_bindings;
80
82
  //! Stores the table index of the former child of the LOGICAL_UNNEST
81
83
  idx_t overwritten_tbl_idx;
84
+ //! The number of distinct columns to unnest
85
+ idx_t distinct_unnest_count;
82
86
  };
83
87
 
84
88
  } // namespace duckdb
@@ -71,19 +71,13 @@ public:
71
71
  //! Expression::Equals() returns true), that their hash value is identical as well.
72
72
  virtual hash_t Hash() const = 0;
73
73
  //! Returns true if this expression is equal to another expression
74
- virtual bool Equals(const BaseExpression *other) const;
74
+ virtual bool Equals(const BaseExpression &other) const;
75
75
 
76
- static bool Equals(const BaseExpression *left, const BaseExpression *right) {
77
- if (left == right) {
78
- return true;
79
- }
80
- if (!left || !right) {
81
- return false;
82
- }
83
- return left->Equals(right);
76
+ static bool Equals(const BaseExpression &left, const BaseExpression &right) {
77
+ return left.Equals(right);
84
78
  }
85
79
  bool operator==(const BaseExpression &rhs) {
86
- return this->Equals(&rhs);
80
+ return Equals(rhs);
87
81
  }
88
82
 
89
83
  virtual void Verify() const;
@@ -94,7 +88,7 @@ public:
94
88
  if (expression_class != TARGET::TYPE) {
95
89
  throw InternalException("Failed to cast expression to type - expression type mismatch");
96
90
  }
97
- return (TARGET &)*this;
91
+ return reinterpret_cast<TARGET &>(*this);
98
92
  }
99
93
 
100
94
  template <class TARGET>
@@ -102,7 +96,7 @@ public:
102
96
  if (expression_class != TARGET::TYPE) {
103
97
  throw InternalException("Failed to cast expression to type - expression type mismatch");
104
98
  }
105
- return (const TARGET &)*this;
99
+ return reinterpret_cast<const TARGET &>(*this);
106
100
  }
107
101
  };
108
102
 
@@ -74,7 +74,7 @@ public:
74
74
  if (type != TARGET::TYPE) {
75
75
  throw InternalException("Failed to cast constraint to type - constraint type mismatch");
76
76
  }
77
- return (TARGET &)*this;
77
+ return reinterpret_cast<TARGET &>(*this);
78
78
  }
79
79
 
80
80
  template <class TARGET>
@@ -82,7 +82,7 @@ public:
82
82
  if (type != TARGET::TYPE) {
83
83
  throw InternalException("Failed to cast constraint to type - constraint type mismatch");
84
84
  }
85
- return (const TARGET &)*this;
85
+ return reinterpret_cast<const TARGET &>(*this);
86
86
  }
87
87
  };
88
88
  } // namespace duckdb
@@ -27,7 +27,7 @@ public:
27
27
  public:
28
28
  string ToString() const override;
29
29
 
30
- static bool Equal(const BetweenExpression *a, const BetweenExpression *b);
30
+ static bool Equal(const BetweenExpression &a, const BetweenExpression &b);
31
31
 
32
32
  unique_ptr<ParsedExpression> Copy() const override;
33
33
 
@@ -32,7 +32,7 @@ public:
32
32
 
33
33
  string ToString() const override;
34
34
 
35
- bool Equals(const BaseExpression *other) const override;
35
+ bool Equals(const BaseExpression &other) const override;
36
36
  hash_t Hash() const override;
37
37
 
38
38
  unique_ptr<ParsedExpression> Copy() const override;
@@ -35,7 +35,7 @@ public:
35
35
  public:
36
36
  string ToString() const override;
37
37
 
38
- static bool Equal(const CaseExpression *a, const CaseExpression *b);
38
+ static bool Equal(const CaseExpression &a, const CaseExpression &b);
39
39
 
40
40
  unique_ptr<ParsedExpression> Copy() const override;
41
41
 
@@ -31,7 +31,7 @@ public:
31
31
  public:
32
32
  string ToString() const override;
33
33
 
34
- static bool Equal(const CastExpression *a, const CastExpression *b);
34
+ static bool Equal(const CastExpression &a, const CastExpression &b);
35
35
 
36
36
  unique_ptr<ParsedExpression> Copy() const override;
37
37
 
@@ -28,7 +28,7 @@ public:
28
28
  public:
29
29
  string ToString() const override;
30
30
 
31
- static bool Equal(const CollateExpression *a, const CollateExpression *b);
31
+ static bool Equal(const CollateExpression &a, const CollateExpression &b);
32
32
 
33
33
  unique_ptr<ParsedExpression> Copy() const override;
34
34
 
@@ -41,7 +41,7 @@ public:
41
41
  string GetName() const override;
42
42
  string ToString() const override;
43
43
 
44
- static bool Equal(const ColumnRefExpression *a, const ColumnRefExpression *b);
44
+ static bool Equal(const ColumnRefExpression &a, const ColumnRefExpression &b);
45
45
  hash_t Hash() const override;
46
46
 
47
47
  unique_ptr<ParsedExpression> Copy() const override;
@@ -27,7 +27,7 @@ public:
27
27
  public:
28
28
  string ToString() const override;
29
29
 
30
- static bool Equal(const ComparisonExpression *a, const ComparisonExpression *b);
30
+ static bool Equal(const ComparisonExpression &a, const ComparisonExpression &b);
31
31
 
32
32
  unique_ptr<ParsedExpression> Copy() const override;
33
33
 
@@ -31,7 +31,7 @@ public:
31
31
 
32
32
  string ToString() const override;
33
33
 
34
- static bool Equal(const ConjunctionExpression *a, const ConjunctionExpression *b);
34
+ static bool Equal(const ConjunctionExpression &a, const ConjunctionExpression &b);
35
35
 
36
36
  unique_ptr<ParsedExpression> Copy() const override;
37
37
 
@@ -27,7 +27,7 @@ public:
27
27
  public:
28
28
  string ToString() const override;
29
29
 
30
- static bool Equal(const ConstantExpression *a, const ConstantExpression *b);
30
+ static bool Equal(const ConstantExpression &a, const ConstantExpression &b);
31
31
  hash_t Hash() const override;
32
32
 
33
33
  unique_ptr<ParsedExpression> Copy() const override;
@@ -53,7 +53,7 @@ public:
53
53
 
54
54
  unique_ptr<ParsedExpression> Copy() const override;
55
55
 
56
- static bool Equal(const FunctionExpression *a, const FunctionExpression *b);
56
+ static bool Equal(const FunctionExpression &a, const FunctionExpression &b);
57
57
  hash_t Hash() const override;
58
58
 
59
59
  void Serialize(FieldWriter &writer) const override;
@@ -33,7 +33,7 @@ public:
33
33
  public:
34
34
  string ToString() const override;
35
35
 
36
- static bool Equal(const LambdaExpression *a, const LambdaExpression *b);
36
+ static bool Equal(const LambdaExpression &a, const LambdaExpression &b);
37
37
  hash_t Hash() const override;
38
38
 
39
39
  unique_ptr<ParsedExpression> Copy() const override;
@@ -29,7 +29,7 @@ public:
29
29
  public:
30
30
  string ToString() const override;
31
31
 
32
- static bool Equal(const OperatorExpression *a, const OperatorExpression *b);
32
+ static bool Equal(const OperatorExpression &a, const OperatorExpression &b);
33
33
 
34
34
  unique_ptr<ParsedExpression> Copy() const override;
35
35
 
@@ -30,7 +30,7 @@ public:
30
30
 
31
31
  string ToString() const override;
32
32
 
33
- static bool Equal(const ParameterExpression *a, const ParameterExpression *b);
33
+ static bool Equal(const ParameterExpression &a, const ParameterExpression &b);
34
34
 
35
35
  unique_ptr<ParsedExpression> Copy() const override;
36
36
  hash_t Hash() const override;
@@ -27,7 +27,7 @@ public:
27
27
 
28
28
  string ToString() const override;
29
29
 
30
- static bool Equal(const PositionalReferenceExpression *a, const PositionalReferenceExpression *b);
30
+ static bool Equal(const PositionalReferenceExpression &a, const PositionalReferenceExpression &b);
31
31
  unique_ptr<ParsedExpression> Copy() const override;
32
32
  hash_t Hash() const override;
33
33