duckdb 0.8.1-dev2.0 → 0.8.1-dev219.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 (586) 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/json/include/json_common.hpp +1 -1
  5. package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
  6. package/src/duckdb/extension/json/json_functions/json_create.cpp +6 -6
  7. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +1 -1
  8. package/src/duckdb/extension/json/json_functions/json_transform.cpp +1 -1
  9. package/src/duckdb/extension/parquet/column_reader.cpp +57 -52
  10. package/src/duckdb/extension/parquet/column_writer.cpp +57 -45
  11. package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +1 -1
  12. package/src/duckdb/extension/parquet/include/column_reader.hpp +5 -4
  13. package/src/duckdb/extension/parquet/include/column_writer.hpp +24 -0
  14. package/src/duckdb/extension/parquet/include/decode_utils.hpp +6 -0
  15. package/src/duckdb/extension/parquet/include/list_column_reader.hpp +1 -1
  16. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
  17. package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
  18. package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
  19. package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
  20. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
  21. package/src/duckdb/extension/parquet/parquet-extension.cpp +1 -1
  22. package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
  23. package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
  24. package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
  25. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
  26. package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
  27. package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
  28. package/src/duckdb/src/catalog/catalog.cpp +5 -21
  29. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +113 -0
  30. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +7 -0
  31. package/src/duckdb/src/catalog/catalog_entry.cpp +4 -4
  32. package/src/duckdb/src/catalog/catalog_search_path.cpp +49 -12
  33. package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
  34. package/src/duckdb/src/catalog/default/default_types.cpp +9 -84
  35. package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
  36. package/src/duckdb/src/catalog/duck_catalog.cpp +1 -0
  37. package/src/duckdb/src/common/adbc/adbc.cpp +301 -106
  38. package/src/duckdb/src/common/adbc/driver_manager.cpp +10 -22
  39. package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
  40. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +7 -7
  41. package/src/duckdb/src/common/checksum.cpp +1 -1
  42. package/src/duckdb/src/common/compressed_file_system.cpp +6 -6
  43. package/src/duckdb/src/common/crypto/md5.cpp +9 -9
  44. package/src/duckdb/src/common/exception.cpp +4 -1
  45. package/src/duckdb/src/common/exception_format_value.cpp +19 -14
  46. package/src/duckdb/src/common/field_writer.cpp +1 -1
  47. package/src/duckdb/src/common/file_system.cpp +15 -2
  48. package/src/duckdb/src/common/fsst.cpp +11 -6
  49. package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
  50. package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
  51. package/src/duckdb/src/common/local_file_system.cpp +11 -11
  52. package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
  53. package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
  54. package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
  55. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
  56. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
  57. package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
  58. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
  59. package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
  60. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
  61. package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
  62. package/src/duckdb/src/common/serializer.cpp +1 -1
  63. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  64. package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
  65. package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
  66. package/src/duckdb/src/common/types/bit.cpp +5 -5
  67. package/src/duckdb/src/common/types/blob.cpp +8 -8
  68. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
  69. package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
  70. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  71. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  72. package/src/duckdb/src/common/types/hash.cpp +2 -2
  73. package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
  74. package/src/duckdb/src/common/types/list_segment.cpp +77 -49
  75. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
  76. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +5 -4
  77. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
  78. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +59 -24
  79. package/src/duckdb/src/common/types/string_heap.cpp +1 -1
  80. package/src/duckdb/src/common/types/value.cpp +3 -2
  81. package/src/duckdb/src/common/types/vector.cpp +101 -101
  82. package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
  83. package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
  84. package/src/duckdb/src/common/types.cpp +44 -33
  85. package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
  86. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
  87. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
  88. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
  89. package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +30 -33
  90. package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +0 -4
  91. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +32 -36
  92. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +53 -66
  93. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +48 -48
  94. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +44 -44
  95. package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +32 -32
  96. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +34 -34
  97. package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +30 -31
  98. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +91 -103
  99. package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +17 -17
  100. package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +25 -27
  101. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +36 -37
  102. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
  103. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +48 -84
  104. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
  105. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +97 -121
  106. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +62 -99
  107. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
  108. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +22 -23
  109. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +16 -18
  110. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +22 -25
  111. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +19 -24
  112. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +18 -23
  113. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +14 -18
  114. package/src/duckdb/src/core_functions/function_list.cpp +1 -0
  115. package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
  116. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +45 -45
  117. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
  118. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
  119. package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
  120. package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
  121. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +14 -0
  122. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +3 -3
  123. package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
  124. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +3 -3
  125. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +6 -7
  126. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
  127. package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
  128. package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
  129. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +4 -1
  130. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
  131. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +3 -3
  132. package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
  133. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
  134. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
  135. package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
  136. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  137. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
  138. package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
  139. package/src/duckdb/src/execution/expression_executor.cpp +33 -28
  140. package/src/duckdb/src/execution/index/art/art.cpp +30 -32
  141. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +3 -4
  142. package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
  143. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
  144. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
  145. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  146. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
  147. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
  148. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
  149. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
  150. package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +5 -2
  151. package/src/duckdb/src/execution/operator/helper/physical_set.cpp +5 -1
  152. package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
  153. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
  154. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  155. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
  156. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
  157. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
  158. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
  159. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
  160. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
  161. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
  162. package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +2 -0
  163. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
  164. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  165. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
  166. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
  167. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -3
  168. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
  169. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
  170. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
  171. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  172. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
  173. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  174. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
  175. package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
  176. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
  177. package/src/duckdb/src/execution/reservoir_sample.cpp +2 -2
  178. package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
  179. package/src/duckdb/src/function/aggregate/distributive/count.cpp +158 -20
  180. package/src/duckdb/src/function/aggregate/distributive/first.cpp +66 -74
  181. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +13 -13
  182. package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
  183. package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
  184. package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
  185. package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
  186. package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
  187. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
  188. package/src/duckdb/src/function/pragma/pragma_queries.cpp +33 -23
  189. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
  190. package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
  191. package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -3
  192. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -3
  193. package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
  194. package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
  195. package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
  196. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
  197. package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
  198. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
  199. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
  200. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +25 -23
  201. package/src/duckdb/src/function/scalar_function.cpp +3 -3
  202. package/src/duckdb/src/function/table/arrow.cpp +6 -6
  203. package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
  204. package/src/duckdb/src/function/table/checkpoint.cpp +1 -1
  205. package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
  206. package/src/duckdb/src/function/table/glob.cpp +1 -1
  207. package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
  208. package/src/duckdb/src/function/table/range.cpp +4 -4
  209. package/src/duckdb/src/function/table/read_csv.cpp +15 -23
  210. package/src/duckdb/src/function/table/repeat.cpp +2 -2
  211. package/src/duckdb/src/function/table/repeat_row.cpp +10 -3
  212. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
  213. package/src/duckdb/src/function/table/system/test_vector_types.cpp +1 -1
  214. package/src/duckdb/src/function/table/table_scan.cpp +2 -2
  215. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  216. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  217. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -5
  218. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -0
  219. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +6 -0
  220. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
  221. package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +8 -2
  222. package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +97 -0
  223. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +5 -0
  224. package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
  225. package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
  226. package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
  227. package/src/duckdb/src/include/duckdb/common/exception.hpp +5 -2
  228. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
  229. package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
  230. package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
  231. package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
  232. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
  233. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
  234. package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
  235. package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
  236. package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
  237. package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
  238. package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
  239. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
  240. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
  241. package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
  242. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
  243. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
  244. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +112 -76
  245. package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
  246. package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
  247. package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
  248. package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
  249. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +20 -24
  250. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +36 -39
  251. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +57 -53
  252. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +8 -9
  253. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +16 -18
  254. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +7 -8
  255. package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +9 -0
  256. package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +2 -6
  257. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +16 -36
  258. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
  259. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +3 -3
  260. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
  261. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
  262. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
  263. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
  264. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +8 -29
  265. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +95 -0
  266. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
  267. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
  268. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
  269. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
  270. package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
  271. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +3 -1
  272. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
  273. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
  274. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
  275. package/src/duckdb/src/include/duckdb/function/table_function.hpp +6 -6
  276. package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
  277. package/src/duckdb/src/include/duckdb/main/config.hpp +2 -0
  278. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  279. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
  280. package/src/duckdb/src/include/duckdb/main/query_result.hpp +17 -0
  281. package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
  282. package/src/duckdb/src/include/duckdb/main/settings.hpp +9 -0
  283. package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
  284. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
  285. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
  286. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
  287. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
  288. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
  289. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  290. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
  291. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
  292. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
  293. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
  294. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  295. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
  296. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
  297. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
  298. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
  299. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
  300. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
  301. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  302. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  303. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
  304. package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
  305. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
  306. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
  307. package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
  308. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  309. package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
  310. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
  311. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
  312. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
  313. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -2
  314. package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
  315. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  316. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +1 -1
  317. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
  318. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
  319. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
  320. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +107 -91
  321. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -2
  322. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
  323. package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
  324. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +34 -1
  325. package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
  326. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
  327. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
  328. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
  329. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
  330. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
  331. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
  332. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
  333. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
  334. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
  335. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
  336. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
  337. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
  338. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
  339. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
  340. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
  341. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
  342. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
  343. package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
  344. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
  345. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
  346. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
  347. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
  348. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +2 -2
  349. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
  350. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
  351. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
  352. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  353. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
  354. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
  355. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
  356. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
  357. package/src/duckdb/src/include/duckdb/storage/index.hpp +2 -2
  358. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
  359. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
  360. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
  361. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
  362. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
  363. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
  364. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
  365. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
  366. package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
  367. package/src/duckdb/src/main/capi/arrow-c.cpp +10 -10
  368. package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
  369. package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
  370. package/src/duckdb/src/main/capi/config-c.cpp +1 -1
  371. package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
  372. package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
  373. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
  374. package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
  375. package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
  376. package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
  377. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
  378. package/src/duckdb/src/main/capi/result-c.cpp +23 -23
  379. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  380. package/src/duckdb/src/main/client_context.cpp +3 -3
  381. package/src/duckdb/src/main/config.cpp +1 -0
  382. package/src/duckdb/src/main/database_manager.cpp +1 -1
  383. package/src/duckdb/src/main/error_manager.cpp +1 -1
  384. package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
  385. package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
  386. package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
  387. package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
  388. package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
  389. package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
  390. package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
  391. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  392. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  393. package/src/duckdb/src/main/relation.cpp +1 -1
  394. package/src/duckdb/src/main/settings/settings.cpp +22 -6
  395. package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
  396. package/src/duckdb/src/optimizer/expression_heuristics.cpp +1 -0
  397. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  398. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
  399. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +4 -7
  400. package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
  401. package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
  402. package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
  403. package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
  404. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
  405. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
  406. package/src/duckdb/src/parallel/executor.cpp +1 -1
  407. package/src/duckdb/src/parser/base_expression.cpp +2 -5
  408. package/src/duckdb/src/parser/column_definition.cpp +5 -8
  409. package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
  410. package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
  411. package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
  412. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
  413. package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
  414. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
  415. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
  416. package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
  417. package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
  418. package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
  419. package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
  420. package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
  421. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
  422. package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
  423. package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
  424. package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
  425. package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
  426. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
  427. package/src/duckdb/src/parser/parser.cpp +4 -4
  428. package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
  429. package/src/duckdb/src/parser/query_node.cpp +7 -6
  430. package/src/duckdb/src/parser/result_modifier.cpp +25 -18
  431. package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
  432. package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
  433. package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
  434. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
  435. package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
  436. package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
  437. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
  438. package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
  439. package/src/duckdb/src/parser/tableref.cpp +12 -3
  440. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
  441. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
  442. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
  443. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
  444. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
  445. package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
  446. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
  447. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
  448. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
  449. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +70 -75
  450. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
  451. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
  452. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
  453. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
  454. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +28 -29
  455. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
  456. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
  457. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
  458. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
  459. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
  460. package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
  461. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
  462. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
  463. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
  464. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
  465. package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
  466. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
  467. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
  468. package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +3 -4
  469. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
  470. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
  471. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
  472. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
  473. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
  474. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
  475. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
  476. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
  477. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
  478. package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
  479. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -22
  480. package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
  481. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
  482. package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
  483. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
  484. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
  485. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
  486. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
  487. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
  488. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
  489. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
  490. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
  491. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
  492. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
  493. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
  494. package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
  495. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
  496. package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
  497. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
  498. package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
  499. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
  500. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
  501. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
  502. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +30 -27
  503. package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
  504. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
  505. package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
  506. package/src/duckdb/src/parser/transformer.cpp +46 -46
  507. package/src/duckdb/src/planner/bind_context.cpp +9 -10
  508. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -1
  509. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
  510. package/src/duckdb/src/planner/binder/expression/bind_positional_reference_expression.cpp +7 -2
  511. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
  512. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
  513. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +8 -8
  514. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
  515. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +13 -5
  516. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
  517. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +2 -114
  518. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +4 -2
  519. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +17 -7
  520. package/src/duckdb/src/planner/binder.cpp +1 -1
  521. package/src/duckdb/src/planner/bound_result_modifier.cpp +16 -11
  522. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +5 -5
  523. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
  524. package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
  525. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
  526. package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
  527. package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
  528. package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
  529. package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
  530. package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
  531. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
  532. package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
  533. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
  534. package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
  535. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
  536. package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
  537. package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
  538. package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
  539. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
  540. package/src/duckdb/src/planner/expression.cpp +15 -0
  541. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
  542. package/src/duckdb/src/planner/expression_binder.cpp +3 -2
  543. package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
  544. package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
  545. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  546. package/src/duckdb/src/planner/logical_operator.cpp +3 -4
  547. package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
  548. package/src/duckdb/src/planner/table_filter.cpp +1 -1
  549. package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
  550. package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
  551. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
  552. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
  553. package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
  554. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
  555. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
  556. package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
  557. package/src/duckdb/src/storage/compression/rle.cpp +8 -8
  558. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
  559. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
  560. package/src/duckdb/src/storage/data_table.cpp +8 -7
  561. package/src/duckdb/src/storage/index.cpp +1 -3
  562. package/src/duckdb/src/storage/local_storage.cpp +2 -1
  563. package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
  564. package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
  565. package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
  566. package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
  567. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
  568. package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
  569. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
  570. package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
  571. package/src/duckdb/src/storage/table/list_column_data.cpp +8 -7
  572. package/src/duckdb/src/storage/table/row_group.cpp +4 -4
  573. package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -1
  574. package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
  575. package/src/duckdb/src/storage/wal_replay.cpp +5 -6
  576. package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
  577. package/src/duckdb/src/transaction/commit_state.cpp +8 -8
  578. package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
  579. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
  580. package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
  581. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
  582. package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
  583. package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
  584. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +13479 -13564
  585. package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
  586. package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +5 -5
