duckdb 1.3.4 → 1.4.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 (1367) hide show
  1. package/.github/workflows/NodeJS.yml +8 -20
  2. package/binding.gyp +9 -1
  3. package/package.json +1 -1
  4. package/src/connection.cpp +1 -1
  5. package/src/duckdb/extension/core_functions/aggregate/algebraic/avg.cpp +4 -0
  6. package/src/duckdb/extension/core_functions/aggregate/distributive/approx_count.cpp +8 -4
  7. package/src/duckdb/extension/core_functions/aggregate/distributive/arg_min_max.cpp +16 -12
  8. package/src/duckdb/extension/core_functions/aggregate/distributive/bitagg.cpp +5 -1
  9. package/src/duckdb/extension/core_functions/aggregate/distributive/bitstring_agg.cpp +5 -1
  10. package/src/duckdb/extension/core_functions/aggregate/distributive/bool.cpp +4 -0
  11. package/src/duckdb/extension/core_functions/aggregate/distributive/kurtosis.cpp +4 -0
  12. package/src/duckdb/extension/core_functions/aggregate/distributive/product.cpp +4 -0
  13. package/src/duckdb/extension/core_functions/aggregate/distributive/skew.cpp +4 -0
  14. package/src/duckdb/extension/core_functions/aggregate/distributive/string_agg.cpp +6 -2
  15. package/src/duckdb/extension/core_functions/aggregate/distributive/sum.cpp +64 -0
  16. package/src/duckdb/extension/core_functions/aggregate/holistic/approx_top_k.cpp +7 -3
  17. package/src/duckdb/extension/core_functions/aggregate/holistic/approximate_quantile.cpp +7 -4
  18. package/src/duckdb/extension/core_functions/aggregate/holistic/mad.cpp +6 -3
  19. package/src/duckdb/extension/core_functions/aggregate/holistic/mode.cpp +8 -1
  20. package/src/duckdb/extension/core_functions/aggregate/holistic/quantile.cpp +7 -46
  21. package/src/duckdb/extension/core_functions/aggregate/holistic/reservoir_quantile.cpp +9 -15
  22. package/src/duckdb/extension/core_functions/aggregate/nested/binned_histogram.cpp +12 -8
  23. package/src/duckdb/extension/core_functions/aggregate/nested/histogram.cpp +7 -5
  24. package/src/duckdb/extension/core_functions/aggregate/nested/list.cpp +14 -24
  25. package/src/duckdb/extension/core_functions/aggregate/regression/regr_avg.cpp +5 -0
  26. package/src/duckdb/extension/core_functions/aggregate/regression/regr_intercept.cpp +3 -0
  27. package/src/duckdb/extension/core_functions/aggregate/regression/regr_r2.cpp +5 -0
  28. package/src/duckdb/extension/core_functions/aggregate/regression/regr_sxx_syy.cpp +3 -0
  29. package/src/duckdb/extension/core_functions/aggregate/regression/regr_sxy.cpp +4 -0
  30. package/src/duckdb/extension/core_functions/core_functions_extension.cpp +6 -18
  31. package/src/duckdb/extension/core_functions/function_list.cpp +6 -3
  32. package/src/duckdb/extension/core_functions/include/core_functions/aggregate/algebraic/stddev.hpp +1 -1
  33. package/src/duckdb/extension/core_functions/include/core_functions/aggregate/algebraic_functions.hpp +2 -2
  34. package/src/duckdb/extension/core_functions/include/core_functions/aggregate/distributive_functions.hpp +4 -4
  35. package/src/duckdb/extension/core_functions/include/core_functions/aggregate/holistic_functions.hpp +1 -1
  36. package/src/duckdb/extension/core_functions/include/core_functions/aggregate/quantile_sort_tree.hpp +32 -45
  37. package/src/duckdb/extension/core_functions/include/core_functions/aggregate/quantile_state.hpp +1 -1
  38. package/src/duckdb/extension/core_functions/include/core_functions/aggregate/regression_functions.hpp +8 -8
  39. package/src/duckdb/extension/core_functions/include/core_functions/aggregate/sum_helpers.hpp +1 -1
  40. package/src/duckdb/extension/core_functions/include/core_functions/scalar/array_functions.hpp +22 -22
  41. package/src/duckdb/extension/core_functions/include/core_functions/scalar/blob_functions.hpp +2 -2
  42. package/src/duckdb/extension/core_functions/include/core_functions/scalar/date_functions.hpp +15 -5
  43. package/src/duckdb/extension/core_functions/include/core_functions/scalar/generic_functions.hpp +22 -12
  44. package/src/duckdb/extension/core_functions/include/core_functions/scalar/list_functions.hpp +56 -56
  45. package/src/duckdb/extension/core_functions/include/core_functions/scalar/map_functions.hpp +2 -2
  46. package/src/duckdb/extension/core_functions/include/core_functions/scalar/math_functions.hpp +3 -3
  47. package/src/duckdb/extension/core_functions/include/core_functions/scalar/string_functions.hpp +118 -118
  48. package/src/duckdb/extension/core_functions/include/core_functions/scalar/struct_functions.hpp +10 -0
  49. package/src/duckdb/extension/core_functions/include/core_functions_extension.hpp +1 -1
  50. package/src/duckdb/extension/core_functions/lambda_functions.cpp +4 -4
  51. package/src/duckdb/extension/core_functions/scalar/array/array_functions.cpp +2 -1
  52. package/src/duckdb/extension/core_functions/scalar/array/array_value.cpp +7 -3
  53. package/src/duckdb/extension/core_functions/scalar/bit/bitstring.cpp +7 -0
  54. package/src/duckdb/extension/core_functions/scalar/blob/base64.cpp +5 -2
  55. package/src/duckdb/extension/core_functions/scalar/blob/encode.cpp +6 -2
  56. package/src/duckdb/extension/core_functions/scalar/date/date_diff.cpp +7 -3
  57. package/src/duckdb/extension/core_functions/scalar/date/date_part.cpp +187 -33
  58. package/src/duckdb/extension/core_functions/scalar/date/date_sub.cpp +7 -3
  59. package/src/duckdb/extension/core_functions/scalar/date/date_trunc.cpp +12 -8
  60. package/src/duckdb/extension/core_functions/scalar/date/epoch.cpp +16 -12
  61. package/src/duckdb/extension/core_functions/scalar/date/make_date.cpp +11 -7
  62. package/src/duckdb/extension/core_functions/scalar/date/time_bucket.cpp +7 -3
  63. package/src/duckdb/extension/core_functions/scalar/date/to_interval.cpp +4 -0
  64. package/src/duckdb/extension/core_functions/scalar/enum/enum_functions.cpp +6 -6
  65. package/src/duckdb/extension/core_functions/scalar/generic/binning.cpp +8 -4
  66. package/src/duckdb/extension/core_functions/scalar/generic/can_implicitly_cast.cpp +6 -2
  67. package/src/duckdb/extension/core_functions/scalar/generic/cast_to_type.cpp +4 -1
  68. package/src/duckdb/extension/core_functions/scalar/generic/current_setting.cpp +9 -3
  69. package/src/duckdb/extension/core_functions/scalar/generic/least.cpp +5 -2
  70. package/src/duckdb/extension/core_functions/scalar/generic/replace_type.cpp +34 -0
  71. package/src/duckdb/extension/core_functions/scalar/generic/stats.cpp +5 -2
  72. package/src/duckdb/extension/core_functions/scalar/generic/system_functions.cpp +13 -9
  73. package/src/duckdb/extension/core_functions/scalar/generic/typeof.cpp +5 -1
  74. package/src/duckdb/extension/core_functions/scalar/list/array_slice.cpp +29 -26
  75. package/src/duckdb/extension/core_functions/scalar/list/flatten.cpp +9 -49
  76. package/src/duckdb/extension/core_functions/scalar/list/list_aggregates.cpp +17 -34
  77. package/src/duckdb/extension/core_functions/scalar/list/list_has_any_or_all.cpp +4 -50
  78. package/src/duckdb/extension/core_functions/scalar/list/list_reduce.cpp +46 -42
  79. package/src/duckdb/extension/core_functions/scalar/list/list_sort.cpp +48 -51
  80. package/src/duckdb/extension/core_functions/scalar/list/list_value.cpp +224 -144
  81. package/src/duckdb/extension/core_functions/scalar/list/range.cpp +5 -1
  82. package/src/duckdb/extension/core_functions/scalar/map/map.cpp +13 -41
  83. package/src/duckdb/extension/core_functions/scalar/map/map_concat.cpp +6 -6
  84. package/src/duckdb/extension/core_functions/scalar/map/map_entries.cpp +6 -42
  85. package/src/duckdb/extension/core_functions/scalar/map/map_extract.cpp +10 -59
  86. package/src/duckdb/extension/core_functions/scalar/map/map_from_entries.cpp +7 -32
  87. package/src/duckdb/extension/core_functions/scalar/map/map_keys_values.cpp +10 -45
  88. package/src/duckdb/extension/core_functions/scalar/math/numeric.cpp +364 -139
  89. package/src/duckdb/extension/core_functions/scalar/operators/bitwise.cpp +29 -7
  90. package/src/duckdb/extension/core_functions/scalar/random/random.cpp +18 -14
  91. package/src/duckdb/extension/core_functions/scalar/random/setseed.cpp +5 -1
  92. package/src/duckdb/extension/core_functions/scalar/string/hex.cpp +2 -2
  93. package/src/duckdb/extension/core_functions/scalar/string/instr.cpp +5 -3
  94. package/src/duckdb/extension/core_functions/scalar/string/printf.cpp +16 -0
  95. package/src/duckdb/extension/core_functions/scalar/string/repeat.cpp +2 -17
  96. package/src/duckdb/extension/core_functions/scalar/struct/struct_insert.cpp +1 -1
  97. package/src/duckdb/extension/core_functions/scalar/struct/struct_update.cpp +161 -0
  98. package/src/duckdb/extension/core_functions/scalar/union/union_extract.cpp +7 -3
  99. package/src/duckdb/extension/core_functions/scalar/union/union_tag.cpp +7 -3
  100. package/src/duckdb/extension/core_functions/scalar/union/union_value.cpp +7 -3
  101. package/src/duckdb/extension/icu/icu-current.cpp +5 -5
  102. package/src/duckdb/extension/icu/icu-dateadd.cpp +11 -11
  103. package/src/duckdb/extension/icu/icu-datepart.cpp +44 -44
  104. package/src/duckdb/extension/icu/icu-datesub.cpp +10 -10
  105. package/src/duckdb/extension/icu/icu-datetrunc.cpp +6 -6
  106. package/src/duckdb/extension/icu/icu-list-range.cpp +7 -6
  107. package/src/duckdb/extension/icu/icu-makedate.cpp +8 -11
  108. package/src/duckdb/extension/icu/icu-strptime.cpp +23 -29
  109. package/src/duckdb/extension/icu/icu-table-range.cpp +8 -6
  110. package/src/duckdb/extension/icu/icu-timebucket.cpp +5 -5
  111. package/src/duckdb/extension/icu/icu-timezone.cpp +24 -30
  112. package/src/duckdb/extension/icu/icu_extension.cpp +22 -34
  113. package/src/duckdb/extension/icu/include/icu-casts.hpp +2 -2
  114. package/src/duckdb/extension/icu/include/icu-current.hpp +3 -3
  115. package/src/duckdb/extension/icu/include/icu-dateadd.hpp +3 -3
  116. package/src/duckdb/extension/icu/include/icu-datepart.hpp +3 -3
  117. package/src/duckdb/extension/icu/include/icu-datesub.hpp +3 -3
  118. package/src/duckdb/extension/icu/include/icu-datetrunc.hpp +3 -3
  119. package/src/duckdb/extension/icu/include/icu-list-range.hpp +3 -3
  120. package/src/duckdb/extension/icu/include/icu-makedate.hpp +3 -3
  121. package/src/duckdb/extension/icu/include/icu-strptime.hpp +3 -3
  122. package/src/duckdb/extension/icu/include/icu-table-range.hpp +3 -3
  123. package/src/duckdb/extension/icu/include/icu-timebucket.hpp +3 -3
  124. package/src/duckdb/extension/icu/include/icu-timezone.hpp +3 -3
  125. package/src/duckdb/extension/icu/include/icu_extension.hpp +1 -1
  126. package/src/duckdb/extension/json/include/json_common.hpp +10 -2
  127. package/src/duckdb/extension/json/include/json_enums.hpp +3 -1
  128. package/src/duckdb/extension/json/include/json_extension.hpp +1 -1
  129. package/src/duckdb/extension/json/include/json_functions.hpp +4 -4
  130. package/src/duckdb/extension/json/include/json_multi_file_info.hpp +2 -2
  131. package/src/duckdb/extension/json/include/json_reader.hpp +3 -1
  132. package/src/duckdb/extension/json/json_enums.cpp +5 -0
  133. package/src/duckdb/extension/json/json_extension.cpp +27 -38
  134. package/src/duckdb/extension/json/json_functions/copy_json.cpp +8 -3
  135. package/src/duckdb/extension/json/json_functions/json_create.cpp +9 -6
  136. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +3 -20
  137. package/src/duckdb/extension/json/json_functions/json_pretty.cpp +3 -3
  138. package/src/duckdb/extension/json/json_functions/json_serialize_plan.cpp +6 -4
  139. package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +6 -4
  140. package/src/duckdb/extension/json/json_functions/json_table_in_out.cpp +6 -2
  141. package/src/duckdb/extension/json/json_functions/json_transform.cpp +5 -3
  142. package/src/duckdb/extension/json/json_functions/read_json.cpp +4 -3
  143. package/src/duckdb/extension/json/json_functions.cpp +135 -8
  144. package/src/duckdb/extension/json/json_multi_file_info.cpp +5 -2
  145. package/src/duckdb/extension/json/json_reader.cpp +7 -6
  146. package/src/duckdb/extension/parquet/column_reader.cpp +46 -21
  147. package/src/duckdb/extension/parquet/column_writer.cpp +16 -105
  148. package/src/duckdb/extension/parquet/geo_parquet.cpp +231 -171
  149. package/src/duckdb/extension/parquet/include/column_reader.hpp +0 -2
  150. package/src/duckdb/extension/parquet/include/column_writer.hpp +2 -1
  151. package/src/duckdb/extension/parquet/include/geo_parquet.hpp +160 -66
  152. package/src/duckdb/extension/parquet/include/parquet_column_schema.hpp +6 -4
  153. package/src/duckdb/extension/parquet/include/parquet_crypto.hpp +0 -3
  154. package/src/duckdb/extension/parquet/include/parquet_extension.hpp +1 -1
  155. package/src/duckdb/extension/parquet/include/parquet_file_metadata_cache.hpp +5 -2
  156. package/src/duckdb/extension/parquet/include/parquet_multi_file_info.hpp +2 -2
  157. package/src/duckdb/extension/parquet/include/parquet_reader.hpp +10 -2
  158. package/src/duckdb/extension/parquet/include/parquet_rle_bp_encoder.hpp +3 -0
  159. package/src/duckdb/extension/parquet/include/parquet_statistics.hpp +0 -2
  160. package/src/duckdb/extension/parquet/include/parquet_timestamp.hpp +10 -6
  161. package/src/duckdb/extension/parquet/include/parquet_writer.hpp +4 -3
  162. package/src/duckdb/extension/parquet/include/reader/row_number_column_reader.hpp +0 -2
  163. package/src/duckdb/extension/parquet/include/reader/uuid_column_reader.hpp +3 -13
  164. package/src/duckdb/extension/parquet/include/reader/variant/variant_binary_decoder.hpp +150 -0
  165. package/src/duckdb/extension/parquet/include/reader/variant/variant_shredded_conversion.hpp +23 -0
  166. package/src/duckdb/extension/parquet/include/reader/variant/variant_value.hpp +54 -0
  167. package/src/duckdb/extension/parquet/include/reader/variant_column_reader.hpp +44 -0
  168. package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +0 -2
  169. package/src/duckdb/extension/parquet/include/thrift_tools.hpp +3 -3
  170. package/src/duckdb/extension/parquet/include/writer/array_column_writer.hpp +2 -1
  171. package/src/duckdb/extension/parquet/include/writer/list_column_writer.hpp +2 -1
  172. package/src/duckdb/extension/parquet/include/writer/parquet_write_operators.hpp +47 -10
  173. package/src/duckdb/extension/parquet/include/writer/parquet_write_stats.hpp +55 -1
  174. package/src/duckdb/extension/parquet/include/writer/primitive_column_writer.hpp +4 -3
  175. package/src/duckdb/extension/parquet/include/writer/struct_column_writer.hpp +2 -1
  176. package/src/duckdb/extension/parquet/include/writer/templated_column_writer.hpp +6 -3
  177. package/src/duckdb/extension/parquet/include/zstd_file_system.hpp +1 -3
  178. package/src/duckdb/extension/parquet/parquet_crypto.cpp +11 -11
  179. package/src/duckdb/extension/parquet/parquet_extension.cpp +84 -68
  180. package/src/duckdb/extension/parquet/parquet_file_metadata_cache.cpp +4 -4
  181. package/src/duckdb/extension/parquet/parquet_float16.cpp +0 -3
  182. package/src/duckdb/extension/parquet/parquet_metadata.cpp +115 -17
  183. package/src/duckdb/extension/parquet/parquet_multi_file_info.cpp +25 -10
  184. package/src/duckdb/extension/parquet/parquet_reader.cpp +181 -56
  185. package/src/duckdb/extension/parquet/parquet_statistics.cpp +26 -8
  186. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +14 -4
  187. package/src/duckdb/extension/parquet/parquet_writer.cpp +117 -16
  188. package/src/duckdb/extension/parquet/reader/decimal_column_reader.cpp +1 -1
  189. package/src/duckdb/extension/parquet/reader/variant/variant_binary_decoder.cpp +367 -0
  190. package/src/duckdb/extension/parquet/reader/variant/variant_shredded_conversion.cpp +565 -0
  191. package/src/duckdb/extension/parquet/reader/variant/variant_value.cpp +85 -0
  192. package/src/duckdb/extension/parquet/reader/variant_column_reader.cpp +161 -0
  193. package/src/duckdb/extension/parquet/writer/array_column_writer.cpp +5 -2
  194. package/src/duckdb/extension/parquet/writer/enum_column_writer.cpp +1 -1
  195. package/src/duckdb/extension/parquet/writer/list_column_writer.cpp +6 -3
  196. package/src/duckdb/extension/parquet/writer/primitive_column_writer.cpp +24 -8
  197. package/src/duckdb/extension/parquet/writer/struct_column_writer.cpp +4 -2
  198. package/src/duckdb/extension/parquet/zstd_file_system.cpp +7 -6
  199. package/src/duckdb/src/catalog/catalog.cpp +92 -62
  200. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +8 -8
  201. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +14 -8
  202. package/src/duckdb/src/catalog/catalog_set.cpp +1 -0
  203. package/src/duckdb/src/catalog/default/default_functions.cpp +4 -4
  204. package/src/duckdb/src/catalog/default/default_table_functions.cpp +5 -4
  205. package/src/duckdb/src/catalog/default/default_views.cpp +1 -1
  206. package/src/duckdb/src/catalog/duck_catalog.cpp +28 -0
  207. package/src/duckdb/src/common/adbc/adbc.cpp +243 -125
  208. package/src/duckdb/src/common/adbc/driver_manager.cpp +3 -3
  209. package/src/duckdb/src/common/arrow/appender/append_data.cpp +29 -0
  210. package/src/duckdb/src/common/arrow/appender/bool_data.cpp +6 -7
  211. package/src/duckdb/src/common/arrow/appender/fixed_size_list_data.cpp +1 -1
  212. package/src/duckdb/src/common/arrow/appender/struct_data.cpp +1 -1
  213. package/src/duckdb/src/common/arrow/appender/union_data.cpp +0 -1
  214. package/src/duckdb/src/common/arrow/arrow_appender.cpp +13 -17
  215. package/src/duckdb/src/common/arrow/arrow_converter.cpp +14 -6
  216. package/src/duckdb/src/common/arrow/arrow_type_extension.cpp +6 -6
  217. package/src/duckdb/src/common/arrow/physical_arrow_collector.cpp +16 -10
  218. package/src/duckdb/src/common/arrow/schema_metadata.cpp +2 -2
  219. package/src/duckdb/src/common/bignum.cpp +362 -0
  220. package/src/duckdb/src/common/box_renderer.cpp +83 -32
  221. package/src/duckdb/src/common/complex_json.cpp +20 -5
  222. package/src/duckdb/src/common/compressed_file_system.cpp +6 -5
  223. package/src/duckdb/src/common/csv_writer.cpp +381 -0
  224. package/src/duckdb/src/common/encryption_functions.cpp +228 -0
  225. package/src/duckdb/src/common/encryption_key_manager.cpp +143 -0
  226. package/src/duckdb/src/common/encryption_state.cpp +56 -9
  227. package/src/duckdb/src/common/enum_util.cpp +405 -51
  228. package/src/duckdb/src/common/enums/expression_type.cpp +2 -0
  229. package/src/duckdb/src/common/enums/logical_operator_type.cpp +2 -0
  230. package/src/duckdb/src/common/enums/metric_type.cpp +6 -0
  231. package/src/duckdb/src/common/enums/optimizer_type.cpp +1 -0
  232. package/src/duckdb/src/common/enums/physical_operator_type.cpp +2 -0
  233. package/src/duckdb/src/common/enums/statement_type.cpp +2 -0
  234. package/src/duckdb/src/common/error_data.cpp +11 -0
  235. package/src/duckdb/src/common/exception_format_value.cpp +15 -1
  236. package/src/duckdb/src/common/extra_type_info.cpp +43 -0
  237. package/src/duckdb/src/common/file_buffer.cpp +11 -8
  238. package/src/duckdb/src/common/file_system.cpp +82 -12
  239. package/src/duckdb/src/common/gzip_file_system.cpp +13 -11
  240. package/src/duckdb/src/common/local_file_system.cpp +25 -16
  241. package/src/duckdb/src/common/multi_file/base_file_reader.cpp +4 -0
  242. package/src/duckdb/src/common/multi_file/multi_file_column_mapper.cpp +7 -11
  243. package/src/duckdb/src/common/multi_file/multi_file_function.cpp +8 -0
  244. package/src/duckdb/src/common/multi_file/multi_file_list.cpp +8 -4
  245. package/src/duckdb/src/common/multi_file/multi_file_reader.cpp +9 -5
  246. package/src/duckdb/src/common/operator/cast_operators.cpp +147 -6
  247. package/src/duckdb/src/common/operator/string_cast.cpp +41 -12
  248. package/src/duckdb/src/common/pipe_file_system.cpp +10 -5
  249. package/src/duckdb/src/common/progress_bar/progress_bar.cpp +2 -2
  250. package/src/duckdb/src/common/progress_bar/terminal_progress_bar_display.cpp +81 -7
  251. package/src/duckdb/src/common/progress_bar/unscented_kalman_filter.cpp +288 -0
  252. package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
  253. package/src/duckdb/src/common/row_operations/row_aggregate.cpp +8 -11
  254. package/src/duckdb/src/common/row_operations/row_external.cpp +0 -7
  255. package/src/duckdb/src/common/row_operations/row_gather.cpp +0 -5
  256. package/src/duckdb/src/common/row_operations/row_matcher.cpp +55 -37
  257. package/src/duckdb/src/common/row_operations/row_scatter.cpp +0 -6
  258. package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +4 -0
  259. package/src/duckdb/src/common/serializer/buffered_file_writer.cpp +4 -0
  260. package/src/duckdb/src/common/serializer/memory_stream.cpp +4 -0
  261. package/src/duckdb/src/common/sort/partition_state.cpp +3 -3
  262. package/src/duckdb/src/common/sorting/hashed_sort.cpp +724 -0
  263. package/src/duckdb/src/common/sorting/sort.cpp +513 -0
  264. package/src/duckdb/src/common/sorting/sorted_run.cpp +341 -0
  265. package/src/duckdb/src/common/sorting/sorted_run_merger.cpp +969 -0
  266. package/src/duckdb/src/common/string_util.cpp +64 -44
  267. package/src/duckdb/src/common/tree_renderer/text_tree_renderer.cpp +40 -3
  268. package/src/duckdb/src/common/tree_renderer/yaml_tree_renderer.cpp +144 -0
  269. package/src/duckdb/src/common/tree_renderer.cpp +3 -0
  270. package/src/duckdb/src/common/types/bignum.cpp +350 -0
  271. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +27 -29
  272. package/src/duckdb/src/common/types/column/column_data_collection.cpp +216 -68
  273. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +3 -2
  274. package/src/duckdb/src/common/types/conflict_info.cpp +1 -2
  275. package/src/duckdb/src/common/types/conflict_manager.cpp +82 -207
  276. package/src/duckdb/src/common/types/data_chunk.cpp +10 -3
  277. package/src/duckdb/src/common/types/date.cpp +8 -10
  278. package/src/duckdb/src/common/types/hash.cpp +7 -7
  279. package/src/duckdb/src/common/types/row/block_iterator.cpp +34 -0
  280. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +38 -29
  281. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +272 -54
  282. package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +156 -45
  283. package/src/duckdb/src/common/types/row/tuple_data_iterator.cpp +5 -5
  284. package/src/duckdb/src/common/types/row/tuple_data_layout.cpp +122 -18
  285. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +466 -83
  286. package/src/duckdb/src/common/types/row/tuple_data_segment.cpp +8 -28
  287. package/src/duckdb/src/common/types/time.cpp +2 -2
  288. package/src/duckdb/src/common/types/timestamp.cpp +26 -14
  289. package/src/duckdb/src/common/types/uuid.cpp +33 -2
  290. package/src/duckdb/src/common/types/value.cpp +79 -16
  291. package/src/duckdb/src/common/types/vector.cpp +190 -22
  292. package/src/duckdb/src/common/types/vector_buffer.cpp +4 -0
  293. package/src/duckdb/src/common/types/vector_cache.cpp +4 -0
  294. package/src/duckdb/src/common/types.cpp +110 -22
  295. package/src/duckdb/src/common/value_operations/comparison_operations.cpp +24 -27
  296. package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +12 -9
  297. package/src/duckdb/src/common/vector_operations/comparison_operators.cpp +5 -4
  298. package/src/duckdb/src/common/vector_operations/generators.cpp +1 -1
  299. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +70 -135
  300. package/src/duckdb/src/common/vector_operations/null_operations.cpp +1 -1
  301. package/src/duckdb/src/common/vector_operations/vector_copy.cpp +5 -2
  302. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +110 -55
  303. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +14 -10
  304. package/src/duckdb/src/common/virtual_file_system.cpp +12 -3
  305. package/src/duckdb/src/execution/aggregate_hashtable.cpp +88 -50
  306. package/src/duckdb/src/execution/column_binding_resolver.cpp +7 -6
  307. package/src/duckdb/src/execution/expression_executor/execute_function.cpp +113 -2
  308. package/src/duckdb/src/execution/expression_executor.cpp +44 -4
  309. package/src/duckdb/src/execution/index/art/art.cpp +78 -216
  310. package/src/duckdb/src/execution/index/art/art_builder.cpp +91 -0
  311. package/src/duckdb/src/execution/index/art/art_key.cpp +0 -23
  312. package/src/duckdb/src/execution/index/art/art_merger.cpp +3 -4
  313. package/src/duckdb/src/execution/index/art/base_leaf.cpp +10 -11
  314. package/src/duckdb/src/execution/index/art/base_node.cpp +103 -75
  315. package/src/duckdb/src/execution/index/art/iterator.cpp +3 -3
  316. package/src/duckdb/src/execution/index/art/leaf.cpp +9 -11
  317. package/src/duckdb/src/execution/index/art/node.cpp +54 -53
  318. package/src/duckdb/src/execution/index/art/node256.cpp +30 -56
  319. package/src/duckdb/src/execution/index/art/node256_leaf.cpp +43 -30
  320. package/src/duckdb/src/execution/index/art/node48.cpp +69 -101
  321. package/src/duckdb/src/execution/index/art/plan_art.cpp +2 -1
  322. package/src/duckdb/src/execution/index/art/prefix.cpp +115 -125
  323. package/src/duckdb/src/execution/index/bound_index.cpp +39 -10
  324. package/src/duckdb/src/execution/index/fixed_size_allocator.cpp +23 -8
  325. package/src/duckdb/src/execution/index/fixed_size_buffer.cpp +35 -23
  326. package/src/duckdb/src/execution/index/unbound_index.cpp +26 -6
  327. package/src/duckdb/src/execution/join_hashtable.cpp +52 -55
  328. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +3 -0
  329. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +6 -4
  330. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +27 -18
  331. package/src/duckdb/src/execution/operator/aggregate/physical_partitioned_aggregate.cpp +4 -2
  332. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +4 -2
  333. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +8 -2
  334. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +6 -4
  335. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +433 -387
  336. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer.cpp +5 -4
  337. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_file_handle.cpp +12 -4
  338. package/src/duckdb/src/execution/operator/csv_scanner/encode/csv_encoder.cpp +8 -7
  339. package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +7 -5
  340. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +15 -2
  341. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +1 -1
  342. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +4 -4
  343. package/src/duckdb/src/execution/operator/csv_scanner/table_function/csv_multi_file_info.cpp +12 -3
  344. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +7 -2
  345. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +4 -0
  346. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +14 -12
  347. package/src/duckdb/src/execution/operator/helper/physical_batch_collector.cpp +2 -1
  348. package/src/duckdb/src/execution/operator/helper/physical_buffered_batch_collector.cpp +2 -2
  349. package/src/duckdb/src/execution/operator/helper/physical_buffered_collector.cpp +3 -2
  350. package/src/duckdb/src/execution/operator/helper/physical_execute.cpp +2 -2
  351. package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +3 -3
  352. package/src/duckdb/src/execution/operator/helper/physical_limit_percent.cpp +4 -3
  353. package/src/duckdb/src/execution/operator/helper/physical_materialized_collector.cpp +3 -2
  354. package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +29 -9
  355. package/src/duckdb/src/execution/operator/helper/physical_result_collector.cpp +23 -20
  356. package/src/duckdb/src/execution/operator/helper/physical_set.cpp +28 -11
  357. package/src/duckdb/src/execution/operator/helper/physical_set_variable.cpp +3 -2
  358. package/src/duckdb/src/execution/operator/helper/physical_streaming_limit.cpp +4 -3
  359. package/src/duckdb/src/execution/operator/helper/physical_streaming_sample.cpp +3 -3
  360. package/src/duckdb/src/execution/operator/helper/physical_transaction.cpp +4 -4
  361. package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +7 -3
  362. package/src/duckdb/src/execution/operator/helper/physical_verify_vector.cpp +4 -2
  363. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +11 -10
  364. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +3 -2
  365. package/src/duckdb/src/execution/operator/join/physical_comparison_join.cpp +4 -4
  366. package/src/duckdb/src/execution/operator/join/physical_cross_product.cpp +4 -3
  367. package/src/duckdb/src/execution/operator/join/physical_delim_join.cpp +2 -2
  368. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +13 -8
  369. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +15 -14
  370. package/src/duckdb/src/execution/operator/join/physical_join.cpp +3 -3
  371. package/src/duckdb/src/execution/operator/join/physical_left_delim_join.cpp +5 -4
  372. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +7 -7
  373. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +20 -21
  374. package/src/duckdb/src/execution/operator/join/physical_positional_join.cpp +4 -3
  375. package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +18 -6
  376. package/src/duckdb/src/execution/operator/join/physical_right_delim_join.cpp +5 -4
  377. package/src/duckdb/src/execution/operator/order/physical_order.cpp +62 -203
  378. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +5 -4
  379. package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +5 -3
  380. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +9 -7
  381. package/src/duckdb/src/execution/operator/persistent/physical_copy_database.cpp +7 -5
  382. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +12 -7
  383. package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +34 -5
  384. package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +6 -20
  385. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +91 -74
  386. package/src/duckdb/src/execution/operator/persistent/physical_merge_into.cpp +516 -0
  387. package/src/duckdb/src/execution/operator/persistent/physical_update.cpp +11 -9
  388. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +7 -4
  389. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +3 -36
  390. package/src/duckdb/src/execution/operator/projection/physical_tableinout_function.cpp +26 -4
  391. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +5 -3
  392. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +9 -7
  393. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +3 -3
  394. package/src/duckdb/src/execution/operator/scan/physical_table_scan.cpp +6 -5
  395. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +11 -9
  396. package/src/duckdb/src/execution/operator/schema/physical_create_art_index.cpp +5 -4
  397. package/src/duckdb/src/execution/operator/schema/physical_create_table.cpp +3 -3
  398. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +3 -2
  399. package/src/duckdb/src/execution/operator/schema/physical_drop.cpp +3 -2
  400. package/src/duckdb/src/execution/operator/set/physical_cte.cpp +5 -4
  401. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +5 -3
  402. package/src/duckdb/src/execution/operator/set/physical_union.cpp +3 -3
  403. package/src/duckdb/src/execution/physical_operator.cpp +42 -32
  404. package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +24 -12
  405. package/src/duckdb/src/execution/physical_plan/plan_asof_join.cpp +5 -3
  406. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +12 -18
  407. package/src/duckdb/src/execution/physical_plan/plan_get.cpp +3 -1
  408. package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +11 -10
  409. package/src/duckdb/src/execution/physical_plan/plan_merge_into.cpp +132 -0
  410. package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +16 -18
  411. package/src/duckdb/src/execution/physical_plan_generator.cpp +8 -5
  412. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +16 -27
  413. package/src/duckdb/src/execution/sample/base_reservoir_sample.cpp +22 -22
  414. package/src/duckdb/src/function/aggregate/distributive/count.cpp +14 -11
  415. package/src/duckdb/src/function/aggregate/distributive/first_last_any.cpp +23 -19
  416. package/src/duckdb/src/function/aggregate/distributive/minmax.cpp +14 -7
  417. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +185 -234
  418. package/src/duckdb/src/function/cast/bignum_casts.cpp +315 -0
  419. package/src/duckdb/src/function/cast/blob_cast.cpp +3 -0
  420. package/src/duckdb/src/function/cast/cast_function_set.cpp +24 -4
  421. package/src/duckdb/src/function/cast/decimal_cast.cpp +3 -3
  422. package/src/duckdb/src/function/cast/default_casts.cpp +12 -4
  423. package/src/duckdb/src/function/cast/enum_casts.cpp +4 -3
  424. package/src/duckdb/src/function/cast/numeric_casts.cpp +3 -3
  425. package/src/duckdb/src/function/cast/string_cast.cpp +14 -11
  426. package/src/duckdb/src/function/cast/struct_cast.cpp +127 -2
  427. package/src/duckdb/src/function/cast/time_casts.cpp +18 -0
  428. package/src/duckdb/src/function/cast/union_casts.cpp +7 -6
  429. package/src/duckdb/src/function/cast/uuid_casts.cpp +3 -0
  430. package/src/duckdb/src/function/cast/variant/from_variant.cpp +697 -0
  431. package/src/duckdb/src/function/cast/variant/to_json.cpp +272 -0
  432. package/src/duckdb/src/function/cast/variant/to_variant.cpp +193 -0
  433. package/src/duckdb/src/function/cast_rules.cpp +38 -4
  434. package/src/duckdb/src/function/copy_blob.cpp +157 -0
  435. package/src/duckdb/src/function/copy_function.cpp +15 -0
  436. package/src/duckdb/src/function/function.cpp +2 -0
  437. package/src/duckdb/src/function/function_binder.cpp +239 -13
  438. package/src/duckdb/src/function/function_list.cpp +8 -0
  439. package/src/duckdb/src/function/macro_function.cpp +263 -70
  440. package/src/duckdb/src/function/pragma/pragma_functions.cpp +6 -38
  441. package/src/duckdb/src/function/pragma/pragma_queries.cpp +37 -22
  442. package/src/duckdb/src/function/register_function_list.cpp +5 -5
  443. package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +43 -34
  444. package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +61 -38
  445. package/src/duckdb/src/function/scalar/create_sort_key.cpp +374 -154
  446. package/src/duckdb/src/function/scalar/date/strftime.cpp +31 -28
  447. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +18 -14
  448. package/src/duckdb/src/function/scalar/generic/error.cpp +18 -7
  449. package/src/duckdb/src/function/scalar/generic/getvariable.cpp +5 -2
  450. package/src/duckdb/src/function/scalar/list/contains_or_position.cpp +4 -52
  451. package/src/duckdb/src/function/scalar/list/list_extract.cpp +5 -12
  452. package/src/duckdb/src/function/scalar/list/list_resize.cpp +1 -1
  453. package/src/duckdb/src/function/scalar/list/list_select.cpp +11 -27
  454. package/src/duckdb/src/function/scalar/map/map_contains.cpp +5 -31
  455. package/src/duckdb/src/function/scalar/operator/add.cpp +6 -1
  456. package/src/duckdb/src/function/scalar/operator/arithmetic.cpp +130 -10
  457. package/src/duckdb/src/function/scalar/operator/multiply.cpp +4 -2
  458. package/src/duckdb/src/function/scalar/operator/subtract.cpp +3 -1
  459. package/src/duckdb/src/function/scalar/sequence/nextval.cpp +7 -3
  460. package/src/duckdb/src/function/scalar/strftime_format.cpp +2 -2
  461. package/src/duckdb/src/function/scalar/string/caseconvert.cpp +4 -0
  462. package/src/duckdb/src/function/scalar/string/concat.cpp +18 -19
  463. package/src/duckdb/src/function/scalar/string/contains.cpp +14 -7
  464. package/src/duckdb/src/function/scalar/string/length.cpp +13 -9
  465. package/src/duckdb/src/function/scalar/string/like.cpp +146 -143
  466. package/src/duckdb/src/function/scalar/string/md5.cpp +6 -2
  467. package/src/duckdb/src/function/scalar/string/nfc_normalize.cpp +5 -1
  468. package/src/duckdb/src/function/scalar/string/prefix.cpp +11 -8
  469. package/src/duckdb/src/function/scalar/string/regexp_escape.cpp +5 -1
  470. package/src/duckdb/src/function/scalar/string/sha1.cpp +5 -1
  471. package/src/duckdb/src/function/scalar/string/sha256.cpp +5 -1
  472. package/src/duckdb/src/function/scalar/string/string_split.cpp +7 -3
  473. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +5 -1
  474. package/src/duckdb/src/function/scalar/string/substring.cpp +10 -6
  475. package/src/duckdb/src/function/scalar/string/suffix.cpp +10 -8
  476. package/src/duckdb/src/function/scalar/struct/remap_struct.cpp +20 -17
  477. package/src/duckdb/src/function/scalar/struct/struct_concat.cpp +1 -1
  478. package/src/duckdb/src/function/scalar/struct/struct_contains.cpp +255 -0
  479. package/src/duckdb/src/function/scalar/struct/struct_pack.cpp +2 -2
  480. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +34 -31
  481. package/src/duckdb/src/function/scalar/system/current_connection_id.cpp +5 -1
  482. package/src/duckdb/src/function/scalar/system/current_query_id.cpp +5 -1
  483. package/src/duckdb/src/function/scalar/system/current_transaction_id.cpp +5 -1
  484. package/src/duckdb/src/function/scalar/system/parse_log_message.cpp +5 -1
  485. package/src/duckdb/src/function/scalar/system/write_log.cpp +11 -13
  486. package/src/duckdb/src/function/scalar/variant/variant_extract.cpp +234 -0
  487. package/src/duckdb/src/function/scalar/variant/variant_typeof.cpp +70 -0
  488. package/src/duckdb/src/function/scalar/variant/variant_utils.cpp +412 -0
  489. package/src/duckdb/src/function/scalar_macro_function.cpp +8 -11
  490. package/src/duckdb/src/function/table/arrow/arrow_array_scan_state.cpp +2 -3
  491. package/src/duckdb/src/function/table/arrow/arrow_duck_schema.cpp +27 -2
  492. package/src/duckdb/src/function/table/arrow.cpp +37 -17
  493. package/src/duckdb/src/function/table/arrow_conversion.cpp +186 -236
  494. package/src/duckdb/src/function/table/copy_csv.cpp +76 -245
  495. package/src/duckdb/src/function/table/direct_file_reader.cpp +172 -0
  496. package/src/duckdb/src/function/table/read_file.cpp +90 -220
  497. package/src/duckdb/src/function/table/sniff_csv.cpp +0 -1
  498. package/src/duckdb/src/function/table/system/duckdb_approx_database_count.cpp +43 -0
  499. package/src/duckdb/src/function/table/system/duckdb_columns.cpp +2 -2
  500. package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +3 -7
  501. package/src/duckdb/src/function/table/system/duckdb_databases.cpp +20 -5
  502. package/src/duckdb/src/function/table/system/duckdb_extensions.cpp +10 -5
  503. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +6 -22
  504. package/src/duckdb/src/function/table/system/duckdb_log.cpp +41 -5
  505. package/src/duckdb/src/function/table/system/duckdb_log_contexts.cpp +15 -6
  506. package/src/duckdb/src/function/table/system/duckdb_settings.cpp +29 -6
  507. package/src/duckdb/src/function/table/system/duckdb_types.cpp +4 -0
  508. package/src/duckdb/src/function/table/system/logging_utils.cpp +154 -0
  509. package/src/duckdb/src/function/table/system/pragma_database_size.cpp +2 -2
  510. package/src/duckdb/src/function/table/system/test_all_types.cpp +30 -6
  511. package/src/duckdb/src/function/table/system_functions.cpp +2 -0
  512. package/src/duckdb/src/function/table/table_scan.cpp +82 -48
  513. package/src/duckdb/src/function/table/version/pragma_version.cpp +7 -4
  514. package/src/duckdb/src/function/window/window_aggregate_function.cpp +56 -46
  515. package/src/duckdb/src/function/window/window_aggregator.cpp +33 -19
  516. package/src/duckdb/src/function/window/window_boundaries_state.cpp +12 -2
  517. package/src/duckdb/src/function/window/window_collection.cpp +30 -0
  518. package/src/duckdb/src/function/window/window_constant_aggregator.cpp +32 -24
  519. package/src/duckdb/src/function/window/window_custom_aggregator.cpp +54 -40
  520. package/src/duckdb/src/function/window/window_distinct_aggregator.cpp +200 -251
  521. package/src/duckdb/src/function/window/window_executor.cpp +44 -36
  522. package/src/duckdb/src/function/window/window_index_tree.cpp +26 -16
  523. package/src/duckdb/src/function/window/window_merge_sort_tree.cpp +98 -151
  524. package/src/duckdb/src/function/window/window_naive_aggregator.cpp +94 -72
  525. package/src/duckdb/src/function/window/window_rank_function.cpp +57 -63
  526. package/src/duckdb/src/function/window/window_rownumber_function.cpp +45 -47
  527. package/src/duckdb/src/function/window/window_segment_tree.cpp +28 -22
  528. package/src/duckdb/src/function/window/window_token_tree.cpp +46 -41
  529. package/src/duckdb/src/function/window/window_value_function.cpp +632 -93
  530. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +24 -5
  531. package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +5 -2
  532. package/src/duckdb/src/include/duckdb/catalog/duck_catalog.hpp +16 -0
  533. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +68 -1
  534. package/src/duckdb/src/include/duckdb/common/allocator.hpp +3 -0
  535. package/src/duckdb/src/include/duckdb/common/arena_linked_list.hpp +169 -0
  536. package/src/duckdb/src/include/duckdb/common/arrow/appender/append_data.hpp +31 -55
  537. package/src/duckdb/src/include/duckdb/common/arrow/appender/enum_data.hpp +1 -1
  538. package/src/duckdb/src/include/duckdb/common/arrow/appender/list_data.hpp +1 -1
  539. package/src/duckdb/src/include/duckdb/common/arrow/appender/list_view_data.hpp +1 -1
  540. package/src/duckdb/src/include/duckdb/common/arrow/appender/map_data.hpp +1 -1
  541. package/src/duckdb/src/include/duckdb/common/arrow/appender/scalar_data.hpp +1 -1
  542. package/src/duckdb/src/include/duckdb/common/arrow/appender/varchar_data.hpp +6 -6
  543. package/src/duckdb/src/include/duckdb/common/arrow/arrow_wrapper.hpp +10 -0
  544. package/src/duckdb/src/include/duckdb/common/arrow/physical_arrow_batch_collector.hpp +2 -2
  545. package/src/duckdb/src/include/duckdb/common/arrow/physical_arrow_collector.hpp +3 -4
  546. package/src/duckdb/src/include/duckdb/common/bignum.hpp +85 -0
  547. package/src/duckdb/src/include/duckdb/common/box_renderer.hpp +4 -4
  548. package/src/duckdb/src/include/duckdb/common/chrono.hpp +1 -0
  549. package/src/duckdb/src/include/duckdb/common/complex_json.hpp +15 -4
  550. package/src/duckdb/src/include/duckdb/common/compressed_file_system.hpp +2 -2
  551. package/src/duckdb/src/include/duckdb/common/csv_writer.hpp +153 -0
  552. package/src/duckdb/src/include/duckdb/common/encryption_functions.hpp +54 -0
  553. package/src/duckdb/src/include/duckdb/common/encryption_key_manager.hpp +80 -0
  554. package/src/duckdb/src/include/duckdb/common/encryption_state.hpp +25 -9
  555. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +120 -0
  556. package/src/duckdb/src/include/duckdb/common/enums/arrow_format_version.hpp +33 -0
  557. package/src/duckdb/src/include/duckdb/common/enums/checkpoint_abort.hpp +22 -0
  558. package/src/duckdb/src/include/duckdb/common/enums/checkpoint_type.hpp +3 -1
  559. package/src/duckdb/src/include/duckdb/common/enums/copy_option_mode.hpp +17 -0
  560. package/src/duckdb/src/include/duckdb/common/enums/debug_vector_verification.hpp +2 -1
  561. package/src/duckdb/src/include/duckdb/common/enums/explain_format.hpp +1 -1
  562. package/src/duckdb/src/include/duckdb/common/enums/expression_type.hpp +1 -0
  563. package/src/duckdb/src/include/duckdb/common/enums/file_glob_options.hpp +11 -3
  564. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +1 -0
  565. package/src/duckdb/src/include/duckdb/common/enums/merge_action_type.hpp +19 -0
  566. package/src/duckdb/src/include/duckdb/common/enums/metric_type.hpp +3 -0
  567. package/src/duckdb/src/include/duckdb/common/enums/optimizer_type.hpp +2 -1
  568. package/src/duckdb/src/include/duckdb/common/enums/ordinality_request_type.hpp +16 -0
  569. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +1 -0
  570. package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +1 -0
  571. package/src/duckdb/src/include/duckdb/common/enums/tableref_type.hpp +2 -1
  572. package/src/duckdb/src/include/duckdb/common/enums/thread_pin_mode.hpp +17 -0
  573. package/src/duckdb/src/include/duckdb/common/enums/tuple_data_layout_enums.hpp +25 -0
  574. package/src/duckdb/src/include/duckdb/common/enums/undo_flags.hpp +2 -1
  575. package/src/duckdb/src/include/duckdb/common/error_data.hpp +4 -2
  576. package/src/duckdb/src/include/duckdb/common/exception_format_value.hpp +9 -1
  577. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +25 -1
  578. package/src/duckdb/src/include/duckdb/common/file_buffer.hpp +15 -6
  579. package/src/duckdb/src/include/duckdb/common/file_open_flags.hpp +14 -0
  580. package/src/duckdb/src/include/duckdb/common/file_opener.hpp +2 -1
  581. package/src/duckdb/src/include/duckdb/common/file_system.hpp +14 -6
  582. package/src/duckdb/src/include/duckdb/common/fsst.hpp +3 -2
  583. package/src/duckdb/src/include/duckdb/common/gzip_file_system.hpp +1 -1
  584. package/src/duckdb/src/include/duckdb/common/helper.hpp +21 -3
  585. package/src/duckdb/src/include/duckdb/common/local_file_system.hpp +1 -1
  586. package/src/duckdb/src/include/duckdb/common/multi_file/base_file_reader.hpp +4 -0
  587. package/src/duckdb/src/include/duckdb/common/multi_file/multi_file_function.hpp +43 -14
  588. package/src/duckdb/src/include/duckdb/common/multi_file/multi_file_list.hpp +4 -3
  589. package/src/duckdb/src/include/duckdb/common/multi_file/multi_file_reader.hpp +10 -3
  590. package/src/duckdb/src/include/duckdb/common/multi_file/multi_file_states.hpp +2 -0
  591. package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +57 -0
  592. package/src/duckdb/src/include/duckdb/common/opener_file_system.hpp +7 -3
  593. package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +84 -0
  594. package/src/duckdb/src/include/duckdb/common/operator/interpolate.hpp +39 -0
  595. package/src/duckdb/src/include/duckdb/common/operator/string_cast.hpp +6 -0
  596. package/src/duckdb/src/include/duckdb/common/optionally_owned_ptr.hpp +18 -2
  597. package/src/duckdb/src/include/duckdb/common/owning_string_map.hpp +8 -0
  598. package/src/duckdb/src/include/duckdb/common/pipe_file_system.hpp +1 -1
  599. package/src/duckdb/src/include/duckdb/common/progress_bar/display/terminal_progress_bar_display.hpp +44 -5
  600. package/src/duckdb/src/include/duckdb/common/progress_bar/progress_bar.hpp +1 -1
  601. package/src/duckdb/src/include/duckdb/common/progress_bar/unscented_kalman_filter.hpp +65 -0
  602. package/src/duckdb/src/include/duckdb/common/row_operations/row_matcher.hpp +8 -14
  603. package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +0 -12
  604. package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_reader.hpp +2 -0
  605. package/src/duckdb/src/include/duckdb/common/serializer/deserializer.hpp +17 -2
  606. package/src/duckdb/src/include/duckdb/common/serializer/memory_stream.hpp +1 -0
  607. package/src/duckdb/src/include/duckdb/common/serializer/read_stream.hpp +9 -1
  608. package/src/duckdb/src/include/duckdb/common/serializer/varint.hpp +62 -0
  609. package/src/duckdb/src/include/duckdb/common/sorting/hashed_sort.hpp +76 -0
  610. package/src/duckdb/src/include/duckdb/common/sorting/sort.hpp +85 -0
  611. package/src/duckdb/src/include/duckdb/common/sorting/sort_key.hpp +442 -0
  612. package/src/duckdb/src/include/duckdb/common/sorting/sort_projection_column.hpp +21 -0
  613. package/src/duckdb/src/include/duckdb/common/sorting/sorted_run.hpp +55 -0
  614. package/src/duckdb/src/include/duckdb/common/sorting/sorted_run_merger.hpp +62 -0
  615. package/src/duckdb/src/include/duckdb/common/tree_renderer/text_tree_renderer.hpp +5 -0
  616. package/src/duckdb/src/include/duckdb/common/tree_renderer/yaml_tree_renderer.hpp +40 -0
  617. package/src/duckdb/src/include/duckdb/common/type_util.hpp +34 -4
  618. package/src/duckdb/src/include/duckdb/common/type_visitor.hpp +36 -6
  619. package/src/duckdb/src/include/duckdb/common/types/bignum.hpp +159 -0
  620. package/src/duckdb/src/include/duckdb/common/types/column/column_data_allocator.hpp +3 -2
  621. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection_segment.hpp +4 -2
  622. package/src/duckdb/src/include/duckdb/common/types/conflict_manager.hpp +202 -56
  623. package/src/duckdb/src/include/duckdb/common/types/constraint_conflict_info.hpp +7 -5
  624. package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +3 -1
  625. package/src/duckdb/src/include/duckdb/common/types/date.hpp +9 -5
  626. package/src/duckdb/src/include/duckdb/common/types/datetime.hpp +11 -2
  627. package/src/duckdb/src/include/duckdb/common/types/double_na_equal.hpp +65 -0
  628. package/src/duckdb/src/include/duckdb/common/types/hash.hpp +22 -10
  629. package/src/duckdb/src/include/duckdb/common/types/hugeint.hpp +6 -6
  630. package/src/duckdb/src/include/duckdb/common/types/row/block_iterator.hpp +360 -0
  631. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +1 -1
  632. package/src/duckdb/src/include/duckdb/common/types/row/row_data_collection.hpp +1 -2
  633. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_allocator.hpp +7 -0
  634. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_collection.hpp +26 -2
  635. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_layout.hpp +43 -5
  636. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_segment.hpp +4 -11
  637. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +10 -1
  638. package/src/duckdb/src/include/duckdb/common/types/selection_vector.hpp +8 -58
  639. package/src/duckdb/src/include/duckdb/common/types/string.hpp +338 -0
  640. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +7 -1
  641. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +7 -3
  642. package/src/duckdb/src/include/duckdb/common/types/uhugeint.hpp +4 -4
  643. package/src/duckdb/src/include/duckdb/common/types/uuid.hpp +5 -0
  644. package/src/duckdb/src/include/duckdb/common/types/validity_mask.hpp +14 -5
  645. package/src/duckdb/src/include/duckdb/common/types/value.hpp +15 -2
  646. package/src/duckdb/src/include/duckdb/common/types/variant.hpp +202 -0
  647. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +118 -5
  648. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +8 -0
  649. package/src/duckdb/src/include/duckdb/common/types.hpp +26 -6
  650. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +50 -11
  651. package/src/duckdb/src/include/duckdb/common/virtual_file_system.hpp +2 -3
  652. package/src/duckdb/src/include/duckdb/common/winapi.hpp +0 -4
  653. package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +8 -6
  654. package/src/duckdb/src/include/duckdb/execution/executor.hpp +0 -2
  655. package/src/duckdb/src/include/duckdb/execution/expression_executor.hpp +4 -0
  656. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +21 -2
  657. package/src/duckdb/src/include/duckdb/execution/ht_entry.hpp +4 -0
  658. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +15 -16
  659. package/src/duckdb/src/include/duckdb/execution/index/art/art_builder.hpp +55 -0
  660. package/src/duckdb/src/include/duckdb/execution/index/art/art_key.hpp +0 -13
  661. package/src/duckdb/src/include/duckdb/execution/index/art/art_merger.hpp +1 -0
  662. package/src/duckdb/src/include/duckdb/execution/index/art/art_operator.hpp +113 -1
  663. package/src/duckdb/src/include/duckdb/execution/index/art/art_scanner.hpp +5 -2
  664. package/src/duckdb/src/include/duckdb/execution/index/art/base_leaf.hpp +2 -1
  665. package/src/duckdb/src/include/duckdb/execution/index/art/base_node.hpp +18 -15
  666. package/src/duckdb/src/include/duckdb/execution/index/art/iterator.hpp +1 -1
  667. package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +1 -1
  668. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +30 -3
  669. package/src/duckdb/src/include/duckdb/execution/index/art/node256.hpp +30 -8
  670. package/src/duckdb/src/include/duckdb/execution/index/art/node256_leaf.hpp +8 -5
  671. package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +36 -9
  672. package/src/duckdb/src/include/duckdb/execution/index/art/prefix.hpp +9 -20
  673. package/src/duckdb/src/include/duckdb/execution/index/bound_index.hpp +8 -6
  674. package/src/duckdb/src/include/duckdb/execution/index/fixed_size_allocator.hpp +21 -4
  675. package/src/duckdb/src/include/duckdb/execution/index/fixed_size_buffer.hpp +95 -11
  676. package/src/duckdb/src/include/duckdb/execution/index/unbound_index.hpp +22 -11
  677. package/src/duckdb/src/include/duckdb/execution/join_hashtable.hpp +6 -1
  678. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/distinct_aggregate_data.hpp +3 -2
  679. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_hash_aggregate.hpp +12 -8
  680. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_partitioned_aggregate.hpp +1 -1
  681. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_perfecthash_aggregate.hpp +1 -1
  682. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_streaming_window.hpp +2 -2
  683. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_ungrouped_aggregate.hpp +3 -2
  684. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_window.hpp +4 -2
  685. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_error.hpp +1 -1
  686. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_file_handle.hpp +3 -0
  687. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_multi_file_info.hpp +3 -3
  688. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_reader_options.hpp +1 -1
  689. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state.hpp +1 -1
  690. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state_machine.hpp +1 -1
  691. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/encode/csv_encoder.hpp +3 -0
  692. package/src/duckdb/src/include/duckdb/execution/operator/filter/physical_filter.hpp +2 -1
  693. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_batch_collector.hpp +1 -1
  694. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_buffered_batch_collector.hpp +1 -1
  695. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_buffered_collector.hpp +1 -1
  696. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_create_secret.hpp +3 -2
  697. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_execute.hpp +1 -1
  698. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_explain_analyze.hpp +2 -2
  699. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit.hpp +2 -2
  700. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit_percent.hpp +2 -2
  701. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_load.hpp +2 -2
  702. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_materialized_collector.hpp +1 -1
  703. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_pragma.hpp +2 -2
  704. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_prepare.hpp +3 -2
  705. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_reservoir_sample.hpp +4 -2
  706. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_reset.hpp +5 -4
  707. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +2 -2
  708. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_set.hpp +6 -3
  709. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_set_variable.hpp +1 -1
  710. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_streaming_limit.hpp +2 -2
  711. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_streaming_sample.hpp +2 -1
  712. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_transaction.hpp +4 -2
  713. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_update_extensions.hpp +3 -2
  714. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_vacuum.hpp +1 -1
  715. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_verify_vector.hpp +1 -1
  716. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_asof_join.hpp +2 -1
  717. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_blockwise_nl_join.hpp +3 -2
  718. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_comparison_join.hpp +2 -2
  719. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_cross_product.hpp +2 -2
  720. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_delim_join.hpp +4 -3
  721. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_hash_join.hpp +4 -4
  722. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_iejoin.hpp +5 -4
  723. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_join.hpp +2 -1
  724. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_left_delim_join.hpp +4 -3
  725. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_nested_loop_join.hpp +6 -5
  726. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp +3 -3
  727. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_positional_join.hpp +2 -2
  728. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_range_join.hpp +3 -3
  729. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_right_delim_join.hpp +4 -3
  730. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_order.hpp +13 -9
  731. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_top_n.hpp +2 -2
  732. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_copy_to_file.hpp +2 -2
  733. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +3 -3
  734. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_database.hpp +2 -1
  735. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +2 -2
  736. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_delete.hpp +2 -2
  737. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_export.hpp +2 -2
  738. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_insert.hpp +3 -3
  739. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_merge_into.hpp +87 -0
  740. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_update.hpp +2 -2
  741. package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_pivot.hpp +2 -1
  742. package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_projection.hpp +2 -7
  743. package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_tableinout_function.hpp +6 -1
  744. package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_unnest.hpp +2 -2
  745. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +4 -4
  746. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_dummy_scan.hpp +2 -2
  747. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_empty_result.hpp +2 -2
  748. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_expression_scan.hpp +4 -3
  749. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_positional_scan.hpp +2 -1
  750. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_table_scan.hpp +4 -3
  751. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_alter.hpp +2 -2
  752. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_attach.hpp +2 -2
  753. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_art_index.hpp +4 -4
  754. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_function.hpp +4 -2
  755. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_schema.hpp +4 -2
  756. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_sequence.hpp +4 -2
  757. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_table.hpp +2 -2
  758. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_type.hpp +1 -1
  759. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_view.hpp +4 -2
  760. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_detach.hpp +2 -2
  761. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_drop.hpp +2 -2
  762. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +2 -2
  763. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +2 -2
  764. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_union.hpp +2 -2
  765. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +23 -22
  766. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +7 -2
  767. package/src/duckdb/src/include/duckdb/execution/radix_partitioned_hashtable.hpp +4 -1
  768. package/src/duckdb/src/include/duckdb/execution/reservoir_sample.hpp +0 -1
  769. package/src/duckdb/src/include/duckdb/function/aggregate/distributive_functions.hpp +3 -3
  770. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +36 -11
  771. package/src/duckdb/src/include/duckdb/function/built_in_functions.hpp +1 -0
  772. package/src/duckdb/src/include/duckdb/function/cast/bound_cast_data.hpp +28 -0
  773. package/src/duckdb/src/include/duckdb/function/cast/cast_function_set.hpp +6 -1
  774. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +5 -1
  775. package/src/duckdb/src/include/duckdb/function/cast/variant/array_to_variant.hpp +66 -0
  776. package/src/duckdb/src/include/duckdb/function/cast/variant/json_to_variant.hpp +283 -0
  777. package/src/duckdb/src/include/duckdb/function/cast/variant/list_to_variant.hpp +70 -0
  778. package/src/duckdb/src/include/duckdb/function/cast/variant/primitive_to_variant.hpp +399 -0
  779. package/src/duckdb/src/include/duckdb/function/cast/variant/struct_to_variant.hpp +111 -0
  780. package/src/duckdb/src/include/duckdb/function/cast/variant/to_variant.hpp +66 -0
  781. package/src/duckdb/src/include/duckdb/function/cast/variant/to_variant_fwd.hpp +179 -0
  782. package/src/duckdb/src/include/duckdb/function/cast/variant/union_to_variant.hpp +59 -0
  783. package/src/duckdb/src/include/duckdb/function/cast/variant/variant_to_variant.hpp +275 -0
  784. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +2 -3
  785. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +28 -10
  786. package/src/duckdb/src/include/duckdb/function/create_sort_key.hpp +13 -0
  787. package/src/duckdb/src/include/duckdb/function/function_binder.hpp +3 -0
  788. package/src/duckdb/src/include/duckdb/function/function_list.hpp +1 -1
  789. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +25 -3
  790. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +18 -6
  791. package/src/duckdb/src/include/duckdb/function/pragma/pragma_functions.hpp +1 -1
  792. package/src/duckdb/src/include/duckdb/function/register_function_list_helper.hpp +34 -2
  793. package/src/duckdb/src/include/duckdb/function/scalar/compressed_materialization_functions.hpp +10 -0
  794. package/src/duckdb/src/include/duckdb/function/scalar/date_functions.hpp +6 -6
  795. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +5 -5
  796. package/src/duckdb/src/include/duckdb/function/scalar/list_functions.hpp +19 -19
  797. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +103 -103
  798. package/src/duckdb/src/include/duckdb/function/scalar/struct_functions.hpp +32 -0
  799. package/src/duckdb/src/include/duckdb/function/scalar/system_functions.hpp +1 -1
  800. package/src/duckdb/src/include/duckdb/function/scalar/variant_functions.hpp +38 -0
  801. package/src/duckdb/src/include/duckdb/function/scalar/variant_utils.hpp +85 -0
  802. package/src/duckdb/src/include/duckdb/function/table/arrow/arrow_duck_schema.hpp +8 -2
  803. package/src/duckdb/src/include/duckdb/function/table/arrow/arrow_type_info.hpp +2 -0
  804. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +26 -11
  805. package/src/duckdb/src/include/duckdb/function/table/direct_file_reader.hpp +39 -0
  806. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +2 -12
  807. package/src/duckdb/src/include/duckdb/function/table/read_file.hpp +83 -0
  808. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +9 -1
  809. package/src/duckdb/src/include/duckdb/function/table_function.hpp +8 -5
  810. package/src/duckdb/src/include/duckdb/function/window/window_aggregate_function.hpp +10 -10
  811. package/src/duckdb/src/include/duckdb/function/window/window_aggregator.hpp +25 -48
  812. package/src/duckdb/src/include/duckdb/function/window/window_collection.hpp +142 -0
  813. package/src/duckdb/src/include/duckdb/function/window/window_constant_aggregator.hpp +11 -12
  814. package/src/duckdb/src/include/duckdb/function/window/window_custom_aggregator.hpp +8 -8
  815. package/src/duckdb/src/include/duckdb/function/window/window_distinct_aggregator.hpp +10 -10
  816. package/src/duckdb/src/include/duckdb/function/window/window_executor.hpp +26 -40
  817. package/src/duckdb/src/include/duckdb/function/window/window_index_tree.hpp +2 -2
  818. package/src/duckdb/src/include/duckdb/function/window/window_merge_sort_tree.hpp +32 -30
  819. package/src/duckdb/src/include/duckdb/function/window/window_naive_aggregator.hpp +5 -3
  820. package/src/duckdb/src/include/duckdb/function/window/window_rank_function.hpp +17 -16
  821. package/src/duckdb/src/include/duckdb/function/window/window_rownumber_function.hpp +10 -9
  822. package/src/duckdb/src/include/duckdb/function/window/window_segment_tree.hpp +8 -8
  823. package/src/duckdb/src/include/duckdb/function/window/window_token_tree.hpp +6 -6
  824. package/src/duckdb/src/include/duckdb/function/window/window_value_function.hpp +44 -21
  825. package/src/duckdb/src/include/duckdb/logging/log_manager.hpp +12 -4
  826. package/src/duckdb/src/include/duckdb/logging/log_storage.hpp +271 -50
  827. package/src/duckdb/src/include/duckdb/main/appender.hpp +37 -16
  828. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +18 -4
  829. package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +23 -6
  830. package/src/duckdb/src/include/duckdb/main/capi/extension_api.hpp +92 -8
  831. package/src/duckdb/src/include/duckdb/main/client_config.hpp +11 -70
  832. package/src/duckdb/src/include/duckdb/main/client_context.hpp +28 -5
  833. package/src/duckdb/src/include/duckdb/main/client_data.hpp +21 -23
  834. package/src/duckdb/src/include/duckdb/main/client_properties.hpp +3 -19
  835. package/src/duckdb/src/include/duckdb/main/config.hpp +48 -111
  836. package/src/duckdb/src/include/duckdb/main/database.hpp +23 -27
  837. package/src/duckdb/src/include/duckdb/main/database_file_opener.hpp +1 -0
  838. package/src/duckdb/src/include/duckdb/main/database_file_path_manager.hpp +39 -0
  839. package/src/duckdb/src/include/duckdb/main/database_manager.hpp +19 -21
  840. package/src/duckdb/src/include/duckdb/main/database_path_and_type.hpp +3 -1
  841. package/src/duckdb/src/include/duckdb/main/db_instance_cache.hpp +8 -4
  842. package/src/duckdb/src/include/duckdb/main/error_manager.hpp +3 -1
  843. package/src/duckdb/src/include/duckdb/main/extension/extension_loader.hpp +120 -0
  844. package/src/duckdb/src/include/duckdb/main/extension.hpp +2 -2
  845. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +35 -0
  846. package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +2 -0
  847. package/src/duckdb/src/include/duckdb/main/extension_manager.hpp +59 -0
  848. package/src/duckdb/src/include/duckdb/main/extension_util.hpp +6 -77
  849. package/src/duckdb/src/include/duckdb/main/query_profiler.hpp +41 -23
  850. package/src/duckdb/src/include/duckdb/main/relation.hpp +1 -1
  851. package/src/duckdb/src/include/duckdb/main/secret/secret.hpp +1 -0
  852. package/src/duckdb/src/include/duckdb/main/secret/secret_manager.hpp +18 -18
  853. package/src/duckdb/src/include/duckdb/main/setting_info.hpp +109 -0
  854. package/src/duckdb/src/include/duckdb/main/settings.hpp +168 -184
  855. package/src/duckdb/src/include/duckdb/main/valid_checker.hpp +5 -2
  856. package/src/duckdb/src/include/duckdb/optimizer/build_probe_side_optimizer.hpp +1 -1
  857. package/src/duckdb/src/include/duckdb/optimizer/column_lifetime_analyzer.hpp +1 -1
  858. package/src/duckdb/src/include/duckdb/optimizer/compressed_materialization.hpp +4 -0
  859. package/src/duckdb/src/include/duckdb/optimizer/cte_inlining.hpp +50 -0
  860. package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +4 -1
  861. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_order_optimizer.hpp +3 -0
  862. package/src/duckdb/src/include/duckdb/optimizer/late_materialization.hpp +1 -1
  863. package/src/duckdb/src/include/duckdb/optimizer/rule/date_trunc_simplification.hpp +73 -0
  864. package/src/duckdb/src/include/duckdb/optimizer/rule/list.hpp +1 -0
  865. package/src/duckdb/src/include/duckdb/parallel/interrupt.hpp +9 -3
  866. package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +1 -0
  867. package/src/duckdb/src/include/duckdb/parser/common_table_expression_info.hpp +3 -1
  868. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +18 -8
  869. package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +3 -4
  870. package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_info.hpp +6 -4
  871. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +2 -0
  872. package/src/duckdb/src/include/duckdb/parser/parsed_expression_iterator.hpp +14 -0
  873. package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
  874. package/src/duckdb/src/include/duckdb/parser/qualified_name.hpp +2 -0
  875. package/src/duckdb/src/include/duckdb/parser/query_node/cte_node.hpp +2 -0
  876. package/src/duckdb/src/include/duckdb/parser/statement/list.hpp +1 -0
  877. package/src/duckdb/src/include/duckdb/parser/statement/merge_into_statement.hpp +72 -0
  878. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -4
  879. package/src/duckdb/src/include/duckdb/parser/statement/update_statement.hpp +1 -0
  880. package/src/duckdb/src/include/duckdb/parser/tableref/bound_ref_wrapper.hpp +38 -0
  881. package/src/duckdb/src/include/duckdb/parser/tableref/column_data_ref.hpp +4 -9
  882. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +2 -0
  883. package/src/duckdb/src/include/duckdb/parser/tableref/list.hpp +1 -0
  884. package/src/duckdb/src/include/duckdb/parser/tableref/showref.hpp +5 -1
  885. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +4 -0
  886. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +3 -0
  887. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +9 -2
  888. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +5 -0
  889. package/src/duckdb/src/include/duckdb/planner/binder.hpp +45 -8
  890. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -0
  891. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +1 -0
  892. package/src/duckdb/src/include/duckdb/planner/bound_tokens.hpp +3 -0
  893. package/src/duckdb/src/include/duckdb/planner/constraints/bound_check_constraint.hpp +8 -0
  894. package/src/duckdb/src/include/duckdb/planner/constraints/bound_foreign_key_constraint.hpp +4 -0
  895. package/src/duckdb/src/include/duckdb/planner/constraints/bound_not_null_constraint.hpp +4 -0
  896. package/src/duckdb/src/include/duckdb/planner/constraints/bound_unique_constraint.hpp +5 -0
  897. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +2 -2
  898. package/src/duckdb/src/include/duckdb/planner/expression_binder/projection_binder.hpp +37 -0
  899. package/src/duckdb/src/include/duckdb/planner/expression_binder/table_function_binder.hpp +3 -1
  900. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +3 -8
  901. package/src/duckdb/src/include/duckdb/planner/expression_iterator.hpp +18 -0
  902. package/src/duckdb/src/include/duckdb/planner/extension_callback.hpp +8 -0
  903. package/src/duckdb/src/include/duckdb/planner/logical_operator_deep_copy.hpp +67 -0
  904. package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +1 -0
  905. package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +1 -0
  906. package/src/duckdb/src/include/duckdb/planner/operator/logical_aggregate.hpp +3 -0
  907. package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +1 -1
  908. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +2 -0
  909. package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +28 -22
  910. package/src/duckdb/src/include/duckdb/planner/operator/logical_join.hpp +1 -1
  911. package/src/duckdb/src/include/duckdb/planner/operator/logical_materialized_cte.hpp +5 -2
  912. package/src/duckdb/src/include/duckdb/planner/operator/logical_merge_into.hpp +75 -0
  913. package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +2 -0
  914. package/src/duckdb/src/include/duckdb/planner/operator/logical_update.hpp +1 -1
  915. package/src/duckdb/src/include/duckdb/planner/query_node/bound_cte_node.hpp +2 -0
  916. package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +26 -0
  917. package/src/duckdb/src/include/duckdb/storage/block.hpp +1 -1
  918. package/src/duckdb/src/include/duckdb/storage/block_manager.hpp +24 -8
  919. package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +3 -1
  920. package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +55 -36
  921. package/src/duckdb/src/include/duckdb/storage/caching_file_system.hpp +10 -4
  922. package/src/duckdb/src/include/duckdb/storage/checkpoint/row_group_writer.hpp +19 -6
  923. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_reader.hpp +1 -1
  924. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +15 -8
  925. package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +6 -8
  926. package/src/duckdb/src/include/duckdb/storage/compression/alp/algorithm/alp.hpp +2 -1
  927. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_fetch.hpp +1 -1
  928. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_analyze.hpp +4 -2
  929. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_fetch.hpp +1 -1
  930. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_scan.hpp +1 -1
  931. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/packed_data.hpp +3 -1
  932. package/src/duckdb/src/include/duckdb/storage/compression/dict_fsst/compression.hpp +1 -1
  933. package/src/duckdb/src/include/duckdb/storage/compression/dict_fsst/decompression.hpp +1 -1
  934. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas.hpp +1 -1
  935. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_fetch.hpp +1 -1
  936. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_scan.hpp +7 -2
  937. package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +5 -0
  938. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +14 -9
  939. package/src/duckdb/src/include/duckdb/storage/external_file_cache.hpp +6 -5
  940. package/src/duckdb/src/include/duckdb/storage/in_memory_block_manager.hpp +7 -2
  941. package/src/duckdb/src/include/duckdb/storage/magic_bytes.hpp +2 -1
  942. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_manager.hpp +15 -0
  943. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_reader.hpp +7 -0
  944. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_writer.hpp +1 -0
  945. package/src/duckdb/src/include/duckdb/storage/optimistic_data_writer.hpp +10 -3
  946. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +14 -3
  947. package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +65 -20
  948. package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +6 -6
  949. package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +2 -2
  950. package/src/duckdb/src/include/duckdb/storage/storage_extension.hpp +4 -4
  951. package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +80 -20
  952. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +43 -17
  953. package/src/duckdb/src/include/duckdb/storage/storage_options.hpp +21 -0
  954. package/src/duckdb/src/include/duckdb/storage/table/array_column_data.hpp +1 -0
  955. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +2 -2
  956. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +7 -1
  957. package/src/duckdb/src/include/duckdb/storage/table/column_data_checkpointer.hpp +5 -2
  958. package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +10 -7
  959. package/src/duckdb/src/include/duckdb/storage/table/data_table_info.hpp +3 -3
  960. package/src/duckdb/src/include/duckdb/storage/table/in_memory_checkpoint.hpp +93 -0
  961. package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +1 -0
  962. package/src/duckdb/src/include/duckdb/storage/table/persistent_table_data.hpp +1 -0
  963. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +17 -2
  964. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +11 -1
  965. package/src/duckdb/src/include/duckdb/storage/table/row_group_segment_tree.hpp +5 -0
  966. package/src/duckdb/src/include/duckdb/storage/table/row_id_column_data.hpp +68 -0
  967. package/src/duckdb/src/include/duckdb/storage/table/segment_lock.hpp +4 -0
  968. package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +34 -14
  969. package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +1 -0
  970. package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +1 -0
  971. package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +55 -46
  972. package/src/duckdb/src/include/duckdb/storage/table/update_segment.hpp +3 -0
  973. package/src/duckdb/src/include/duckdb/storage/temporary_file_manager.hpp +17 -6
  974. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +2 -1
  975. package/src/duckdb/src/include/duckdb/transaction/duck_transaction.hpp +3 -0
  976. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +1 -0
  977. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +3 -1
  978. package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +22 -1
  979. package/src/duckdb/src/include/duckdb/transaction/undo_buffer_allocator.hpp +2 -0
  980. package/src/duckdb/src/include/duckdb/verification/explain_statement_verifier.hpp +23 -0
  981. package/src/duckdb/src/include/duckdb/verification/statement_verifier.hpp +14 -7
  982. package/src/duckdb/src/include/duckdb.h +537 -121
  983. package/src/duckdb/src/include/duckdb_extension.h +122 -14
  984. package/src/duckdb/src/logging/log_manager.cpp +59 -15
  985. package/src/duckdb/src/logging/log_storage.cpp +672 -128
  986. package/src/duckdb/src/main/appender.cpp +129 -88
  987. package/src/duckdb/src/main/attached_database.cpp +47 -52
  988. package/src/duckdb/src/main/capi/aggregate_function-c.cpp +18 -9
  989. package/src/duckdb/src/main/capi/appender-c.cpp +82 -28
  990. package/src/duckdb/src/main/capi/arrow-c.cpp +181 -17
  991. package/src/duckdb/src/main/capi/config-c.cpp +18 -3
  992. package/src/duckdb/src/main/capi/data_chunk-c.cpp +22 -10
  993. package/src/duckdb/src/main/capi/duckdb-c.cpp +64 -21
  994. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +13 -7
  995. package/src/duckdb/src/main/capi/error_data-c.cpp +46 -0
  996. package/src/duckdb/src/main/capi/expression-c.cpp +57 -0
  997. package/src/duckdb/src/main/capi/helper-c.cpp +227 -39
  998. package/src/duckdb/src/main/capi/logical_types-c.cpp +48 -28
  999. package/src/duckdb/src/main/capi/prepared-c.cpp +68 -10
  1000. package/src/duckdb/src/main/capi/profiling_info-c.cpp +6 -4
  1001. package/src/duckdb/src/main/capi/result-c.cpp +16 -95
  1002. package/src/duckdb/src/main/capi/scalar_function-c.cpp +43 -1
  1003. package/src/duckdb/src/main/capi/table_function-c.cpp +9 -0
  1004. package/src/duckdb/src/main/client_config.cpp +21 -0
  1005. package/src/duckdb/src/main/client_context.cpp +153 -77
  1006. package/src/duckdb/src/main/client_context_file_opener.cpp +1 -0
  1007. package/src/duckdb/src/main/client_data.cpp +139 -1
  1008. package/src/duckdb/src/main/client_verify.cpp +14 -6
  1009. package/src/duckdb/src/main/config.cpp +214 -121
  1010. package/src/duckdb/src/main/database.cpp +31 -58
  1011. package/src/duckdb/src/main/database_file_path_manager.cpp +42 -0
  1012. package/src/duckdb/src/main/database_manager.cpp +134 -108
  1013. package/src/duckdb/src/main/database_path_and_type.cpp +4 -3
  1014. package/src/duckdb/src/main/db_instance_cache.cpp +64 -35
  1015. package/src/duckdb/src/main/error_manager.cpp +2 -1
  1016. package/src/duckdb/src/main/extension/extension_helper.cpp +3 -22
  1017. package/src/duckdb/src/main/extension/extension_install.cpp +6 -6
  1018. package/src/duckdb/src/main/extension/extension_load.cpp +24 -9
  1019. package/src/duckdb/src/main/extension/extension_loader.cpp +234 -0
  1020. package/src/duckdb/src/main/extension_manager.cpp +115 -0
  1021. package/src/duckdb/src/main/http/http_util.cpp +18 -5
  1022. package/src/duckdb/src/main/profiling_info.cpp +8 -2
  1023. package/src/duckdb/src/main/query_profiler.cpp +65 -30
  1024. package/src/duckdb/src/main/query_result.cpp +1 -1
  1025. package/src/duckdb/src/main/relation/query_relation.cpp +23 -0
  1026. package/src/duckdb/src/main/secret/secret_manager.cpp +8 -7
  1027. package/src/duckdb/src/main/settings/autogenerated_settings.cpp +50 -645
  1028. package/src/duckdb/src/main/settings/custom_settings.cpp +111 -152
  1029. package/src/duckdb/src/main/valid_checker.cpp +10 -4
  1030. package/src/duckdb/src/optimizer/build_probe_side_optimizer.cpp +7 -5
  1031. package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +7 -7
  1032. package/src/duckdb/src/optimizer/compressed_materialization/compress_comparison_join.cpp +11 -7
  1033. package/src/duckdb/src/optimizer/compressed_materialization.cpp +56 -39
  1034. package/src/duckdb/src/optimizer/cte_inlining.cpp +225 -0
  1035. package/src/duckdb/src/optimizer/empty_result_pullup.cpp +8 -1
  1036. package/src/duckdb/src/optimizer/filter_combiner.cpp +5 -7
  1037. package/src/duckdb/src/optimizer/filter_pushdown.cpp +3 -0
  1038. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +18 -2
  1039. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +1 -0
  1040. package/src/duckdb/src/optimizer/join_order/plan_enumerator.cpp +4 -3
  1041. package/src/duckdb/src/optimizer/join_order/query_graph_manager.cpp +11 -15
  1042. package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +40 -23
  1043. package/src/duckdb/src/optimizer/late_materialization.cpp +16 -23
  1044. package/src/duckdb/src/optimizer/optimizer.cpp +15 -0
  1045. package/src/duckdb/src/optimizer/pushdown/pushdown_aggregate.cpp +15 -20
  1046. package/src/duckdb/src/optimizer/pushdown/pushdown_left_join.cpp +11 -13
  1047. package/src/duckdb/src/optimizer/pushdown/pushdown_outer_join.cpp +201 -0
  1048. package/src/duckdb/src/optimizer/pushdown/pushdown_projection.cpp +20 -26
  1049. package/src/duckdb/src/optimizer/pushdown/pushdown_set_operation.cpp +11 -14
  1050. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +2 -1
  1051. package/src/duckdb/src/optimizer/rule/date_trunc_simplification.cpp +446 -0
  1052. package/src/duckdb/src/optimizer/rule/join_dependent_filter.cpp +3 -9
  1053. package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +1 -6
  1054. package/src/duckdb/src/optimizer/rule/timestamp_comparison.cpp +3 -6
  1055. package/src/duckdb/src/optimizer/statistics/operator/propagate_aggregate.cpp +33 -1
  1056. package/src/duckdb/src/parallel/event.cpp +1 -3
  1057. package/src/duckdb/src/parallel/executor.cpp +0 -7
  1058. package/src/duckdb/src/parallel/pipeline.cpp +2 -2
  1059. package/src/duckdb/src/parallel/pipeline_executor.cpp +2 -2
  1060. package/src/duckdb/src/parallel/task_scheduler.cpp +146 -34
  1061. package/src/duckdb/src/parallel/thread_context.cpp +2 -9
  1062. package/src/duckdb/src/parser/column_definition.cpp +3 -6
  1063. package/src/duckdb/src/parser/expression/window_expression.cpp +3 -0
  1064. package/src/duckdb/src/parser/parsed_data/attach_info.cpp +8 -35
  1065. package/src/duckdb/src/parser/parsed_data/copy_info.cpp +27 -7
  1066. package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +8 -13
  1067. package/src/duckdb/src/parser/parsed_data/create_info.cpp +16 -0
  1068. package/src/duckdb/src/parser/parsed_data/create_macro_info.cpp +7 -17
  1069. package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +1 -14
  1070. package/src/duckdb/src/parser/parsed_data/create_type_info.cpp +1 -12
  1071. package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +1 -13
  1072. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +22 -0
  1073. package/src/duckdb/src/parser/parser.cpp +5 -0
  1074. package/src/duckdb/src/parser/qualified_name.cpp +26 -0
  1075. package/src/duckdb/src/parser/query_node/cte_node.cpp +1 -0
  1076. package/src/duckdb/src/parser/query_node/select_node.cpp +1 -0
  1077. package/src/duckdb/src/parser/query_node.cpp +1 -0
  1078. package/src/duckdb/src/parser/statement/export_statement.cpp +1 -3
  1079. package/src/duckdb/src/parser/statement/merge_into_statement.cpp +167 -0
  1080. package/src/duckdb/src/parser/statement/update_statement.cpp +19 -16
  1081. package/src/duckdb/src/parser/tableref/bound_ref_wrapper.cpp +29 -0
  1082. package/src/duckdb/src/parser/tableref/column_data_ref.cpp +26 -1
  1083. package/src/duckdb/src/parser/tableref/joinref.cpp +3 -2
  1084. package/src/duckdb/src/parser/tableref/showref.cpp +14 -0
  1085. package/src/duckdb/src/parser/tableref/table_function.cpp +6 -1
  1086. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +0 -1
  1087. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +6 -1
  1088. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +8 -11
  1089. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +3 -0
  1090. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +7 -5
  1091. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +4 -4
  1092. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +16 -80
  1093. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +27 -22
  1094. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +0 -1
  1095. package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +1 -2
  1096. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +22 -14
  1097. package/src/duckdb/src/parser/transform/statement/transform_merge_into.cpp +111 -0
  1098. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +2 -0
  1099. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +1 -1
  1100. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +22 -4
  1101. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +3 -1
  1102. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +12 -6
  1103. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +3 -3
  1104. package/src/duckdb/src/parser/transformer.cpp +8 -7
  1105. package/src/duckdb/src/planner/bind_context.cpp +19 -2
  1106. package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +13 -6
  1107. package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +3 -0
  1108. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +18 -4
  1109. package/src/duckdb/src/planner/binder/expression/bind_macro_expression.cpp +8 -25
  1110. package/src/duckdb/src/planner/binder/expression/bind_operator_expression.cpp +31 -4
  1111. package/src/duckdb/src/planner/binder/expression/bind_unnest_expression.cpp +2 -0
  1112. package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +48 -11
  1113. package/src/duckdb/src/planner/binder/query_node/bind_cte_node.cpp +9 -1
  1114. package/src/duckdb/src/planner/binder/query_node/bind_recursive_cte_node.cpp +4 -0
  1115. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +6 -6
  1116. package/src/duckdb/src/planner/binder/query_node/bind_table_macro_node.cpp +11 -26
  1117. package/src/duckdb/src/planner/binder/query_node/plan_cte_node.cpp +4 -3
  1118. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +10 -4
  1119. package/src/duckdb/src/planner/binder/statement/bind_attach.cpp +15 -0
  1120. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +239 -58
  1121. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +157 -55
  1122. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +30 -25
  1123. package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +2 -3
  1124. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +28 -3
  1125. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +36 -0
  1126. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +282 -322
  1127. package/src/duckdb/src/planner/binder/statement/bind_merge_into.cpp +335 -0
  1128. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +23 -14
  1129. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +37 -27
  1130. package/src/duckdb/src/planner/binder/tableref/bind_bound_table_ref.cpp +13 -0
  1131. package/src/duckdb/src/planner/binder/tableref/bind_column_data_ref.cpp +4 -1
  1132. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +120 -36
  1133. package/src/duckdb/src/planner/binder/tableref/bind_showref.cpp +30 -0
  1134. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +72 -1
  1135. package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +7 -12
  1136. package/src/duckdb/src/planner/binder/tableref/plan_table_function.cpp +15 -1
  1137. package/src/duckdb/src/planner/binder.cpp +42 -175
  1138. package/src/duckdb/src/planner/bound_result_modifier.cpp +8 -0
  1139. package/src/duckdb/src/planner/collation_binding.cpp +2 -1
  1140. package/src/duckdb/src/planner/expression.cpp +1 -1
  1141. package/src/duckdb/src/planner/expression_binder/order_binder.cpp +4 -2
  1142. package/src/duckdb/src/planner/expression_binder/projection_binder.cpp +46 -0
  1143. package/src/duckdb/src/planner/expression_binder/table_function_binder.cpp +8 -6
  1144. package/src/duckdb/src/planner/expression_iterator.cpp +31 -0
  1145. package/src/duckdb/src/planner/logical_operator_deep_copy.cpp +264 -0
  1146. package/src/duckdb/src/planner/logical_operator_visitor.cpp +18 -4
  1147. package/src/duckdb/src/planner/operator/logical_aggregate.cpp +2 -1
  1148. package/src/duckdb/src/planner/operator/logical_comparison_join.cpp +4 -2
  1149. package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +3 -0
  1150. package/src/duckdb/src/planner/operator/logical_get.cpp +7 -2
  1151. package/src/duckdb/src/planner/operator/logical_insert.cpp +5 -2
  1152. package/src/duckdb/src/planner/operator/logical_join.cpp +6 -7
  1153. package/src/duckdb/src/planner/operator/logical_materialized_cte.cpp +1 -0
  1154. package/src/duckdb/src/planner/operator/logical_merge_into.cpp +43 -0
  1155. package/src/duckdb/src/planner/operator/logical_recursive_cte.cpp +8 -0
  1156. package/src/duckdb/src/planner/planner.cpp +4 -2
  1157. package/src/duckdb/src/planner/pragma_handler.cpp +1 -1
  1158. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +76 -7
  1159. package/src/duckdb/src/planner/table_binding.cpp +6 -12
  1160. package/src/duckdb/src/storage/block.cpp +2 -1
  1161. package/src/duckdb/src/storage/buffer/block_handle.cpp +7 -4
  1162. package/src/duckdb/src/storage/buffer/block_manager.cpp +14 -6
  1163. package/src/duckdb/src/storage/buffer/buffer_pool.cpp +2 -2
  1164. package/src/duckdb/src/storage/buffer_manager.cpp +45 -13
  1165. package/src/duckdb/src/storage/caching_file_system.cpp +20 -12
  1166. package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +26 -3
  1167. package/src/duckdb/src/storage/checkpoint/table_data_reader.cpp +3 -1
  1168. package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +56 -35
  1169. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +1 -1
  1170. package/src/duckdb/src/storage/checkpoint_manager.cpp +12 -11
  1171. package/src/duckdb/src/storage/compression/bitpacking.cpp +4 -1
  1172. package/src/duckdb/src/storage/compression/dict_fsst/compression.cpp +48 -25
  1173. package/src/duckdb/src/storage/compression/dict_fsst/decompression.cpp +10 -13
  1174. package/src/duckdb/src/storage/compression/dict_fsst.cpp +2 -2
  1175. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +10 -5
  1176. package/src/duckdb/src/storage/compression/fsst.cpp +3 -2
  1177. package/src/duckdb/src/storage/compression/rle.cpp +1 -1
  1178. package/src/duckdb/src/storage/compression/zstd.cpp +5 -6
  1179. package/src/duckdb/src/storage/data_table.cpp +167 -144
  1180. package/src/duckdb/src/storage/external_file_cache.cpp +6 -6
  1181. package/src/duckdb/src/storage/local_storage.cpp +132 -68
  1182. package/src/duckdb/src/storage/magic_bytes.cpp +3 -2
  1183. package/src/duckdb/src/storage/metadata/metadata_manager.cpp +88 -17
  1184. package/src/duckdb/src/storage/metadata/metadata_reader.cpp +26 -3
  1185. package/src/duckdb/src/storage/metadata/metadata_writer.cpp +7 -0
  1186. package/src/duckdb/src/storage/open_file_storage_extension.cpp +3 -3
  1187. package/src/duckdb/src/storage/optimistic_data_writer.cpp +5 -3
  1188. package/src/duckdb/src/storage/partial_block_manager.cpp +26 -5
  1189. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +72 -22
  1190. package/src/duckdb/src/storage/serialization/serialize_macro_function.cpp +9 -3
  1191. package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +2 -0
  1192. package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +12 -2
  1193. package/src/duckdb/src/storage/serialization/serialize_types.cpp +14 -0
  1194. package/src/duckdb/src/storage/single_file_block_manager.cpp +381 -86
  1195. package/src/duckdb/src/storage/standard_buffer_manager.cpp +86 -30
  1196. package/src/duckdb/src/storage/statistics/base_statistics.cpp +3 -3
  1197. package/src/duckdb/src/storage/statistics/string_stats.cpp +2 -2
  1198. package/src/duckdb/src/storage/statistics/struct_stats.cpp +1 -1
  1199. package/src/duckdb/src/storage/storage_info.cpp +13 -7
  1200. package/src/duckdb/src/storage/storage_manager.cpp +110 -35
  1201. package/src/duckdb/src/storage/table/array_column_data.cpp +4 -0
  1202. package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +22 -15
  1203. package/src/duckdb/src/storage/table/column_data.cpp +53 -14
  1204. package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +17 -17
  1205. package/src/duckdb/src/storage/table/column_segment.cpp +23 -21
  1206. package/src/duckdb/src/storage/table/in_memory_checkpoint.cpp +136 -0
  1207. package/src/duckdb/src/storage/table/list_column_data.cpp +6 -1
  1208. package/src/duckdb/src/storage/table/row_group.cpp +226 -154
  1209. package/src/duckdb/src/storage/table/row_group_collection.cpp +146 -47
  1210. package/src/duckdb/src/storage/table/row_id_column_data.cpp +173 -0
  1211. package/src/duckdb/src/storage/table/row_version_manager.cpp +1 -1
  1212. package/src/duckdb/src/storage/table/standard_column_data.cpp +14 -2
  1213. package/src/duckdb/src/storage/table/struct_column_data.cpp +15 -0
  1214. package/src/duckdb/src/storage/table/update_segment.cpp +111 -5
  1215. package/src/duckdb/src/storage/table_index_list.cpp +137 -73
  1216. package/src/duckdb/src/storage/temporary_file_manager.cpp +103 -28
  1217. package/src/duckdb/src/storage/wal_replay.cpp +158 -36
  1218. package/src/duckdb/src/storage/write_ahead_log.cpp +102 -17
  1219. package/src/duckdb/src/transaction/commit_state.cpp +2 -0
  1220. package/src/duckdb/src/transaction/duck_transaction.cpp +12 -2
  1221. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +66 -35
  1222. package/src/duckdb/src/transaction/meta_transaction.cpp +85 -23
  1223. package/src/duckdb/src/transaction/rollback_state.cpp +7 -0
  1224. package/src/duckdb/src/transaction/transaction_context.cpp +3 -4
  1225. package/src/duckdb/src/transaction/undo_buffer.cpp +5 -4
  1226. package/src/duckdb/src/transaction/undo_buffer_allocator.cpp +1 -0
  1227. package/src/duckdb/src/transaction/wal_write_state.cpp +2 -0
  1228. package/src/duckdb/src/verification/explain_statement_verifier.cpp +16 -0
  1229. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
  1230. package/src/duckdb/src/verification/statement_verifier.cpp +10 -5
  1231. package/src/duckdb/third_party/brotli/common/shared_dictionary.cpp +4 -4
  1232. package/src/duckdb/third_party/fmt/include/fmt/core.h +6 -12
  1233. package/src/duckdb/third_party/fmt/include/fmt/format-inl.h +5 -1
  1234. package/src/duckdb/third_party/fmt/include/fmt/format.h +34 -24
  1235. package/src/duckdb/third_party/fmt/include/fmt/printf.h +49 -21
  1236. package/src/duckdb/third_party/httplib/httplib.hpp +13 -5
  1237. package/src/duckdb/third_party/jaro_winkler/details/jaro_impl.hpp +4 -4
  1238. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +3 -0
  1239. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +56 -1
  1240. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +744 -733
  1241. package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +6 -1
  1242. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +19098 -18654
  1243. package/src/duckdb/third_party/mbedtls/include/des_alt.h +1 -1
  1244. package/src/duckdb/third_party/mbedtls/include/mbedtls/aes_alt.h +1 -1
  1245. package/src/duckdb/third_party/mbedtls/include/mbedtls/aria_alt.h +1 -1
  1246. package/src/duckdb/third_party/mbedtls/include/mbedtls/block_cipher.h +1 -1
  1247. package/src/duckdb/third_party/mbedtls/include/mbedtls/build_info.h +4 -4
  1248. package/src/duckdb/third_party/mbedtls/include/mbedtls/camellia_alt.h +1 -1
  1249. package/src/duckdb/third_party/mbedtls/include/mbedtls/ccm_alt.h +1 -1
  1250. package/src/duckdb/third_party/mbedtls/include/mbedtls/chacha20.h +1 -1
  1251. package/src/duckdb/third_party/mbedtls/include/mbedtls/chachapoly.h +1 -1
  1252. package/src/duckdb/third_party/mbedtls/include/mbedtls/cmac.h +1 -1
  1253. package/src/duckdb/third_party/mbedtls/include/mbedtls/config_psa.h +1 -1
  1254. package/src/duckdb/third_party/mbedtls/include/mbedtls/ecdsa.h +1 -1
  1255. package/src/duckdb/third_party/mbedtls/include/mbedtls/gcm_alt.h +1 -1
  1256. package/src/duckdb/third_party/mbedtls/include/mbedtls/mbedtls_config.h +5 -1
  1257. package/src/duckdb/third_party/mbedtls/include/mbedtls/md5.h +1 -1
  1258. package/src/duckdb/third_party/mbedtls/include/mbedtls/nist_kw.h +1 -1
  1259. package/src/duckdb/third_party/mbedtls/include/mbedtls/pkcs12.h +1 -1
  1260. package/src/duckdb/third_party/mbedtls/include/mbedtls/pkcs5.h +1 -1
  1261. package/src/duckdb/third_party/mbedtls/include/mbedtls/psa_util.h +1 -1
  1262. package/src/duckdb/third_party/mbedtls/include/mbedtls/ripemd160.h +1 -1
  1263. package/src/duckdb/third_party/mbedtls/include/mbedtls/sha3.h +1 -1
  1264. package/src/duckdb/third_party/mbedtls/include/mbedtls/threading.h +1 -1
  1265. package/src/duckdb/third_party/mbedtls/include/mbedtls/timing.h +1 -1
  1266. package/src/duckdb/third_party/mbedtls/include/mbedtls_wrapper.hpp +16 -7
  1267. package/src/duckdb/third_party/mbedtls/include/platform_alt.h +1 -1
  1268. package/src/duckdb/third_party/mbedtls/include/psa/build_info.h +20 -0
  1269. package/src/duckdb/third_party/mbedtls/include/psa/crypto.h +1 -1
  1270. package/src/duckdb/third_party/mbedtls/include/psa/crypto_config.h +1 -1
  1271. package/src/duckdb/third_party/mbedtls/include/psa/crypto_se_driver.h +1 -0
  1272. package/src/duckdb/third_party/mbedtls/include/rsa_alt.h +1 -1
  1273. package/src/duckdb/third_party/mbedtls/include/sha1_alt.h +1 -1
  1274. package/src/duckdb/third_party/mbedtls/include/sha256_alt.h +1 -1
  1275. package/src/duckdb/third_party/mbedtls/include/sha512_alt.h +1 -1
  1276. package/src/duckdb/third_party/mbedtls/include/ssl_misc.h +1 -1
  1277. package/src/duckdb/third_party/mbedtls/library/aes.cpp +1 -1
  1278. package/src/duckdb/third_party/mbedtls/library/aesce.h +136 -1
  1279. package/src/duckdb/third_party/mbedtls/library/alignment.h +9 -9
  1280. package/src/duckdb/third_party/mbedtls/library/asn1parse.cpp +1 -1
  1281. package/src/duckdb/third_party/mbedtls/library/asn1write.cpp +6 -3
  1282. package/src/duckdb/third_party/mbedtls/library/base64.cpp +48 -24
  1283. package/src/duckdb/third_party/mbedtls/library/base64_internal.h +45 -1
  1284. package/src/duckdb/third_party/mbedtls/library/bignum.cpp +3 -3
  1285. package/src/duckdb/third_party/mbedtls/library/bignum_core.cpp +16 -14
  1286. package/src/duckdb/third_party/mbedtls/library/bignum_core.h +10 -18
  1287. package/src/duckdb/third_party/mbedtls/library/block_cipher_internal.h +99 -1
  1288. package/src/duckdb/third_party/mbedtls/library/check_crypto_config.h +141 -1
  1289. package/src/duckdb/third_party/mbedtls/library/cipher.cpp +18 -12
  1290. package/src/duckdb/third_party/mbedtls/library/cipher_invasive.h +1 -0
  1291. package/src/duckdb/third_party/mbedtls/library/cipher_wrap.cpp +110 -10
  1292. package/src/duckdb/third_party/mbedtls/library/cipher_wrap.h +1 -1
  1293. package/src/duckdb/third_party/mbedtls/library/common.h +20 -4
  1294. package/src/duckdb/third_party/mbedtls/library/constant_time.cpp +1 -1
  1295. package/src/duckdb/third_party/mbedtls/library/constant_time_impl.h +28 -43
  1296. package/src/duckdb/third_party/mbedtls/library/constant_time_internal.h +24 -24
  1297. package/src/duckdb/third_party/mbedtls/library/ctr.h +35 -1
  1298. package/src/duckdb/third_party/mbedtls/library/gcm.cpp +2 -2
  1299. package/src/duckdb/third_party/mbedtls/library/md.cpp +11 -11
  1300. package/src/duckdb/third_party/mbedtls/library/md_psa.h +1 -1
  1301. package/src/duckdb/third_party/mbedtls/library/oid.cpp +2 -2
  1302. package/src/duckdb/third_party/mbedtls/library/pem.cpp +5 -2
  1303. package/src/duckdb/third_party/mbedtls/library/pk.cpp +1 -5
  1304. package/src/duckdb/third_party/mbedtls/library/pk_internal.h +4 -4
  1305. package/src/duckdb/third_party/mbedtls/library/pk_wrap.cpp +16 -18
  1306. package/src/duckdb/third_party/mbedtls/library/pkwrite.h +121 -1
  1307. package/src/duckdb/third_party/mbedtls/library/psa_crypto_core.h +995 -1
  1308. package/src/duckdb/third_party/mbedtls/library/psa_util_internal.h +100 -1
  1309. package/src/duckdb/third_party/mbedtls/library/rsa.cpp +4 -4
  1310. package/src/duckdb/third_party/mbedtls/mbedtls_wrapper.cpp +114 -42
  1311. package/src/duckdb/third_party/parquet/parquet_types.cpp +2340 -769
  1312. package/src/duckdb/third_party/parquet/parquet_types.h +400 -4
  1313. package/src/duckdb/third_party/pdqsort/pdqsort.h +550 -0
  1314. package/src/duckdb/third_party/ska_sort/ska_sort.hpp +1494 -0
  1315. package/src/duckdb/third_party/snappy/snappy-stubs-internal.h +18 -18
  1316. package/src/duckdb/third_party/snappy/snappy.cc +6 -6
  1317. package/src/duckdb/third_party/thrift/thrift/protocol/TCompactProtocol.h +4 -4
  1318. package/src/duckdb/third_party/thrift/thrift/protocol/TCompactProtocol.tcc +36 -36
  1319. package/src/duckdb/third_party/utf8proc/include/utf8proc_wrapper.hpp +1 -1
  1320. package/src/duckdb/third_party/utf8proc/utf8proc_wrapper.cpp +1 -1
  1321. package/src/duckdb/third_party/vergesort/detail/insertion_sort.h +56 -0
  1322. package/src/duckdb/third_party/vergesort/detail/is_sorted_until.h +51 -0
  1323. package/src/duckdb/third_party/vergesort/detail/iter_sort3.h +48 -0
  1324. package/src/duckdb/third_party/vergesort/detail/log2.h +41 -0
  1325. package/src/duckdb/third_party/vergesort/detail/prevnext.h +68 -0
  1326. package/src/duckdb/third_party/vergesort/detail/quicksort.h +138 -0
  1327. package/src/duckdb/third_party/vergesort/vergesort.h +352 -0
  1328. package/src/duckdb/ub_extension_core_functions_scalar_generic.cpp +2 -0
  1329. package/src/duckdb/ub_extension_core_functions_scalar_struct.cpp +2 -0
  1330. package/src/duckdb/ub_extension_parquet_reader.cpp +2 -0
  1331. package/src/duckdb/ub_extension_parquet_reader_variant.cpp +6 -0
  1332. package/src/duckdb/ub_src_common.cpp +8 -0
  1333. package/src/duckdb/ub_src_common_arrow_appender.cpp +2 -0
  1334. package/src/duckdb/ub_src_common_progress_bar.cpp +2 -0
  1335. package/src/duckdb/ub_src_common_sorting.cpp +8 -0
  1336. package/src/duckdb/ub_src_common_tree_renderer.cpp +2 -0
  1337. package/src/duckdb/ub_src_common_types.cpp +1 -1
  1338. package/src/duckdb/ub_src_common_types_row.cpp +2 -0
  1339. package/src/duckdb/ub_src_execution_index_art.cpp +11 -9
  1340. package/src/duckdb/ub_src_execution_operator_persistent.cpp +2 -0
  1341. package/src/duckdb/ub_src_execution_physical_plan.cpp +2 -0
  1342. package/src/duckdb/ub_src_function.cpp +2 -0
  1343. package/src/duckdb/ub_src_function_cast.cpp +1 -1
  1344. package/src/duckdb/ub_src_function_cast_variant.cpp +6 -0
  1345. package/src/duckdb/ub_src_function_scalar_struct.cpp +2 -0
  1346. package/src/duckdb/ub_src_function_scalar_variant.cpp +6 -0
  1347. package/src/duckdb/ub_src_function_table.cpp +2 -0
  1348. package/src/duckdb/ub_src_function_table_system.cpp +4 -0
  1349. package/src/duckdb/ub_src_main.cpp +4 -0
  1350. package/src/duckdb/ub_src_main_capi.cpp +4 -0
  1351. package/src/duckdb/ub_src_optimizer.cpp +2 -0
  1352. package/src/duckdb/ub_src_optimizer_pushdown.cpp +2 -0
  1353. package/src/duckdb/ub_src_optimizer_rule.cpp +2 -0
  1354. package/src/duckdb/ub_src_parser_statement.cpp +2 -0
  1355. package/src/duckdb/ub_src_parser_tableref.cpp +2 -0
  1356. package/src/duckdb/ub_src_parser_transform_statement.cpp +2 -0
  1357. package/src/duckdb/ub_src_planner.cpp +2 -0
  1358. package/src/duckdb/ub_src_planner_binder_statement.cpp +2 -0
  1359. package/src/duckdb/ub_src_planner_binder_tableref.cpp +2 -0
  1360. package/src/duckdb/ub_src_planner_expression_binder.cpp +2 -0
  1361. package/src/duckdb/ub_src_planner_operator.cpp +2 -0
  1362. package/src/duckdb/ub_src_storage_table.cpp +4 -0
  1363. package/test/columns.test.ts +1 -1
  1364. package/test/exec.test.ts +3 -3
  1365. package/test/jsdoc.test.ts +2 -1
  1366. package/test/syntax_error.test.ts +1 -1
  1367. package/test/test_all_types.test.ts +1 -1
