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
@@ -19,10 +19,10 @@ struct CStandardConverter : public CBaseConverter {
19
19
  struct CStringConverter {
20
20
  template <class SRC, class DST>
21
21
  static DST Convert(SRC input) {
22
- auto result = (char *)duckdb_malloc(input.GetSize() + 1);
22
+ auto result = char_ptr_cast(duckdb_malloc(input.GetSize() + 1));
23
23
  assert(result);
24
24
  memcpy((void *)result, input.GetData(), input.GetSize());
25
- auto write_arr = (char *)result;
25
+ auto write_arr = char_ptr_cast(result);
26
26
  write_arr[input.GetSize()] = '\0';
27
27
  return result;
28
28
  }
@@ -37,10 +37,10 @@ struct CBlobConverter {
37
37
  template <class SRC, class DST>
38
38
  static DST Convert(SRC input) {
39
39
  duckdb_blob result;
40
- result.data = (char *)duckdb_malloc(input.GetSize());
40
+ result.data = char_ptr_cast(duckdb_malloc(input.GetSize()));
41
41
  result.size = input.GetSize();
42
42
  assert(result.data);
43
- memcpy((void *)result.data, input.GetData(), input.GetSize());
43
+ memcpy(result.data, input.GetData(), input.GetSize());
44
44
  return result;
45
45
  }
46
46
 
@@ -266,7 +266,7 @@ duckdb_state duckdb_translate_result(unique_ptr<QueryResult> result_p, duckdb_re
266
266
 
267
267
  if (result.HasError()) {
268
268
  // write the error message
269
- out->__deprecated_error_message = (char *)result.GetError().c_str();
269
+ out->__deprecated_error_message = (char *)result.GetError().c_str(); // NOLINT
270
270
  return DuckDBError;
271
271
  }
272
272
  // copy the data
@@ -280,7 +280,7 @@ bool deprecated_materialize_result(duckdb_result *result) {
280
280
  if (!result) {
281
281
  return false;
282
282
  }
283
- auto result_data = (duckdb::DuckDBResultData *)result->internal_data;
283
+ auto result_data = reinterpret_cast<duckdb::DuckDBResultData *>(result->internal_data);
284
284
  if (result_data->result->HasError()) {
285
285
  return false;
286
286
  }
@@ -310,14 +310,14 @@ bool deprecated_materialize_result(duckdb_result *result) {
310
310
  result_data->result = stream_result.Materialize();
311
311
  }
312
312
  D_ASSERT(result_data->result->type == QueryResultType::MATERIALIZED_RESULT);
313
- auto &materialized = (MaterializedQueryResult &)*result_data->result;
313
+ auto &materialized = reinterpret_cast<MaterializedQueryResult &>(*result_data->result);
314
314
 
315
315
  // convert the result to a materialized result
316
316
  // zero initialize the columns (so we can cleanly delete it in case a malloc fails)
317
317
  memset(result->__deprecated_columns, 0, sizeof(duckdb_column) * column_count);
318
318
  for (idx_t i = 0; i < column_count; i++) {
319
319
  result->__deprecated_columns[i].__deprecated_type = ConvertCPPTypeToC(result_data->result->types[i]);
320
- result->__deprecated_columns[i].__deprecated_name = (char *)result_data->result->names[i].c_str();
320
+ result->__deprecated_columns[i].__deprecated_name = (char *)result_data->result->names[i].c_str(); // NOLINT
321
321
  }
322
322
  result->__deprecated_row_count = materialized.RowCount();
323
323
  if (result->__deprecated_row_count > 0 &&
@@ -344,7 +344,7 @@ static void DuckdbDestroyColumn(duckdb_column column, idx_t count) {
344
344
  if (column.__deprecated_data) {
345
345
  if (column.__deprecated_type == DUCKDB_TYPE_VARCHAR) {
346
346
  // varchar, delete individual strings
347
- auto data = (char **)column.__deprecated_data;
347
+ auto data = reinterpret_cast<char **>(column.__deprecated_data);
348
348
  for (idx_t i = 0; i < count; i++) {
349
349
  if (data[i]) {
350
350
  duckdb_free(data[i]);
@@ -352,7 +352,7 @@ static void DuckdbDestroyColumn(duckdb_column column, idx_t count) {
352
352
  }
353
353
  } else if (column.__deprecated_type == DUCKDB_TYPE_BLOB) {
354
354
  // blob, delete individual blobs
355
- auto data = (duckdb_blob *)column.__deprecated_data;
355
+ auto data = reinterpret_cast<duckdb_blob *>(column.__deprecated_data);
356
356
  for (idx_t i = 0; i < count; i++) {
357
357
  if (data[i].data) {
358
358
  duckdb_free((void *)data[i].data);
@@ -374,7 +374,7 @@ void duckdb_destroy_result(duckdb_result *result) {
374
374
  duckdb_free(result->__deprecated_columns);
375
375
  }
376
376
  if (result->internal_data) {
377
- auto result_data = (duckdb::DuckDBResultData *)result->internal_data;
377
+ auto result_data = reinterpret_cast<duckdb::DuckDBResultData *>(result->internal_data);
378
378
  delete result_data;
379
379
  }
380
380
  memset(result, 0, sizeof(duckdb_result));
@@ -384,7 +384,7 @@ const char *duckdb_column_name(duckdb_result *result, idx_t col) {
384
384
  if (!result || col >= duckdb_column_count(result)) {
385
385
  return nullptr;
386
386
  }
387
- auto &result_data = *((duckdb::DuckDBResultData *)result->internal_data);
387
+ auto &result_data = *(reinterpret_cast<duckdb::DuckDBResultData *>(result->internal_data));
388
388
  return result_data.result->names[col].c_str();
389
389
  }
390
390
 
@@ -392,7 +392,7 @@ duckdb_type duckdb_column_type(duckdb_result *result, idx_t col) {
392
392
  if (!result || col >= duckdb_column_count(result)) {
393
393
  return DUCKDB_TYPE_INVALID;
394
394
  }
395
- auto &result_data = *((duckdb::DuckDBResultData *)result->internal_data);
395
+ auto &result_data = *(reinterpret_cast<duckdb::DuckDBResultData *>(result->internal_data));
396
396
  return duckdb::ConvertCPPTypeToC(result_data.result->types[col]);
397
397
  }
398
398
 
@@ -400,7 +400,7 @@ duckdb_logical_type duckdb_column_logical_type(duckdb_result *result, idx_t col)
400
400
  if (!result || col >= duckdb_column_count(result)) {
401
401
  return nullptr;
402
402
  }
403
- auto &result_data = *((duckdb::DuckDBResultData *)result->internal_data);
403
+ auto &result_data = *(reinterpret_cast<duckdb::DuckDBResultData *>(result->internal_data));
404
404
  return reinterpret_cast<duckdb_logical_type>(new duckdb::LogicalType(result_data.result->types[col]));
405
405
  }
406
406
 
@@ -408,7 +408,7 @@ idx_t duckdb_column_count(duckdb_result *result) {
408
408
  if (!result) {
409
409
  return 0;
410
410
  }
411
- auto &result_data = *((duckdb::DuckDBResultData *)result->internal_data);
411
+ auto &result_data = *(reinterpret_cast<duckdb::DuckDBResultData *>(result->internal_data));
412
412
  return result_data.result->ColumnCount();
413
413
  }
414
414
 
@@ -416,12 +416,12 @@ idx_t duckdb_row_count(duckdb_result *result) {
416
416
  if (!result) {
417
417
  return 0;
418
418
  }
419
- auto &result_data = *((duckdb::DuckDBResultData *)result->internal_data);
419
+ auto &result_data = *(reinterpret_cast<duckdb::DuckDBResultData *>(result->internal_data));
420
420
  if (result_data.result->type == duckdb::QueryResultType::STREAM_RESULT) {
421
421
  // We can't know the row count beforehand
422
422
  return 0;
423
423
  }
424
- auto &materialized = (duckdb::MaterializedQueryResult &)*result_data.result;
424
+ auto &materialized = reinterpret_cast<duckdb::MaterializedQueryResult &>(*result_data.result);
425
425
  return materialized.RowCount();
426
426
  }
427
427
 
@@ -459,7 +459,7 @@ const char *duckdb_result_error(duckdb_result *result) {
459
459
  if (!result) {
460
460
  return nullptr;
461
461
  }
462
- auto &result_data = *((duckdb::DuckDBResultData *)result->internal_data);
462
+ auto &result_data = *(reinterpret_cast<duckdb::DuckDBResultData *>(result->internal_data));
463
463
  return !result_data.result->HasError() ? nullptr : result_data.result->GetError().c_str();
464
464
  }
465
465
 
@@ -467,7 +467,7 @@ idx_t duckdb_result_chunk_count(duckdb_result result) {
467
467
  if (!result.internal_data) {
468
468
  return 0;
469
469
  }
470
- auto &result_data = *((duckdb::DuckDBResultData *)result.internal_data);
470
+ auto &result_data = *(reinterpret_cast<duckdb::DuckDBResultData *>(result.internal_data));
471
471
  if (result_data.result_set_type == duckdb::CAPIResultSetType::CAPI_RESULT_TYPE_DEPRECATED) {
472
472
  return 0;
473
473
  }
@@ -475,7 +475,7 @@ idx_t duckdb_result_chunk_count(duckdb_result result) {
475
475
  // Can't know beforehand how many chunks are returned.
476
476
  return 0;
477
477
  }
478
- auto &materialized = (duckdb::MaterializedQueryResult &)*result_data.result;
478
+ auto &materialized = reinterpret_cast<duckdb::MaterializedQueryResult &>(*result_data.result);
479
479
  return materialized.Collection().ChunkCount();
480
480
  }
481
481
 
@@ -483,7 +483,7 @@ duckdb_data_chunk duckdb_result_get_chunk(duckdb_result result, idx_t chunk_idx)
483
483
  if (!result.internal_data) {
484
484
  return nullptr;
485
485
  }
486
- auto &result_data = *((duckdb::DuckDBResultData *)result.internal_data);
486
+ auto &result_data = *(reinterpret_cast<duckdb::DuckDBResultData *>(result.internal_data));
487
487
  if (result_data.result_set_type == duckdb::CAPIResultSetType::CAPI_RESULT_TYPE_DEPRECATED) {
488
488
  return nullptr;
489
489
  }
@@ -492,7 +492,7 @@ duckdb_data_chunk duckdb_result_get_chunk(duckdb_result result, idx_t chunk_idx)
492
492
  return nullptr;
493
493
  }
494
494
  result_data.result_set_type = duckdb::CAPIResultSetType::CAPI_RESULT_TYPE_MATERIALIZED;
495
- auto &materialized = (duckdb::MaterializedQueryResult &)*result_data.result;
495
+ auto &materialized = reinterpret_cast<duckdb::MaterializedQueryResult &>(*result_data.result);
496
496
  auto &collection = materialized.Collection();
497
497
  if (chunk_idx >= collection.ChunkCount()) {
498
498
  return nullptr;
@@ -510,6 +510,6 @@ bool duckdb_result_is_streaming(duckdb_result result) {
510
510
  if (duckdb_result_error(&result) != nullptr) {
511
511
  return false;
512
512
  }
513
- auto &result_data = *((duckdb::DuckDBResultData *)result.internal_data);
513
+ auto &result_data = *(reinterpret_cast<duckdb::DuckDBResultData *>(result.internal_data));
514
514
  return result_data.result->type == duckdb::QueryResultType::STREAM_RESULT;
515
515
  }
@@ -311,7 +311,7 @@ void duckdb_bind_add_result_column(duckdb_bind_info info, const char *name, duck
311
311
  }
312
312
  auto bind_info = (duckdb::CTableInternalBindInfo *)info;
313
313
  bind_info->names.push_back(name);
314
- bind_info->return_types.push_back(*((duckdb::LogicalType *)type));
314
+ bind_info->return_types.push_back(*(reinterpret_cast<duckdb::LogicalType *>(type)));
315
315
  }
316
316
 
317
317
  idx_t duckdb_bind_get_parameter_count(duckdb_bind_info info) {
@@ -774,8 +774,8 @@ void ClientContext::LogQueryInternal(ClientContextLock &, const string &query) {
774
774
  #endif
775
775
  }
776
776
  // log query path is set: log the query
777
- client_data->log_query_writer->WriteData((const_data_ptr_t)query.c_str(), query.size());
778
- client_data->log_query_writer->WriteData((const_data_ptr_t) "\n", 1);
777
+ client_data->log_query_writer->WriteData(const_data_ptr_cast(query.c_str()), query.size());
778
+ client_data->log_query_writer->WriteData(const_data_ptr_cast("\n"), 1);
779
779
  client_data->log_query_writer->Flush();
780
780
  client_data->log_query_writer->Sync();
781
781
  }
@@ -918,7 +918,7 @@ void ClientContext::RegisterFunction(CreateFunctionInfo &info) {
918
918
  auto existing_function = Catalog::GetEntry<ScalarFunctionCatalogEntry>(*this, INVALID_CATALOG, info.schema,
919
919
  info.name, OnEntryNotFound::RETURN_NULL);
920
920
  if (existing_function) {
921
- auto &new_info = (CreateScalarFunctionInfo &)info;
921
+ auto &new_info = info.Cast<CreateScalarFunctionInfo>();
922
922
  if (new_info.functions.MergeFunctionSet(existing_function->functions)) {
923
923
  // function info was updated from catalog entry, rewrite is needed
924
924
  info.on_conflict = OnCreateConflict::REPLACE_ON_CONFLICT;
@@ -82,6 +82,7 @@ static ConfigurationOption internal_options[] = {DUCKDB_GLOBAL(AccessModeSetting
82
82
  DUCKDB_GLOBAL(ForceBitpackingModeSetting),
83
83
  DUCKDB_LOCAL(HomeDirectorySetting),
84
84
  DUCKDB_LOCAL(LogQueryPathSetting),
85
+ DUCKDB_GLOBAL(LockConfigurationSetting),
85
86
  DUCKDB_GLOBAL(ImmediateTransactionModeSetting),
86
87
  DUCKDB_LOCAL(IntegerDivisionSetting),
87
88
  DUCKDB_LOCAL(MaximumExpressionDepthSetting),
@@ -27,7 +27,7 @@ optional_ptr<AttachedDatabase> DatabaseManager::GetDatabase(ClientContext &conte
27
27
  if (StringUtil::Lower(name) == TEMP_CATALOG) {
28
28
  return context.client_data->temporary_objects.get();
29
29
  }
30
- return (AttachedDatabase *)databases->GetEntry(context, name).get();
30
+ return reinterpret_cast<AttachedDatabase *>(databases->GetEntry(context, name).get());
31
31
  }
32
32
 
33
33
  void DatabaseManager::AddDatabase(ClientContext &context, unique_ptr<AttachedDatabase> db_instance) {
@@ -37,7 +37,7 @@ string ErrorManager::FormatExceptionRecursive(ErrorType error_type, vector<Excep
37
37
  string ErrorManager::InvalidUnicodeError(const string &input, const string &context) {
38
38
  UnicodeInvalidReason reason;
39
39
  size_t pos;
40
- auto unicode = Utf8Proc::Analyze((const char *)input.c_str(), input.size(), &reason, &pos);
40
+ auto unicode = Utf8Proc::Analyze(const_char_ptr_cast(input.c_str()), input.size(), &reason, &pos);
41
41
  if (unicode != UnicodeType::INVALID) {
42
42
  return "Invalid unicode error thrown but no invalid unicode detected in " + context;
43
43
  }
@@ -86,7 +86,7 @@ bool ExtensionHelper::TryInitialLoad(DBConfig &config, FileSystem &fs, const str
86
86
 
87
87
  auto signature_offset = handle->GetFileSize() - signature.size();
88
88
 
89
- const idx_t maxLenChunks = 1024 * 1024;
89
+ const idx_t maxLenChunks = 1024ULL * 1024ULL;
90
90
  const idx_t numChunks = (signature_offset + maxLenChunks - 1) / maxLenChunks;
91
91
  std::vector<std::string> hash_chunks(numChunks);
92
92
  std::vector<idx_t> splits(numChunks + 1);
@@ -23,7 +23,7 @@ BoundStatement CreateTableRelation::Bind(Binder &binder) {
23
23
  info->query = std::move(select);
24
24
  info->on_conflict = OnCreateConflict::ERROR_ON_CONFLICT;
25
25
  stmt.info = std::move(info);
26
- return binder.Bind((SQLStatement &)stmt);
26
+ return binder.Bind(stmt.Cast<SQLStatement>());
27
27
  }
28
28
 
29
29
  const vector<ColumnDefinition> &CreateTableRelation::Columns() {
@@ -32,7 +32,7 @@ BoundStatement CreateViewRelation::Bind(Binder &binder) {
32
32
  info->schema = schema_name;
33
33
  info->on_conflict = replace ? OnCreateConflict::REPLACE_ON_CONFLICT : OnCreateConflict::ERROR_ON_CONFLICT;
34
34
  stmt.info = std::move(info);
35
- return binder.Bind((SQLStatement &)stmt);
35
+ return binder.Bind(stmt.Cast<SQLStatement>());
36
36
  }
37
37
 
38
38
  const vector<ColumnDefinition> &CreateViewRelation::Columns() {
@@ -21,7 +21,7 @@ BoundStatement DeleteRelation::Bind(Binder &binder) {
21
21
  DeleteStatement stmt;
22
22
  stmt.condition = condition ? condition->Copy() : nullptr;
23
23
  stmt.table = std::move(basetable);
24
- return binder.Bind((SQLStatement &)stmt);
24
+ return binder.Bind(stmt.Cast<SQLStatement>());
25
25
  }
26
26
 
27
27
  const vector<ColumnDefinition> &DeleteRelation::Columns() {
@@ -16,7 +16,7 @@ BoundStatement ExplainRelation::Bind(Binder &binder) {
16
16
  auto select = make_uniq<SelectStatement>();
17
17
  select->node = child->GetQueryNode();
18
18
  ExplainStatement explain(std::move(select), type);
19
- return binder.Bind((SQLStatement &)explain);
19
+ return binder.Bind(explain.Cast<SQLStatement>());
20
20
  }
21
21
 
22
22
  const vector<ColumnDefinition> &ExplainRelation::Columns() {
@@ -21,7 +21,7 @@ BoundStatement InsertRelation::Bind(Binder &binder) {
21
21
  stmt.schema = schema_name;
22
22
  stmt.table = table_name;
23
23
  stmt.select_statement = std::move(select);
24
- return binder.Bind((SQLStatement &)stmt);
24
+ return binder.Bind(stmt.Cast<SQLStatement>());
25
25
  }
26
26
 
27
27
  const vector<ColumnDefinition> &InsertRelation::Columns() {
@@ -30,7 +30,7 @@ BoundStatement UpdateRelation::Bind(Binder &binder) {
30
30
  for (auto &expr : expressions) {
31
31
  stmt.set_info->expressions.push_back(expr->Copy());
32
32
  }
33
- return binder.Bind((SQLStatement &)stmt);
33
+ return binder.Bind(stmt.Cast<SQLStatement>());
34
34
  }
35
35
 
36
36
  const vector<ColumnDefinition> &UpdateRelation::Columns() {
@@ -22,7 +22,7 @@ BoundStatement WriteCSVRelation::Bind(Binder &binder) {
22
22
  info->format = "csv";
23
23
  info->options = options;
24
24
  copy.info = std::move(info);
25
- return binder.Bind((SQLStatement &)copy);
25
+ return binder.Bind(copy.Cast<SQLStatement>());
26
26
  }
27
27
 
28
28
  const vector<ColumnDefinition> &WriteCSVRelation::Columns() {
@@ -22,7 +22,7 @@ BoundStatement WriteParquetRelation::Bind(Binder &binder) {
22
22
  info->format = "parquet";
23
23
  info->options = options;
24
24
  copy.info = std::move(info);
25
- return binder.Bind((SQLStatement &)copy);
25
+ return binder.Bind(copy.Cast<SQLStatement>());
26
26
  }
27
27
 
28
28
  const vector<ColumnDefinition> &WriteParquetRelation::Columns() {
@@ -209,7 +209,7 @@ unique_ptr<QueryResult> Relation::ExecuteOrThrow() {
209
209
  BoundStatement Relation::Bind(Binder &binder) {
210
210
  SelectStatement stmt;
211
211
  stmt.node = GetQueryNode();
212
- return binder.Bind((SQLStatement &)stmt);
212
+ return binder.Bind(stmt.Cast<SQLStatement>());
213
213
  }
214
214
 
215
215
  shared_ptr<Relation> Relation::InsertRel(const string &schema_name, const string &table_name) {
@@ -151,7 +151,7 @@ void OrderedAggregateThreshold::ResetLocal(ClientContext &context) {
151
151
 
152
152
  void OrderedAggregateThreshold::SetLocal(ClientContext &context, const Value &input) {
153
153
  const auto param = input.GetValue<uint64_t>();
154
- if (!param) {
154
+ if (param <= 0) {
155
155
  throw ParserException("Invalid option for PRAGMA ordered_aggregate_threshold, value must be positive");
156
156
  }
157
157
  ClientConfig::GetConfig(context).ordered_aggregate_threshold = param;
@@ -189,7 +189,7 @@ Value DebugWindowMode::GetSetting(ClientContext &context) {
189
189
  // Debug AsOf Join
190
190
  //===--------------------------------------------------------------------===//
191
191
  void DebugAsOfIEJoin::ResetLocal(ClientContext &context) {
192
- ClientConfig::GetConfig(context).force_no_cross_product = ClientConfig().force_asof_iejoin;
192
+ ClientConfig::GetConfig(context).force_asof_iejoin = ClientConfig().force_asof_iejoin;
193
193
  }
194
194
 
195
195
  void DebugAsOfIEJoin::SetLocal(ClientContext &context, const Value &input) {
@@ -433,7 +433,6 @@ Value EnableHTTPMetadataCacheSetting::GetSetting(ClientContext &context) {
433
433
  //===--------------------------------------------------------------------===//
434
434
  // Enable Profiling
435
435
  //===--------------------------------------------------------------------===//
436
-
437
436
  void EnableProfilingSetting::ResetLocal(ClientContext &context) {
438
437
  auto &config = ClientConfig::GetConfig(context);
439
438
  config.profiler_print_format = ClientConfig().profiler_print_format;
@@ -718,10 +717,10 @@ Value IntegerDivisionSetting::GetSetting(ClientContext &context) {
718
717
  auto &config = ClientConfig::GetConfig(context);
719
718
  return Value(config.integer_division);
720
719
  }
720
+
721
721
  //===--------------------------------------------------------------------===//
722
722
  // Log Query Path
723
723
  //===--------------------------------------------------------------------===//
724
-
725
724
  void LogQueryPathSetting::ResetLocal(ClientContext &context) {
726
725
  auto &client_data = ClientData::Get(context);
727
726
  // TODO: verify that this does the right thing
@@ -745,6 +744,23 @@ Value LogQueryPathSetting::GetSetting(ClientContext &context) {
745
744
  return client_data.log_query_writer ? Value(client_data.log_query_writer->path) : Value();
746
745
  }
747
746
 
747
+ //===--------------------------------------------------------------------===//
748
+ // Lock Configuration
749
+ //===--------------------------------------------------------------------===//
750
+ void LockConfigurationSetting::SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &input) {
751
+ auto new_value = input.GetValue<bool>();
752
+ config.options.lock_configuration = new_value;
753
+ }
754
+
755
+ void LockConfigurationSetting::ResetGlobal(DatabaseInstance *db, DBConfig &config) {
756
+ config.options.lock_configuration = DBConfig().options.lock_configuration;
757
+ }
758
+
759
+ Value LockConfigurationSetting::GetSetting(ClientContext &context) {
760
+ auto &config = DBConfig::GetConfig(context);
761
+ return Value::BOOLEAN(config.options.lock_configuration);
762
+ }
763
+
748
764
  //===--------------------------------------------------------------------===//
749
765
  // Immediate Transaction Mode
750
766
  //===--------------------------------------------------------------------===//
@@ -988,7 +1004,7 @@ void SchemaSetting::ResetLocal(ClientContext &context) {
988
1004
  void SchemaSetting::SetLocal(ClientContext &context, const Value &input) {
989
1005
  auto parameter = input.ToString();
990
1006
  auto &client_data = ClientData::Get(context);
991
- client_data.catalog_search_path->Set(CatalogSearchEntry::Parse(parameter), true);
1007
+ client_data.catalog_search_path->Set(CatalogSearchEntry::Parse(parameter), CatalogSetPathType::SET_SCHEMA);
992
1008
  }
993
1009
 
994
1010
  Value SchemaSetting::GetSetting(ClientContext &context) {
@@ -1008,7 +1024,7 @@ void SearchPathSetting::ResetLocal(ClientContext &context) {
1008
1024
  void SearchPathSetting::SetLocal(ClientContext &context, const Value &input) {
1009
1025
  auto parameter = input.ToString();
1010
1026
  auto &client_data = ClientData::Get(context);
1011
- client_data.catalog_search_path->Set(CatalogSearchEntry::ParseList(parameter), false);
1027
+ client_data.catalog_search_path->Set(CatalogSearchEntry::ParseList(parameter), CatalogSetPathType::SET_SCHEMAS);
1012
1028
  }
1013
1029
 
1014
1030
  Value SearchPathSetting::GetSetting(ClientContext &context) {
@@ -67,7 +67,7 @@ void DeliminatorPlanUpdater::VisitOperator(LogicalOperator &op) {
67
67
  VisitOperatorExpressions(op);
68
68
  if (op.type == LogicalOperatorType::LOGICAL_DELIM_JOIN && DelimGetCount(op) == 0) {
69
69
  auto &delim_join = op.Cast<LogicalDelimJoin>();
70
- auto decs = &delim_join.duplicate_eliminated_columns;
70
+ auto &decs = delim_join.duplicate_eliminated_columns;
71
71
  for (auto &cond : delim_join.conditions) {
72
72
  if (!IsEqualityJoinCondition(cond)) {
73
73
  continue;
@@ -83,10 +83,10 @@ void DeliminatorPlanUpdater::VisitOperator(LogicalOperator &op) {
83
83
  auto &colref = rhs->Cast<BoundColumnRefExpression>();
84
84
  if (projection_map.find(colref.binding) != projection_map.end()) {
85
85
  // value on the right is a projection of removed DelimGet
86
- for (idx_t i = 0; i < decs->size(); i++) {
87
- if (decs->at(i)->Equals(cond.left.get())) {
86
+ for (idx_t i = 0; i < decs.size(); i++) {
87
+ if (decs[i]->Equals(*cond.left)) {
88
88
  // the value on the left no longer needs to be a duplicate-eliminated column
89
- decs->erase(decs->begin() + i);
89
+ decs.erase(decs.begin() + i);
90
90
  break;
91
91
  }
92
92
  }
@@ -95,7 +95,7 @@ void DeliminatorPlanUpdater::VisitOperator(LogicalOperator &op) {
95
95
  }
96
96
  }
97
97
  // change type if there are no more duplicate-eliminated columns
98
- if (decs->empty()) {
98
+ if (decs.empty()) {
99
99
  delim_join.type = LogicalOperatorType::LOGICAL_COMPARISON_JOIN;
100
100
  // sub-plans with DelimGets are not re-orderable (yet), however, we removed all DelimGet of this DelimJoin
101
101
  // the DelimGets are on the RHS of the DelimJoin, so we can call the JoinOrderOptimizer on the RHS now
@@ -198,9 +198,9 @@ bool Deliminator::RemoveCandidate(unique_ptr<LogicalOperator> *plan, unique_ptr<
198
198
  idx_t delim_idx = OperatorIsDelimGet(*join.children[0]) ? 0 : 1;
199
199
  D_ASSERT(OperatorIsDelimGet(*join.children[delim_idx]));
200
200
  // get the filter (if any)
201
- LogicalFilter *filter = nullptr;
201
+ optional_ptr<LogicalFilter> filter;
202
202
  if (join.children[delim_idx]->type == LogicalOperatorType::LOGICAL_FILTER) {
203
- filter = (LogicalFilter *)join.children[delim_idx].get();
203
+ filter = &join.children[delim_idx]->Cast<LogicalFilter>();
204
204
  }
205
205
  auto &delim_get = (filter ? filter->children[0] : join.children[delim_idx])->Cast<LogicalDelimGet>();
206
206
  if (join.conditions.size() != delim_get.chunk_types.size()) {
@@ -231,7 +231,7 @@ bool Deliminator::RemoveCandidate(unique_ptr<LogicalOperator> *plan, unique_ptr<
231
231
  updater.projection_map[cb] = true;
232
232
  updater.reverse_proj_or_agg_map[cb] = proj_or_agg.expressions[cb.column_index].get();
233
233
  for (auto &expr : nulls_are_not_equal_exprs) {
234
- if (proj_or_agg.expressions[cb.column_index]->Equals(&expr.get())) {
234
+ if (proj_or_agg.expressions[cb.column_index]->Equals(expr.get())) {
235
235
  updater.projection_map[cb] = false;
236
236
  break;
237
237
  }
@@ -254,8 +254,8 @@ bool Deliminator::RemoveCandidate(unique_ptr<LogicalOperator> *plan, unique_ptr<
254
254
  updater.projection_map[cb] = true;
255
255
  updater.reverse_proj_or_agg_map[cb] = all_agg_exprs[cb.column_index];
256
256
  for (auto &expr : nulls_are_not_equal_exprs) {
257
- if ((cb.table_index == agg.group_index && agg.groups[cb.column_index]->Equals(&expr.get())) ||
258
- (cb.table_index == agg.aggregate_index && agg.expressions[cb.column_index]->Equals(&expr.get()))) {
257
+ if ((cb.table_index == agg.group_index && agg.groups[cb.column_index]->Equals(expr.get())) ||
258
+ (cb.table_index == agg.aggregate_index && agg.expressions[cb.column_index]->Equals(expr.get()))) {
259
259
  updater.projection_map[cb] = false;
260
260
  break;
261
261
  }
@@ -386,7 +386,7 @@ bool Deliminator::RemoveInequalityCandidate(unique_ptr<LogicalOperator> *plan, u
386
386
  }
387
387
  // try to find the corresponding child condition
388
388
  // TODO: can be more flexible - allow CAST
389
- auto child_expr = it->second;
389
+ auto &child_expr = *it->second;
390
390
  bool found = false;
391
391
  for (auto &child_cond : join.conditions) {
392
392
  if (child_cond.left->Equals(child_expr) || child_cond.right->Equals(child_expr)) {
@@ -418,7 +418,7 @@ bool Deliminator::RemoveInequalityCandidate(unique_ptr<LogicalOperator> *plan, u
418
418
  auto &parent_expr = parent_delim_get_side == 0 ? parent_cond.left : parent_cond.right;
419
419
  auto &parent_colref = parent_expr->Cast<BoundColumnRefExpression>();
420
420
  auto it = updater.reverse_proj_or_agg_map.find(parent_colref.binding);
421
- auto child_expr = it->second;
421
+ auto &child_expr = *it->second;
422
422
  for (auto &child_cond : join.conditions) {
423
423
  if (!child_cond.left->Equals(child_expr) && !child_cond.right->Equals(child_expr)) {
424
424
  continue;
@@ -42,6 +42,7 @@ void ExpressionHeuristics::ReorderExpressions(vector<unique_ptr<Expression>> &ex
42
42
  };
43
43
 
44
44
  vector<ExpressionCosts> expression_costs;
45
+ expression_costs.reserve(expressions.size());
45
46
  // iterate expressions, get cost for each one
46
47
  for (idx_t i = 0; i < expressions.size(); i++) {
47
48
  idx_t cost = Cost(*expressions[i]);
@@ -635,7 +635,7 @@ FilterResult FilterCombiner::AddBoundComparisonFilter(Expression &expr) {
635
635
  // get the LHS and RHS nodes
636
636
  auto &left_node = GetNode(*comparison.left);
637
637
  auto &right_node = GetNode(*comparison.right);
638
- if (left_node.Equals(&right_node)) {
638
+ if (left_node.Equals(right_node)) {
639
639
  return FilterResult::UNSUPPORTED;
640
640
  }
641
641
  // get the equivalence sets of the LHS and RHS
@@ -806,7 +806,7 @@ FilterResult FilterCombiner::AddTransitiveFilters(BoundComparisonExpression &com
806
806
  }
807
807
  }
808
808
 
809
- if (left_node.Equals(&right_node.get())) {
809
+ if (left_node.Equals(right_node)) {
810
810
  return FilterResult::UNSUPPORTED;
811
811
  }
812
812
  // get the equivalence sets of the LHS and RHS
@@ -903,7 +903,7 @@ unique_ptr<Expression> FilterCombiner::FindTransitiveFilter(Expression &expr) {
903
903
  for (idx_t i = 0; i < remaining_filters.size(); i++) {
904
904
  if (remaining_filters[i]->GetExpressionClass() == ExpressionClass::BOUND_COMPARISON) {
905
905
  auto &comparison = remaining_filters[i]->Cast<BoundComparisonExpression>();
906
- if (expr.Equals(comparison.right.get()) && comparison.type != ExpressionType::COMPARE_NOTEQUAL) {
906
+ if (expr.Equals(*comparison.right) && comparison.type != ExpressionType::COMPARE_NOTEQUAL) {
907
907
  auto filter = std::move(remaining_filters[i]);
908
908
  remaining_filters.erase(remaining_filters.begin() + i);
909
909
  return filter;
@@ -479,15 +479,15 @@ optional_ptr<TableFilterSet> CardinalityEstimator::GetTableFilters(LogicalOperat
479
479
  return get ? &get->table_filters : nullptr;
480
480
  }
481
481
 
482
- idx_t CardinalityEstimator::InspectConjunctionAND(idx_t cardinality, idx_t column_index, ConjunctionAndFilter *filter,
482
+ idx_t CardinalityEstimator::InspectConjunctionAND(idx_t cardinality, idx_t column_index, ConjunctionAndFilter &filter,
483
483
  unique_ptr<BaseStatistics> base_stats) {
484
484
  auto has_equality_filter = false;
485
485
  auto cardinality_after_filters = cardinality;
486
- for (auto &child_filter : filter->child_filters) {
486
+ for (auto &child_filter : filter.child_filters) {
487
487
  if (child_filter->filter_type != TableFilterType::CONSTANT_COMPARISON) {
488
488
  continue;
489
489
  }
490
- auto comparison_filter = (ConstantFilter &)*child_filter;
490
+ auto &comparison_filter = child_filter->Cast<ConstantFilter>();
491
491
  if (comparison_filter.comparison_type != ExpressionType::COMPARE_EQUAL) {
492
492
  continue;
493
493
  }
@@ -510,15 +510,15 @@ idx_t CardinalityEstimator::InspectConjunctionAND(idx_t cardinality, idx_t colum
510
510
  return cardinality_after_filters;
511
511
  }
512
512
 
513
- idx_t CardinalityEstimator::InspectConjunctionOR(idx_t cardinality, idx_t column_index, ConjunctionOrFilter *filter,
513
+ idx_t CardinalityEstimator::InspectConjunctionOR(idx_t cardinality, idx_t column_index, ConjunctionOrFilter &filter,
514
514
  unique_ptr<BaseStatistics> base_stats) {
515
515
  auto has_equality_filter = false;
516
516
  auto cardinality_after_filters = cardinality;
517
- for (auto &child_filter : filter->child_filters) {
517
+ for (auto &child_filter : filter.child_filters) {
518
518
  if (child_filter->filter_type != TableFilterType::CONSTANT_COMPARISON) {
519
519
  continue;
520
520
  }
521
- auto comparison_filter = (ConstantFilter &)*child_filter;
521
+ auto &comparison_filter = child_filter->Cast<ConstantFilter>();
522
522
  if (comparison_filter.comparison_type == ExpressionType::COMPARE_EQUAL) {
523
523
  auto column_count = cardinality_after_filters;
524
524
  if (base_stats) {
@@ -549,14 +549,14 @@ idx_t CardinalityEstimator::InspectTableFilters(idx_t cardinality, LogicalOperat
549
549
  column_statistics = get->function.statistics(context, &table_scan_bind_data, it.first);
550
550
  }
551
551
  if (it.second->filter_type == TableFilterType::CONJUNCTION_AND) {
552
- auto &filter = (ConjunctionAndFilter &)*it.second;
552
+ auto &filter = it.second->Cast<ConjunctionAndFilter>();
553
553
  idx_t cardinality_with_and_filter =
554
- InspectConjunctionAND(cardinality, it.first, &filter, std::move(column_statistics));
554
+ InspectConjunctionAND(cardinality, it.first, filter, std::move(column_statistics));
555
555
  cardinality_after_filters = MinValue(cardinality_after_filters, cardinality_with_and_filter);
556
556
  } else if (it.second->filter_type == TableFilterType::CONJUNCTION_OR) {
557
- auto &filter = (ConjunctionOrFilter &)*it.second;
557
+ auto &filter = it.second->Cast<ConjunctionOrFilter>();
558
558
  idx_t cardinality_with_or_filter =
559
- InspectConjunctionOR(cardinality, it.first, &filter, std::move(column_statistics));
559
+ InspectConjunctionOR(cardinality, it.first, filter, std::move(column_statistics));
560
560
  cardinality_after_filters = MinValue(cardinality_after_filters, cardinality_with_or_filter);
561
561
  }
562
562
  }
@@ -24,13 +24,10 @@ namespace duckdb {
24
24
 
25
25
  //! Returns true if A and B are disjoint, false otherwise
26
26
  template <class T>
27
- static bool Disjoint(unordered_set<T> &a, unordered_set<T> &b) {
28
- for (auto &entry : a) {
29
- if (b.find(entry) != b.end()) {
30
- return false;
31
- }
32
- }
33
- return true;
27
+ static bool Disjoint(const unordered_set<T> &a, const unordered_set<T> &b) {
28
+ return std::all_of(a.begin(), a.end(), [&b](typename std::unordered_set<T>::const_reference entry) {
29
+ return b.find(entry) == b.end();
30
+ });
34
31
  }
35
32
 
36
33
  //! Extract the set of relations referred to inside an expression
@@ -19,7 +19,7 @@ bool ExpressionMatcher::Match(Expression &expr, vector<reference<Expression>> &b
19
19
  }
20
20
 
21
21
  bool ExpressionEqualityMatcher::Match(Expression &expr, vector<reference<Expression>> &bindings) {
22
- if (!expr.Equals(&expression)) {
22
+ if (!expr.Equals(expression)) {
23
23
  return false;
24
24
  }
25
25
  bindings.push_back(expr);
@@ -24,8 +24,8 @@ static void ReplaceExpressionBinding(vector<unique_ptr<Expression>> &proj_expres
24
24
  BoundColumnRefExpression &colref = expr.Cast<BoundColumnRefExpression>();
25
25
  // find the corresponding column index in the projection expressions
26
26
  for (idx_t proj_idx = 0; proj_idx < proj_expressions.size(); proj_idx++) {
27
- auto proj_expr = proj_expressions[proj_idx].get();
28
- if (proj_expr->type == ExpressionType::BOUND_COLUMN_REF) {
27
+ auto &proj_expr = *proj_expressions[proj_idx];
28
+ if (proj_expr.type == ExpressionType::BOUND_COLUMN_REF) {
29
29
  if (colref.Equals(proj_expr)) {
30
30
  colref.binding.table_index = proj_table_idx;
31
31
  colref.binding.column_index = proj_idx;