@@ -59,7 +59,7 @@ SwizzleablePointer FixedSizeAllocator::New() {
59
59
  buffers_with_free_space.insert(buffer_id);
60
60
 
61
61
  // set the bitmask
62
- ValidityMask mask((validity_t *)buffer);
62
+ ValidityMask mask(reinterpret_cast<validity_t *>(buffer));
63
63
  mask.SetAllValid(allocations_per_buffer);
64
64
  }
65
65
 
@@ -67,7 +67,7 @@ SwizzleablePointer FixedSizeAllocator::New() {
67
67
  D_ASSERT(!buffers_with_free_space.empty());
68
68
  auto buffer_id = (uint32_t)*buffers_with_free_space.begin();
69
69
 
70
- auto bitmask_ptr = (validity_t *)buffers[buffer_id].ptr;
70
+ auto bitmask_ptr = reinterpret_cast<validity_t *>(buffers[buffer_id].ptr);
71
71
  ValidityMask mask(bitmask_ptr);
72
72
  auto offset = GetOffset(mask, buffers[buffer_id].allocation_count);
73
73
 
@@ -81,8 +81,7 @@ SwizzleablePointer FixedSizeAllocator::New() {
81
81
  }
82
82
 
83
83
  void FixedSizeAllocator::Free(const SwizzleablePointer ptr) {
84
-
85
- auto bitmask_ptr = (validity_t *)buffers[ptr.buffer_id].ptr;
84
+ auto bitmask_ptr = reinterpret_cast<validity_t *>(buffers[ptr.buffer_id].ptr);
86
85
  ValidityMask mask(bitmask_ptr);
87
86
  D_ASSERT(!mask.RowIsValid(ptr.offset));
88
87
  mask.SetValid(ptr.offset);
@@ -102,9 +102,9 @@ void JoinHashTable::ApplyBitmask(Vector &hashes, const SelectionVector &sel, idx
102
102
  UnifiedVectorFormat hdata;
103
103
  hashes.ToUnifiedFormat(count, hdata);
104
104
 
105
- auto hash_data = (hash_t *)hdata.data;
105
+ auto hash_data = UnifiedVectorFormat::GetData<hash_t>(hdata);
106
106
  auto result_data = FlatVector::GetData<data_ptr_t *>(pointers);
107
- auto main_ht = (data_ptr_t *)hash_map.get();
107
+ auto main_ht = reinterpret_cast<data_ptr_t *>(hash_map.get());
108
108
  for (idx_t i = 0; i < count; i++) {
109
109
  auto rindex = sel.get_index(i);
110
110
  auto hindex = hdata.sel->get_index(rindex);
@@ -269,7 +269,7 @@ void JoinHashTable::InsertHashes(Vector &hashes, idx_t count, data_ptr_t key_loc
269
269
  hashes.Flatten(count);
270
270
  D_ASSERT(hashes.GetVectorType() == VectorType::FLAT_VECTOR);
271
271
 
272
- auto pointers = (atomic<data_ptr_t> *)hash_map.get();
272
+ auto pointers = reinterpret_cast<atomic<data_ptr_t> *>(hash_map.get());
273
273
  auto indices = FlatVector::GetData<hash_t>(hashes);
274
274
 
275
275
  if (parallel) {
@@ -300,7 +300,7 @@ void JoinHashTable::InitializePointerTable() {
300
300
  D_ASSERT(hash_map.GetSize() == capacity * sizeof(data_ptr_t));
301
301
 
302
302
  // initialize HT with all-zero entries
303
- std::fill_n((data_ptr_t *)hash_map.get(), capacity, nullptr);
303
+ std::fill_n(reinterpret_cast<data_ptr_t *>(hash_map.get()), capacity, nullptr);
304
304
 
305
305
  bitmask = capacity - 1;
306
306
  }
@@ -24,8 +24,8 @@ struct InitialNestedLoopJoin {
24
24
  left.ToUnifiedFormat(left_size, left_data);
25
25
  right.ToUnifiedFormat(right_size, right_data);
26
26
 
27
- auto ldata = (T *)left_data.data;
28
- auto rdata = (T *)right_data.data;
27
+ auto ldata = UnifiedVectorFormat::GetData<T>(left_data);
28
+ auto rdata = UnifiedVectorFormat::GetData<T>(right_data);
29
29
  idx_t result_count = 0;
30
30
  for (; rpos < right_size; rpos++) {
31
31
  idx_t right_position = right_data.sel->get_index(rpos);
@@ -62,8 +62,8 @@ struct RefineNestedLoopJoin {
62
62
  // refine lvector and rvector based on matches of subsequent conditions (in case there are multiple conditions
63
63
  // in the join)
64
64
  D_ASSERT(current_match_count > 0);
65
- auto ldata = (T *)left_data.data;
66
- auto rdata = (T *)right_data.data;
65
+ auto ldata = UnifiedVectorFormat::GetData<T>(left_data);
66
+ auto rdata = UnifiedVectorFormat::GetData<T>(right_data);
67
67
  idx_t result_count = 0;
68
68
  for (idx_t i = 0; i < current_match_count; i++) {
69
69
  auto lidx = lvector.get_index(i);
@@ -10,8 +10,8 @@ static void TemplatedMarkJoin(Vector &left, Vector &right, idx_t lcount, idx_t r
10
10
  left.ToUnifiedFormat(lcount, left_data);
11
11
  right.ToUnifiedFormat(rcount, right_data);
12
12
 
13
- auto ldata = (T *)left_data.data;
14
- auto rdata = (T *)right_data.data;
13
+ auto ldata = UnifiedVectorFormat::GetData<T>(left_data);
14
+ auto rdata = UnifiedVectorFormat::GetData<T>(right_data);
15
15
  for (idx_t i = 0; i < lcount; i++) {
16
16
  if (found_match[i]) {
17
17
  continue;
@@ -124,7 +124,7 @@ struct FindMatchingAggregate {
124
124
  if (other.children.size() != aggr.children.size()) {
125
125
  return false;
126
126
  }
127
- if (!Expression::Equals(aggr.filter.get(), other.filter.get())) {
127
+ if (!Expression::Equals(aggr.filter, other.filter)) {
128
128
  return false;
129
129
  }
130
130
  for (idx_t i = 0; i < aggr.children.size(); i++) {
@@ -186,7 +186,7 @@ unique_ptr<GlobalSourceState> PhysicalPerfectHashAggregate::GetGlobalSourceState
186
186
 
187
187
  SourceResultType PhysicalPerfectHashAggregate::GetData(ExecutionContext &context, DataChunk &chunk,
188
188
  OperatorSourceInput &input) const {
189
- auto &state = (PerfectHashAggregateState &)input.global_state;
189
+ auto &state = input.global_state.Cast<PerfectHashAggregateState>();
190
190
  auto &gstate = sink_state->Cast<PerfectHashAggregateGlobalState>();
191
191
 
192
192
  gstate.ht->Scan(state.ht_scan_position, chunk);
@@ -26,7 +26,7 @@ class StreamingWindowState : public OperatorState {
26
26
  public:
27
27
  using StateBuffer = vector<data_t>;
28
28
 
29
- StreamingWindowState() : initialized(false), statev(LogicalType::POINTER, (data_ptr_t)&state_ptr) {
29
+ StreamingWindowState() : initialized(false), statev(LogicalType::POINTER, data_ptr_cast(&state_ptr)) {
30
30
  }
31
31
 
32
32
  ~StreamingWindowState() override {
@@ -109,7 +109,7 @@ unique_ptr<OperatorState> PhysicalStreamingWindow::GetOperatorState(ExecutionCon
109
109
  OperatorResultType PhysicalStreamingWindow::Execute(ExecutionContext &context, DataChunk &input, DataChunk &chunk,
110
110
  GlobalOperatorState &gstate_p, OperatorState &state_p) const {
111
111
  auto &gstate = gstate_p.Cast<StreamingWindowGlobalState>();
112
- auto &state = (StreamingWindowState &)state_p;
112
+ auto &state = state_p.Cast<StreamingWindowState>();
113
113
  if (!state.initialized) {
114
114
  state.Initialize(context.client, input, select_list);
115
115
  }
@@ -55,7 +55,7 @@ struct AggregateState {
55
55
  if (!destructors[i]) {
56
56
  continue;
57
57
  }
58
- Vector state_vector(Value::POINTER((uintptr_t)aggregates[i].get()));
58
+ Vector state_vector(Value::POINTER(CastPointerToValue(aggregates[i].get())));
59
59
  state_vector.SetVectorType(VectorType::FLAT_VECTOR);
60
60
 
61
61
  AggregateInputData aggr_input_data(bind_data[i], Allocator::DefaultAllocator());
@@ -332,8 +332,8 @@ void PhysicalUngroupedAggregate::Combine(ExecutionContext &context, GlobalSinkSt
332
332
  continue;
333
333
  }
334
334
 
335
- Vector source_state(Value::POINTER((uintptr_t)source.state.aggregates[aggr_idx].get()));
336
- Vector dest_state(Value::POINTER((uintptr_t)gstate.state.aggregates[aggr_idx].get()));
335
+ Vector source_state(Value::POINTER(CastPointerToValue(source.state.aggregates[aggr_idx].get())));
336
+ Vector dest_state(Value::POINTER(CastPointerToValue(gstate.state.aggregates[aggr_idx].get())));
337
337
 
338
338
  AggregateInputData aggr_input_data(aggregate.bind_info.get(), Allocator::DefaultAllocator());
339
339
  aggregate.function.combine(source_state, dest_state, aggr_input_data, 1);
@@ -565,7 +565,7 @@ SourceResultType PhysicalUngroupedAggregate::GetData(ExecutionContext &context,
565
565
  for (idx_t aggr_idx = 0; aggr_idx < aggregates.size(); aggr_idx++) {
566
566
  auto &aggregate = aggregates[aggr_idx]->Cast<BoundAggregateExpression>();
567
567
 
568
- Vector state_vector(Value::POINTER((uintptr_t)gstate.state.aggregates[aggr_idx].get()));
568
+ Vector state_vector(Value::POINTER(CastPointerToValue(gstate.state.aggregates[aggr_idx].get())));
569
569
  AggregateInputData aggr_input_data(aggregate.bind_info.get(), Allocator::DefaultAllocator());
570
570
  aggregate.function.finalize(state_vector, aggr_input_data, chunk.data[aggr_idx], 1, 0);
571
571
  }
@@ -41,7 +41,7 @@ unique_ptr<OperatorState> PhysicalFilter::GetOperatorState(ExecutionContext &con
41
41
 
42
42
  OperatorResultType PhysicalFilter::ExecuteInternal(ExecutionContext &context, DataChunk &input, DataChunk &chunk,
43
43
  GlobalOperatorState &gstate, OperatorState &state_p) const {
44
- auto &state = (FilterState &)state_p;
44
+ auto &state = state_p.Cast<FilterState>();
45
45
  idx_t result_count = state.executor.SelectExpression(input, state.sel);
46
46
  if (result_count == input.size()) {
47
47
  // nothing was filtered: skip adding any selection vectors
@@ -20,10 +20,14 @@ void PhysicalReset::ResetExtensionVariable(ExecutionContext &context, DBConfig &
20
20
  }
21
21
 
22
22
  SourceResultType PhysicalReset::GetData(ExecutionContext &context, DataChunk &chunk, OperatorSourceInput &input) const {
23
+ auto &config = DBConfig::GetConfig(context.client);
24
+ if (config.options.lock_configuration) {
25
+ throw InvalidInputException("Cannot reset configuration option \"%s\" - the configuration has been locked",
26
+ name);
27
+ }
23
28
  auto option = DBConfig::GetOptionByName(name);
24
29
  if (!option) {
25
30
  // check if this is an extra extension variable
26
- auto &config = DBConfig::GetConfig(context.client);
27
31
  auto entry = config.extension_parameters.find(name);
28
32
  if (entry == config.extension_parameters.end()) {
29
33
  throw Catalog::UnrecognizedConfigurationError(context.client, name);
@@ -49,7 +53,6 @@ SourceResultType PhysicalReset::GetData(ExecutionContext &context, DataChunk &ch
49
53
  throw CatalogException("option \"%s\" cannot be reset globally", name);
50
54
  }
51
55
  auto &db = DatabaseInstance::GetDatabase(context.client);
52
- auto &config = DBConfig::GetConfig(context.client);
53
56
  config.ResetOption(&db, *option);
54
57
  break;
55
58
  }
@@ -23,10 +23,14 @@ void PhysicalSet::SetExtensionVariable(ClientContext &context, ExtensionOption &
23
23
  }
24
24
 
25
25
  SourceResultType PhysicalSet::GetData(ExecutionContext &context, DataChunk &chunk, OperatorSourceInput &input) const {
26
+ auto &config = DBConfig::GetConfig(context.client);
27
+ if (config.options.lock_configuration) {
28
+ throw InvalidInputException("Cannot change configuration option \"%s\" - the configuration has been locked",
29
+ name);
30
+ }
26
31
  auto option = DBConfig::GetOptionByName(name);
27
32
  if (!option) {
28
33
  // check if this is an extra extension variable
29
- auto &config = DBConfig::GetConfig(context.client);
30
34
  auto entry = config.extension_parameters.find(name);
31
35
  if (entry == config.extension_parameters.end()) {
32
36
  throw Catalog::UnrecognizedConfigurationError(context.client, name);
@@ -63,7 +63,7 @@ void OuterJoinMarker::ConstructLeftJoinResult(DataChunk &left, DataChunk &result
63
63
  }
64
64
 
65
65
  idx_t OuterJoinMarker::MaxThreads() const {
66
- return count / (STANDARD_VECTOR_SIZE * 10);
66
+ return count / (STANDARD_VECTOR_SIZE * 10ULL);
67
67
  }
68
68
 
69
69
  void OuterJoinMarker::InitializeScan(ColumnDataCollection &data, OuterJoinGlobalScanState &gstate) {
@@ -168,7 +168,7 @@ unique_ptr<OperatorState> PerfectHashJoinExecutor::GetOperatorState(ExecutionCon
168
168
 
169
169
  OperatorResultType PerfectHashJoinExecutor::ProbePerfectHashTable(ExecutionContext &context, DataChunk &input,
170
170
  DataChunk &result, OperatorState &state_p) {
171
- auto &state = (PerfectHashJoinState &)state_p;
171
+ auto &state = state_p.Cast<PerfectHashJoinState>();
172
172
  // keeps track of how many probe keys have a match
173
173
  idx_t probe_sel_count = 0;
174
174
 
@@ -305,7 +305,7 @@ void AsOfLocalState::ResolveJoinKeys(DataChunk &input) {
305
305
 
306
306
  DataChunk payload_chunk;
307
307
  payload_chunk.InitializeEmpty({LogicalType::UINTEGER});
308
- FlatVector::SetData(payload_chunk.data[0], (data_ptr_t)lhs_sel.data());
308
+ FlatVector::SetData(payload_chunk.data[0], data_ptr_cast(lhs_sel.data()));
309
309
  payload_chunk.SetCardinality(lhs_valid);
310
310
  local_sort.SinkChunk(lhs_keys, payload_chunk);
311
311
 
@@ -338,7 +338,7 @@ void AsOfLocalState::ResolveJoin(DataChunk &input, bool *found_match, std::pair<
338
338
  // But they may be constant, so unify.
339
339
  UnifiedVectorFormat bin_unified;
340
340
  bin_vector.ToUnifiedFormat(lhs_valid, bin_unified);
341
- const auto bins = (hash_t *)bin_unified.data;
341
+ const auto bins = UnifiedVectorFormat::GetData<hash_t>(bin_unified);
342
342
 
343
343
  hash_t prev_bin = global_partition.bin_groups.size();
344
344
  optional_ptr<PartitionGlobalHashGroup> hash_group;
@@ -111,7 +111,7 @@ OperatorResultType PhysicalBlockwiseNLJoin::ExecuteInternal(ExecutionContext &co
111
111
  DataChunk &chunk, GlobalOperatorState &gstate_p,
112
112
  OperatorState &state_p) const {
113
113
  D_ASSERT(input.size() > 0);
114
- auto &state = (BlockwiseNLJoinState &)state_p;
114
+ auto &state = state_p.Cast<BlockwiseNLJoinState>();
115
115
  auto &gstate = sink_state->Cast<BlockwiseNLJoinGlobalState>();
116
116
 
117
117
  if (gstate.right_chunks.Count() == 0) {
@@ -244,7 +244,7 @@ unique_ptr<GlobalSourceState> PhysicalBlockwiseNLJoin::GetGlobalSourceState(Clie
244
244
 
245
245
  unique_ptr<LocalSourceState> PhysicalBlockwiseNLJoin::GetLocalSourceState(ExecutionContext &context,
246
246
  GlobalSourceState &gstate) const {
247
- return make_uniq<BlockwiseNLJoinLocalScanState>(*this, (BlockwiseNLJoinGlobalScanState &)gstate);
247
+ return make_uniq<BlockwiseNLJoinLocalScanState>(*this, gstate.Cast<BlockwiseNLJoinGlobalScanState>());
248
248
  }
249
249
 
250
250
  SourceResultType PhysicalBlockwiseNLJoin::GetData(ExecutionContext &context, DataChunk &chunk,
@@ -252,8 +252,8 @@ SourceResultType PhysicalBlockwiseNLJoin::GetData(ExecutionContext &context, Dat
252
252
  D_ASSERT(IsRightOuterJoin(join_type));
253
253
  // check if we need to scan any unmatched tuples from the RHS for the full/right outer join
254
254
  auto &sink = sink_state->Cast<BlockwiseNLJoinGlobalState>();
255
- auto &gstate = (BlockwiseNLJoinGlobalScanState &)input.global_state;
256
- auto &lstate = (BlockwiseNLJoinLocalScanState &)input.local_state;
255
+ auto &gstate = input.global_state.Cast<BlockwiseNLJoinGlobalScanState>();
256
+ auto &lstate = input.local_state.Cast<BlockwiseNLJoinLocalScanState>();
257
257
 
258
258
  // if the LHS is exhausted in a FULL/RIGHT OUTER JOIN, we scan chunks we still need to output
259
259
  sink.right_outer.Scan(gstate.scan_state, lstate.scan_state, chunk);
@@ -67,7 +67,7 @@ PhysicalIndexJoin::PhysicalIndexJoin(LogicalOperator &op, unique_ptr<PhysicalOpe
67
67
  left_projection_map(left_projection_map_p), right_projection_map(std::move(right_projection_map_p)),
68
68
  index(index_p), conditions(std::move(cond)), join_type(join_type), lhs_first(lhs_first) {
69
69
  D_ASSERT(right->type == PhysicalOperatorType::TABLE_SCAN);
70
- auto &tbl_scan = (PhysicalTableScan &)*right;
70
+ auto &tbl_scan = right->Cast<PhysicalTableScan>();
71
71
  column_ids = std::move(column_ids_p);
72
72
  children.push_back(std::move(left));
73
73
  children.push_back(std::move(right));
@@ -109,7 +109,7 @@ unique_ptr<OperatorState> PhysicalIndexJoin::GetOperatorState(ExecutionContext &
109
109
 
110
110
  void PhysicalIndexJoin::Output(ExecutionContext &context, DataChunk &input, DataChunk &chunk,
111
111
  OperatorState &state_p) const {
112
- auto &phy_tbl_scan = (PhysicalTableScan &)*children[1];
112
+ auto &phy_tbl_scan = children[1]->Cast<PhysicalTableScan>();
113
113
  auto &bind_tbl = phy_tbl_scan.bind_data->Cast<TableScanBindData>();
114
114
  auto &transaction = DuckTransaction::Get(context.client, bind_tbl.table.catalog);
115
115
  auto &state = state_p.Cast<IndexJoinOperatorState>();
@@ -139,7 +139,7 @@ void PhysicalIndexJoin::Output(ExecutionContext &context, DataChunk &input, Data
139
139
  }
140
140
  state.rhs_chunk.Reset();
141
141
  state.fetch_state = make_uniq<ColumnFetchState>();
142
- Vector row_ids(LogicalType::ROW_TYPE, (data_ptr_t)&fetch_rows[0]);
142
+ Vector row_ids(LogicalType::ROW_TYPE, data_ptr_cast(&fetch_rows[0]));
143
143
  tbl.Fetch(transaction, state.rhs_chunk, fetch_ids, row_ids, output_sel_idx, *state.fetch_state);
144
144
  }
145
145
 
@@ -443,7 +443,7 @@ unique_ptr<GlobalSourceState> PhysicalNestedLoopJoin::GetGlobalSourceState(Clien
443
443
 
444
444
  unique_ptr<LocalSourceState> PhysicalNestedLoopJoin::GetLocalSourceState(ExecutionContext &context,
445
445
  GlobalSourceState &gstate) const {
446
- return make_uniq<NestedLoopJoinLocalScanState>(*this, (NestedLoopJoinGlobalScanState &)gstate);
446
+ return make_uniq<NestedLoopJoinLocalScanState>(*this, gstate.Cast<NestedLoopJoinGlobalScanState>());
447
447
  }
448
448
 
449
449
  SourceResultType PhysicalNestedLoopJoin::GetData(ExecutionContext &context, DataChunk &chunk,
@@ -451,8 +451,8 @@ SourceResultType PhysicalNestedLoopJoin::GetData(ExecutionContext &context, Data
451
451
  D_ASSERT(IsRightOuterJoin(join_type));
452
452
  // check if we need to scan any unmatched tuples from the RHS for the full/right outer join
453
453
  auto &sink = sink_state->Cast<NestedLoopJoinGlobalState>();
454
- auto &gstate = (NestedLoopJoinGlobalScanState &)input.global_state;
455
- auto &lstate = (NestedLoopJoinLocalScanState &)input.local_state;
454
+ auto &gstate = input.global_state.Cast<NestedLoopJoinGlobalScanState>();
455
+ auto &lstate = input.local_state.Cast<NestedLoopJoinLocalScanState>();
456
456
 
457
457
  // if the LHS is exhausted in a FULL/RIGHT OUTER JOIN, we scan chunks we still need to output
458
458
  sink.right_outer.Scan(gstate.scan_state, lstate.scan_state, chunk);
@@ -385,7 +385,7 @@ static idx_t MergeJoinSimpleBlocks(PiecewiseMergeJoinState &lstate, MergeJoinGlo
385
385
 
386
386
  void PhysicalPiecewiseMergeJoin::ResolveSimpleJoin(ExecutionContext &context, DataChunk &input, DataChunk &chunk,
387
387
  OperatorState &state_p) const {
388
- auto &state = (PiecewiseMergeJoinState &)state_p;
388
+ auto &state = state_p.Cast<PiecewiseMergeJoinState>();
389
389
  auto &gstate = sink_state->Cast<MergeJoinGlobalState>();
390
390
 
391
391
  state.ResolveJoinKeys(input);
@@ -507,7 +507,7 @@ static idx_t MergeJoinComplexBlocks(BlockMergeInfo &l, BlockMergeInfo &r, const
507
507
 
508
508
  OperatorResultType PhysicalPiecewiseMergeJoin::ResolveComplexJoin(ExecutionContext &context, DataChunk &input,
509
509
  DataChunk &chunk, OperatorState &state_p) const {
510
- auto &state = (PiecewiseMergeJoinState &)state_p;
510
+ auto &state = state_p.Cast<PiecewiseMergeJoinState>();
511
511
  auto &gstate = sink_state->Cast<MergeJoinGlobalState>();
512
512
  auto &rsorted = *gstate.table->global_sort_state.sorted_blocks[0];
513
513
  const auto left_cols = input.ColumnCount();
@@ -682,7 +682,7 @@ SourceResultType PhysicalPiecewiseMergeJoin::GetData(ExecutionContext &context,
682
682
  D_ASSERT(IsRightOuterJoin(join_type));
683
683
  // check if we need to scan any unmatched tuples from the RHS for the full/right outer join
684
684
  auto &sink = sink_state->Cast<MergeJoinGlobalState>();
685
- auto &state = (PiecewiseJoinScanState &)input.global_state;
685
+ auto &state = input.global_state.Cast<PiecewiseJoinScanState>();
686
686
 
687
687
  lock_guard<mutex> l(state.lock);
688
688
  if (!state.scanner) {
@@ -276,7 +276,7 @@ void TopNHeap::Finalize() {
276
276
  }
277
277
 
278
278
  void TopNHeap::Reduce() {
279
- idx_t min_sort_threshold = MaxValue<idx_t>(STANDARD_VECTOR_SIZE * 5, 2 * (limit + offset));
279
+ idx_t min_sort_threshold = MaxValue<idx_t>(STANDARD_VECTOR_SIZE * 5ULL, 2ULL * (limit + offset));
280
280
  if (sort_state.count < min_sort_threshold) {
281
281
  // only reduce when we pass two times the limit + offset, or 5 vectors (whichever comes first)
282
282
  return;
@@ -186,8 +186,8 @@ static string TrimWhitespace(const string &col_name) {
186
186
 
187
187
  static string NormalizeColumnName(const string &col_name) {
188
188
  // normalize UTF8 characters to NFKD
189
- auto nfkd = utf8proc_NFKD((const utf8proc_uint8_t *)col_name.c_str(), col_name.size());
190
- const string col_name_nfkd = string((const char *)nfkd, strlen((const char *)nfkd));
189
+ auto nfkd = utf8proc_NFKD(reinterpret_cast<const utf8proc_uint8_t *>(col_name.c_str()), col_name.size());
190
+ const string col_name_nfkd = string(const_char_ptr_cast(nfkd), strlen(const_char_ptr_cast(nfkd)));
191
191
  free(nfkd);
192
192
 
193
193
  // only keep ASCII characters 0-9 a-z A-Z and replace spaces with regular whitespace
@@ -99,7 +99,7 @@ idx_t CSVFileHandle::Read(void *buffer, idx_t nr_bytes) {
99
99
  }
100
100
  // we have data left to read from the file
101
101
  // read directly into the buffer
102
- auto bytes_read = file_handle->Read((char *)buffer + result_offset, nr_bytes - result_offset);
102
+ auto bytes_read = file_handle->Read(char_ptr_cast(buffer) + result_offset, nr_bytes - result_offset);
103
103
  file_size = file_handle->GetFileSize();
104
104
  read_position += bytes_read;
105
105
  if (reset_enabled) {
@@ -114,7 +114,7 @@ idx_t CSVFileHandle::Read(void *buffer, idx_t nr_bytes) {
114
114
  }
115
115
  cached_buffer = std::move(new_buffer);
116
116
  }
117
- memcpy(cached_buffer.get() + buffer_size, (char *)buffer + result_offset, bytes_read);
117
+ memcpy(cached_buffer.get() + buffer_size, char_ptr_cast(buffer) + result_offset, bytes_read);
118
118
  buffer_size += bytes_read;
119
119
  }
120
120
 
@@ -177,6 +177,8 @@ void BufferedCSVReaderOptions::SetReadOption(const string &loption, const Value
177
177
  null_padding = ParseBoolean(value, loption);
178
178
  } else if (loption == "allow_quoted_nulls") {
179
179
  allow_quoted_nulls = ParseBoolean(value, loption);
180
+ } else if (loption == "parallel") {
181
+ parallel_mode = ParseBoolean(value, loption) ? ParallelMode::PARALLEL : ParallelMode::SINGLE_THREADED;
180
182
  } else {
181
183
  throw BinderException("Unrecognized option for CSV reader \"%s\"", loption);
182
184
  }
@@ -279,9 +279,8 @@ unique_ptr<GlobalSinkState> PhysicalBatchInsert::GetGlobalSinkState(ClientContex
279
279
  // CREATE TABLE AS
280
280
  D_ASSERT(!insert_table);
281
281
  auto &catalog = schema->catalog;
282
- table = (TableCatalogEntry *)catalog
283
- .CreateTable(catalog.GetCatalogTransaction(context), *schema.get_mutable(), *info)
284
- .get();
282
+ auto created_table = catalog.CreateTable(catalog.GetCatalogTransaction(context), *schema.get_mutable(), *info);
283
+ table = &created_table->Cast<TableCatalogEntry>();
285
284
  } else {
286
285
  D_ASSERT(insert_table);
287
286
  D_ASSERT(insert_table->IsDuckTable());
@@ -63,7 +63,7 @@ PhysicalInsert::PhysicalInsert(LogicalOperator &op, SchemaCatalogEntry &schema,
63
63
 
64
64
  void PhysicalInsert::GetInsertInfo(const BoundCreateTableInfo &info, vector<LogicalType> &insert_types,
65
65
  vector<unique_ptr<Expression>> &bound_defaults) {
66
- auto &create_info = (CreateTableInfo &)*info.base;
66
+ auto &create_info = info.base->Cast<CreateTableInfo>();
67
67
  for (auto &col : create_info.columns.Physical()) {
68
68
  insert_types.push_back(col.GetType());
69
69
  bound_defaults.push_back(make_uniq<BoundConstantExpression>(Value(col.GetType())));
@@ -17,11 +17,11 @@ PhysicalPivot::PhysicalPivot(vector<LogicalType> types_p, unique_ptr<PhysicalOpe
17
17
  }
18
18
  // extract the empty aggregate expressions
19
19
  for (auto &aggr_expr : bound_pivot.aggregates) {
20
- auto &aggr = (BoundAggregateExpression &)*aggr_expr;
20
+ auto &aggr = aggr_expr->Cast<BoundAggregateExpression>();
21
21
  // for each aggregate, initialize an empty aggregate state and finalize it immediately
22
22
  auto state = make_unsafe_uniq_array<data_t>(aggr.function.state_size());
23
23
  aggr.function.initialize(state.get());
24
- Vector state_vector(Value::POINTER((uintptr_t)state.get()));
24
+ Vector state_vector(Value::POINTER(CastPointerToValue(state.get())));
25
25
  Vector result_vector(aggr_expr->return_type);
26
26
  AggregateInputData aggr_input_data(aggr.bind_info.get(), Allocator::DefaultAllocator());
27
27
  aggr.function.finalize(state_vector, aggr_input_data, result_vector, 1, 0);
@@ -27,7 +27,7 @@ PhysicalProjection::PhysicalProjection(vector<LogicalType> types, vector<unique_
27
27
 
28
28
  OperatorResultType PhysicalProjection::Execute(ExecutionContext &context, DataChunk &input, DataChunk &chunk,
29
29
  GlobalOperatorState &gstate, OperatorState &state_p) const {
30
- auto &state = (ProjectionState &)state_p;
30
+ auto &state = state_p.Cast<ProjectionState>();
31
31
  state.executor.Execute(input, chunk);
32
32
  return OperatorResultType::NEED_MORE_INPUT;
33
33
  }
@@ -65,7 +65,7 @@ void UnnestOperatorState::SetLongestListLength() {
65
65
  if (vector_data.validity.RowIsValid(current_idx)) {
66
66
 
67
67
  // check if this list is longer
68
- auto list_data = (list_entry_t *)vector_data.data;
68
+ auto list_data = UnifiedVectorFormat::GetData<list_entry_t>(vector_data);
69
69
  auto list_entry = list_data[current_idx];
70
70
  if (list_entry.length > longest_list_length) {
71
71
  longest_list_length = list_entry.length;
@@ -98,7 +98,7 @@ static void UnnestNull(idx_t start, idx_t end, Vector &result) {
98
98
  template <class T>
99
99
  static void TemplatedUnnest(UnifiedVectorFormat &vector_data, idx_t start, idx_t end, Vector &result) {
100
100
 
101
- auto source_data = (T *)vector_data.data;
101
+ auto source_data = UnifiedVectorFormat::GetData<T>(vector_data);
102
102
  auto &source_mask = vector_data.validity;
103
103
 
104
104
  D_ASSERT(result.GetVectorType() == VectorType::FLAT_VECTOR);
@@ -314,7 +314,7 @@ OperatorResultType PhysicalUnnest::ExecuteInternal(ExecutionContext &context, Da
314
314
 
315
315
  } else {
316
316
 
317
- auto list_data = (list_entry_t *)vector_data.data;
317
+ auto list_data = UnifiedVectorFormat::GetData<list_entry_t>(vector_data);
318
318
  auto list_entry = list_data[current_idx];
319
319
 
320
320
  idx_t list_count = 0;
@@ -1,6 +1,7 @@
1
1
  #include "duckdb/execution/operator/scan/physical_column_data_scan.hpp"
2
2
 
3
3
  #include "duckdb/execution/operator/join/physical_delim_join.hpp"
4
+ #include "duckdb/execution/operator/aggregate/physical_hash_aggregate.hpp"
4
5
  #include "duckdb/parallel/meta_pipeline.hpp"
5
6
  #include "duckdb/parallel/pipeline.hpp"
6
7
 
@@ -60,7 +61,7 @@ void PhysicalColumnDataScan::BuildPipelines(Pipeline &current, MetaPipeline &met
60
61
  D_ASSERT(delim_sink->type == PhysicalOperatorType::DELIM_JOIN);
61
62
  auto &delim_join = delim_sink->Cast<PhysicalDelimJoin>();
62
63
  current.AddDependency(delim_dependency);
63
- state.SetPipelineSource(current, (PhysicalOperator &)*delim_join.distinct);
64
+ state.SetPipelineSource(current, delim_join.distinct->Cast<PhysicalOperator>());
64
65
  return;
65
66
  }
66
67
  case PhysicalOperatorType::RECURSIVE_CTE_SCAN:
@@ -22,7 +22,7 @@ unique_ptr<OperatorState> PhysicalExpressionScan::GetOperatorState(ExecutionCont
22
22
 
23
23
  OperatorResultType PhysicalExpressionScan::Execute(ExecutionContext &context, DataChunk &input, DataChunk &chunk,
24
24
  GlobalOperatorState &gstate, OperatorState &state_p) const {
25
- auto &state = (ExpressionScanState &)state_p;
25
+ auto &state = state_p.Cast<ExpressionScanState>();
26
26
 
27
27
  for (; chunk.size() + input.size() <= STANDARD_VECTOR_SIZE && state.expression_index < expressions.size();
28
28
  state.expression_index++) {
@@ -19,7 +19,7 @@ PhysicalPositionalScan::PhysicalPositionalScan(vector<LogicalType> types, unique
19
19
  if (left->type == PhysicalOperatorType::TABLE_SCAN) {
20
20
  child_tables.emplace_back(std::move(left));
21
21
  } else if (left->type == PhysicalOperatorType::POSITIONAL_SCAN) {
22
- auto &left_scan = (PhysicalPositionalScan &)*left;
22
+ auto &left_scan = left->Cast<PhysicalPositionalScan>();
23
23
  child_tables = std::move(left_scan.child_tables);
24
24
  } else {
25
25
  throw InternalException("Invalid left input for PhysicalPositionalScan");
@@ -28,7 +28,7 @@ PhysicalPositionalScan::PhysicalPositionalScan(vector<LogicalType> types, unique
28
28
  if (right->type == PhysicalOperatorType::TABLE_SCAN) {
29
29
  child_tables.emplace_back(std::move(right));
30
30
  } else if (right->type == PhysicalOperatorType::POSITIONAL_SCAN) {
31
- auto &right_scan = (PhysicalPositionalScan &)*right;
31
+ auto &right_scan = right->Cast<PhysicalPositionalScan>();
32
32
  auto &right_tables = right_scan.child_tables;
33
33
  child_tables.reserve(child_tables.size() + right_tables.size());
34
34
  std::move(right_tables.begin(), right_tables.end(), std::back_inserter(child_tables));
@@ -45,7 +45,7 @@ SinkResultType PhysicalCreateType::Sink(ExecutionContext &context, DataChunk &ch
45
45
  gstate.capacity *= 2;
46
46
  }
47
47
 
48
- auto src_ptr = (string_t *)sdata.data;
48
+ auto src_ptr = UnifiedVectorFormat::GetData<string_t>(sdata);
49
49
  auto result_ptr = FlatVector::GetData<string_t>(gstate.result);
50
50
  // Input vector has NULL value, we just throw an exception
51
51
  for (idx_t i = 0; i < chunk.size(); i++) {
@@ -51,7 +51,7 @@ PerfectAggregateHashTable::~PerfectAggregateHashTable() {
51
51
  template <class T>
52
52
  static void ComputeGroupLocationTemplated(UnifiedVectorFormat &group_data, Value &min, uintptr_t *address_data,
53
53
  idx_t current_shift, idx_t count) {
54
- auto data = (T *)group_data.data;
54
+ auto data = UnifiedVectorFormat::GetData<T>(group_data);
55
55
  auto min_val = min.GetValueUnsafe<T>();
56
56
  if (!group_data.validity.AllValid()) {
57
57
  for (idx_t i = 0; i < count; i++) {
@@ -186,7 +186,7 @@ static bool PlanIndexJoin(ClientContext &context, LogicalComparisonJoin &op, uni
186
186
  }
187
187
  // index joins are not supported if there are pushed down table filters
188
188
  D_ASSERT(right->type == PhysicalOperatorType::TABLE_SCAN);
189
- auto &tbl_scan = (PhysicalTableScan &)*right;
189
+ auto &tbl_scan = right->Cast<PhysicalTableScan>();
190
190
  // if (tbl_scan.table_filters && !tbl_scan.table_filters->filters.empty()) {
191
191
  // return false;
192
192
  // }
@@ -34,7 +34,7 @@ unique_ptr<PhysicalOperator> DuckCatalog::PlanCreateTableAs(ClientContext &conte
34
34
  }
35
35
 
36
36
  unique_ptr<PhysicalOperator> PhysicalPlanGenerator::CreatePlan(LogicalCreateTable &op) {
37
- const auto &create_info = (CreateTableInfo &)*op.info->base;
37
+ const auto &create_info = op.info->base->Cast<CreateTableInfo>();
38
38
  auto &catalog = op.info->schema.catalog;
39
39
  auto existing_entry = catalog.GetEntry<TableCatalogEntry>(context, create_info.schema, create_info.table,
40
40
  OnEntryNotFound::RETURN_NULL);
@@ -207,10 +207,10 @@ unique_ptr<PhysicalOperator> PhysicalPlanGenerator::CreatePlan(LogicalOperator &
207
207
  plan = CreatePlan(op.Cast<LogicalReset>());
208
208
  break;
209
209
  case LogicalOperatorType::LOGICAL_PIVOT:
210
- plan = CreatePlan((LogicalPivot &)op);
210
+ plan = CreatePlan(op.Cast<LogicalPivot>());
211
211
  break;
212
212
  case LogicalOperatorType::LOGICAL_EXTENSION_OPERATOR:
213
- plan = ((LogicalExtensionOperator &)op).CreatePlan(context, *this);
213
+ plan = op.Cast<LogicalExtensionOperator>().CreatePlan(context, *this);
214
214
 
215
215
  if (!plan) {
216
216
  throw InternalException("Missing PhysicalOperator for Extension Operator");
@@ -408,7 +408,7 @@ SourceResultType RadixPartitionedHashTable::GetData(ExecutionContext &context, D
408
408
  aggr.function.initialize(aggr_state.get());
409
409
 
410
410
  AggregateInputData aggr_input_data(aggr.bind_info.get(), Allocator::DefaultAllocator());
411
- Vector state_vector(Value::POINTER((uintptr_t)aggr_state.get()));
411
+ Vector state_vector(Value::POINTER(CastPointerToValue(aggr_state.get())));
412
412
  aggr.function.finalize(state_vector, aggr_input_data, chunk.data[null_groups.size() + i], 1, 0);
413
413
  if (aggr.function.destructor) {
414
414
  aggr.function.destructor(state_vector, aggr_input_data, 1);
@@ -186,7 +186,7 @@ void BaseReservoirSampling::InitializeReservoir(idx_t cur_size, idx_t sample_siz
186
186
  //! we use a priority queue to extract the minimum key in O(1) time
187
187
  for (idx_t i = 0; i < sample_size; i++) {
188
188
  double k_i = random.NextRandom();
189
- reservoir_weights.push(std::make_pair(-k_i, i));
189
+ reservoir_weights.emplace(-k_i, i);
190
190
  }
191
191
  SetNextEntry();
192
192
  }
@@ -217,7 +217,7 @@ void BaseReservoirSampling::ReplaceElement() {
217
217
  //! we generate a random number between (min_threshold, 1)
218
218
  double r2 = random.NextRandom(min_threshold, 1);
219
219
  //! now we insert the new weight into the reservoir
220
- reservoir_weights.push(std::make_pair(-r2, min_entry));
220
+ reservoir_weights.emplace(-r2, min_entry);
221
221
  //! we update the min entry with the new min entry in the reservoir
222
222
  SetNextEntry();
223
223
  }