@@ -1 +1,995 @@
1
- // dummy
1
+ /*
2
+ * PSA crypto core internal interfaces
3
+ */
4
+ /*
5
+ * Copyright The Mbed TLS Contributors
6
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
7
+ */
8
+
9
+ #ifndef PSA_CRYPTO_CORE_H
10
+ #define PSA_CRYPTO_CORE_H
11
+
12
+ /*
13
+ * Include the build-time configuration information header. Here, we do not
14
+ * include `"mbedtls/build_info.h"` directly but `"psa/build_info.h"`, which
15
+ * is basically just an alias to it. This is to ease the maintenance of the
16
+ * TF-PSA-Crypto repository which has a different build system and
17
+ * configuration.
18
+ */
19
+ #include "psa/build_info.h"
20
+
21
+ #include "psa/crypto.h"
22
+ #include "psa/crypto_se_driver.h"
23
+ #if defined(MBEDTLS_THREADING_C)
24
+ #include "mbedtls/threading.h"
25
+ #endif
26
+
27
+ /**
28
+ * Tell if PSA is ready for this cipher.
29
+ *
30
+ * \note For now, only checks the state of the driver subsystem,
31
+ * not the algorithm. Might do more in the future.
32
+ *
33
+ * \param cipher_alg The cipher algorithm (ignored for now).
34
+ *
35
+ * \return 1 if the driver subsytem is ready, 0 otherwise.
36
+ */
37
+ int psa_can_do_cipher(psa_key_type_t key_type, psa_algorithm_t cipher_alg);
38
+
39
+ typedef enum {
40
+ PSA_SLOT_EMPTY = 0,
41
+ PSA_SLOT_FILLING,
42
+ PSA_SLOT_FULL,
43
+ PSA_SLOT_PENDING_DELETION,
44
+ } psa_key_slot_state_t;
45
+
46
+ /** The data structure representing a key slot, containing key material
47
+ * and metadata for one key.
48
+ */
49
+ typedef struct {
50
+ /* This field is accessed in a lot of places. Putting it first
51
+ * reduces the code size. */
52
+ psa_key_attributes_t attr;
53
+
54
+ /*
55
+ * The current state of the key slot, as described in
56
+ * docs/architecture/psa-thread-safety/psa-thread-safety.md.
57
+ *
58
+ * Library functions can modify the state of a key slot by calling
59
+ * psa_key_slot_state_transition.
60
+ *
61
+ * The state variable is used to help determine whether library functions
62
+ * which operate on the slot succeed. For example, psa_finish_key_creation,
63
+ * which transfers the state of a slot from PSA_SLOT_FILLING to
64
+ * PSA_SLOT_FULL, must fail with error code PSA_ERROR_CORRUPTION_DETECTED
65
+ * if the state of the slot is not PSA_SLOT_FILLING.
66
+ *
67
+ * Library functions which traverse the array of key slots only consider
68
+ * slots that are in a suitable state for the function.
69
+ * For example, psa_get_and_lock_key_slot_in_memory, which finds a slot
70
+ * containing a given key ID, will only check slots whose state variable is
71
+ * PSA_SLOT_FULL.
72
+ */
73
+ psa_key_slot_state_t state;
74
+
75
+ #if defined(MBEDTLS_PSA_KEY_STORE_DYNAMIC)
76
+ /* The index of the slice containing this slot.
77
+ * This field must be filled if the slot contains a key
78
+ * (including keys being created or destroyed), and can be either
79
+ * filled or 0 when the slot is free.
80
+ *
81
+ * In most cases, the slice index can be deduced from the key identifer.
82
+ * We keep it in a separate field for robustness (it reduces the chance
83
+ * that a coding mistake in the key store will result in accessing the
84
+ * wrong slice), and also so that it's available even on code paths
85
+ * during creation or destruction where the key identifier might not be
86
+ * filled in.
87
+ * */
88
+ uint8_t slice_index;
89
+ #endif /* MBEDTLS_PSA_KEY_STORE_DYNAMIC */
90
+
91
+ union {
92
+ struct {
93
+ /* The index of the next slot in the free list for this
94
+ * slice, relative * to the next array element.
95
+ *
96
+ * That is, 0 means the next slot, 1 means the next slot
97
+ * but one, etc. -1 would mean the slot itself. -2 means
98
+ * the previous slot, etc.
99
+ *
100
+ * If this is beyond the array length, the free list ends with the
101
+ * current element.
102
+ *
103
+ * The reason for this strange encoding is that 0 means the next
104
+ * element. This way, when we allocate a slice and initialize it
105
+ * to all-zero, the slice is ready for use, with a free list that
106
+ * consists of all the slots in order.
107
+ */
108
+ int32_t next_free_relative_to_next;
109
+ } free;
110
+
111
+ struct {
112
+ /*
113
+ * Number of functions registered as reading the material in the key slot.
114
+ *
115
+ * Library functions must not write directly to registered_readers
116
+ *
117
+ * A function must call psa_register_read(slot) before reading
118
+ * the current contents of the slot for an operation.
119
+ * They then must call psa_unregister_read(slot) once they have
120
+ * finished reading the current contents of the slot. If the key
121
+ * slot mutex is not held (when mutexes are enabled), this call
122
+ * must be done via a call to
123
+ * psa_unregister_read_under_mutex(slot).
124
+ * A function must call psa_key_slot_has_readers(slot) to check if
125
+ * the slot is in use for reading.
126
+ *
127
+ * This counter is used to prevent resetting the key slot while
128
+ * the library may access it. For example, such control is needed
129
+ * in the following scenarios:
130
+ * . In case of key slot starvation, all key slots contain the
131
+ * description of a key, and the library asks for the
132
+ * description of a persistent key not present in the
133
+ * key slots, the key slots currently accessed by the
134
+ * library cannot be reclaimed to free a key slot to load
135
+ * the persistent key.
136
+ * . In case of a multi-threaded application where one thread
137
+ * asks to close or purge or destroy a key while it is in use
138
+ * by the library through another thread. */
139
+ size_t registered_readers;
140
+ } occupied;
141
+ } var;
142
+
143
+ /* Dynamically allocated key data buffer.
144
+ * Format as specified in psa_export_key(). */
145
+ struct key_data {
146
+ #if defined(MBEDTLS_PSA_STATIC_KEY_SLOTS)
147
+ uint8_t data[MBEDTLS_PSA_STATIC_KEY_SLOT_BUFFER_SIZE];
148
+ #else
149
+ uint8_t *data;
150
+ #endif
151
+ size_t bytes;
152
+ } key;
153
+ } psa_key_slot_t;
154
+
155
+ #if defined(MBEDTLS_THREADING_C)
156
+
157
+ /** Perform a mutex operation and return immediately upon failure.
158
+ *
159
+ * Returns PSA_ERROR_SERVICE_FAILURE if the operation fails
160
+ * and status was PSA_SUCCESS.
161
+ *
162
+ * Assumptions:
163
+ * psa_status_t status exists.
164
+ * f is a mutex operation which returns 0 upon success.
165
+ */
166
+ #define PSA_THREADING_CHK_RET(f) \
167
+ do \
168
+ { \
169
+ if ((f) != 0) { \
170
+ if (status == PSA_SUCCESS) { \
171
+ return PSA_ERROR_SERVICE_FAILURE; \
172
+ } \
173
+ return status; \
174
+ } \
175
+ } while (0);
176
+
177
+ /** Perform a mutex operation and goto exit on failure.
178
+ *
179
+ * Sets status to PSA_ERROR_SERVICE_FAILURE if status was PSA_SUCCESS.
180
+ *
181
+ * Assumptions:
182
+ * psa_status_t status exists.
183
+ * Label exit: exists.
184
+ * f is a mutex operation which returns 0 upon success.
185
+ */
186
+ #define PSA_THREADING_CHK_GOTO_EXIT(f) \
187
+ do \
188
+ { \
189
+ if ((f) != 0) { \
190
+ if (status == PSA_SUCCESS) { \
191
+ status = PSA_ERROR_SERVICE_FAILURE; \
192
+ } \
193
+ goto exit; \
194
+ } \
195
+ } while (0);
196
+ #endif
197
+
198
+ /** Test whether a key slot has any registered readers.
199
+ * If multi-threading is enabled, the caller must hold the
200
+ * global key slot mutex.
201
+ *
202
+ * \param[in] slot The key slot to test.
203
+ *
204
+ * \return 1 if the slot has any registered readers, 0 otherwise.
205
+ */
206
+ static inline int psa_key_slot_has_readers(const psa_key_slot_t *slot)
207
+ {
208
+ return slot->var.occupied.registered_readers > 0;
209
+ }
210
+
211
+ #if defined(MBEDTLS_PSA_CRYPTO_SE_C)
212
+ /** Get the SE slot number of a key from the key slot storing its description.
213
+ *
214
+ * \param[in] slot The key slot to query. This must be a key slot storing
215
+ * the description of a key of a dynamically registered
216
+ * secure element, otherwise the behaviour is undefined.
217
+ */
218
+ static inline psa_key_slot_number_t psa_key_slot_get_slot_number(
219
+ const psa_key_slot_t *slot)
220
+ {
221
+ return *((psa_key_slot_number_t *) (slot->key.data));
222
+ }
223
+ #endif
224
+
225
+ /** Completely wipe a slot in memory, including its policy.
226
+ *
227
+ * Persistent storage is not affected.
228
+ * Sets the slot's state to PSA_SLOT_EMPTY.
229
+ * If multi-threading is enabled, the caller must hold the
230
+ * global key slot mutex.
231
+ *
232
+ * \param[in,out] slot The key slot to wipe.
233
+ *
234
+ * \retval #PSA_SUCCESS
235
+ * The slot has been successfully wiped.
236
+ * \retval #PSA_ERROR_CORRUPTION_DETECTED
237
+ * The slot's state was PSA_SLOT_FULL or PSA_SLOT_PENDING_DELETION, and
238
+ * the amount of registered readers was not equal to 1. Or,
239
+ * the slot's state was PSA_SLOT_EMPTY. Or,
240
+ * the slot's state was PSA_SLOT_FILLING, and the amount
241
+ * of registered readers was not equal to 0.
242
+ */
243
+ psa_status_t psa_wipe_key_slot(psa_key_slot_t *slot);
244
+
245
+ /** Try to allocate a buffer to an empty key slot.
246
+ *
247
+ * \param[in,out] slot Key slot to attach buffer to.
248
+ * \param[in] buffer_length Requested size of the buffer.
249
+ *
250
+ * \retval #PSA_SUCCESS
251
+ * The buffer has been successfully allocated.
252
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY
253
+ * Not enough memory was available for allocation.
254
+ * \retval #PSA_ERROR_ALREADY_EXISTS
255
+ * Trying to allocate a buffer to a non-empty key slot.
256
+ */
257
+ psa_status_t psa_allocate_buffer_to_slot(psa_key_slot_t *slot,
258
+ size_t buffer_length);
259
+
260
+ /** Wipe key data from a slot. Preserves metadata such as the policy. */
261
+ psa_status_t psa_remove_key_data_from_memory(psa_key_slot_t *slot);
262
+
263
+ /** Copy key data (in export format) into an empty key slot.
264
+ *
265
+ * This function assumes that the slot does not contain
266
+ * any key material yet. On failure, the slot content is unchanged.
267
+ *
268
+ * \param[in,out] slot Key slot to copy the key into.
269
+ * \param[in] data Buffer containing the key material.
270
+ * \param data_length Size of the key buffer.
271
+ *
272
+ * \retval #PSA_SUCCESS
273
+ * The key has been copied successfully.
274
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY
275
+ * Not enough memory was available for allocation of the
276
+ * copy buffer.
277
+ * \retval #PSA_ERROR_ALREADY_EXISTS
278
+ * There was other key material already present in the slot.
279
+ */
280
+ psa_status_t psa_copy_key_material_into_slot(psa_key_slot_t *slot,
281
+ const uint8_t *data,
282
+ size_t data_length);
283
+
284
+ /** Convert an Mbed TLS error code to a PSA error code
285
+ *
286
+ * \note This function is provided solely for the convenience of
287
+ * Mbed TLS and may be removed at any time without notice.
288
+ *
289
+ * \param ret An Mbed TLS-thrown error code
290
+ *
291
+ * \return The corresponding PSA error code
292
+ */
293
+ psa_status_t mbedtls_to_psa_error(int ret);
294
+
295
+ /** Import a key in binary format.
296
+ *
297
+ * \note The signature of this function is that of a PSA driver
298
+ * import_key entry point. This function behaves as an import_key
299
+ * entry point as defined in the PSA driver interface specification for
300
+ * transparent drivers.
301
+ *
302
+ * \param[in] attributes The attributes for the key to import.
303
+ * \param[in] data The buffer containing the key data in import
304
+ * format.
305
+ * \param[in] data_length Size of the \p data buffer in bytes.
306
+ * \param[out] key_buffer The buffer to contain the key data in output
307
+ * format upon successful return.
308
+ * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes. This
309
+ * size is greater or equal to \p data_length.
310
+ * \param[out] key_buffer_length The length of the data written in \p
311
+ * key_buffer in bytes.
312
+ * \param[out] bits The key size in number of bits.
313
+ *
314
+ * \retval #PSA_SUCCESS The key was imported successfully.
315
+ * \retval #PSA_ERROR_INVALID_ARGUMENT
316
+ * The key data is not correctly formatted.
317
+ * \retval #PSA_ERROR_NOT_SUPPORTED \emptydescription
318
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription
319
+ * \retval #PSA_ERROR_CORRUPTION_DETECTED \emptydescription
320
+ */
321
+ psa_status_t psa_import_key_into_slot(
322
+ const psa_key_attributes_t *attributes,
323
+ const uint8_t *data, size_t data_length,
324
+ uint8_t *key_buffer, size_t key_buffer_size,
325
+ size_t *key_buffer_length, size_t *bits);
326
+
327
+ /** Export a key in binary format
328
+ *
329
+ * \note The signature of this function is that of a PSA driver export_key
330
+ * entry point. This function behaves as an export_key entry point as
331
+ * defined in the PSA driver interface specification.
332
+ *
333
+ * \param[in] attributes The attributes for the key to export.
334
+ * \param[in] key_buffer Material or context of the key to export.
335
+ * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes.
336
+ * \param[out] data Buffer where the key data is to be written.
337
+ * \param[in] data_size Size of the \p data buffer in bytes.
338
+ * \param[out] data_length On success, the number of bytes written in
339
+ * \p data
340
+ *
341
+ * \retval #PSA_SUCCESS The key was exported successfully.
342
+ * \retval #PSA_ERROR_NOT_SUPPORTED \emptydescription
343
+ * \retval #PSA_ERROR_COMMUNICATION_FAILURE \emptydescription
344
+ * \retval #PSA_ERROR_HARDWARE_FAILURE \emptydescription
345
+ * \retval #PSA_ERROR_CORRUPTION_DETECTED \emptydescription
346
+ * \retval #PSA_ERROR_STORAGE_FAILURE \emptydescription
347
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription
348
+ */
349
+ psa_status_t psa_export_key_internal(
350
+ const psa_key_attributes_t *attributes,
351
+ const uint8_t *key_buffer, size_t key_buffer_size,
352
+ uint8_t *data, size_t data_size, size_t *data_length);
353
+
354
+ /** Export a public key or the public part of a key pair in binary format.
355
+ *
356
+ * \note The signature of this function is that of a PSA driver
357
+ * export_public_key entry point. This function behaves as an
358
+ * export_public_key entry point as defined in the PSA driver interface
359
+ * specification.
360
+ *
361
+ * \param[in] attributes The attributes for the key to export.
362
+ * \param[in] key_buffer Material or context of the key to export.
363
+ * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes.
364
+ * \param[out] data Buffer where the key data is to be written.
365
+ * \param[in] data_size Size of the \p data buffer in bytes.
366
+ * \param[out] data_length On success, the number of bytes written in
367
+ * \p data
368
+ *
369
+ * \retval #PSA_SUCCESS The public key was exported successfully.
370
+ * \retval #PSA_ERROR_NOT_SUPPORTED \emptydescription
371
+ * \retval #PSA_ERROR_COMMUNICATION_FAILURE \emptydescription
372
+ * \retval #PSA_ERROR_HARDWARE_FAILURE \emptydescription
373
+ * \retval #PSA_ERROR_CORRUPTION_DETECTED \emptydescription
374
+ * \retval #PSA_ERROR_STORAGE_FAILURE \emptydescription
375
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription
376
+ */
377
+ psa_status_t psa_export_public_key_internal(
378
+ const psa_key_attributes_t *attributes,
379
+ const uint8_t *key_buffer, size_t key_buffer_size,
380
+ uint8_t *data, size_t data_size, size_t *data_length);
381
+
382
+ /** Whether a key custom production parameters structure is the default.
383
+ *
384
+ * Calls to a key generation driver with non-default custom production parameters
385
+ * require a driver supporting custom production parameters.
386
+ *
387
+ * \param[in] custom The key custom production parameters to check.
388
+ * \param custom_data_length Size of the associated variable-length data
389
+ * in bytes.
390
+ */
391
+ int psa_custom_key_parameters_are_default(
392
+ const psa_custom_key_parameters_t *custom,
393
+ size_t custom_data_length);
394
+
395
+ /**
396
+ * \brief Generate a key.
397
+ *
398
+ * \note The signature of the function is that of a PSA driver generate_key
399
+ * entry point.
400
+ *
401
+ * \param[in] attributes The attributes for the key to generate.
402
+ * \param[in] custom Custom parameters for the key generation.
403
+ * \param[in] custom_data Variable-length data associated with \c custom.
404
+ * \param custom_data_length Length of `custom_data` in bytes.
405
+ * \param[out] key_buffer Buffer where the key data is to be written.
406
+ * \param[in] key_buffer_size Size of \p key_buffer in bytes.
407
+ * \param[out] key_buffer_length On success, the number of bytes written in
408
+ * \p key_buffer.
409
+ *
410
+ * \retval #PSA_SUCCESS
411
+ * The key was generated successfully.
412
+ * \retval #PSA_ERROR_INVALID_ARGUMENT \emptydescription
413
+ * \retval #PSA_ERROR_NOT_SUPPORTED
414
+ * Key size in bits or type not supported.
415
+ * \retval #PSA_ERROR_BUFFER_TOO_SMALL
416
+ * The size of \p key_buffer is too small.
417
+ */
418
+ psa_status_t psa_generate_key_internal(const psa_key_attributes_t *attributes,
419
+ const psa_custom_key_parameters_t *custom,
420
+ const uint8_t *custom_data,
421
+ size_t custom_data_length,
422
+ uint8_t *key_buffer,
423
+ size_t key_buffer_size,
424
+ size_t *key_buffer_length);
425
+
426
+ /** Sign a message with a private key. For hash-and-sign algorithms,
427
+ * this includes the hashing step.
428
+ *
429
+ * \note The signature of this function is that of a PSA driver
430
+ * sign_message entry point. This function behaves as a sign_message
431
+ * entry point as defined in the PSA driver interface specification for
432
+ * transparent drivers.
433
+ *
434
+ * \note This function will call the driver for psa_sign_hash
435
+ * and go through driver dispatch again.
436
+ *
437
+ * \param[in] attributes The attributes of the key to use for the
438
+ * operation.
439
+ * \param[in] key_buffer The buffer containing the key context.
440
+ * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes.
441
+ * \param[in] alg A signature algorithm that is compatible with
442
+ * the type of the key.
443
+ * \param[in] input The input message to sign.
444
+ * \param[in] input_length Size of the \p input buffer in bytes.
445
+ * \param[out] signature Buffer where the signature is to be written.
446
+ * \param[in] signature_size Size of the \p signature buffer in bytes.
447
+ * \param[out] signature_length On success, the number of bytes
448
+ * that make up the returned signature value.
449
+ *
450
+ * \retval #PSA_SUCCESS \emptydescription
451
+ * \retval #PSA_ERROR_BUFFER_TOO_SMALL
452
+ * The size of the \p signature buffer is too small. You can
453
+ * determine a sufficient buffer size by calling
454
+ * #PSA_SIGN_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg)
455
+ * where \c key_type and \c key_bits are the type and bit-size
456
+ * respectively of the key.
457
+ * \retval #PSA_ERROR_NOT_SUPPORTED \emptydescription
458
+ * \retval #PSA_ERROR_INVALID_ARGUMENT \emptydescription
459
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription
460
+ * \retval #PSA_ERROR_CORRUPTION_DETECTED \emptydescription
461
+ * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY \emptydescription
462
+ */
463
+ psa_status_t psa_sign_message_builtin(
464
+ const psa_key_attributes_t *attributes,
465
+ const uint8_t *key_buffer, size_t key_buffer_size,
466
+ psa_algorithm_t alg, const uint8_t *input, size_t input_length,
467
+ uint8_t *signature, size_t signature_size, size_t *signature_length);
468
+
469
+ /** Verify the signature of a message with a public key, using
470
+ * a hash-and-sign verification algorithm.
471
+ *
472
+ * \note The signature of this function is that of a PSA driver
473
+ * verify_message entry point. This function behaves as a verify_message
474
+ * entry point as defined in the PSA driver interface specification for
475
+ * transparent drivers.
476
+ *
477
+ * \note This function will call the driver for psa_verify_hash
478
+ * and go through driver dispatch again.
479
+ *
480
+ * \param[in] attributes The attributes of the key to use for the
481
+ * operation.
482
+ * \param[in] key_buffer The buffer containing the key context.
483
+ * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes.
484
+ * \param[in] alg A signature algorithm that is compatible with
485
+ * the type of the key.
486
+ * \param[in] input The message whose signature is to be verified.
487
+ * \param[in] input_length Size of the \p input buffer in bytes.
488
+ * \param[in] signature Buffer containing the signature to verify.
489
+ * \param[in] signature_length Size of the \p signature buffer in bytes.
490
+ *
491
+ * \retval #PSA_SUCCESS
492
+ * The signature is valid.
493
+ * \retval #PSA_ERROR_INVALID_SIGNATURE
494
+ * The calculation was performed successfully, but the passed
495
+ * signature is not a valid signature.
496
+ * \retval #PSA_ERROR_NOT_SUPPORTED \emptydescription
497
+ * \retval #PSA_ERROR_INVALID_ARGUMENT \emptydescription
498
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription
499
+ */
500
+ psa_status_t psa_verify_message_builtin(
501
+ const psa_key_attributes_t *attributes,
502
+ const uint8_t *key_buffer, size_t key_buffer_size,
503
+ psa_algorithm_t alg, const uint8_t *input, size_t input_length,
504
+ const uint8_t *signature, size_t signature_length);
505
+
506
+ /** Sign an already-calculated hash with a private key.
507
+ *
508
+ * \note The signature of this function is that of a PSA driver
509
+ * sign_hash entry point. This function behaves as a sign_hash
510
+ * entry point as defined in the PSA driver interface specification for
511
+ * transparent drivers.
512
+ *
513
+ * \param[in] attributes The attributes of the key to use for the
514
+ * operation.
515
+ * \param[in] key_buffer The buffer containing the key context.
516
+ * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes.
517
+ * \param[in] alg A signature algorithm that is compatible with
518
+ * the type of the key.
519
+ * \param[in] hash The hash or message to sign.
520
+ * \param[in] hash_length Size of the \p hash buffer in bytes.
521
+ * \param[out] signature Buffer where the signature is to be written.
522
+ * \param[in] signature_size Size of the \p signature buffer in bytes.
523
+ * \param[out] signature_length On success, the number of bytes
524
+ * that make up the returned signature value.
525
+ *
526
+ * \retval #PSA_SUCCESS \emptydescription
527
+ * \retval #PSA_ERROR_BUFFER_TOO_SMALL
528
+ * The size of the \p signature buffer is too small. You can
529
+ * determine a sufficient buffer size by calling
530
+ * #PSA_SIGN_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg)
531
+ * where \c key_type and \c key_bits are the type and bit-size
532
+ * respectively of the key.
533
+ * \retval #PSA_ERROR_NOT_SUPPORTED \emptydescription
534
+ * \retval #PSA_ERROR_INVALID_ARGUMENT \emptydescription
535
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription
536
+ * \retval #PSA_ERROR_CORRUPTION_DETECTED \emptydescription
537
+ * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY \emptydescription
538
+ */
539
+ psa_status_t psa_sign_hash_builtin(
540
+ const psa_key_attributes_t *attributes,
541
+ const uint8_t *key_buffer, size_t key_buffer_size,
542
+ psa_algorithm_t alg, const uint8_t *hash, size_t hash_length,
543
+ uint8_t *signature, size_t signature_size, size_t *signature_length);
544
+
545
+ /**
546
+ * \brief Verify the signature a hash or short message using a public key.
547
+ *
548
+ * \note The signature of this function is that of a PSA driver
549
+ * verify_hash entry point. This function behaves as a verify_hash
550
+ * entry point as defined in the PSA driver interface specification for
551
+ * transparent drivers.
552
+ *
553
+ * \param[in] attributes The attributes of the key to use for the
554
+ * operation.
555
+ * \param[in] key_buffer The buffer containing the key context.
556
+ * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes.
557
+ * \param[in] alg A signature algorithm that is compatible with
558
+ * the type of the key.
559
+ * \param[in] hash The hash or message whose signature is to be
560
+ * verified.
561
+ * \param[in] hash_length Size of the \p hash buffer in bytes.
562
+ * \param[in] signature Buffer containing the signature to verify.
563
+ * \param[in] signature_length Size of the \p signature buffer in bytes.
564
+ *
565
+ * \retval #PSA_SUCCESS
566
+ * The signature is valid.
567
+ * \retval #PSA_ERROR_INVALID_SIGNATURE
568
+ * The calculation was performed successfully, but the passed
569
+ * signature is not a valid signature.
570
+ * \retval #PSA_ERROR_NOT_SUPPORTED \emptydescription
571
+ * \retval #PSA_ERROR_INVALID_ARGUMENT \emptydescription
572
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription
573
+ */
574
+ psa_status_t psa_verify_hash_builtin(
575
+ const psa_key_attributes_t *attributes,
576
+ const uint8_t *key_buffer, size_t key_buffer_size,
577
+ psa_algorithm_t alg, const uint8_t *hash, size_t hash_length,
578
+ const uint8_t *signature, size_t signature_length);
579
+
580
+ /**
581
+ * \brief Validate the key bit size for unstructured keys.
582
+ *
583
+ * \note Check that the bit size is acceptable for a given key type for
584
+ * unstructured keys.
585
+ *
586
+ * \param[in] type The key type
587
+ * \param[in] bits The number of bits of the key
588
+ *
589
+ * \retval #PSA_SUCCESS
590
+ * The key type and size are valid.
591
+ * \retval #PSA_ERROR_INVALID_ARGUMENT
592
+ * The size in bits of the key is not valid.
593
+ * \retval #PSA_ERROR_NOT_SUPPORTED
594
+ * The type and/or the size in bits of the key or the combination of
595
+ * the two is not supported.
596
+ */
597
+ psa_status_t psa_validate_unstructured_key_bit_size(psa_key_type_t type,
598
+ size_t bits);
599
+
600
+ /** Perform a key agreement and return the raw shared secret, using
601
+ built-in raw key agreement functions.
602
+ *
603
+ * \note The signature of this function is that of a PSA driver
604
+ * key_agreement entry point. This function behaves as a key_agreement
605
+ * entry point as defined in the PSA driver interface specification for
606
+ * transparent drivers.
607
+ *
608
+ * \param[in] attributes The attributes of the key to use for the
609
+ * operation.
610
+ * \param[in] key_buffer The buffer containing the private key
611
+ * context.
612
+ * \param[in] key_buffer_size Size of the \p key_buffer buffer in
613
+ * bytes.
614
+ * \param[in] alg A key agreement algorithm that is
615
+ * compatible with the type of the key.
616
+ * \param[in] peer_key The buffer containing the key context
617
+ * of the peer's public key.
618
+ * \param[in] peer_key_length Size of the \p peer_key buffer in
619
+ * bytes.
620
+ * \param[out] shared_secret The buffer to which the shared secret
621
+ * is to be written.
622
+ * \param[in] shared_secret_size Size of the \p shared_secret buffer in
623
+ * bytes.
624
+ * \param[out] shared_secret_length On success, the number of bytes that make
625
+ * up the returned shared secret.
626
+ * \retval #PSA_SUCCESS
627
+ * Success. Shared secret successfully calculated.
628
+ * \retval #PSA_ERROR_INVALID_HANDLE \emptydescription
629
+ * \retval #PSA_ERROR_NOT_PERMITTED \emptydescription
630
+ * \retval #PSA_ERROR_INVALID_ARGUMENT
631
+ * \p alg is not a key agreement algorithm, or
632
+ * \p private_key is not compatible with \p alg,
633
+ * or \p peer_key is not valid for \p alg or not compatible with
634
+ * \p private_key.
635
+ * \retval #PSA_ERROR_BUFFER_TOO_SMALL
636
+ * \p shared_secret_size is too small
637
+ * \retval #PSA_ERROR_NOT_SUPPORTED
638
+ * \p alg is not a supported key agreement algorithm.
639
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription
640
+ * \retval #PSA_ERROR_COMMUNICATION_FAILURE \emptydescription
641
+ * \retval #PSA_ERROR_HARDWARE_FAILURE \emptydescription
642
+ * \retval #PSA_ERROR_CORRUPTION_DETECTED \emptydescription
643
+ * \retval #PSA_ERROR_STORAGE_FAILURE \emptydescription
644
+ * \retval #PSA_ERROR_BAD_STATE \emptydescription
645
+ */
646
+ psa_status_t psa_key_agreement_raw_builtin(
647
+ const psa_key_attributes_t *attributes,
648
+ const uint8_t *key_buffer,
649
+ size_t key_buffer_size,
650
+ psa_algorithm_t alg,
651
+ const uint8_t *peer_key,
652
+ size_t peer_key_length,
653
+ uint8_t *shared_secret,
654
+ size_t shared_secret_size,
655
+ size_t *shared_secret_length);
656
+
657
+ /**
658
+ * \brief Set the maximum number of ops allowed to be executed by an
659
+ * interruptible function in a single call.
660
+ *
661
+ * \note The signature of this function is that of a PSA driver
662
+ * interruptible_set_max_ops entry point. This function behaves as an
663
+ * interruptible_set_max_ops entry point as defined in the PSA driver
664
+ * interface specification for transparent drivers.
665
+ *
666
+ * \param[in] max_ops The maximum number of ops to be executed in a
667
+ * single call, this can be a number from 0 to
668
+ * #PSA_INTERRUPTIBLE_MAX_OPS_UNLIMITED, where 0
669
+ * is obviously the least amount of work done per
670
+ * call.
671
+ */
672
+ void mbedtls_psa_interruptible_set_max_ops(uint32_t max_ops);
673
+
674
+ /**
675
+ * \brief Get the maximum number of ops allowed to be executed by an
676
+ * interruptible function in a single call.
677
+ *
678
+ * \note The signature of this function is that of a PSA driver
679
+ * interruptible_get_max_ops entry point. This function behaves as an
680
+ * interruptible_get_max_ops entry point as defined in the PSA driver
681
+ * interface specification for transparent drivers.
682
+ *
683
+ * \return Maximum number of ops allowed to be executed
684
+ * by an interruptible function in a single call.
685
+ */
686
+ uint32_t mbedtls_psa_interruptible_get_max_ops(void);
687
+
688
+ /**
689
+ * \brief Get the number of ops that a hash signing operation has taken for the
690
+ * previous call. If no call or work has taken place, this will return
691
+ * zero.
692
+ *
693
+ * \note The signature of this function is that of a PSA driver
694
+ * sign_hash_get_num_ops entry point. This function behaves as an
695
+ * sign_hash_get_num_ops entry point as defined in the PSA driver
696
+ * interface specification for transparent drivers.
697
+ *
698
+ * \param operation The \c
699
+ * mbedtls_psa_sign_hash_interruptible_operation_t
700
+ * to use. This must be initialized first.
701
+ *
702
+ * \return Number of ops that were completed
703
+ * in the last call to \c
704
+ * mbedtls_psa_sign_hash_complete().
705
+ */
706
+ uint32_t mbedtls_psa_sign_hash_get_num_ops(
707
+ const mbedtls_psa_sign_hash_interruptible_operation_t *operation);
708
+
709
+ /**
710
+ * \brief Get the number of ops that a hash verification operation has taken for
711
+ * the previous call. If no call or work has taken place, this will
712
+ * return zero.
713
+ *
714
+ * \note The signature of this function is that of a PSA driver
715
+ * verify_hash_get_num_ops entry point. This function behaves as an
716
+ * verify_hash_get_num_ops entry point as defined in the PSA driver
717
+ * interface specification for transparent drivers.
718
+ *
719
+ * \param operation The \c
720
+ * mbedtls_psa_verify_hash_interruptible_operation_t
721
+ * to use. This must be initialized first.
722
+ *
723
+ * \return Number of ops that were completed
724
+ * in the last call to \c
725
+ * mbedtls_psa_verify_hash_complete().
726
+ */
727
+ uint32_t mbedtls_psa_verify_hash_get_num_ops(
728
+ const mbedtls_psa_verify_hash_interruptible_operation_t *operation);
729
+
730
+ /**
731
+ * \brief Start signing a hash or short message with a private key, in an
732
+ * interruptible manner.
733
+ *
734
+ * \note The signature of this function is that of a PSA driver
735
+ * sign_hash_start entry point. This function behaves as a
736
+ * sign_hash_start entry point as defined in the PSA driver interface
737
+ * specification for transparent drivers.
738
+ *
739
+ * \param[in] operation The \c
740
+ * mbedtls_psa_sign_hash_interruptible_operation_t
741
+ * to use. This must be initialized first.
742
+ * \param[in] attributes The attributes of the key to use for the
743
+ * operation.
744
+ * \param[in] key_buffer The buffer containing the key context.
745
+ * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes.
746
+ * \param[in] alg A signature algorithm that is compatible with
747
+ * the type of the key.
748
+ * \param[in] hash The hash or message to sign.
749
+ * \param hash_length Size of the \p hash buffer in bytes.
750
+ *
751
+ * \retval #PSA_SUCCESS
752
+ * The operation started successfully - call \c psa_sign_hash_complete()
753
+ * with the same context to complete the operation
754
+ * \retval #PSA_ERROR_INVALID_ARGUMENT
755
+ * An unsupported, incorrectly formatted or incorrect type of key was
756
+ * used.
757
+ * \retval #PSA_ERROR_NOT_SUPPORTED Either no internal interruptible operations
758
+ * are currently supported, or the key type is currently unsupported.
759
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY
760
+ * There was insufficient memory to load the key representation.
761
+ */
762
+ psa_status_t mbedtls_psa_sign_hash_start(
763
+ mbedtls_psa_sign_hash_interruptible_operation_t *operation,
764
+ const psa_key_attributes_t *attributes, const uint8_t *key_buffer,
765
+ size_t key_buffer_size, psa_algorithm_t alg,
766
+ const uint8_t *hash, size_t hash_length);
767
+
768
+ /**
769
+ * \brief Continue and eventually complete the action of signing a hash or
770
+ * short message with a private key, in an interruptible manner.
771
+ *
772
+ * \note The signature of this function is that of a PSA driver
773
+ * sign_hash_complete entry point. This function behaves as a
774
+ * sign_hash_complete entry point as defined in the PSA driver interface
775
+ * specification for transparent drivers.
776
+ *
777
+ * \param[in] operation The \c
778
+ * mbedtls_psa_sign_hash_interruptible_operation_t
779
+ * to use. This must be initialized first.
780
+ *
781
+ * \param[out] signature Buffer where the signature is to be written.
782
+ * \param signature_size Size of the \p signature buffer in bytes. This
783
+ * must be appropriate for the selected
784
+ * algorithm and key.
785
+ * \param[out] signature_length On success, the number of bytes that make up
786
+ * the returned signature value.
787
+ *
788
+ * \retval #PSA_SUCCESS
789
+ * Operation completed successfully
790
+ *
791
+ * \retval #PSA_OPERATION_INCOMPLETE
792
+ * Operation was interrupted due to the setting of \c
793
+ * psa_interruptible_set_max_ops(), there is still work to be done,
794
+ * please call this function again with the same operation object.
795
+ *
796
+ * \retval #PSA_ERROR_BUFFER_TOO_SMALL
797
+ * The size of the \p signature buffer is too small. You can
798
+ * determine a sufficient buffer size by calling
799
+ * #PSA_SIGN_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg)
800
+ * where \c key_type and \c key_bits are the type and bit-size
801
+ * respectively of \p key.
802
+ *
803
+ * \retval #PSA_ERROR_NOT_SUPPORTED \emptydescription
804
+ * \retval #PSA_ERROR_INVALID_ARGUMENT \emptydescription
805
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription
806
+ * \retval #PSA_ERROR_CORRUPTION_DETECTED \emptydescription
807
+ * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY \emptydescription
808
+ */
809
+ psa_status_t mbedtls_psa_sign_hash_complete(
810
+ mbedtls_psa_sign_hash_interruptible_operation_t *operation,
811
+ uint8_t *signature, size_t signature_size,
812
+ size_t *signature_length);
813
+
814
+ /**
815
+ * \brief Abort a sign hash operation.
816
+ *
817
+ * \note The signature of this function is that of a PSA driver sign_hash_abort
818
+ * entry point. This function behaves as a sign_hash_abort entry point as
819
+ * defined in the PSA driver interface specification for transparent
820
+ * drivers.
821
+ *
822
+ * \param[in] operation The \c
823
+ * mbedtls_psa_sign_hash_interruptible_operation_t
824
+ * to abort.
825
+ *
826
+ * \retval #PSA_SUCCESS
827
+ * The operation was aborted successfully.
828
+ */
829
+ psa_status_t mbedtls_psa_sign_hash_abort(
830
+ mbedtls_psa_sign_hash_interruptible_operation_t *operation);
831
+
832
+ /**
833
+ * \brief Start reading and verifying a hash or short message, in an
834
+ * interruptible manner.
835
+ *
836
+ * \note The signature of this function is that of a PSA driver
837
+ * verify_hash_start entry point. This function behaves as a
838
+ * verify_hash_start entry point as defined in the PSA driver interface
839
+ * specification for transparent drivers.
840
+ *
841
+ * \param[in] operation The \c
842
+ * mbedtls_psa_verify_hash_interruptible_operation_t
843
+ * to use. This must be initialized first.
844
+ * \param[in] attributes The attributes of the key to use for the
845
+ * operation.
846
+ * \param[in] key_buffer The buffer containing the key context.
847
+ * \param[in] key_buffer_size Size of the \p key_buffer buffer in bytes.
848
+ * \param[in] alg A signature algorithm that is compatible with
849
+ * the type of the key.
850
+ * \param[in] hash The hash whose signature is to be verified.
851
+ * \param hash_length Size of the \p hash buffer in bytes.
852
+ * \param[in] signature Buffer containing the signature to verify.
853
+ * \param signature_length Size of the \p signature buffer in bytes.
854
+ *
855
+ * \retval #PSA_SUCCESS
856
+ * The operation started successfully - call \c psa_sign_hash_complete()
857
+ * with the same context to complete the operation
858
+ * \retval #PSA_ERROR_INVALID_ARGUMENT
859
+ * An unsupported or incorrect type of key was used.
860
+ * \retval #PSA_ERROR_NOT_SUPPORTED
861
+ * Either no internal interruptible operations are currently supported,
862
+ * or the key type is currently unsupported.
863
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY
864
+ * There was insufficient memory either to load the key representation,
865
+ * or to prepare the operation.
866
+ */
867
+ psa_status_t mbedtls_psa_verify_hash_start(
868
+ mbedtls_psa_verify_hash_interruptible_operation_t *operation,
869
+ const psa_key_attributes_t *attributes,
870
+ const uint8_t *key_buffer, size_t key_buffer_size,
871
+ psa_algorithm_t alg,
872
+ const uint8_t *hash, size_t hash_length,
873
+ const uint8_t *signature, size_t signature_length);
874
+
875
+ /**
876
+ * \brief Continue and eventually complete the action of signing a hash or
877
+ * short message with a private key, in an interruptible manner.
878
+ *
879
+ * \note The signature of this function is that of a PSA driver
880
+ * sign_hash_complete entry point. This function behaves as a
881
+ * sign_hash_complete entry point as defined in the PSA driver interface
882
+ * specification for transparent drivers.
883
+ *
884
+ * \param[in] operation The \c
885
+ * mbedtls_psa_sign_hash_interruptible_operation_t
886
+ * to use. This must be initialized first.
887
+ *
888
+ * \retval #PSA_SUCCESS
889
+ * Operation completed successfully, and the passed signature is valid.
890
+ *
891
+ * \retval #PSA_OPERATION_INCOMPLETE
892
+ * Operation was interrupted due to the setting of \c
893
+ * psa_interruptible_set_max_ops(), there is still work to be done,
894
+ * please call this function again with the same operation object.
895
+ *
896
+ * \retval #PSA_ERROR_INVALID_SIGNATURE
897
+ * The calculation was performed successfully, but the passed
898
+ * signature is not a valid signature.
899
+ *
900
+ * \retval #PSA_ERROR_NOT_SUPPORTED \emptydescription
901
+ * \retval #PSA_ERROR_INVALID_ARGUMENT \emptydescription
902
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription
903
+ */
904
+ psa_status_t mbedtls_psa_verify_hash_complete(
905
+ mbedtls_psa_verify_hash_interruptible_operation_t *operation);
906
+
907
+ /**
908
+ * \brief Abort a verify signed hash operation.
909
+ *
910
+ * \note The signature of this function is that of a PSA driver
911
+ * verify_hash_abort entry point. This function behaves as a
912
+ * verify_hash_abort entry point as defined in the PSA driver interface
913
+ * specification for transparent drivers.
914
+ *
915
+ * \param[in] operation The \c
916
+ * mbedtls_psa_verify_hash_interruptible_operation_t
917
+ * to abort.
918
+ *
919
+ * \retval #PSA_SUCCESS
920
+ * The operation was aborted successfully.
921
+ */
922
+ psa_status_t mbedtls_psa_verify_hash_abort(
923
+ mbedtls_psa_verify_hash_interruptible_operation_t *operation);
924
+
925
+ typedef struct psa_crypto_local_input_s {
926
+ uint8_t *buffer;
927
+ size_t length;
928
+ } psa_crypto_local_input_t;
929
+
930
+ #define PSA_CRYPTO_LOCAL_INPUT_INIT ((psa_crypto_local_input_t) { NULL, 0 })
931
+
932
+ /** Allocate a local copy of an input buffer and copy the contents into it.
933
+ *
934
+ * \param[in] input Pointer to input buffer.
935
+ * \param[in] input_len Length of the input buffer.
936
+ * \param[out] local_input Pointer to a psa_crypto_local_input_t struct
937
+ * containing a local input copy.
938
+ * \return #PSA_SUCCESS, if the buffer was successfully
939
+ * copied.
940
+ * \return #PSA_ERROR_INSUFFICIENT_MEMORY, if a copy of
941
+ * the buffer cannot be allocated.
942
+ */
943
+ psa_status_t psa_crypto_local_input_alloc(const uint8_t *input, size_t input_len,
944
+ psa_crypto_local_input_t *local_input);
945
+
946
+ /** Free a local copy of an input buffer.
947
+ *
948
+ * \param[in] local_input Pointer to a psa_crypto_local_input_t struct
949
+ * populated by a previous call to
950
+ * psa_crypto_local_input_alloc().
951
+ */
952
+ void psa_crypto_local_input_free(psa_crypto_local_input_t *local_input);
953
+
954
+ typedef struct psa_crypto_local_output_s {
955
+ uint8_t *original;
956
+ uint8_t *buffer;
957
+ size_t length;
958
+ } psa_crypto_local_output_t;
959
+
960
+ #define PSA_CRYPTO_LOCAL_OUTPUT_INIT ((psa_crypto_local_output_t) { NULL, NULL, 0 })
961
+
962
+ /** Allocate a local copy of an output buffer.
963
+ *
964
+ * \note This does not copy any data from the original
965
+ * output buffer but only allocates a buffer
966
+ * whose contents will be copied back to the
967
+ * original in a future call to
968
+ * psa_crypto_local_output_free().
969
+ *
970
+ * \param[in] output Pointer to output buffer.
971
+ * \param[in] output_len Length of the output buffer.
972
+ * \param[out] local_output Pointer to a psa_crypto_local_output_t struct to
973
+ * populate with the local output copy.
974
+ * \return #PSA_SUCCESS, if the buffer was successfully
975
+ * copied.
976
+ * \return #PSA_ERROR_INSUFFICIENT_MEMORY, if a copy of
977
+ * the buffer cannot be allocated.
978
+ */
979
+ psa_status_t psa_crypto_local_output_alloc(uint8_t *output, size_t output_len,
980
+ psa_crypto_local_output_t *local_output);
981
+
982
+ /** Copy from a local copy of an output buffer back to the original, then
983
+ * free the local copy.
984
+ *
985
+ * \param[in] local_output Pointer to a psa_crypto_local_output_t struct
986
+ * populated by a previous call to
987
+ * psa_crypto_local_output_alloc().
988
+ * \return #PSA_SUCCESS, if the local output was
989
+ * successfully copied back to the original.
990
+ * \return #PSA_ERROR_CORRUPTION_DETECTED, if the output
991
+ * could not be copied back to the original.
992
+ */
993
+ psa_status_t psa_crypto_local_output_free(psa_crypto_local_output_t *local_output);
994
+
995
+ #endif /* PSA_CRYPTO_CORE_H */