duckdb 1.3.4 → 1.4.1-dev2.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 (1415) 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 +5 -2
  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 +25 -30
  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 +12 -6
  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 +139 -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 +46 -125
  148. package/src/duckdb/extension/parquet/geo_parquet.cpp +251 -176
  149. package/src/duckdb/extension/parquet/include/column_reader.hpp +0 -2
  150. package/src/duckdb/extension/parquet/include/column_writer.hpp +4 -3
  151. package/src/duckdb/extension/parquet/include/geo_parquet.hpp +188 -67
  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 +11 -5
  162. package/src/duckdb/extension/parquet/include/reader/row_number_column_reader.hpp +0 -2
  163. package/src/duckdb/extension/parquet/include/reader/string_column_reader.hpp +13 -0
  164. package/src/duckdb/extension/parquet/include/reader/uuid_column_reader.hpp +3 -13
  165. package/src/duckdb/extension/parquet/include/reader/variant/variant_binary_decoder.hpp +150 -0
  166. package/src/duckdb/extension/parquet/include/reader/variant/variant_shredded_conversion.hpp +23 -0
  167. package/src/duckdb/extension/parquet/include/reader/variant/variant_value.hpp +54 -0
  168. package/src/duckdb/extension/parquet/include/reader/variant_column_reader.hpp +44 -0
  169. package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +0 -2
  170. package/src/duckdb/extension/parquet/include/thrift_tools.hpp +3 -3
  171. package/src/duckdb/extension/parquet/include/writer/array_column_writer.hpp +6 -1
  172. package/src/duckdb/extension/parquet/include/writer/list_column_writer.hpp +2 -1
  173. package/src/duckdb/extension/parquet/include/writer/parquet_write_operators.hpp +47 -10
  174. package/src/duckdb/extension/parquet/include/writer/parquet_write_stats.hpp +55 -1
  175. package/src/duckdb/extension/parquet/include/writer/primitive_column_writer.hpp +4 -3
  176. package/src/duckdb/extension/parquet/include/writer/struct_column_writer.hpp +2 -1
  177. package/src/duckdb/extension/parquet/include/writer/templated_column_writer.hpp +6 -3
  178. package/src/duckdb/extension/parquet/include/zstd_file_system.hpp +1 -3
  179. package/src/duckdb/extension/parquet/parquet_crypto.cpp +11 -11
  180. package/src/duckdb/extension/parquet/parquet_extension.cpp +140 -69
  181. package/src/duckdb/extension/parquet/parquet_file_metadata_cache.cpp +4 -4
  182. package/src/duckdb/extension/parquet/parquet_float16.cpp +0 -3
  183. package/src/duckdb/extension/parquet/parquet_metadata.cpp +115 -17
  184. package/src/duckdb/extension/parquet/parquet_multi_file_info.cpp +25 -10
  185. package/src/duckdb/extension/parquet/parquet_reader.cpp +185 -57
  186. package/src/duckdb/extension/parquet/parquet_statistics.cpp +31 -15
  187. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +14 -4
  188. package/src/duckdb/extension/parquet/parquet_writer.cpp +129 -21
  189. package/src/duckdb/extension/parquet/reader/decimal_column_reader.cpp +1 -1
  190. package/src/duckdb/extension/parquet/reader/string_column_reader.cpp +17 -4
  191. package/src/duckdb/extension/parquet/reader/variant/variant_binary_decoder.cpp +367 -0
  192. package/src/duckdb/extension/parquet/reader/variant/variant_shredded_conversion.cpp +565 -0
  193. package/src/duckdb/extension/parquet/reader/variant/variant_value.cpp +85 -0
  194. package/src/duckdb/extension/parquet/reader/variant_column_reader.cpp +161 -0
  195. package/src/duckdb/extension/parquet/writer/array_column_writer.cpp +27 -30
  196. package/src/duckdb/extension/parquet/writer/enum_column_writer.cpp +1 -1
  197. package/src/duckdb/extension/parquet/writer/list_column_writer.cpp +6 -3
  198. package/src/duckdb/extension/parquet/writer/primitive_column_writer.cpp +36 -8
  199. package/src/duckdb/extension/parquet/writer/struct_column_writer.cpp +7 -4
  200. package/src/duckdb/extension/parquet/zstd_file_system.cpp +7 -6
  201. package/src/duckdb/src/catalog/catalog.cpp +92 -62
  202. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +8 -8
  203. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +14 -8
  204. package/src/duckdb/src/catalog/catalog_search_path.cpp +2 -2
  205. package/src/duckdb/src/catalog/catalog_set.cpp +2 -2
  206. package/src/duckdb/src/catalog/default/default_functions.cpp +4 -4
  207. package/src/duckdb/src/catalog/default/default_table_functions.cpp +5 -4
  208. package/src/duckdb/src/catalog/default/default_views.cpp +1 -1
  209. package/src/duckdb/src/catalog/duck_catalog.cpp +28 -0
  210. package/src/duckdb/src/common/adbc/adbc.cpp +243 -125
  211. package/src/duckdb/src/common/adbc/driver_manager.cpp +3 -3
  212. package/src/duckdb/src/common/arrow/appender/append_data.cpp +29 -0
  213. package/src/duckdb/src/common/arrow/appender/bool_data.cpp +6 -7
  214. package/src/duckdb/src/common/arrow/appender/fixed_size_list_data.cpp +1 -1
  215. package/src/duckdb/src/common/arrow/appender/struct_data.cpp +1 -1
  216. package/src/duckdb/src/common/arrow/appender/union_data.cpp +0 -1
  217. package/src/duckdb/src/common/arrow/arrow_appender.cpp +13 -17
  218. package/src/duckdb/src/common/arrow/arrow_converter.cpp +14 -6
  219. package/src/duckdb/src/common/arrow/arrow_type_extension.cpp +6 -6
  220. package/src/duckdb/src/common/arrow/physical_arrow_collector.cpp +16 -10
  221. package/src/duckdb/src/common/arrow/schema_metadata.cpp +2 -2
  222. package/src/duckdb/src/common/bignum.cpp +362 -0
  223. package/src/duckdb/src/common/box_renderer.cpp +83 -32
  224. package/src/duckdb/src/common/complex_json.cpp +20 -5
  225. package/src/duckdb/src/common/compressed_file_system.cpp +6 -5
  226. package/src/duckdb/src/common/csv_writer.cpp +381 -0
  227. package/src/duckdb/src/common/encryption_functions.cpp +228 -0
  228. package/src/duckdb/src/common/encryption_key_manager.cpp +143 -0
  229. package/src/duckdb/src/common/encryption_state.cpp +56 -9
  230. package/src/duckdb/src/common/enum_util.cpp +425 -51
  231. package/src/duckdb/src/common/enums/expression_type.cpp +2 -0
  232. package/src/duckdb/src/common/enums/logical_operator_type.cpp +2 -0
  233. package/src/duckdb/src/common/enums/metric_type.cpp +6 -0
  234. package/src/duckdb/src/common/enums/optimizer_type.cpp +1 -0
  235. package/src/duckdb/src/common/enums/physical_operator_type.cpp +2 -0
  236. package/src/duckdb/src/common/enums/statement_type.cpp +2 -0
  237. package/src/duckdb/src/common/error_data.cpp +11 -0
  238. package/src/duckdb/src/common/exception_format_value.cpp +15 -1
  239. package/src/duckdb/src/common/extra_type_info.cpp +43 -0
  240. package/src/duckdb/src/common/file_buffer.cpp +11 -8
  241. package/src/duckdb/src/common/file_system.cpp +79 -39
  242. package/src/duckdb/src/common/gzip_file_system.cpp +13 -11
  243. package/src/duckdb/src/common/local_file_system.cpp +25 -16
  244. package/src/duckdb/src/common/multi_file/base_file_reader.cpp +4 -0
  245. package/src/duckdb/src/common/multi_file/multi_file_column_mapper.cpp +7 -11
  246. package/src/duckdb/src/common/multi_file/multi_file_function.cpp +8 -0
  247. package/src/duckdb/src/common/multi_file/multi_file_list.cpp +8 -4
  248. package/src/duckdb/src/common/multi_file/multi_file_reader.cpp +9 -5
  249. package/src/duckdb/src/common/operator/cast_operators.cpp +147 -6
  250. package/src/duckdb/src/common/operator/string_cast.cpp +41 -12
  251. package/src/duckdb/src/common/pipe_file_system.cpp +10 -5
  252. package/src/duckdb/src/common/progress_bar/progress_bar.cpp +2 -2
  253. package/src/duckdb/src/common/progress_bar/terminal_progress_bar_display.cpp +81 -7
  254. package/src/duckdb/src/common/progress_bar/unscented_kalman_filter.cpp +288 -0
  255. package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
  256. package/src/duckdb/src/common/row_operations/row_aggregate.cpp +8 -11
  257. package/src/duckdb/src/common/row_operations/row_external.cpp +0 -7
  258. package/src/duckdb/src/common/row_operations/row_gather.cpp +0 -5
  259. package/src/duckdb/src/common/row_operations/row_matcher.cpp +55 -37
  260. package/src/duckdb/src/common/row_operations/row_scatter.cpp +0 -6
  261. package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +4 -0
  262. package/src/duckdb/src/common/serializer/buffered_file_writer.cpp +4 -0
  263. package/src/duckdb/src/common/serializer/memory_stream.cpp +4 -0
  264. package/src/duckdb/src/common/sort/partition_state.cpp +3 -3
  265. package/src/duckdb/src/common/sorting/hashed_sort.cpp +724 -0
  266. package/src/duckdb/src/common/sorting/sort.cpp +532 -0
  267. package/src/duckdb/src/common/sorting/sorted_run.cpp +341 -0
  268. package/src/duckdb/src/common/sorting/sorted_run_merger.cpp +970 -0
  269. package/src/duckdb/src/common/string_util.cpp +88 -44
  270. package/src/duckdb/src/common/tree_renderer/text_tree_renderer.cpp +40 -3
  271. package/src/duckdb/src/common/tree_renderer/yaml_tree_renderer.cpp +144 -0
  272. package/src/duckdb/src/common/tree_renderer.cpp +3 -0
  273. package/src/duckdb/src/common/types/bignum.cpp +350 -0
  274. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +27 -29
  275. package/src/duckdb/src/common/types/column/column_data_collection.cpp +216 -68
  276. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +3 -2
  277. package/src/duckdb/src/common/types/conflict_info.cpp +1 -2
  278. package/src/duckdb/src/common/types/conflict_manager.cpp +82 -207
  279. package/src/duckdb/src/common/types/data_chunk.cpp +10 -3
  280. package/src/duckdb/src/common/types/date.cpp +8 -10
  281. package/src/duckdb/src/common/types/hash.cpp +7 -7
  282. package/src/duckdb/src/common/types/row/block_iterator.cpp +34 -0
  283. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +38 -29
  284. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +272 -54
  285. package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +156 -45
  286. package/src/duckdb/src/common/types/row/tuple_data_iterator.cpp +5 -5
  287. package/src/duckdb/src/common/types/row/tuple_data_layout.cpp +122 -18
  288. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +466 -83
  289. package/src/duckdb/src/common/types/row/tuple_data_segment.cpp +8 -28
  290. package/src/duckdb/src/common/types/time.cpp +2 -2
  291. package/src/duckdb/src/common/types/timestamp.cpp +26 -14
  292. package/src/duckdb/src/common/types/uuid.cpp +33 -2
  293. package/src/duckdb/src/common/types/value.cpp +79 -16
  294. package/src/duckdb/src/common/types/vector.cpp +190 -22
  295. package/src/duckdb/src/common/types/vector_buffer.cpp +4 -0
  296. package/src/duckdb/src/common/types/vector_cache.cpp +4 -0
  297. package/src/duckdb/src/common/types.cpp +110 -22
  298. package/src/duckdb/src/common/value_operations/comparison_operations.cpp +24 -27
  299. package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +12 -9
  300. package/src/duckdb/src/common/vector_operations/comparison_operators.cpp +5 -4
  301. package/src/duckdb/src/common/vector_operations/generators.cpp +1 -1
  302. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +70 -135
  303. package/src/duckdb/src/common/vector_operations/null_operations.cpp +1 -1
  304. package/src/duckdb/src/common/vector_operations/vector_copy.cpp +5 -2
  305. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +110 -55
  306. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +14 -10
  307. package/src/duckdb/src/common/virtual_file_system.cpp +71 -13
  308. package/src/duckdb/src/execution/aggregate_hashtable.cpp +88 -50
  309. package/src/duckdb/src/execution/column_binding_resolver.cpp +7 -6
  310. package/src/duckdb/src/execution/expression_executor/execute_function.cpp +113 -2
  311. package/src/duckdb/src/execution/expression_executor.cpp +44 -4
  312. package/src/duckdb/src/execution/index/art/art.cpp +78 -216
  313. package/src/duckdb/src/execution/index/art/art_builder.cpp +91 -0
  314. package/src/duckdb/src/execution/index/art/art_key.cpp +0 -23
  315. package/src/duckdb/src/execution/index/art/art_merger.cpp +3 -7
  316. package/src/duckdb/src/execution/index/art/base_leaf.cpp +10 -11
  317. package/src/duckdb/src/execution/index/art/base_node.cpp +103 -75
  318. package/src/duckdb/src/execution/index/art/iterator.cpp +3 -3
  319. package/src/duckdb/src/execution/index/art/leaf.cpp +9 -11
  320. package/src/duckdb/src/execution/index/art/node.cpp +54 -53
  321. package/src/duckdb/src/execution/index/art/node256.cpp +30 -56
  322. package/src/duckdb/src/execution/index/art/node256_leaf.cpp +43 -30
  323. package/src/duckdb/src/execution/index/art/node48.cpp +69 -101
  324. package/src/duckdb/src/execution/index/art/plan_art.cpp +2 -1
  325. package/src/duckdb/src/execution/index/art/prefix.cpp +119 -125
  326. package/src/duckdb/src/execution/index/bound_index.cpp +39 -10
  327. package/src/duckdb/src/execution/index/fixed_size_allocator.cpp +23 -8
  328. package/src/duckdb/src/execution/index/fixed_size_buffer.cpp +35 -23
  329. package/src/duckdb/src/execution/index/unbound_index.cpp +26 -6
  330. package/src/duckdb/src/execution/join_hashtable.cpp +52 -55
  331. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +3 -0
  332. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +6 -4
  333. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +27 -18
  334. package/src/duckdb/src/execution/operator/aggregate/physical_partitioned_aggregate.cpp +4 -2
  335. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +4 -2
  336. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +8 -2
  337. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +6 -4
  338. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +433 -387
  339. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer.cpp +5 -4
  340. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_file_handle.cpp +12 -4
  341. package/src/duckdb/src/execution/operator/csv_scanner/encode/csv_encoder.cpp +8 -7
  342. package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +8 -6
  343. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +15 -2
  344. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +1 -1
  345. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +4 -4
  346. package/src/duckdb/src/execution/operator/csv_scanner/table_function/csv_multi_file_info.cpp +12 -3
  347. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +7 -2
  348. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +4 -0
  349. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +14 -12
  350. package/src/duckdb/src/execution/operator/helper/physical_batch_collector.cpp +2 -1
  351. package/src/duckdb/src/execution/operator/helper/physical_buffered_batch_collector.cpp +2 -2
  352. package/src/duckdb/src/execution/operator/helper/physical_buffered_collector.cpp +3 -2
  353. package/src/duckdb/src/execution/operator/helper/physical_execute.cpp +2 -2
  354. package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +3 -3
  355. package/src/duckdb/src/execution/operator/helper/physical_limit_percent.cpp +4 -3
  356. package/src/duckdb/src/execution/operator/helper/physical_materialized_collector.cpp +3 -2
  357. package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +29 -9
  358. package/src/duckdb/src/execution/operator/helper/physical_result_collector.cpp +23 -20
  359. package/src/duckdb/src/execution/operator/helper/physical_set.cpp +28 -11
  360. package/src/duckdb/src/execution/operator/helper/physical_set_variable.cpp +3 -2
  361. package/src/duckdb/src/execution/operator/helper/physical_streaming_limit.cpp +4 -3
  362. package/src/duckdb/src/execution/operator/helper/physical_streaming_sample.cpp +3 -3
  363. package/src/duckdb/src/execution/operator/helper/physical_transaction.cpp +4 -4
  364. package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +7 -3
  365. package/src/duckdb/src/execution/operator/helper/physical_verify_vector.cpp +4 -2
  366. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +11 -10
  367. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +3 -2
  368. package/src/duckdb/src/execution/operator/join/physical_comparison_join.cpp +4 -4
  369. package/src/duckdb/src/execution/operator/join/physical_cross_product.cpp +4 -3
  370. package/src/duckdb/src/execution/operator/join/physical_delim_join.cpp +2 -2
  371. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +13 -8
  372. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +15 -14
  373. package/src/duckdb/src/execution/operator/join/physical_join.cpp +3 -3
  374. package/src/duckdb/src/execution/operator/join/physical_left_delim_join.cpp +5 -4
  375. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +7 -7
  376. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +20 -21
  377. package/src/duckdb/src/execution/operator/join/physical_positional_join.cpp +4 -3
  378. package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +18 -6
  379. package/src/duckdb/src/execution/operator/join/physical_right_delim_join.cpp +5 -4
  380. package/src/duckdb/src/execution/operator/order/physical_order.cpp +62 -203
  381. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +5 -4
  382. package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +5 -3
  383. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +9 -7
  384. package/src/duckdb/src/execution/operator/persistent/physical_copy_database.cpp +7 -5
  385. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +12 -7
  386. package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +34 -5
  387. package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +6 -20
  388. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +91 -74
  389. package/src/duckdb/src/execution/operator/persistent/physical_merge_into.cpp +516 -0
  390. package/src/duckdb/src/execution/operator/persistent/physical_update.cpp +11 -9
  391. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +7 -4
  392. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +3 -36
  393. package/src/duckdb/src/execution/operator/projection/physical_tableinout_function.cpp +26 -4
  394. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +5 -3
  395. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +9 -7
  396. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +3 -3
  397. package/src/duckdb/src/execution/operator/scan/physical_table_scan.cpp +6 -5
  398. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +12 -10
  399. package/src/duckdb/src/execution/operator/schema/physical_create_art_index.cpp +5 -4
  400. package/src/duckdb/src/execution/operator/schema/physical_create_table.cpp +3 -3
  401. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +3 -2
  402. package/src/duckdb/src/execution/operator/schema/physical_drop.cpp +3 -2
  403. package/src/duckdb/src/execution/operator/set/physical_cte.cpp +5 -4
  404. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +5 -3
  405. package/src/duckdb/src/execution/operator/set/physical_union.cpp +3 -3
  406. package/src/duckdb/src/execution/physical_operator.cpp +42 -32
  407. package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +24 -12
  408. package/src/duckdb/src/execution/physical_plan/plan_asof_join.cpp +8 -6
  409. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +12 -18
  410. package/src/duckdb/src/execution/physical_plan/plan_get.cpp +3 -1
  411. package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +11 -10
  412. package/src/duckdb/src/execution/physical_plan/plan_merge_into.cpp +132 -0
  413. package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +16 -18
  414. package/src/duckdb/src/execution/physical_plan_generator.cpp +8 -5
  415. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +16 -27
  416. package/src/duckdb/src/execution/sample/base_reservoir_sample.cpp +22 -22
  417. package/src/duckdb/src/function/aggregate/distributive/count.cpp +14 -11
  418. package/src/duckdb/src/function/aggregate/distributive/first_last_any.cpp +23 -19
  419. package/src/duckdb/src/function/aggregate/distributive/minmax.cpp +14 -7
  420. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +185 -234
  421. package/src/duckdb/src/function/cast/bignum_casts.cpp +315 -0
  422. package/src/duckdb/src/function/cast/blob_cast.cpp +3 -0
  423. package/src/duckdb/src/function/cast/cast_function_set.cpp +24 -4
  424. package/src/duckdb/src/function/cast/decimal_cast.cpp +3 -3
  425. package/src/duckdb/src/function/cast/default_casts.cpp +12 -4
  426. package/src/duckdb/src/function/cast/enum_casts.cpp +4 -3
  427. package/src/duckdb/src/function/cast/numeric_casts.cpp +3 -3
  428. package/src/duckdb/src/function/cast/string_cast.cpp +14 -11
  429. package/src/duckdb/src/function/cast/struct_cast.cpp +127 -2
  430. package/src/duckdb/src/function/cast/time_casts.cpp +18 -0
  431. package/src/duckdb/src/function/cast/union_casts.cpp +7 -6
  432. package/src/duckdb/src/function/cast/uuid_casts.cpp +3 -0
  433. package/src/duckdb/src/function/cast/variant/from_variant.cpp +697 -0
  434. package/src/duckdb/src/function/cast/variant/to_json.cpp +272 -0
  435. package/src/duckdb/src/function/cast/variant/to_variant.cpp +193 -0
  436. package/src/duckdb/src/function/cast_rules.cpp +38 -4
  437. package/src/duckdb/src/function/copy_blob.cpp +157 -0
  438. package/src/duckdb/src/function/copy_function.cpp +15 -0
  439. package/src/duckdb/src/function/function.cpp +2 -0
  440. package/src/duckdb/src/function/function_binder.cpp +239 -13
  441. package/src/duckdb/src/function/function_list.cpp +8 -0
  442. package/src/duckdb/src/function/macro_function.cpp +263 -70
  443. package/src/duckdb/src/function/pragma/pragma_functions.cpp +6 -38
  444. package/src/duckdb/src/function/pragma/pragma_queries.cpp +37 -22
  445. package/src/duckdb/src/function/register_function_list.cpp +5 -5
  446. package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +43 -34
  447. package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +61 -38
  448. package/src/duckdb/src/function/scalar/create_sort_key.cpp +374 -154
  449. package/src/duckdb/src/function/scalar/date/strftime.cpp +31 -28
  450. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +18 -14
  451. package/src/duckdb/src/function/scalar/generic/error.cpp +18 -7
  452. package/src/duckdb/src/function/scalar/generic/getvariable.cpp +5 -2
  453. package/src/duckdb/src/function/scalar/list/contains_or_position.cpp +4 -52
  454. package/src/duckdb/src/function/scalar/list/list_extract.cpp +5 -12
  455. package/src/duckdb/src/function/scalar/list/list_resize.cpp +1 -1
  456. package/src/duckdb/src/function/scalar/list/list_select.cpp +11 -27
  457. package/src/duckdb/src/function/scalar/map/map_contains.cpp +5 -31
  458. package/src/duckdb/src/function/scalar/operator/add.cpp +6 -1
  459. package/src/duckdb/src/function/scalar/operator/arithmetic.cpp +130 -10
  460. package/src/duckdb/src/function/scalar/operator/multiply.cpp +4 -2
  461. package/src/duckdb/src/function/scalar/operator/subtract.cpp +3 -1
  462. package/src/duckdb/src/function/scalar/sequence/nextval.cpp +7 -3
  463. package/src/duckdb/src/function/scalar/strftime_format.cpp +2 -2
  464. package/src/duckdb/src/function/scalar/string/caseconvert.cpp +4 -0
  465. package/src/duckdb/src/function/scalar/string/concat.cpp +18 -19
  466. package/src/duckdb/src/function/scalar/string/contains.cpp +14 -7
  467. package/src/duckdb/src/function/scalar/string/length.cpp +13 -9
  468. package/src/duckdb/src/function/scalar/string/like.cpp +146 -143
  469. package/src/duckdb/src/function/scalar/string/md5.cpp +6 -2
  470. package/src/duckdb/src/function/scalar/string/nfc_normalize.cpp +5 -1
  471. package/src/duckdb/src/function/scalar/string/prefix.cpp +11 -8
  472. package/src/duckdb/src/function/scalar/string/regexp_escape.cpp +5 -1
  473. package/src/duckdb/src/function/scalar/string/sha1.cpp +5 -1
  474. package/src/duckdb/src/function/scalar/string/sha256.cpp +5 -1
  475. package/src/duckdb/src/function/scalar/string/string_split.cpp +7 -3
  476. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +5 -1
  477. package/src/duckdb/src/function/scalar/string/substring.cpp +10 -6
  478. package/src/duckdb/src/function/scalar/string/suffix.cpp +10 -8
  479. package/src/duckdb/src/function/scalar/struct/remap_struct.cpp +20 -17
  480. package/src/duckdb/src/function/scalar/struct/struct_concat.cpp +1 -1
  481. package/src/duckdb/src/function/scalar/struct/struct_contains.cpp +255 -0
  482. package/src/duckdb/src/function/scalar/struct/struct_pack.cpp +2 -2
  483. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +34 -31
  484. package/src/duckdb/src/function/scalar/system/current_connection_id.cpp +5 -1
  485. package/src/duckdb/src/function/scalar/system/current_query_id.cpp +5 -1
  486. package/src/duckdb/src/function/scalar/system/current_transaction_id.cpp +5 -1
  487. package/src/duckdb/src/function/scalar/system/parse_log_message.cpp +5 -1
  488. package/src/duckdb/src/function/scalar/system/write_log.cpp +11 -13
  489. package/src/duckdb/src/function/scalar/variant/variant_extract.cpp +234 -0
  490. package/src/duckdb/src/function/scalar/variant/variant_typeof.cpp +70 -0
  491. package/src/duckdb/src/function/scalar/variant/variant_utils.cpp +412 -0
  492. package/src/duckdb/src/function/scalar_macro_function.cpp +8 -11
  493. package/src/duckdb/src/function/table/arrow/arrow_array_scan_state.cpp +2 -3
  494. package/src/duckdb/src/function/table/arrow/arrow_duck_schema.cpp +27 -2
  495. package/src/duckdb/src/function/table/arrow.cpp +37 -17
  496. package/src/duckdb/src/function/table/arrow_conversion.cpp +186 -236
  497. package/src/duckdb/src/function/table/copy_csv.cpp +76 -245
  498. package/src/duckdb/src/function/table/direct_file_reader.cpp +172 -0
  499. package/src/duckdb/src/function/table/read_file.cpp +90 -220
  500. package/src/duckdb/src/function/table/sniff_csv.cpp +0 -1
  501. package/src/duckdb/src/function/table/system/duckdb_approx_database_count.cpp +43 -0
  502. package/src/duckdb/src/function/table/system/duckdb_columns.cpp +2 -2
  503. package/src/duckdb/src/function/table/system/duckdb_connection_count.cpp +45 -0
  504. package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +3 -7
  505. package/src/duckdb/src/function/table/system/duckdb_databases.cpp +20 -5
  506. package/src/duckdb/src/function/table/system/duckdb_extensions.cpp +10 -5
  507. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +6 -22
  508. package/src/duckdb/src/function/table/system/duckdb_log.cpp +41 -5
  509. package/src/duckdb/src/function/table/system/duckdb_log_contexts.cpp +15 -6
  510. package/src/duckdb/src/function/table/system/duckdb_settings.cpp +40 -7
  511. package/src/duckdb/src/function/table/system/duckdb_types.cpp +4 -0
  512. package/src/duckdb/src/function/table/system/logging_utils.cpp +154 -0
  513. package/src/duckdb/src/function/table/system/pragma_database_size.cpp +2 -2
  514. package/src/duckdb/src/function/table/system/test_all_types.cpp +30 -6
  515. package/src/duckdb/src/function/table/system_functions.cpp +3 -0
  516. package/src/duckdb/src/function/table/table_scan.cpp +82 -48
  517. package/src/duckdb/src/function/table/version/pragma_version.cpp +7 -4
  518. package/src/duckdb/src/function/window/window_aggregate_function.cpp +56 -46
  519. package/src/duckdb/src/function/window/window_aggregator.cpp +33 -19
  520. package/src/duckdb/src/function/window/window_boundaries_state.cpp +12 -2
  521. package/src/duckdb/src/function/window/window_collection.cpp +30 -0
  522. package/src/duckdb/src/function/window/window_constant_aggregator.cpp +32 -24
  523. package/src/duckdb/src/function/window/window_custom_aggregator.cpp +54 -40
  524. package/src/duckdb/src/function/window/window_distinct_aggregator.cpp +200 -251
  525. package/src/duckdb/src/function/window/window_executor.cpp +44 -36
  526. package/src/duckdb/src/function/window/window_index_tree.cpp +26 -16
  527. package/src/duckdb/src/function/window/window_merge_sort_tree.cpp +98 -151
  528. package/src/duckdb/src/function/window/window_naive_aggregator.cpp +94 -72
  529. package/src/duckdb/src/function/window/window_rank_function.cpp +57 -63
  530. package/src/duckdb/src/function/window/window_rownumber_function.cpp +45 -47
  531. package/src/duckdb/src/function/window/window_segment_tree.cpp +28 -22
  532. package/src/duckdb/src/function/window/window_token_tree.cpp +46 -41
  533. package/src/duckdb/src/function/window/window_value_function.cpp +632 -93
  534. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +24 -5
  535. package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +5 -2
  536. package/src/duckdb/src/include/duckdb/catalog/duck_catalog.hpp +16 -0
  537. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +68 -1
  538. package/src/duckdb/src/include/duckdb/common/allocator.hpp +3 -0
  539. package/src/duckdb/src/include/duckdb/common/arena_linked_list.hpp +169 -0
  540. package/src/duckdb/src/include/duckdb/common/arrow/appender/append_data.hpp +31 -55
  541. package/src/duckdb/src/include/duckdb/common/arrow/appender/enum_data.hpp +1 -1
  542. package/src/duckdb/src/include/duckdb/common/arrow/appender/list_data.hpp +1 -1
  543. package/src/duckdb/src/include/duckdb/common/arrow/appender/list_view_data.hpp +1 -1
  544. package/src/duckdb/src/include/duckdb/common/arrow/appender/map_data.hpp +1 -1
  545. package/src/duckdb/src/include/duckdb/common/arrow/appender/scalar_data.hpp +1 -1
  546. package/src/duckdb/src/include/duckdb/common/arrow/appender/varchar_data.hpp +6 -6
  547. package/src/duckdb/src/include/duckdb/common/arrow/arrow_wrapper.hpp +10 -0
  548. package/src/duckdb/src/include/duckdb/common/arrow/physical_arrow_batch_collector.hpp +2 -2
  549. package/src/duckdb/src/include/duckdb/common/arrow/physical_arrow_collector.hpp +3 -4
  550. package/src/duckdb/src/include/duckdb/common/bignum.hpp +85 -0
  551. package/src/duckdb/src/include/duckdb/common/box_renderer.hpp +4 -4
  552. package/src/duckdb/src/include/duckdb/common/chrono.hpp +1 -0
  553. package/src/duckdb/src/include/duckdb/common/complex_json.hpp +15 -4
  554. package/src/duckdb/src/include/duckdb/common/compressed_file_system.hpp +2 -2
  555. package/src/duckdb/src/include/duckdb/common/csv_writer.hpp +153 -0
  556. package/src/duckdb/src/include/duckdb/common/encryption_functions.hpp +54 -0
  557. package/src/duckdb/src/include/duckdb/common/encryption_key_manager.hpp +80 -0
  558. package/src/duckdb/src/include/duckdb/common/encryption_state.hpp +25 -9
  559. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +128 -0
  560. package/src/duckdb/src/include/duckdb/common/enums/arrow_format_version.hpp +33 -0
  561. package/src/duckdb/src/include/duckdb/common/enums/checkpoint_abort.hpp +22 -0
  562. package/src/duckdb/src/include/duckdb/common/enums/checkpoint_type.hpp +3 -1
  563. package/src/duckdb/src/include/duckdb/common/enums/copy_option_mode.hpp +17 -0
  564. package/src/duckdb/src/include/duckdb/common/enums/debug_vector_verification.hpp +2 -1
  565. package/src/duckdb/src/include/duckdb/common/enums/explain_format.hpp +1 -1
  566. package/src/duckdb/src/include/duckdb/common/enums/expression_type.hpp +1 -0
  567. package/src/duckdb/src/include/duckdb/common/enums/file_glob_options.hpp +11 -3
  568. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +1 -0
  569. package/src/duckdb/src/include/duckdb/common/enums/merge_action_type.hpp +19 -0
  570. package/src/duckdb/src/include/duckdb/common/enums/metric_type.hpp +3 -0
  571. package/src/duckdb/src/include/duckdb/common/enums/optimizer_type.hpp +2 -1
  572. package/src/duckdb/src/include/duckdb/common/enums/ordinality_request_type.hpp +16 -0
  573. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +1 -0
  574. package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +1 -0
  575. package/src/duckdb/src/include/duckdb/common/enums/tableref_type.hpp +2 -1
  576. package/src/duckdb/src/include/duckdb/common/enums/thread_pin_mode.hpp +17 -0
  577. package/src/duckdb/src/include/duckdb/common/enums/tuple_data_layout_enums.hpp +25 -0
  578. package/src/duckdb/src/include/duckdb/common/enums/undo_flags.hpp +2 -1
  579. package/src/duckdb/src/include/duckdb/common/error_data.hpp +4 -2
  580. package/src/duckdb/src/include/duckdb/common/exception_format_value.hpp +9 -1
  581. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +25 -1
  582. package/src/duckdb/src/include/duckdb/common/file_buffer.hpp +15 -6
  583. package/src/duckdb/src/include/duckdb/common/file_open_flags.hpp +14 -0
  584. package/src/duckdb/src/include/duckdb/common/file_opener.hpp +2 -1
  585. package/src/duckdb/src/include/duckdb/common/file_system.hpp +14 -6
  586. package/src/duckdb/src/include/duckdb/common/fsst.hpp +3 -2
  587. package/src/duckdb/src/include/duckdb/common/gzip_file_system.hpp +1 -1
  588. package/src/duckdb/src/include/duckdb/common/helper.hpp +21 -3
  589. package/src/duckdb/src/include/duckdb/common/local_file_system.hpp +1 -1
  590. package/src/duckdb/src/include/duckdb/common/multi_file/base_file_reader.hpp +4 -0
  591. package/src/duckdb/src/include/duckdb/common/multi_file/multi_file_function.hpp +43 -14
  592. package/src/duckdb/src/include/duckdb/common/multi_file/multi_file_list.hpp +4 -3
  593. package/src/duckdb/src/include/duckdb/common/multi_file/multi_file_reader.hpp +10 -3
  594. package/src/duckdb/src/include/duckdb/common/multi_file/multi_file_states.hpp +2 -0
  595. package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +57 -0
  596. package/src/duckdb/src/include/duckdb/common/opener_file_system.hpp +7 -3
  597. package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +84 -0
  598. package/src/duckdb/src/include/duckdb/common/operator/interpolate.hpp +39 -0
  599. package/src/duckdb/src/include/duckdb/common/operator/string_cast.hpp +6 -0
  600. package/src/duckdb/src/include/duckdb/common/optionally_owned_ptr.hpp +18 -2
  601. package/src/duckdb/src/include/duckdb/common/owning_string_map.hpp +8 -0
  602. package/src/duckdb/src/include/duckdb/common/pipe_file_system.hpp +1 -1
  603. package/src/duckdb/src/include/duckdb/common/progress_bar/display/terminal_progress_bar_display.hpp +44 -5
  604. package/src/duckdb/src/include/duckdb/common/progress_bar/progress_bar.hpp +1 -1
  605. package/src/duckdb/src/include/duckdb/common/progress_bar/unscented_kalman_filter.hpp +65 -0
  606. package/src/duckdb/src/include/duckdb/common/row_operations/row_matcher.hpp +8 -14
  607. package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +0 -12
  608. package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_reader.hpp +2 -0
  609. package/src/duckdb/src/include/duckdb/common/serializer/deserializer.hpp +17 -2
  610. package/src/duckdb/src/include/duckdb/common/serializer/memory_stream.hpp +1 -0
  611. package/src/duckdb/src/include/duckdb/common/serializer/read_stream.hpp +9 -1
  612. package/src/duckdb/src/include/duckdb/common/serializer/varint.hpp +62 -0
  613. package/src/duckdb/src/include/duckdb/common/sorting/hashed_sort.hpp +76 -0
  614. package/src/duckdb/src/include/duckdb/common/sorting/sort.hpp +85 -0
  615. package/src/duckdb/src/include/duckdb/common/sorting/sort_key.hpp +442 -0
  616. package/src/duckdb/src/include/duckdb/common/sorting/sort_projection_column.hpp +21 -0
  617. package/src/duckdb/src/include/duckdb/common/sorting/sorted_run.hpp +55 -0
  618. package/src/duckdb/src/include/duckdb/common/sorting/sorted_run_merger.hpp +62 -0
  619. package/src/duckdb/src/include/duckdb/common/string_util.hpp +2 -0
  620. package/src/duckdb/src/include/duckdb/common/tree_renderer/text_tree_renderer.hpp +5 -0
  621. package/src/duckdb/src/include/duckdb/common/tree_renderer/yaml_tree_renderer.hpp +40 -0
  622. package/src/duckdb/src/include/duckdb/common/type_util.hpp +34 -4
  623. package/src/duckdb/src/include/duckdb/common/type_visitor.hpp +36 -6
  624. package/src/duckdb/src/include/duckdb/common/types/bignum.hpp +159 -0
  625. package/src/duckdb/src/include/duckdb/common/types/column/column_data_allocator.hpp +3 -2
  626. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection_segment.hpp +4 -2
  627. package/src/duckdb/src/include/duckdb/common/types/conflict_manager.hpp +202 -56
  628. package/src/duckdb/src/include/duckdb/common/types/constraint_conflict_info.hpp +7 -5
  629. package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +3 -1
  630. package/src/duckdb/src/include/duckdb/common/types/date.hpp +9 -5
  631. package/src/duckdb/src/include/duckdb/common/types/datetime.hpp +11 -2
  632. package/src/duckdb/src/include/duckdb/common/types/double_na_equal.hpp +65 -0
  633. package/src/duckdb/src/include/duckdb/common/types/hash.hpp +22 -10
  634. package/src/duckdb/src/include/duckdb/common/types/hugeint.hpp +6 -6
  635. package/src/duckdb/src/include/duckdb/common/types/row/block_iterator.hpp +360 -0
  636. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +1 -1
  637. package/src/duckdb/src/include/duckdb/common/types/row/row_data_collection.hpp +1 -2
  638. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_allocator.hpp +7 -0
  639. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_collection.hpp +26 -2
  640. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_layout.hpp +43 -5
  641. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_segment.hpp +4 -11
  642. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +10 -1
  643. package/src/duckdb/src/include/duckdb/common/types/selection_vector.hpp +8 -58
  644. package/src/duckdb/src/include/duckdb/common/types/string.hpp +338 -0
  645. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +7 -1
  646. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +7 -3
  647. package/src/duckdb/src/include/duckdb/common/types/uhugeint.hpp +4 -4
  648. package/src/duckdb/src/include/duckdb/common/types/uuid.hpp +5 -0
  649. package/src/duckdb/src/include/duckdb/common/types/validity_mask.hpp +14 -5
  650. package/src/duckdb/src/include/duckdb/common/types/value.hpp +15 -2
  651. package/src/duckdb/src/include/duckdb/common/types/variant.hpp +202 -0
  652. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +118 -5
  653. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +8 -0
  654. package/src/duckdb/src/include/duckdb/common/types.hpp +26 -6
  655. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +50 -11
  656. package/src/duckdb/src/include/duckdb/common/virtual_file_system.hpp +6 -4
  657. package/src/duckdb/src/include/duckdb/common/winapi.hpp +0 -4
  658. package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +8 -6
  659. package/src/duckdb/src/include/duckdb/execution/executor.hpp +0 -2
  660. package/src/duckdb/src/include/duckdb/execution/expression_executor.hpp +4 -0
  661. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +21 -2
  662. package/src/duckdb/src/include/duckdb/execution/ht_entry.hpp +4 -0
  663. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +15 -16
  664. package/src/duckdb/src/include/duckdb/execution/index/art/art_builder.hpp +55 -0
  665. package/src/duckdb/src/include/duckdb/execution/index/art/art_key.hpp +0 -13
  666. package/src/duckdb/src/include/duckdb/execution/index/art/art_merger.hpp +1 -0
  667. package/src/duckdb/src/include/duckdb/execution/index/art/art_operator.hpp +113 -1
  668. package/src/duckdb/src/include/duckdb/execution/index/art/art_scanner.hpp +5 -2
  669. package/src/duckdb/src/include/duckdb/execution/index/art/base_leaf.hpp +2 -1
  670. package/src/duckdb/src/include/duckdb/execution/index/art/base_node.hpp +18 -15
  671. package/src/duckdb/src/include/duckdb/execution/index/art/iterator.hpp +1 -1
  672. package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +1 -1
  673. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +30 -3
  674. package/src/duckdb/src/include/duckdb/execution/index/art/node256.hpp +30 -8
  675. package/src/duckdb/src/include/duckdb/execution/index/art/node256_leaf.hpp +8 -5
  676. package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +36 -9
  677. package/src/duckdb/src/include/duckdb/execution/index/art/prefix.hpp +9 -20
  678. package/src/duckdb/src/include/duckdb/execution/index/bound_index.hpp +8 -6
  679. package/src/duckdb/src/include/duckdb/execution/index/fixed_size_allocator.hpp +21 -4
  680. package/src/duckdb/src/include/duckdb/execution/index/fixed_size_buffer.hpp +95 -11
  681. package/src/duckdb/src/include/duckdb/execution/index/unbound_index.hpp +22 -11
  682. package/src/duckdb/src/include/duckdb/execution/join_hashtable.hpp +6 -1
  683. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/distinct_aggregate_data.hpp +3 -2
  684. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_hash_aggregate.hpp +12 -8
  685. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_partitioned_aggregate.hpp +1 -1
  686. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_perfecthash_aggregate.hpp +1 -1
  687. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_streaming_window.hpp +2 -2
  688. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_ungrouped_aggregate.hpp +3 -2
  689. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_window.hpp +4 -2
  690. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_error.hpp +1 -1
  691. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_file_handle.hpp +3 -0
  692. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_multi_file_info.hpp +3 -3
  693. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_reader_options.hpp +1 -1
  694. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state.hpp +1 -1
  695. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state_machine.hpp +1 -1
  696. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/encode/csv_encoder.hpp +3 -0
  697. package/src/duckdb/src/include/duckdb/execution/operator/filter/physical_filter.hpp +2 -1
  698. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_batch_collector.hpp +1 -1
  699. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_buffered_batch_collector.hpp +1 -1
  700. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_buffered_collector.hpp +1 -1
  701. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_create_secret.hpp +3 -2
  702. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_execute.hpp +1 -1
  703. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_explain_analyze.hpp +2 -2
  704. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit.hpp +2 -2
  705. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit_percent.hpp +2 -2
  706. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_load.hpp +2 -2
  707. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_materialized_collector.hpp +1 -1
  708. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_pragma.hpp +2 -2
  709. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_prepare.hpp +3 -2
  710. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_reservoir_sample.hpp +4 -2
  711. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_reset.hpp +5 -4
  712. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +2 -2
  713. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_set.hpp +6 -3
  714. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_set_variable.hpp +1 -1
  715. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_streaming_limit.hpp +2 -2
  716. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_streaming_sample.hpp +2 -1
  717. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_transaction.hpp +4 -2
  718. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_update_extensions.hpp +3 -2
  719. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_vacuum.hpp +1 -1
  720. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_verify_vector.hpp +1 -1
  721. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_asof_join.hpp +2 -1
  722. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_blockwise_nl_join.hpp +3 -2
  723. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_comparison_join.hpp +2 -2
  724. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_cross_product.hpp +2 -2
  725. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_delim_join.hpp +4 -3
  726. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_hash_join.hpp +4 -4
  727. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_iejoin.hpp +5 -4
  728. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_join.hpp +2 -1
  729. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_left_delim_join.hpp +4 -3
  730. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_nested_loop_join.hpp +6 -5
  731. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp +3 -3
  732. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_positional_join.hpp +2 -2
  733. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_range_join.hpp +3 -3
  734. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_right_delim_join.hpp +4 -3
  735. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_order.hpp +13 -9
  736. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_top_n.hpp +2 -2
  737. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_copy_to_file.hpp +2 -2
  738. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +3 -3
  739. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_database.hpp +2 -1
  740. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +2 -2
  741. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_delete.hpp +2 -2
  742. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_export.hpp +2 -2
  743. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_insert.hpp +3 -3
  744. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_merge_into.hpp +87 -0
  745. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_update.hpp +2 -2
  746. package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_pivot.hpp +2 -1
  747. package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_projection.hpp +2 -7
  748. package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_tableinout_function.hpp +6 -1
  749. package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_unnest.hpp +2 -2
  750. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +4 -4
  751. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_dummy_scan.hpp +2 -2
  752. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_empty_result.hpp +2 -2
  753. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_expression_scan.hpp +4 -3
  754. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_positional_scan.hpp +2 -1
  755. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_table_scan.hpp +4 -3
  756. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_alter.hpp +2 -2
  757. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_attach.hpp +2 -2
  758. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_art_index.hpp +4 -4
  759. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_function.hpp +4 -2
  760. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_schema.hpp +4 -2
  761. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_sequence.hpp +4 -2
  762. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_table.hpp +2 -2
  763. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_type.hpp +1 -1
  764. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_view.hpp +4 -2
  765. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_detach.hpp +2 -2
  766. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_drop.hpp +2 -2
  767. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +2 -2
  768. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +2 -2
  769. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_union.hpp +2 -2
  770. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +23 -22
  771. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +7 -2
  772. package/src/duckdb/src/include/duckdb/execution/radix_partitioned_hashtable.hpp +4 -1
  773. package/src/duckdb/src/include/duckdb/execution/reservoir_sample.hpp +0 -1
  774. package/src/duckdb/src/include/duckdb/function/aggregate/distributive_functions.hpp +3 -3
  775. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +36 -11
  776. package/src/duckdb/src/include/duckdb/function/built_in_functions.hpp +1 -0
  777. package/src/duckdb/src/include/duckdb/function/cast/bound_cast_data.hpp +28 -0
  778. package/src/duckdb/src/include/duckdb/function/cast/cast_function_set.hpp +6 -1
  779. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +5 -1
  780. package/src/duckdb/src/include/duckdb/function/cast/variant/array_to_variant.hpp +66 -0
  781. package/src/duckdb/src/include/duckdb/function/cast/variant/json_to_variant.hpp +283 -0
  782. package/src/duckdb/src/include/duckdb/function/cast/variant/list_to_variant.hpp +70 -0
  783. package/src/duckdb/src/include/duckdb/function/cast/variant/primitive_to_variant.hpp +399 -0
  784. package/src/duckdb/src/include/duckdb/function/cast/variant/struct_to_variant.hpp +111 -0
  785. package/src/duckdb/src/include/duckdb/function/cast/variant/to_variant.hpp +66 -0
  786. package/src/duckdb/src/include/duckdb/function/cast/variant/to_variant_fwd.hpp +179 -0
  787. package/src/duckdb/src/include/duckdb/function/cast/variant/union_to_variant.hpp +59 -0
  788. package/src/duckdb/src/include/duckdb/function/cast/variant/variant_to_variant.hpp +275 -0
  789. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +2 -3
  790. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +28 -10
  791. package/src/duckdb/src/include/duckdb/function/create_sort_key.hpp +13 -0
  792. package/src/duckdb/src/include/duckdb/function/function_binder.hpp +3 -0
  793. package/src/duckdb/src/include/duckdb/function/function_list.hpp +1 -1
  794. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +25 -3
  795. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +18 -6
  796. package/src/duckdb/src/include/duckdb/function/pragma/pragma_functions.hpp +1 -1
  797. package/src/duckdb/src/include/duckdb/function/register_function_list_helper.hpp +34 -2
  798. package/src/duckdb/src/include/duckdb/function/scalar/compressed_materialization_functions.hpp +10 -0
  799. package/src/duckdb/src/include/duckdb/function/scalar/date_functions.hpp +6 -6
  800. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +5 -5
  801. package/src/duckdb/src/include/duckdb/function/scalar/list_functions.hpp +19 -19
  802. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +103 -103
  803. package/src/duckdb/src/include/duckdb/function/scalar/struct_functions.hpp +32 -0
  804. package/src/duckdb/src/include/duckdb/function/scalar/system_functions.hpp +1 -1
  805. package/src/duckdb/src/include/duckdb/function/scalar/variant_functions.hpp +38 -0
  806. package/src/duckdb/src/include/duckdb/function/scalar/variant_utils.hpp +85 -0
  807. package/src/duckdb/src/include/duckdb/function/table/arrow/arrow_duck_schema.hpp +8 -2
  808. package/src/duckdb/src/include/duckdb/function/table/arrow/arrow_type_info.hpp +2 -0
  809. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +26 -11
  810. package/src/duckdb/src/include/duckdb/function/table/direct_file_reader.hpp +39 -0
  811. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +2 -12
  812. package/src/duckdb/src/include/duckdb/function/table/read_file.hpp +83 -0
  813. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +13 -1
  814. package/src/duckdb/src/include/duckdb/function/table_function.hpp +8 -5
  815. package/src/duckdb/src/include/duckdb/function/window/window_aggregate_function.hpp +10 -10
  816. package/src/duckdb/src/include/duckdb/function/window/window_aggregator.hpp +25 -48
  817. package/src/duckdb/src/include/duckdb/function/window/window_collection.hpp +142 -0
  818. package/src/duckdb/src/include/duckdb/function/window/window_constant_aggregator.hpp +11 -12
  819. package/src/duckdb/src/include/duckdb/function/window/window_custom_aggregator.hpp +8 -8
  820. package/src/duckdb/src/include/duckdb/function/window/window_distinct_aggregator.hpp +10 -10
  821. package/src/duckdb/src/include/duckdb/function/window/window_executor.hpp +26 -40
  822. package/src/duckdb/src/include/duckdb/function/window/window_index_tree.hpp +2 -2
  823. package/src/duckdb/src/include/duckdb/function/window/window_merge_sort_tree.hpp +32 -30
  824. package/src/duckdb/src/include/duckdb/function/window/window_naive_aggregator.hpp +5 -3
  825. package/src/duckdb/src/include/duckdb/function/window/window_rank_function.hpp +17 -16
  826. package/src/duckdb/src/include/duckdb/function/window/window_rownumber_function.hpp +10 -9
  827. package/src/duckdb/src/include/duckdb/function/window/window_segment_tree.hpp +8 -8
  828. package/src/duckdb/src/include/duckdb/function/window/window_token_tree.hpp +6 -6
  829. package/src/duckdb/src/include/duckdb/function/window/window_value_function.hpp +44 -21
  830. package/src/duckdb/src/include/duckdb/logging/log_manager.hpp +12 -4
  831. package/src/duckdb/src/include/duckdb/logging/log_storage.hpp +271 -50
  832. package/src/duckdb/src/include/duckdb/logging/log_type.hpp +26 -3
  833. package/src/duckdb/src/include/duckdb/main/appender.hpp +37 -16
  834. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +22 -4
  835. package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +23 -6
  836. package/src/duckdb/src/include/duckdb/main/capi/extension_api.hpp +92 -8
  837. package/src/duckdb/src/include/duckdb/main/client_config.hpp +11 -70
  838. package/src/duckdb/src/include/duckdb/main/client_context.hpp +30 -5
  839. package/src/duckdb/src/include/duckdb/main/client_data.hpp +21 -23
  840. package/src/duckdb/src/include/duckdb/main/client_properties.hpp +3 -19
  841. package/src/duckdb/src/include/duckdb/main/config.hpp +48 -111
  842. package/src/duckdb/src/include/duckdb/main/connection.hpp +0 -1
  843. package/src/duckdb/src/include/duckdb/main/connection_manager.hpp +0 -1
  844. package/src/duckdb/src/include/duckdb/main/database.hpp +23 -27
  845. package/src/duckdb/src/include/duckdb/main/database_file_opener.hpp +1 -0
  846. package/src/duckdb/src/include/duckdb/main/database_file_path_manager.hpp +50 -0
  847. package/src/duckdb/src/include/duckdb/main/database_manager.hpp +21 -20
  848. package/src/duckdb/src/include/duckdb/main/database_path_and_type.hpp +3 -1
  849. package/src/duckdb/src/include/duckdb/main/db_instance_cache.hpp +8 -4
  850. package/src/duckdb/src/include/duckdb/main/error_manager.hpp +3 -1
  851. package/src/duckdb/src/include/duckdb/main/extension/extension_loader.hpp +120 -0
  852. package/src/duckdb/src/include/duckdb/main/extension.hpp +2 -2
  853. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +35 -0
  854. package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +2 -0
  855. package/src/duckdb/src/include/duckdb/main/extension_manager.hpp +59 -0
  856. package/src/duckdb/src/include/duckdb/main/extension_util.hpp +6 -77
  857. package/src/duckdb/src/include/duckdb/main/query_profiler.hpp +41 -23
  858. package/src/duckdb/src/include/duckdb/main/relation/create_table_relation.hpp +2 -0
  859. package/src/duckdb/src/include/duckdb/main/relation/create_view_relation.hpp +2 -0
  860. package/src/duckdb/src/include/duckdb/main/relation/delete_relation.hpp +2 -0
  861. package/src/duckdb/src/include/duckdb/main/relation/explain_relation.hpp +2 -0
  862. package/src/duckdb/src/include/duckdb/main/relation/insert_relation.hpp +2 -0
  863. package/src/duckdb/src/include/duckdb/main/relation/query_relation.hpp +1 -0
  864. package/src/duckdb/src/include/duckdb/main/relation/update_relation.hpp +2 -0
  865. package/src/duckdb/src/include/duckdb/main/relation/write_csv_relation.hpp +2 -0
  866. package/src/duckdb/src/include/duckdb/main/relation/write_parquet_relation.hpp +2 -0
  867. package/src/duckdb/src/include/duckdb/main/relation.hpp +3 -2
  868. package/src/duckdb/src/include/duckdb/main/secret/secret.hpp +4 -1
  869. package/src/duckdb/src/include/duckdb/main/secret/secret_manager.hpp +18 -18
  870. package/src/duckdb/src/include/duckdb/main/setting_info.hpp +109 -0
  871. package/src/duckdb/src/include/duckdb/main/settings.hpp +168 -184
  872. package/src/duckdb/src/include/duckdb/main/valid_checker.hpp +5 -2
  873. package/src/duckdb/src/include/duckdb/optimizer/build_probe_side_optimizer.hpp +1 -1
  874. package/src/duckdb/src/include/duckdb/optimizer/column_lifetime_analyzer.hpp +1 -1
  875. package/src/duckdb/src/include/duckdb/optimizer/compressed_materialization.hpp +4 -0
  876. package/src/duckdb/src/include/duckdb/optimizer/cte_inlining.hpp +50 -0
  877. package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +7 -3
  878. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_order_optimizer.hpp +3 -0
  879. package/src/duckdb/src/include/duckdb/optimizer/late_materialization.hpp +1 -1
  880. package/src/duckdb/src/include/duckdb/optimizer/rule/date_trunc_simplification.hpp +73 -0
  881. package/src/duckdb/src/include/duckdb/optimizer/rule/list.hpp +1 -0
  882. package/src/duckdb/src/include/duckdb/parallel/interrupt.hpp +9 -3
  883. package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +1 -0
  884. package/src/duckdb/src/include/duckdb/parser/common_table_expression_info.hpp +3 -1
  885. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +18 -8
  886. package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +3 -4
  887. package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_info.hpp +6 -4
  888. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +2 -0
  889. package/src/duckdb/src/include/duckdb/parser/parsed_expression_iterator.hpp +14 -0
  890. package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
  891. package/src/duckdb/src/include/duckdb/parser/qualified_name.hpp +2 -0
  892. package/src/duckdb/src/include/duckdb/parser/query_node/cte_node.hpp +2 -0
  893. package/src/duckdb/src/include/duckdb/parser/statement/list.hpp +1 -0
  894. package/src/duckdb/src/include/duckdb/parser/statement/merge_into_statement.hpp +72 -0
  895. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -4
  896. package/src/duckdb/src/include/duckdb/parser/statement/update_statement.hpp +1 -0
  897. package/src/duckdb/src/include/duckdb/parser/tableref/bound_ref_wrapper.hpp +38 -0
  898. package/src/duckdb/src/include/duckdb/parser/tableref/column_data_ref.hpp +4 -9
  899. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +2 -0
  900. package/src/duckdb/src/include/duckdb/parser/tableref/list.hpp +1 -0
  901. package/src/duckdb/src/include/duckdb/parser/tableref/showref.hpp +5 -1
  902. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +4 -0
  903. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +3 -0
  904. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +9 -2
  905. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +5 -0
  906. package/src/duckdb/src/include/duckdb/planner/binder.hpp +107 -11
  907. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -0
  908. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +1 -0
  909. package/src/duckdb/src/include/duckdb/planner/bound_tokens.hpp +3 -0
  910. package/src/duckdb/src/include/duckdb/planner/constraints/bound_check_constraint.hpp +8 -0
  911. package/src/duckdb/src/include/duckdb/planner/constraints/bound_foreign_key_constraint.hpp +4 -0
  912. package/src/duckdb/src/include/duckdb/planner/constraints/bound_not_null_constraint.hpp +4 -0
  913. package/src/duckdb/src/include/duckdb/planner/constraints/bound_unique_constraint.hpp +5 -0
  914. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +2 -2
  915. package/src/duckdb/src/include/duckdb/planner/expression_binder/lateral_binder.hpp +2 -2
  916. package/src/duckdb/src/include/duckdb/planner/expression_binder/projection_binder.hpp +37 -0
  917. package/src/duckdb/src/include/duckdb/planner/expression_binder/table_function_binder.hpp +3 -1
  918. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +3 -8
  919. package/src/duckdb/src/include/duckdb/planner/expression_iterator.hpp +18 -0
  920. package/src/duckdb/src/include/duckdb/planner/extension_callback.hpp +8 -0
  921. package/src/duckdb/src/include/duckdb/planner/logical_operator_deep_copy.hpp +67 -0
  922. package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +1 -0
  923. package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +1 -0
  924. package/src/duckdb/src/include/duckdb/planner/operator/logical_aggregate.hpp +3 -0
  925. package/src/duckdb/src/include/duckdb/planner/operator/logical_cte.hpp +1 -1
  926. package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +1 -1
  927. package/src/duckdb/src/include/duckdb/planner/operator/logical_dependent_join.hpp +3 -3
  928. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +2 -0
  929. package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +28 -22
  930. package/src/duckdb/src/include/duckdb/planner/operator/logical_join.hpp +1 -1
  931. package/src/duckdb/src/include/duckdb/planner/operator/logical_materialized_cte.hpp +5 -2
  932. package/src/duckdb/src/include/duckdb/planner/operator/logical_merge_into.hpp +75 -0
  933. package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +2 -0
  934. package/src/duckdb/src/include/duckdb/planner/operator/logical_update.hpp +1 -1
  935. package/src/duckdb/src/include/duckdb/planner/query_node/bound_cte_node.hpp +2 -0
  936. package/src/duckdb/src/include/duckdb/planner/subquery/flatten_dependent_join.hpp +2 -2
  937. package/src/duckdb/src/include/duckdb/planner/subquery/has_correlated_expressions.hpp +2 -2
  938. package/src/duckdb/src/include/duckdb/planner/subquery/rewrite_cte_scan.hpp +2 -2
  939. package/src/duckdb/src/include/duckdb/planner/tableref/bound_joinref.hpp +1 -1
  940. package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +26 -0
  941. package/src/duckdb/src/include/duckdb/storage/block.hpp +1 -1
  942. package/src/duckdb/src/include/duckdb/storage/block_manager.hpp +24 -8
  943. package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +3 -1
  944. package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +55 -36
  945. package/src/duckdb/src/include/duckdb/storage/caching_file_system.hpp +10 -4
  946. package/src/duckdb/src/include/duckdb/storage/checkpoint/row_group_writer.hpp +19 -6
  947. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_reader.hpp +1 -1
  948. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +15 -8
  949. package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +6 -8
  950. package/src/duckdb/src/include/duckdb/storage/compression/alp/algorithm/alp.hpp +2 -1
  951. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_analyze.hpp +6 -1
  952. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_fetch.hpp +1 -1
  953. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_analyze.hpp +9 -3
  954. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_fetch.hpp +1 -1
  955. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_scan.hpp +1 -1
  956. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/packed_data.hpp +3 -1
  957. package/src/duckdb/src/include/duckdb/storage/compression/dict_fsst/compression.hpp +1 -1
  958. package/src/duckdb/src/include/duckdb/storage/compression/dict_fsst/decompression.hpp +1 -1
  959. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas.hpp +1 -1
  960. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_fetch.hpp +1 -1
  961. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_scan.hpp +7 -2
  962. package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +5 -0
  963. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +14 -9
  964. package/src/duckdb/src/include/duckdb/storage/external_file_cache.hpp +6 -5
  965. package/src/duckdb/src/include/duckdb/storage/in_memory_block_manager.hpp +7 -2
  966. package/src/duckdb/src/include/duckdb/storage/magic_bytes.hpp +2 -1
  967. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_manager.hpp +24 -7
  968. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_reader.hpp +7 -0
  969. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_writer.hpp +1 -0
  970. package/src/duckdb/src/include/duckdb/storage/optimistic_data_writer.hpp +10 -3
  971. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +14 -3
  972. package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +65 -20
  973. package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +6 -6
  974. package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +2 -2
  975. package/src/duckdb/src/include/duckdb/storage/statistics/string_stats.hpp +2 -0
  976. package/src/duckdb/src/include/duckdb/storage/storage_extension.hpp +4 -4
  977. package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +80 -20
  978. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +43 -17
  979. package/src/duckdb/src/include/duckdb/storage/storage_options.hpp +21 -0
  980. package/src/duckdb/src/include/duckdb/storage/table/array_column_data.hpp +5 -4
  981. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +2 -2
  982. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +13 -7
  983. package/src/duckdb/src/include/duckdb/storage/table/column_data_checkpointer.hpp +5 -2
  984. package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +10 -7
  985. package/src/duckdb/src/include/duckdb/storage/table/data_table_info.hpp +3 -3
  986. package/src/duckdb/src/include/duckdb/storage/table/in_memory_checkpoint.hpp +93 -0
  987. package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +5 -4
  988. package/src/duckdb/src/include/duckdb/storage/table/persistent_table_data.hpp +1 -0
  989. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +20 -5
  990. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +16 -4
  991. package/src/duckdb/src/include/duckdb/storage/table/row_group_segment_tree.hpp +5 -0
  992. package/src/duckdb/src/include/duckdb/storage/table/row_id_column_data.hpp +68 -0
  993. package/src/duckdb/src/include/duckdb/storage/table/segment_lock.hpp +4 -0
  994. package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +34 -14
  995. package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +5 -4
  996. package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +5 -4
  997. package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +55 -46
  998. package/src/duckdb/src/include/duckdb/storage/table/update_segment.hpp +5 -2
  999. package/src/duckdb/src/include/duckdb/storage/temporary_file_manager.hpp +17 -6
  1000. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +2 -1
  1001. package/src/duckdb/src/include/duckdb/transaction/duck_transaction.hpp +5 -1
  1002. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +1 -0
  1003. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +3 -1
  1004. package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +22 -1
  1005. package/src/duckdb/src/include/duckdb/transaction/undo_buffer_allocator.hpp +2 -0
  1006. package/src/duckdb/src/include/duckdb/transaction/update_info.hpp +4 -1
  1007. package/src/duckdb/src/include/duckdb/transaction/wal_write_state.hpp +1 -1
  1008. package/src/duckdb/src/include/duckdb/verification/explain_statement_verifier.hpp +23 -0
  1009. package/src/duckdb/src/include/duckdb/verification/statement_verifier.hpp +14 -7
  1010. package/src/duckdb/src/include/duckdb.h +537 -121
  1011. package/src/duckdb/src/include/duckdb_extension.h +122 -14
  1012. package/src/duckdb/src/logging/log_manager.cpp +59 -15
  1013. package/src/duckdb/src/logging/log_storage.cpp +672 -128
  1014. package/src/duckdb/src/logging/log_types.cpp +63 -0
  1015. package/src/duckdb/src/main/appender.cpp +129 -88
  1016. package/src/duckdb/src/main/attached_database.cpp +63 -55
  1017. package/src/duckdb/src/main/capi/aggregate_function-c.cpp +18 -9
  1018. package/src/duckdb/src/main/capi/appender-c.cpp +82 -28
  1019. package/src/duckdb/src/main/capi/arrow-c.cpp +181 -17
  1020. package/src/duckdb/src/main/capi/config-c.cpp +18 -3
  1021. package/src/duckdb/src/main/capi/data_chunk-c.cpp +22 -10
  1022. package/src/duckdb/src/main/capi/duckdb-c.cpp +64 -21
  1023. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +13 -7
  1024. package/src/duckdb/src/main/capi/error_data-c.cpp +46 -0
  1025. package/src/duckdb/src/main/capi/expression-c.cpp +57 -0
  1026. package/src/duckdb/src/main/capi/helper-c.cpp +227 -39
  1027. package/src/duckdb/src/main/capi/logical_types-c.cpp +48 -28
  1028. package/src/duckdb/src/main/capi/prepared-c.cpp +68 -10
  1029. package/src/duckdb/src/main/capi/profiling_info-c.cpp +6 -4
  1030. package/src/duckdb/src/main/capi/result-c.cpp +16 -95
  1031. package/src/duckdb/src/main/capi/scalar_function-c.cpp +43 -1
  1032. package/src/duckdb/src/main/capi/table_function-c.cpp +9 -0
  1033. package/src/duckdb/src/main/client_config.cpp +21 -0
  1034. package/src/duckdb/src/main/client_context.cpp +179 -95
  1035. package/src/duckdb/src/main/client_context_file_opener.cpp +1 -0
  1036. package/src/duckdb/src/main/client_data.cpp +139 -1
  1037. package/src/duckdb/src/main/client_verify.cpp +14 -6
  1038. package/src/duckdb/src/main/config.cpp +214 -121
  1039. package/src/duckdb/src/main/connection.cpp +2 -5
  1040. package/src/duckdb/src/main/database.cpp +31 -58
  1041. package/src/duckdb/src/main/database_file_path_manager.cpp +59 -0
  1042. package/src/duckdb/src/main/database_manager.cpp +148 -107
  1043. package/src/duckdb/src/main/database_path_and_type.cpp +4 -3
  1044. package/src/duckdb/src/main/db_instance_cache.cpp +64 -35
  1045. package/src/duckdb/src/main/error_manager.cpp +2 -1
  1046. package/src/duckdb/src/main/extension/extension_helper.cpp +3 -22
  1047. package/src/duckdb/src/main/extension/extension_install.cpp +6 -6
  1048. package/src/duckdb/src/main/extension/extension_load.cpp +24 -9
  1049. package/src/duckdb/src/main/extension/extension_loader.cpp +234 -0
  1050. package/src/duckdb/src/main/extension_manager.cpp +115 -0
  1051. package/src/duckdb/src/main/http/http_util.cpp +21 -6
  1052. package/src/duckdb/src/main/profiling_info.cpp +8 -2
  1053. package/src/duckdb/src/main/query_profiler.cpp +65 -30
  1054. package/src/duckdb/src/main/query_result.cpp +1 -1
  1055. package/src/duckdb/src/main/relation/create_table_relation.cpp +8 -0
  1056. package/src/duckdb/src/main/relation/create_view_relation.cpp +8 -0
  1057. package/src/duckdb/src/main/relation/delete_relation.cpp +8 -0
  1058. package/src/duckdb/src/main/relation/explain_relation.cpp +8 -0
  1059. package/src/duckdb/src/main/relation/insert_relation.cpp +8 -0
  1060. package/src/duckdb/src/main/relation/query_relation.cpp +27 -0
  1061. package/src/duckdb/src/main/relation/update_relation.cpp +8 -0
  1062. package/src/duckdb/src/main/relation/write_csv_relation.cpp +8 -0
  1063. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +8 -0
  1064. package/src/duckdb/src/main/relation.cpp +2 -2
  1065. package/src/duckdb/src/main/secret/secret_manager.cpp +8 -7
  1066. package/src/duckdb/src/main/settings/autogenerated_settings.cpp +50 -645
  1067. package/src/duckdb/src/main/settings/custom_settings.cpp +111 -152
  1068. package/src/duckdb/src/main/valid_checker.cpp +10 -4
  1069. package/src/duckdb/src/optimizer/build_probe_side_optimizer.cpp +7 -5
  1070. package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +7 -7
  1071. package/src/duckdb/src/optimizer/compressed_materialization/compress_comparison_join.cpp +11 -7
  1072. package/src/duckdb/src/optimizer/compressed_materialization.cpp +56 -39
  1073. package/src/duckdb/src/optimizer/cte_inlining.cpp +225 -0
  1074. package/src/duckdb/src/optimizer/empty_result_pullup.cpp +8 -1
  1075. package/src/duckdb/src/optimizer/filter_combiner.cpp +12 -7
  1076. package/src/duckdb/src/optimizer/filter_pushdown.cpp +12 -3
  1077. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +18 -2
  1078. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +1 -0
  1079. package/src/duckdb/src/optimizer/join_order/plan_enumerator.cpp +4 -3
  1080. package/src/duckdb/src/optimizer/join_order/query_graph_manager.cpp +11 -15
  1081. package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +40 -23
  1082. package/src/duckdb/src/optimizer/late_materialization.cpp +16 -23
  1083. package/src/duckdb/src/optimizer/optimizer.cpp +15 -0
  1084. package/src/duckdb/src/optimizer/pushdown/pushdown_aggregate.cpp +15 -20
  1085. package/src/duckdb/src/optimizer/pushdown/pushdown_get.cpp +4 -1
  1086. package/src/duckdb/src/optimizer/pushdown/pushdown_left_join.cpp +11 -13
  1087. package/src/duckdb/src/optimizer/pushdown/pushdown_outer_join.cpp +201 -0
  1088. package/src/duckdb/src/optimizer/pushdown/pushdown_projection.cpp +20 -26
  1089. package/src/duckdb/src/optimizer/pushdown/pushdown_set_operation.cpp +11 -14
  1090. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +2 -1
  1091. package/src/duckdb/src/optimizer/rule/comparison_simplification.cpp +3 -7
  1092. package/src/duckdb/src/optimizer/rule/date_trunc_simplification.cpp +446 -0
  1093. package/src/duckdb/src/optimizer/rule/join_dependent_filter.cpp +3 -9
  1094. package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +1 -6
  1095. package/src/duckdb/src/optimizer/rule/timestamp_comparison.cpp +3 -6
  1096. package/src/duckdb/src/optimizer/statistics/operator/propagate_aggregate.cpp +33 -1
  1097. package/src/duckdb/src/parallel/event.cpp +1 -3
  1098. package/src/duckdb/src/parallel/executor.cpp +0 -7
  1099. package/src/duckdb/src/parallel/pipeline.cpp +2 -2
  1100. package/src/duckdb/src/parallel/pipeline_executor.cpp +2 -2
  1101. package/src/duckdb/src/parallel/task_scheduler.cpp +146 -34
  1102. package/src/duckdb/src/parallel/thread_context.cpp +2 -9
  1103. package/src/duckdb/src/parser/column_definition.cpp +3 -6
  1104. package/src/duckdb/src/parser/expression/window_expression.cpp +3 -0
  1105. package/src/duckdb/src/parser/parsed_data/attach_info.cpp +8 -35
  1106. package/src/duckdb/src/parser/parsed_data/copy_info.cpp +27 -7
  1107. package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +8 -13
  1108. package/src/duckdb/src/parser/parsed_data/create_info.cpp +16 -0
  1109. package/src/duckdb/src/parser/parsed_data/create_macro_info.cpp +7 -17
  1110. package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +1 -14
  1111. package/src/duckdb/src/parser/parsed_data/create_type_info.cpp +1 -12
  1112. package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +1 -13
  1113. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +22 -0
  1114. package/src/duckdb/src/parser/parser.cpp +5 -0
  1115. package/src/duckdb/src/parser/qualified_name.cpp +26 -0
  1116. package/src/duckdb/src/parser/query_node/cte_node.cpp +1 -0
  1117. package/src/duckdb/src/parser/query_node/select_node.cpp +1 -0
  1118. package/src/duckdb/src/parser/query_node.cpp +1 -0
  1119. package/src/duckdb/src/parser/statement/export_statement.cpp +1 -3
  1120. package/src/duckdb/src/parser/statement/merge_into_statement.cpp +167 -0
  1121. package/src/duckdb/src/parser/statement/relation_statement.cpp +1 -4
  1122. package/src/duckdb/src/parser/statement/update_statement.cpp +19 -16
  1123. package/src/duckdb/src/parser/tableref/bound_ref_wrapper.cpp +29 -0
  1124. package/src/duckdb/src/parser/tableref/column_data_ref.cpp +26 -1
  1125. package/src/duckdb/src/parser/tableref/joinref.cpp +3 -2
  1126. package/src/duckdb/src/parser/tableref/showref.cpp +14 -0
  1127. package/src/duckdb/src/parser/tableref/table_function.cpp +6 -1
  1128. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +0 -1
  1129. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +6 -1
  1130. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +8 -11
  1131. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +3 -0
  1132. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +7 -5
  1133. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +4 -4
  1134. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +16 -80
  1135. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +29 -22
  1136. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +0 -1
  1137. package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +1 -2
  1138. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +22 -14
  1139. package/src/duckdb/src/parser/transform/statement/transform_merge_into.cpp +111 -0
  1140. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +2 -0
  1141. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +1 -1
  1142. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +22 -4
  1143. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +3 -1
  1144. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +12 -6
  1145. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +3 -3
  1146. package/src/duckdb/src/parser/transformer.cpp +8 -7
  1147. package/src/duckdb/src/planner/bind_context.cpp +19 -2
  1148. package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +13 -6
  1149. package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +3 -0
  1150. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +18 -4
  1151. package/src/duckdb/src/planner/binder/expression/bind_macro_expression.cpp +8 -25
  1152. package/src/duckdb/src/planner/binder/expression/bind_operator_expression.cpp +31 -4
  1153. package/src/duckdb/src/planner/binder/expression/bind_unnest_expression.cpp +2 -0
  1154. package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +48 -11
  1155. package/src/duckdb/src/planner/binder/query_node/bind_cte_node.cpp +9 -1
  1156. package/src/duckdb/src/planner/binder/query_node/bind_recursive_cte_node.cpp +4 -0
  1157. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +6 -6
  1158. package/src/duckdb/src/planner/binder/query_node/bind_table_macro_node.cpp +11 -26
  1159. package/src/duckdb/src/planner/binder/query_node/plan_cte_node.cpp +4 -3
  1160. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +18 -10
  1161. package/src/duckdb/src/planner/binder/statement/bind_attach.cpp +15 -0
  1162. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +239 -58
  1163. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +153 -55
  1164. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +30 -25
  1165. package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +2 -3
  1166. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +28 -3
  1167. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +36 -0
  1168. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +282 -322
  1169. package/src/duckdb/src/planner/binder/statement/bind_merge_into.cpp +343 -0
  1170. package/src/duckdb/src/planner/binder/statement/bind_pragma.cpp +20 -3
  1171. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +23 -14
  1172. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +37 -27
  1173. package/src/duckdb/src/planner/binder/tableref/bind_bound_table_ref.cpp +13 -0
  1174. package/src/duckdb/src/planner/binder/tableref/bind_column_data_ref.cpp +4 -1
  1175. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +127 -38
  1176. package/src/duckdb/src/planner/binder/tableref/bind_showref.cpp +30 -0
  1177. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +81 -3
  1178. package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +7 -12
  1179. package/src/duckdb/src/planner/binder/tableref/plan_table_function.cpp +15 -1
  1180. package/src/duckdb/src/planner/binder.cpp +44 -177
  1181. package/src/duckdb/src/planner/bound_result_modifier.cpp +8 -0
  1182. package/src/duckdb/src/planner/collation_binding.cpp +2 -1
  1183. package/src/duckdb/src/planner/expression.cpp +1 -1
  1184. package/src/duckdb/src/planner/expression_binder/lateral_binder.cpp +9 -13
  1185. package/src/duckdb/src/planner/expression_binder/order_binder.cpp +4 -2
  1186. package/src/duckdb/src/planner/expression_binder/projection_binder.cpp +46 -0
  1187. package/src/duckdb/src/planner/expression_binder/table_function_binder.cpp +12 -6
  1188. package/src/duckdb/src/planner/expression_binder.cpp +3 -1
  1189. package/src/duckdb/src/planner/expression_iterator.cpp +31 -0
  1190. package/src/duckdb/src/planner/logical_operator_deep_copy.cpp +264 -0
  1191. package/src/duckdb/src/planner/logical_operator_visitor.cpp +18 -4
  1192. package/src/duckdb/src/planner/operator/logical_aggregate.cpp +2 -1
  1193. package/src/duckdb/src/planner/operator/logical_comparison_join.cpp +4 -2
  1194. package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +3 -0
  1195. package/src/duckdb/src/planner/operator/logical_dependent_join.cpp +2 -2
  1196. package/src/duckdb/src/planner/operator/logical_get.cpp +7 -2
  1197. package/src/duckdb/src/planner/operator/logical_insert.cpp +5 -2
  1198. package/src/duckdb/src/planner/operator/logical_join.cpp +6 -7
  1199. package/src/duckdb/src/planner/operator/logical_materialized_cte.cpp +1 -0
  1200. package/src/duckdb/src/planner/operator/logical_merge_into.cpp +43 -0
  1201. package/src/duckdb/src/planner/operator/logical_recursive_cte.cpp +8 -0
  1202. package/src/duckdb/src/planner/planner.cpp +4 -2
  1203. package/src/duckdb/src/planner/pragma_handler.cpp +1 -1
  1204. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +85 -18
  1205. package/src/duckdb/src/planner/subquery/has_correlated_expressions.cpp +1 -1
  1206. package/src/duckdb/src/planner/subquery/rewrite_cte_scan.cpp +2 -2
  1207. package/src/duckdb/src/planner/table_binding.cpp +6 -12
  1208. package/src/duckdb/src/storage/block.cpp +2 -1
  1209. package/src/duckdb/src/storage/buffer/block_handle.cpp +7 -4
  1210. package/src/duckdb/src/storage/buffer/block_manager.cpp +14 -6
  1211. package/src/duckdb/src/storage/buffer/buffer_pool.cpp +2 -2
  1212. package/src/duckdb/src/storage/buffer_manager.cpp +45 -13
  1213. package/src/duckdb/src/storage/caching_file_system.cpp +20 -12
  1214. package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +26 -3
  1215. package/src/duckdb/src/storage/checkpoint/table_data_reader.cpp +3 -1
  1216. package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +56 -35
  1217. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +1 -1
  1218. package/src/duckdb/src/storage/checkpoint_manager.cpp +12 -11
  1219. package/src/duckdb/src/storage/compression/bitpacking.cpp +5 -3
  1220. package/src/duckdb/src/storage/compression/dict_fsst/compression.cpp +48 -25
  1221. package/src/duckdb/src/storage/compression/dict_fsst/decompression.cpp +10 -13
  1222. package/src/duckdb/src/storage/compression/dict_fsst.cpp +2 -2
  1223. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +10 -5
  1224. package/src/duckdb/src/storage/compression/fsst.cpp +3 -2
  1225. package/src/duckdb/src/storage/compression/rle.cpp +1 -1
  1226. package/src/duckdb/src/storage/compression/zstd.cpp +5 -6
  1227. package/src/duckdb/src/storage/data_table.cpp +169 -146
  1228. package/src/duckdb/src/storage/external_file_cache.cpp +6 -6
  1229. package/src/duckdb/src/storage/local_storage.cpp +133 -69
  1230. package/src/duckdb/src/storage/magic_bytes.cpp +3 -2
  1231. package/src/duckdb/src/storage/metadata/metadata_manager.cpp +147 -34
  1232. package/src/duckdb/src/storage/metadata/metadata_reader.cpp +26 -3
  1233. package/src/duckdb/src/storage/metadata/metadata_writer.cpp +7 -0
  1234. package/src/duckdb/src/storage/open_file_storage_extension.cpp +3 -3
  1235. package/src/duckdb/src/storage/optimistic_data_writer.cpp +5 -3
  1236. package/src/duckdb/src/storage/partial_block_manager.cpp +26 -5
  1237. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +72 -22
  1238. package/src/duckdb/src/storage/serialization/serialize_macro_function.cpp +9 -3
  1239. package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +2 -0
  1240. package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +12 -2
  1241. package/src/duckdb/src/storage/serialization/serialize_types.cpp +14 -0
  1242. package/src/duckdb/src/storage/single_file_block_manager.cpp +381 -86
  1243. package/src/duckdb/src/storage/standard_buffer_manager.cpp +86 -30
  1244. package/src/duckdb/src/storage/statistics/base_statistics.cpp +3 -3
  1245. package/src/duckdb/src/storage/statistics/string_stats.cpp +10 -2
  1246. package/src/duckdb/src/storage/statistics/struct_stats.cpp +1 -1
  1247. package/src/duckdb/src/storage/storage_info.cpp +13 -7
  1248. package/src/duckdb/src/storage/storage_manager.cpp +110 -35
  1249. package/src/duckdb/src/storage/table/array_column_data.cpp +10 -5
  1250. package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +22 -15
  1251. package/src/duckdb/src/storage/table/column_data.cpp +76 -23
  1252. package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +31 -17
  1253. package/src/duckdb/src/storage/table/column_segment.cpp +23 -21
  1254. package/src/duckdb/src/storage/table/in_memory_checkpoint.cpp +136 -0
  1255. package/src/duckdb/src/storage/table/list_column_data.cpp +11 -5
  1256. package/src/duckdb/src/storage/table/row_group.cpp +231 -159
  1257. package/src/duckdb/src/storage/table/row_group_collection.cpp +157 -54
  1258. package/src/duckdb/src/storage/table/row_id_column_data.cpp +174 -0
  1259. package/src/duckdb/src/storage/table/row_version_manager.cpp +1 -1
  1260. package/src/duckdb/src/storage/table/standard_column_data.cpp +21 -8
  1261. package/src/duckdb/src/storage/table/struct_column_data.cpp +25 -9
  1262. package/src/duckdb/src/storage/table/update_segment.cpp +123 -15
  1263. package/src/duckdb/src/storage/table_index_list.cpp +137 -73
  1264. package/src/duckdb/src/storage/temporary_file_manager.cpp +103 -28
  1265. package/src/duckdb/src/storage/wal_replay.cpp +158 -36
  1266. package/src/duckdb/src/storage/write_ahead_log.cpp +102 -17
  1267. package/src/duckdb/src/transaction/commit_state.cpp +20 -0
  1268. package/src/duckdb/src/transaction/duck_transaction.cpp +14 -12
  1269. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +66 -35
  1270. package/src/duckdb/src/transaction/meta_transaction.cpp +85 -23
  1271. package/src/duckdb/src/transaction/rollback_state.cpp +7 -0
  1272. package/src/duckdb/src/transaction/transaction_context.cpp +3 -4
  1273. package/src/duckdb/src/transaction/undo_buffer.cpp +5 -4
  1274. package/src/duckdb/src/transaction/undo_buffer_allocator.cpp +1 -0
  1275. package/src/duckdb/src/transaction/wal_write_state.cpp +7 -5
  1276. package/src/duckdb/src/verification/explain_statement_verifier.cpp +16 -0
  1277. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
  1278. package/src/duckdb/src/verification/statement_verifier.cpp +10 -5
  1279. package/src/duckdb/third_party/brotli/common/shared_dictionary.cpp +4 -4
  1280. package/src/duckdb/third_party/fmt/include/fmt/core.h +6 -12
  1281. package/src/duckdb/third_party/fmt/include/fmt/format-inl.h +5 -1
  1282. package/src/duckdb/third_party/fmt/include/fmt/format.h +34 -24
  1283. package/src/duckdb/third_party/fmt/include/fmt/printf.h +49 -21
  1284. package/src/duckdb/third_party/httplib/httplib.hpp +19 -6
  1285. package/src/duckdb/third_party/jaro_winkler/details/jaro_impl.hpp +4 -4
  1286. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +3 -0
  1287. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +56 -1
  1288. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +744 -733
  1289. package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +6 -1
  1290. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +19098 -18654
  1291. package/src/duckdb/third_party/mbedtls/include/des_alt.h +1 -1
  1292. package/src/duckdb/third_party/mbedtls/include/mbedtls/aes_alt.h +1 -1
  1293. package/src/duckdb/third_party/mbedtls/include/mbedtls/aria_alt.h +1 -1
  1294. package/src/duckdb/third_party/mbedtls/include/mbedtls/block_cipher.h +1 -1
  1295. package/src/duckdb/third_party/mbedtls/include/mbedtls/build_info.h +4 -4
  1296. package/src/duckdb/third_party/mbedtls/include/mbedtls/camellia_alt.h +1 -1
  1297. package/src/duckdb/third_party/mbedtls/include/mbedtls/ccm_alt.h +1 -1
  1298. package/src/duckdb/third_party/mbedtls/include/mbedtls/chacha20.h +1 -1
  1299. package/src/duckdb/third_party/mbedtls/include/mbedtls/chachapoly.h +1 -1
  1300. package/src/duckdb/third_party/mbedtls/include/mbedtls/cmac.h +1 -1
  1301. package/src/duckdb/third_party/mbedtls/include/mbedtls/config_psa.h +1 -1
  1302. package/src/duckdb/third_party/mbedtls/include/mbedtls/ecdsa.h +1 -1
  1303. package/src/duckdb/third_party/mbedtls/include/mbedtls/gcm_alt.h +1 -1
  1304. package/src/duckdb/third_party/mbedtls/include/mbedtls/mbedtls_config.h +5 -1
  1305. package/src/duckdb/third_party/mbedtls/include/mbedtls/md5.h +1 -1
  1306. package/src/duckdb/third_party/mbedtls/include/mbedtls/nist_kw.h +1 -1
  1307. package/src/duckdb/third_party/mbedtls/include/mbedtls/pkcs12.h +1 -1
  1308. package/src/duckdb/third_party/mbedtls/include/mbedtls/pkcs5.h +1 -1
  1309. package/src/duckdb/third_party/mbedtls/include/mbedtls/psa_util.h +1 -1
  1310. package/src/duckdb/third_party/mbedtls/include/mbedtls/ripemd160.h +1 -1
  1311. package/src/duckdb/third_party/mbedtls/include/mbedtls/sha3.h +1 -1
  1312. package/src/duckdb/third_party/mbedtls/include/mbedtls/threading.h +1 -1
  1313. package/src/duckdb/third_party/mbedtls/include/mbedtls/timing.h +1 -1
  1314. package/src/duckdb/third_party/mbedtls/include/mbedtls_wrapper.hpp +16 -7
  1315. package/src/duckdb/third_party/mbedtls/include/platform_alt.h +1 -1
  1316. package/src/duckdb/third_party/mbedtls/include/psa/build_info.h +20 -0
  1317. package/src/duckdb/third_party/mbedtls/include/psa/crypto.h +1 -1
  1318. package/src/duckdb/third_party/mbedtls/include/psa/crypto_config.h +1 -1
  1319. package/src/duckdb/third_party/mbedtls/include/psa/crypto_se_driver.h +1 -0
  1320. package/src/duckdb/third_party/mbedtls/include/rsa_alt.h +1 -1
  1321. package/src/duckdb/third_party/mbedtls/include/sha1_alt.h +1 -1
  1322. package/src/duckdb/third_party/mbedtls/include/sha256_alt.h +1 -1
  1323. package/src/duckdb/third_party/mbedtls/include/sha512_alt.h +1 -1
  1324. package/src/duckdb/third_party/mbedtls/include/ssl_misc.h +1 -1
  1325. package/src/duckdb/third_party/mbedtls/library/aes.cpp +1 -1
  1326. package/src/duckdb/third_party/mbedtls/library/aesce.h +136 -1
  1327. package/src/duckdb/third_party/mbedtls/library/alignment.h +9 -9
  1328. package/src/duckdb/third_party/mbedtls/library/asn1parse.cpp +1 -1
  1329. package/src/duckdb/third_party/mbedtls/library/asn1write.cpp +6 -3
  1330. package/src/duckdb/third_party/mbedtls/library/base64.cpp +48 -24
  1331. package/src/duckdb/third_party/mbedtls/library/base64_internal.h +45 -1
  1332. package/src/duckdb/third_party/mbedtls/library/bignum.cpp +3 -3
  1333. package/src/duckdb/third_party/mbedtls/library/bignum_core.cpp +16 -14
  1334. package/src/duckdb/third_party/mbedtls/library/bignum_core.h +10 -18
  1335. package/src/duckdb/third_party/mbedtls/library/block_cipher_internal.h +99 -1
  1336. package/src/duckdb/third_party/mbedtls/library/check_crypto_config.h +141 -1
  1337. package/src/duckdb/third_party/mbedtls/library/cipher.cpp +18 -12
  1338. package/src/duckdb/third_party/mbedtls/library/cipher_invasive.h +1 -0
  1339. package/src/duckdb/third_party/mbedtls/library/cipher_wrap.cpp +110 -10
  1340. package/src/duckdb/third_party/mbedtls/library/cipher_wrap.h +1 -1
  1341. package/src/duckdb/third_party/mbedtls/library/common.h +20 -4
  1342. package/src/duckdb/third_party/mbedtls/library/constant_time.cpp +1 -1
  1343. package/src/duckdb/third_party/mbedtls/library/constant_time_impl.h +28 -43
  1344. package/src/duckdb/third_party/mbedtls/library/constant_time_internal.h +24 -24
  1345. package/src/duckdb/third_party/mbedtls/library/ctr.h +35 -1
  1346. package/src/duckdb/third_party/mbedtls/library/gcm.cpp +2 -2
  1347. package/src/duckdb/third_party/mbedtls/library/md.cpp +11 -11
  1348. package/src/duckdb/third_party/mbedtls/library/md_psa.h +1 -1
  1349. package/src/duckdb/third_party/mbedtls/library/oid.cpp +2 -2
  1350. package/src/duckdb/third_party/mbedtls/library/pem.cpp +5 -2
  1351. package/src/duckdb/third_party/mbedtls/library/pk.cpp +1 -5
  1352. package/src/duckdb/third_party/mbedtls/library/pk_internal.h +4 -4
  1353. package/src/duckdb/third_party/mbedtls/library/pk_wrap.cpp +16 -18
  1354. package/src/duckdb/third_party/mbedtls/library/pkwrite.h +121 -1
  1355. package/src/duckdb/third_party/mbedtls/library/psa_crypto_core.h +995 -1
  1356. package/src/duckdb/third_party/mbedtls/library/psa_util_internal.h +100 -1
  1357. package/src/duckdb/third_party/mbedtls/library/rsa.cpp +4 -4
  1358. package/src/duckdb/third_party/mbedtls/mbedtls_wrapper.cpp +114 -42
  1359. package/src/duckdb/third_party/parquet/parquet_types.cpp +2340 -769
  1360. package/src/duckdb/third_party/parquet/parquet_types.h +400 -4
  1361. package/src/duckdb/third_party/pdqsort/pdqsort.h +550 -0
  1362. package/src/duckdb/third_party/ska_sort/ska_sort.hpp +1494 -0
  1363. package/src/duckdb/third_party/snappy/snappy-stubs-internal.h +18 -18
  1364. package/src/duckdb/third_party/snappy/snappy.cc +6 -6
  1365. package/src/duckdb/third_party/thrift/thrift/protocol/TCompactProtocol.h +4 -4
  1366. package/src/duckdb/third_party/thrift/thrift/protocol/TCompactProtocol.tcc +36 -36
  1367. package/src/duckdb/third_party/utf8proc/include/utf8proc_wrapper.hpp +1 -1
  1368. package/src/duckdb/third_party/utf8proc/utf8proc_wrapper.cpp +1 -1
  1369. package/src/duckdb/third_party/vergesort/detail/insertion_sort.h +56 -0
  1370. package/src/duckdb/third_party/vergesort/detail/is_sorted_until.h +51 -0
  1371. package/src/duckdb/third_party/vergesort/detail/iter_sort3.h +48 -0
  1372. package/src/duckdb/third_party/vergesort/detail/log2.h +41 -0
  1373. package/src/duckdb/third_party/vergesort/detail/prevnext.h +68 -0
  1374. package/src/duckdb/third_party/vergesort/detail/quicksort.h +138 -0
  1375. package/src/duckdb/third_party/vergesort/vergesort.h +352 -0
  1376. package/src/duckdb/ub_extension_core_functions_scalar_generic.cpp +2 -0
  1377. package/src/duckdb/ub_extension_core_functions_scalar_struct.cpp +2 -0
  1378. package/src/duckdb/ub_extension_parquet_reader.cpp +2 -0
  1379. package/src/duckdb/ub_extension_parquet_reader_variant.cpp +6 -0
  1380. package/src/duckdb/ub_src_common.cpp +8 -0
  1381. package/src/duckdb/ub_src_common_arrow_appender.cpp +2 -0
  1382. package/src/duckdb/ub_src_common_progress_bar.cpp +2 -0
  1383. package/src/duckdb/ub_src_common_sorting.cpp +8 -0
  1384. package/src/duckdb/ub_src_common_tree_renderer.cpp +2 -0
  1385. package/src/duckdb/ub_src_common_types.cpp +1 -1
  1386. package/src/duckdb/ub_src_common_types_row.cpp +2 -0
  1387. package/src/duckdb/ub_src_execution_index_art.cpp +11 -9
  1388. package/src/duckdb/ub_src_execution_operator_persistent.cpp +2 -0
  1389. package/src/duckdb/ub_src_execution_physical_plan.cpp +2 -0
  1390. package/src/duckdb/ub_src_function.cpp +2 -0
  1391. package/src/duckdb/ub_src_function_cast.cpp +1 -1
  1392. package/src/duckdb/ub_src_function_cast_variant.cpp +6 -0
  1393. package/src/duckdb/ub_src_function_scalar_struct.cpp +2 -0
  1394. package/src/duckdb/ub_src_function_scalar_variant.cpp +6 -0
  1395. package/src/duckdb/ub_src_function_table.cpp +2 -0
  1396. package/src/duckdb/ub_src_function_table_system.cpp +6 -0
  1397. package/src/duckdb/ub_src_main.cpp +4 -0
  1398. package/src/duckdb/ub_src_main_capi.cpp +4 -0
  1399. package/src/duckdb/ub_src_optimizer.cpp +2 -0
  1400. package/src/duckdb/ub_src_optimizer_pushdown.cpp +2 -0
  1401. package/src/duckdb/ub_src_optimizer_rule.cpp +2 -0
  1402. package/src/duckdb/ub_src_parser_statement.cpp +2 -0
  1403. package/src/duckdb/ub_src_parser_tableref.cpp +2 -0
  1404. package/src/duckdb/ub_src_parser_transform_statement.cpp +2 -0
  1405. package/src/duckdb/ub_src_planner.cpp +2 -0
  1406. package/src/duckdb/ub_src_planner_binder_statement.cpp +2 -0
  1407. package/src/duckdb/ub_src_planner_binder_tableref.cpp +2 -0
  1408. package/src/duckdb/ub_src_planner_expression_binder.cpp +2 -0
  1409. package/src/duckdb/ub_src_planner_operator.cpp +2 -0
  1410. package/src/duckdb/ub_src_storage_table.cpp +4 -0
  1411. package/test/columns.test.ts +1 -1
  1412. package/test/exec.test.ts +3 -3
  1413. package/test/jsdoc.test.ts +2 -1
  1414. package/test/syntax_error.test.ts +1 -1
  1415. package/test/test_all_types.test.ts +1 -1
@@ -90,12 +90,14 @@ public:
90
90
  }
91
91
  DUCKDB_API void AppendDataChunk(DataChunk &value);
92
92
 
93
+ virtual void AppendDefault();
94
+ virtual void AppendDefault(DataChunk &chunk, idx_t col, idx_t row);
93
95
  //! Appends a column to the active column list.
94
96
  //! Immediately flushes all previous data.
95
- virtual void AddColumn(const string &name) = 0;
97
+ virtual void AddColumn(const string &name);
96
98
  //! Removes all columns from the active column list.
97
99
  //! Immediately flushes all previous data.
98
- virtual void ClearColumns() = 0;
100
+ virtual void ClearColumns();
99
101
 
100
102
  protected:
101
103
  void Destructor();
@@ -125,8 +127,22 @@ protected:
125
127
  };
126
128
 
127
129
  class Appender : public BaseAppender {
130
+ public:
131
+ DUCKDB_API Appender(Connection &con, const string &database_name, const string &schema_name,
132
+ const string &table_name);
133
+ DUCKDB_API Appender(Connection &con, const string &schema_name, const string &table_name);
134
+ DUCKDB_API Appender(Connection &con, const string &table_name);
135
+ DUCKDB_API ~Appender() override;
136
+
137
+ public:
138
+ void AppendDefault() override;
139
+ void AppendDefault(DataChunk &chunk, idx_t col, idx_t row) override;
140
+ void AddColumn(const string &name) override;
141
+ void ClearColumns() override;
142
+
143
+ private:
128
144
  //! A shared pointer to the context of this appender.
129
- shared_ptr<ClientContext> context;
145
+ weak_ptr<ClientContext> context;
130
146
  //! The table description including the column names.
131
147
  unique_ptr<TableDescription> description;
132
148
  //! All table default values.
@@ -136,22 +152,29 @@ class Appender : public BaseAppender {
136
152
  //! Any other columns default to NULL, or their default values.
137
153
  vector<LogicalIndex> column_ids;
138
154
 
139
- public:
140
- DUCKDB_API Appender(Connection &con, const string &database_name, const string &schema_name,
141
- const string &table_name);
142
- DUCKDB_API Appender(Connection &con, const string &schema_name, const string &table_name);
143
- DUCKDB_API Appender(Connection &con, const string &table_name);
144
- DUCKDB_API ~Appender() override;
155
+ protected:
156
+ void FlushInternal(ColumnDataCollection &collection) override;
157
+ Value GetDefaultValue(idx_t column);
158
+ };
145
159
 
160
+ class QueryAppender : public BaseAppender {
146
161
  public:
147
- void AppendDefault();
148
- void AppendDefault(DataChunk &chunk, idx_t col, idx_t row);
149
- void AddColumn(const string &name) override;
150
- void ClearColumns() override;
162
+ DUCKDB_API QueryAppender(Connection &con, string query, vector<LogicalType> types,
163
+ vector<string> names = vector<string>(), string table_name = string());
164
+ DUCKDB_API ~QueryAppender() override;
165
+
166
+ private:
167
+ //! A shared pointer to the context of this appender.
168
+ weak_ptr<ClientContext> context;
169
+ //! The query to run
170
+ string query;
171
+ //! The column names of the to-be-appended data, or "col1, col2, ..." if empty
172
+ vector<string> names;
173
+ //! The table name that we can reference in the query, or "appended_data" if empty
174
+ string table_name;
151
175
 
152
176
  protected:
153
177
  void FlushInternal(ColumnDataCollection &collection) override;
154
- Value GetDefaultValue(idx_t column);
155
178
  };
156
179
 
157
180
  class InternalAppender : public BaseAppender {
@@ -167,8 +190,6 @@ public:
167
190
 
168
191
  protected:
169
192
  void FlushInternal(ColumnDataCollection &collection) override;
170
- void AddColumn(const string &name) override;
171
- void ClearColumns() override;
172
193
  };
173
194
 
174
195
  template <>
@@ -13,7 +13,6 @@
13
13
  #include "duckdb/common/mutex.hpp"
14
14
  #include "duckdb/main/config.hpp"
15
15
  #include "duckdb/catalog/catalog_entry.hpp"
16
- #include "duckdb/storage/storage_options.hpp"
17
16
 
18
17
  namespace duckdb {
19
18
  class Catalog;
@@ -24,6 +23,7 @@ class StorageExtension;
24
23
  class DatabaseManager;
25
24
 
26
25
  struct AttachInfo;
26
+ struct StoredDatabasePath;
27
27
 
28
28
  enum class AttachedDatabaseType {
29
29
  READ_WRITE_DATABASE,
@@ -32,13 +32,26 @@ enum class AttachedDatabaseType {
32
32
  TEMP_DATABASE,
33
33
  };
34
34
 
35
+ class DatabaseFilePathManager;
36
+
37
+ struct StoredDatabasePath {
38
+ StoredDatabasePath(DatabaseFilePathManager &manager, string path, const string &name);
39
+ ~StoredDatabasePath();
40
+
41
+ DatabaseFilePathManager &manager;
42
+ string path;
43
+
44
+ public:
45
+ void OnDetach();
46
+ };
47
+
35
48
  //! AttachOptions holds information about a database we plan to attach. These options are generalized, i.e.,
36
49
  //! they have to apply to any database file type (duckdb, sqlite, etc.).
37
50
  struct AttachOptions {
38
51
  //! Constructor for databases we attach outside of the ATTACH DATABASE statement.
39
52
  explicit AttachOptions(const DBConfigOptions &options);
40
53
  //! Constructor for databases we attach when using ATTACH DATABASE.
41
- AttachOptions(const unique_ptr<AttachInfo> &info, const AccessMode default_access_mode);
54
+ AttachOptions(const unordered_map<string, Value> &options, const AccessMode default_access_mode);
42
55
 
43
56
  //! Defaults to the access mode configured in the DBConfig, unless specified otherwise.
44
57
  AccessMode access_mode;
@@ -48,10 +61,12 @@ struct AttachOptions {
48
61
  unordered_map<string, Value> options;
49
62
  //! (optionally) a catalog can be provided with a default table
50
63
  QualifiedName default_table;
64
+ //! The stored database path (in the path manager)
65
+ unique_ptr<StoredDatabasePath> stored_database_path;
51
66
  };
52
67
 
53
68
  //! The AttachedDatabase represents an attached database instance.
54
- class AttachedDatabase : public CatalogEntry {
69
+ class AttachedDatabase : public CatalogEntry, public enable_shared_from_this<AttachedDatabase> {
55
70
  public:
56
71
  //! Create the built-in system database (without storage).
57
72
  explicit AttachedDatabase(DatabaseInstance &db, AttachedDatabaseType type = AttachedDatabaseType::SYSTEM_DATABASE);
@@ -63,12 +78,13 @@ public:
63
78
  ~AttachedDatabase() override;
64
79
 
65
80
  //! Initializes the catalog and storage of the attached database.
66
- void Initialize(optional_ptr<ClientContext> context = nullptr, StorageOptions options = StorageOptions());
81
+ void Initialize(optional_ptr<ClientContext> context = nullptr);
67
82
  void FinalizeLoad(optional_ptr<ClientContext> context);
68
83
  void Close();
69
84
 
70
85
  Catalog &ParentCatalog() override;
71
86
  const Catalog &ParentCatalog() const override;
87
+ bool HasStorageManager() const;
72
88
  StorageManager &GetStorageManager();
73
89
  Catalog &GetCatalog();
74
90
  TransactionManager &GetTransactionManager();
@@ -90,12 +106,14 @@ public:
90
106
  void SetInitialDatabase();
91
107
  void SetReadOnlyDatabase();
92
108
  void OnDetach(ClientContext &context);
109
+ string StoredPath() const;
93
110
 
94
111
  static bool NameIsReserved(const string &name);
95
112
  static string ExtractDatabaseName(const string &dbpath, FileSystem &fs);
96
113
 
97
114
  private:
98
115
  DatabaseInstance &db;
116
+ unique_ptr<StoredDatabasePath> stored_database_path;
99
117
  unique_ptr<StorageManager> storage;
100
118
  unique_ptr<Catalog> catalog;
101
119
  unique_ptr<TransactionManager> transaction_manager;
@@ -42,6 +42,11 @@ struct CClientContextWrapper {
42
42
  ClientContext &context;
43
43
  };
44
44
 
45
+ struct CClientArrowOptionsWrapper {
46
+ explicit CClientArrowOptionsWrapper(ClientProperties &properties) : properties(properties) {};
47
+ ClientProperties properties;
48
+ };
49
+
45
50
  struct PreparedStatementWrapper {
46
51
  //! Map of name -> values
47
52
  case_insensitive_map_t<BoundParameterData> values;
@@ -64,8 +69,8 @@ struct ArrowResultWrapper {
64
69
  };
65
70
 
66
71
  struct AppenderWrapper {
67
- unique_ptr<Appender> appender;
68
- string error;
72
+ unique_ptr<BaseAppender> appender;
73
+ ErrorData error_data;
69
74
  };
70
75
 
71
76
  struct TableDescriptionWrapper {
@@ -73,6 +78,14 @@ struct TableDescriptionWrapper {
73
78
  string error;
74
79
  };
75
80
 
81
+ struct ErrorDataWrapper {
82
+ ErrorData error_data;
83
+ };
84
+
85
+ struct ExpressionWrapper {
86
+ unique_ptr<Expression> expr;
87
+ };
88
+
76
89
  enum class CAPIResultSetType : uint8_t {
77
90
  CAPI_RESULT_TYPE_NONE = 0,
78
91
  CAPI_RESULT_TYPE_MATERIALIZED,
@@ -88,10 +101,14 @@ struct DuckDBResultData {
88
101
  CAPIResultSetType result_set_type;
89
102
  };
90
103
 
91
- duckdb_type ConvertCPPTypeToC(const LogicalType &type);
92
- LogicalTypeId ConvertCTypeToCPP(duckdb_type c_type);
93
- idx_t GetCTypeSize(duckdb_type type);
104
+ duckdb_type LogicalTypeIdToC(const LogicalTypeId type);
105
+ LogicalTypeId LogicalTypeIdFromC(const duckdb_type type);
106
+ idx_t GetCTypeSize(const duckdb_type type);
107
+ duckdb_statement_type StatementTypeToC(const StatementType type);
108
+ duckdb_error_type ErrorTypeToC(const ExceptionType type);
109
+ ExceptionType ErrorTypeFromC(const duckdb_error_type type);
110
+
94
111
  duckdb_state DuckDBTranslateResult(unique_ptr<QueryResult> result, duckdb_result *out);
95
112
  bool DeprecatedMaterializeResult(duckdb_result *result);
96
- duckdb_statement_type StatementTypeToC(duckdb::StatementType statement_type);
113
+
97
114
  } // namespace duckdb
@@ -136,7 +136,7 @@ typedef struct {
136
136
  duckdb_value (*duckdb_create_timestamp)(duckdb_timestamp input);
137
137
  duckdb_value (*duckdb_create_interval)(duckdb_interval input);
138
138
  duckdb_value (*duckdb_create_blob)(const uint8_t *data, idx_t length);
139
- duckdb_value (*duckdb_create_varint)(duckdb_varint input);
139
+ duckdb_value (*duckdb_create_bignum)(duckdb_bignum input);
140
140
  duckdb_value (*duckdb_create_decimal)(duckdb_decimal input);
141
141
  duckdb_value (*duckdb_create_bit)(duckdb_bit input);
142
142
  duckdb_value (*duckdb_create_uuid)(duckdb_uhugeint input);
@@ -160,7 +160,7 @@ typedef struct {
160
160
  duckdb_interval (*duckdb_get_interval)(duckdb_value val);
161
161
  duckdb_logical_type (*duckdb_get_value_type)(duckdb_value val);
162
162
  duckdb_blob (*duckdb_get_blob)(duckdb_value val);
163
- duckdb_varint (*duckdb_get_varint)(duckdb_value val);
163
+ duckdb_bignum (*duckdb_get_bignum)(duckdb_value val);
164
164
  duckdb_decimal (*duckdb_get_decimal)(duckdb_value val);
165
165
  duckdb_bit (*duckdb_get_bit)(duckdb_value val);
166
166
  duckdb_uhugeint (*duckdb_get_uuid)(duckdb_value val);
@@ -471,12 +471,54 @@ typedef struct {
471
471
 
472
472
  duckdb_state (*duckdb_append_default_to_chunk)(duckdb_appender appender, duckdb_data_chunk chunk, idx_t col,
473
473
  idx_t row);
474
+ duckdb_error_data (*duckdb_appender_error_data)(duckdb_appender appender);
475
+ duckdb_state (*duckdb_appender_create_query)(duckdb_connection connection, const char *query, idx_t column_count,
476
+ duckdb_logical_type *types, const char *table_name,
477
+ const char **column_names, duckdb_appender *out_appender);
478
+ // New arrow interface functions
479
+
480
+ duckdb_error_data (*duckdb_to_arrow_schema)(duckdb_arrow_options arrow_options, duckdb_logical_type *types,
481
+ const char **names, idx_t column_count, struct ArrowSchema *out_schema);
482
+ duckdb_error_data (*duckdb_data_chunk_to_arrow)(duckdb_arrow_options arrow_options, duckdb_data_chunk chunk,
483
+ struct ArrowArray *out_arrow_array);
484
+ duckdb_error_data (*duckdb_schema_from_arrow)(duckdb_connection connection, struct ArrowSchema *schema,
485
+ duckdb_arrow_converted_schema *out_types);
486
+ duckdb_error_data (*duckdb_data_chunk_from_arrow)(duckdb_connection connection, struct ArrowArray *arrow_array,
487
+ duckdb_arrow_converted_schema converted_schema,
488
+ duckdb_data_chunk *out_chunk);
489
+ void (*duckdb_destroy_arrow_converted_schema)(duckdb_arrow_converted_schema *arrow_converted_schema);
490
+ // New functions for duckdb error data
491
+
492
+ duckdb_error_data (*duckdb_create_error_data)(duckdb_error_type type, const char *message);
493
+ void (*duckdb_destroy_error_data)(duckdb_error_data *error_data);
494
+ duckdb_error_type (*duckdb_error_data_error_type)(duckdb_error_data error_data);
495
+ const char *(*duckdb_error_data_message)(duckdb_error_data error_data);
496
+ bool (*duckdb_error_data_has_error)(duckdb_error_data error_data);
497
+ // API to create and manipulate expressions
498
+
499
+ void (*duckdb_destroy_expression)(duckdb_expression *expr);
500
+ duckdb_logical_type (*duckdb_expression_return_type)(duckdb_expression expr);
501
+ bool (*duckdb_expression_is_foldable)(duckdb_expression expr);
502
+ duckdb_error_data (*duckdb_expression_fold)(duckdb_client_context context, duckdb_expression expr,
503
+ duckdb_value *out_value);
474
504
  // New functions around the client context
475
505
 
476
506
  idx_t (*duckdb_client_context_get_connection_id)(duckdb_client_context context);
477
507
  void (*duckdb_destroy_client_context)(duckdb_client_context *context);
478
508
  void (*duckdb_connection_get_client_context)(duckdb_connection connection, duckdb_client_context *out_context);
479
509
  duckdb_value (*duckdb_get_table_names)(duckdb_connection connection, const char *query, bool qualified);
510
+ void (*duckdb_connection_get_arrow_options)(duckdb_connection connection, duckdb_arrow_options *out_arrow_options);
511
+ void (*duckdb_destroy_arrow_options)(duckdb_arrow_options *arrow_options);
512
+ // API to get information about the results of a prepared statement
513
+
514
+ idx_t (*duckdb_prepared_statement_column_count)(duckdb_prepared_statement prepared_statement);
515
+ const char *(*duckdb_prepared_statement_column_name)(duckdb_prepared_statement prepared_statement, idx_t col_idx);
516
+ duckdb_logical_type (*duckdb_prepared_statement_column_logical_type)(duckdb_prepared_statement prepared_statement,
517
+ idx_t col_idx);
518
+ duckdb_type (*duckdb_prepared_statement_column_type)(duckdb_prepared_statement prepared_statement, idx_t col_idx);
519
+ // New query execution functions
520
+
521
+ duckdb_arrow_options (*duckdb_result_get_arrow_options)(duckdb_result *result);
480
522
  // New functions around scalar function binding
481
523
 
482
524
  void (*duckdb_scalar_function_set_bind)(duckdb_scalar_function scalar_function, duckdb_scalar_function_bind_t bind);
@@ -485,24 +527,35 @@ typedef struct {
485
527
  void (*duckdb_scalar_function_set_bind_data)(duckdb_bind_info info, void *bind_data,
486
528
  duckdb_delete_callback_t destroy);
487
529
  void *(*duckdb_scalar_function_get_bind_data)(duckdb_function_info info);
530
+ void *(*duckdb_scalar_function_bind_get_extra_info)(duckdb_bind_info info);
531
+ idx_t (*duckdb_scalar_function_bind_get_argument_count)(duckdb_bind_info info);
532
+ duckdb_expression (*duckdb_scalar_function_bind_get_argument)(duckdb_bind_info info, idx_t index);
533
+ void (*duckdb_scalar_function_set_bind_data_copy)(duckdb_bind_info info, duckdb_copy_callback_t copy);
488
534
  // New string functions that are added
489
535
 
490
536
  char *(*duckdb_value_to_string)(duckdb_value value);
537
+ // New functions around table function binding
538
+
539
+ void (*duckdb_table_function_get_client_context)(duckdb_bind_info info, duckdb_client_context *out_context);
491
540
  // New value functions that are added
492
541
 
493
542
  duckdb_value (*duckdb_create_map_value)(duckdb_logical_type map_type, duckdb_value *keys, duckdb_value *values,
494
543
  idx_t entry_count);
495
544
  duckdb_value (*duckdb_create_union_value)(duckdb_logical_type union_type, idx_t tag_index, duckdb_value value);
496
- // An API to create new vector types
545
+ duckdb_value (*duckdb_create_time_ns)(duckdb_time_ns input);
546
+ duckdb_time_ns (*duckdb_get_time_ns)(duckdb_value val);
547
+ // API to create and manipulate vector types
497
548
 
498
549
  duckdb_vector (*duckdb_create_vector)(duckdb_logical_type type, idx_t capacity);
499
550
  void (*duckdb_destroy_vector)(duckdb_vector *vector);
500
- void (*duckdb_slice_vector)(duckdb_vector vector, duckdb_selection_vector selection, idx_t len);
551
+ void (*duckdb_slice_vector)(duckdb_vector vector, duckdb_selection_vector sel, idx_t len);
501
552
  void (*duckdb_vector_reference_value)(duckdb_vector vector, duckdb_value value);
502
553
  void (*duckdb_vector_reference_vector)(duckdb_vector to_vector, duckdb_vector from_vector);
503
554
  duckdb_selection_vector (*duckdb_create_selection_vector)(idx_t size);
504
- void (*duckdb_destroy_selection_vector)(duckdb_selection_vector vector);
505
- sel_t *(*duckdb_selection_vector_get_data_ptr)(duckdb_selection_vector vector);
555
+ void (*duckdb_destroy_selection_vector)(duckdb_selection_vector sel);
556
+ sel_t *(*duckdb_selection_vector_get_data_ptr)(duckdb_selection_vector sel);
557
+ void (*duckdb_vector_copy_sel)(duckdb_vector src, duckdb_vector dst, duckdb_selection_vector sel, idx_t src_count,
558
+ idx_t src_offset, idx_t dst_offset);
506
559
  } duckdb_ext_api_v1;
507
560
 
508
561
  //===--------------------------------------------------------------------===//
@@ -624,7 +677,7 @@ inline duckdb_ext_api_v1 CreateAPIv1() {
624
677
  result.duckdb_create_timestamp = duckdb_create_timestamp;
625
678
  result.duckdb_create_interval = duckdb_create_interval;
626
679
  result.duckdb_create_blob = duckdb_create_blob;
627
- result.duckdb_create_varint = duckdb_create_varint;
680
+ result.duckdb_create_bignum = duckdb_create_bignum;
628
681
  result.duckdb_create_decimal = duckdb_create_decimal;
629
682
  result.duckdb_create_bit = duckdb_create_bit;
630
683
  result.duckdb_create_uuid = duckdb_create_uuid;
@@ -648,7 +701,7 @@ inline duckdb_ext_api_v1 CreateAPIv1() {
648
701
  result.duckdb_get_interval = duckdb_get_interval;
649
702
  result.duckdb_get_value_type = duckdb_get_value_type;
650
703
  result.duckdb_get_blob = duckdb_get_blob;
651
- result.duckdb_get_varint = duckdb_get_varint;
704
+ result.duckdb_get_bignum = duckdb_get_bignum;
652
705
  result.duckdb_get_decimal = duckdb_get_decimal;
653
706
  result.duckdb_get_bit = duckdb_get_bit;
654
707
  result.duckdb_get_uuid = duckdb_get_uuid;
@@ -918,18 +971,48 @@ inline duckdb_ext_api_v1 CreateAPIv1() {
918
971
  result.duckdb_get_or_create_from_cache = duckdb_get_or_create_from_cache;
919
972
  result.duckdb_destroy_instance_cache = duckdb_destroy_instance_cache;
920
973
  result.duckdb_append_default_to_chunk = duckdb_append_default_to_chunk;
974
+ result.duckdb_appender_error_data = duckdb_appender_error_data;
975
+ result.duckdb_appender_create_query = duckdb_appender_create_query;
976
+ result.duckdb_to_arrow_schema = duckdb_to_arrow_schema;
977
+ result.duckdb_data_chunk_to_arrow = duckdb_data_chunk_to_arrow;
978
+ result.duckdb_schema_from_arrow = duckdb_schema_from_arrow;
979
+ result.duckdb_data_chunk_from_arrow = duckdb_data_chunk_from_arrow;
980
+ result.duckdb_destroy_arrow_converted_schema = duckdb_destroy_arrow_converted_schema;
981
+ result.duckdb_create_error_data = duckdb_create_error_data;
982
+ result.duckdb_destroy_error_data = duckdb_destroy_error_data;
983
+ result.duckdb_error_data_error_type = duckdb_error_data_error_type;
984
+ result.duckdb_error_data_message = duckdb_error_data_message;
985
+ result.duckdb_error_data_has_error = duckdb_error_data_has_error;
986
+ result.duckdb_destroy_expression = duckdb_destroy_expression;
987
+ result.duckdb_expression_return_type = duckdb_expression_return_type;
988
+ result.duckdb_expression_is_foldable = duckdb_expression_is_foldable;
989
+ result.duckdb_expression_fold = duckdb_expression_fold;
921
990
  result.duckdb_client_context_get_connection_id = duckdb_client_context_get_connection_id;
922
991
  result.duckdb_destroy_client_context = duckdb_destroy_client_context;
923
992
  result.duckdb_connection_get_client_context = duckdb_connection_get_client_context;
924
993
  result.duckdb_get_table_names = duckdb_get_table_names;
994
+ result.duckdb_connection_get_arrow_options = duckdb_connection_get_arrow_options;
995
+ result.duckdb_destroy_arrow_options = duckdb_destroy_arrow_options;
996
+ result.duckdb_prepared_statement_column_count = duckdb_prepared_statement_column_count;
997
+ result.duckdb_prepared_statement_column_name = duckdb_prepared_statement_column_name;
998
+ result.duckdb_prepared_statement_column_logical_type = duckdb_prepared_statement_column_logical_type;
999
+ result.duckdb_prepared_statement_column_type = duckdb_prepared_statement_column_type;
1000
+ result.duckdb_result_get_arrow_options = duckdb_result_get_arrow_options;
925
1001
  result.duckdb_scalar_function_set_bind = duckdb_scalar_function_set_bind;
926
1002
  result.duckdb_scalar_function_bind_set_error = duckdb_scalar_function_bind_set_error;
927
1003
  result.duckdb_scalar_function_get_client_context = duckdb_scalar_function_get_client_context;
928
1004
  result.duckdb_scalar_function_set_bind_data = duckdb_scalar_function_set_bind_data;
929
1005
  result.duckdb_scalar_function_get_bind_data = duckdb_scalar_function_get_bind_data;
1006
+ result.duckdb_scalar_function_bind_get_extra_info = duckdb_scalar_function_bind_get_extra_info;
1007
+ result.duckdb_scalar_function_bind_get_argument_count = duckdb_scalar_function_bind_get_argument_count;
1008
+ result.duckdb_scalar_function_bind_get_argument = duckdb_scalar_function_bind_get_argument;
1009
+ result.duckdb_scalar_function_set_bind_data_copy = duckdb_scalar_function_set_bind_data_copy;
930
1010
  result.duckdb_value_to_string = duckdb_value_to_string;
1011
+ result.duckdb_table_function_get_client_context = duckdb_table_function_get_client_context;
931
1012
  result.duckdb_create_map_value = duckdb_create_map_value;
932
1013
  result.duckdb_create_union_value = duckdb_create_union_value;
1014
+ result.duckdb_create_time_ns = duckdb_create_time_ns;
1015
+ result.duckdb_get_time_ns = duckdb_get_time_ns;
933
1016
  result.duckdb_create_vector = duckdb_create_vector;
934
1017
  result.duckdb_destroy_vector = duckdb_destroy_vector;
935
1018
  result.duckdb_slice_vector = duckdb_slice_vector;
@@ -938,6 +1021,7 @@ inline duckdb_ext_api_v1 CreateAPIv1() {
938
1021
  result.duckdb_create_selection_vector = duckdb_create_selection_vector;
939
1022
  result.duckdb_destroy_selection_vector = duckdb_destroy_selection_vector;
940
1023
  result.duckdb_selection_vector_get_data_ptr = duckdb_selection_vector_get_data_ptr;
1024
+ result.duckdb_vector_copy_sel = duckdb_vector_copy_sel;
941
1025
  return result;
942
1026
  }
943
1027
 
@@ -16,6 +16,7 @@
16
16
  #include "duckdb/common/types/value.hpp"
17
17
  #include "duckdb/main/profiling_info.hpp"
18
18
  #include "duckdb/parser/expression/lambda_expression.hpp"
19
+ #include "duckdb/main/query_profiler.hpp"
19
20
 
20
21
  namespace duckdb {
21
22
 
@@ -23,8 +24,7 @@ class ClientContext;
23
24
  class PhysicalResultCollector;
24
25
  class PreparedStatementData;
25
26
 
26
- typedef std::function<unique_ptr<PhysicalResultCollector>(ClientContext &context, PreparedStatementData &data)>
27
- get_result_collector_t;
27
+ typedef std::function<PhysicalOperator &(ClientContext &context, PreparedStatementData &data)> get_result_collector_t;
28
28
 
29
29
  struct ClientConfig {
30
30
  //! The home directory used by the system (if any)
@@ -55,9 +55,6 @@ struct ClientConfig {
55
55
  //! The wait time before showing the progress bar
56
56
  int wait_time = 2000;
57
57
 
58
- //! Preserve identifier case while parsing.
59
- //! If false, all unquoted identifiers are lower-cased (e.g. "MyTable" -> "mytable").
60
- bool preserve_identifier_case = true;
61
58
  //! The maximum expression depth limit in the parser
62
59
  idx_t max_expression_depth = 1000;
63
60
 
@@ -77,32 +74,11 @@ struct ClientConfig {
77
74
  bool verify_parallelism = false;
78
75
  //! Force out-of-core computation for operators that support it, used for testing
79
76
  bool force_external = false;
80
- //! Force disable cross product generation when hyper graph isn't connected, used for testing
81
- bool force_no_cross_product = false;
82
- //! Force use of IEJoin to implement AsOfJoin, used for testing
83
- bool force_asof_iejoin = false;
84
77
  //! Force use of fetch row instead of scan, used for testing
85
78
  bool force_fetch_row = false;
86
- //! Use range joins for inequalities, even if there are equality predicates
87
- bool prefer_range_joins = false;
88
79
  //! If this context should also try to use the available replacement scans
89
80
  //! True by default
90
81
  bool use_replacement_scans = true;
91
- //! Maximum bits allowed for using a perfect hash table (i.e. the perfect HT can hold up to 2^perfect_ht_threshold
92
- //! elements)
93
- idx_t perfect_ht_threshold = 12;
94
- //! The maximum number of rows to accumulate before sorting ordered aggregates.
95
- idx_t ordered_aggregate_threshold = (idx_t(1) << 18);
96
- //! The number of rows to accumulate before flushing during a partitioned write
97
- idx_t partitioned_write_flush_threshold = idx_t(1) << idx_t(19);
98
- //! The amount of rows we can keep open before we close and flush them during a partitioned write
99
- idx_t partitioned_write_max_open_files = idx_t(100);
100
- //! The number of rows we need on either table to choose a nested loop join
101
- idx_t nested_loop_join_threshold = 5;
102
- //! The number of rows we need on either table to choose a merge join over an IE join
103
- idx_t merge_join_threshold = 1000;
104
- //! The maximum number of rows to use the nested loop join implementation
105
- idx_t asof_loop_join_threshold = 64;
106
82
 
107
83
  //! The maximum amount of memory to keep buffered in a streaming query result. Default: 1mb.
108
84
  idx_t streaming_buffer_size = 1000000;
@@ -113,31 +89,12 @@ struct ClientConfig {
113
89
  //! The explain output type used when none is specified (default: PHYSICAL_ONLY)
114
90
  ExplainOutputType explain_output_type = ExplainOutputType::PHYSICAL_ONLY;
115
91
 
116
- //! The maximum amount of pivot columns
117
- idx_t pivot_limit = 100000;
118
-
119
- //! The threshold at which we switch from using filtered aggregates to LIST with a dedicated pivot operator
120
- idx_t pivot_filter_threshold = 20;
121
-
122
- //! The maximum amount of OR filters we generate dynamically from a hash join
123
- idx_t dynamic_or_filter_threshold = 50;
124
-
125
- //! The maximum amount of rows in the LIMIT/SAMPLE for which we trigger late materialization
126
- idx_t late_materialization_max_rows = 50;
127
-
128
- //! Whether the "/" division operator defaults to integer division or floating point division
129
- bool integer_division = false;
130
- //! When a scalar subquery returns multiple rows - return a random row instead of returning an error
131
- bool scalar_subquery_error_on_multiple_rows = true;
132
- //! Use IEE754-compliant floating point operations (returning NAN instead of errors/NULL)
133
- bool ieee_floating_point_ops = true;
134
- //! Allow ordering by non-integer literals - ordering by such literals has no effect
135
- bool order_by_non_integer_literal = false;
136
- //! Disable casting from timestamp => timestamptz (naïve timestamps)
137
- bool disable_timestamptz_casts = false;
138
92
  //! If DEFAULT or ENABLE_SINGLE_ARROW, it is possible to use the deprecated single arrow operator (->) for lambda
139
93
  //! functions. Otherwise, DISABLE_SINGLE_ARROW.
140
94
  LambdaSyntax lambda_syntax = LambdaSyntax::DEFAULT;
95
+ //! The profiling coverage. SELECT is the default behavior, and ALL emits profiling information for all operator
96
+ //! types.
97
+ ProfilingCoverage profiling_coverage = ProfilingCoverage::SELECT;
141
98
 
142
99
  //! Output error messages as structured JSON instead of as a raw string
143
100
  bool errors_as_json = false;
@@ -148,9 +105,8 @@ struct ClientConfig {
148
105
  //! Variables set by the user
149
106
  case_insensitive_map_t<Value> user_variables;
150
107
 
151
- //! Function that is used to create the result collector for a materialized result
152
- //! Defaults to PhysicalMaterializedCollector
153
- get_result_collector_t result_collector = nullptr;
108
+ //! Function that is used to create the result collector for a materialized result.
109
+ get_result_collector_t get_result_collector = nullptr;
154
110
 
155
111
  //! If HTTP logging is enabled or not.
156
112
  bool enable_http_logging = true;
@@ -163,26 +119,11 @@ public:
163
119
  static ClientConfig &GetConfig(ClientContext &context);
164
120
  static const ClientConfig &GetConfig(const ClientContext &context);
165
121
 
166
- bool AnyVerification() {
167
- return query_verification_enabled || verify_external || verify_serializer || verify_fetch_row;
168
- }
122
+ bool AnyVerification() const;
169
123
 
170
- void SetUserVariable(const string &name, Value value) {
171
- user_variables[name] = std::move(value);
172
- }
173
-
174
- bool GetUserVariable(const string &name, Value &result) {
175
- auto entry = user_variables.find(name);
176
- if (entry == user_variables.end()) {
177
- return false;
178
- }
179
- result = entry->second;
180
- return true;
181
- }
182
-
183
- void ResetUserVariable(const string &name) {
184
- user_variables.erase(name);
185
- }
124
+ void SetUserVariable(const string &name, Value value);
125
+ bool GetUserVariable(const string &name, Value &result);
126
+ void ResetUserVariable(const String &name);
186
127
 
187
128
  template <class OP>
188
129
  static typename OP::RETURN_TYPE GetSetting(const ClientContext &context) {
@@ -24,13 +24,13 @@
24
24
  #include "duckdb/main/external_dependencies.hpp"
25
25
  #include "duckdb/main/pending_query_result.hpp"
26
26
  #include "duckdb/main/prepared_statement.hpp"
27
- #include "duckdb/main/settings.hpp"
28
27
  #include "duckdb/main/stream_query_result.hpp"
29
28
  #include "duckdb/main/table_description.hpp"
30
29
  #include "duckdb/planner/expression/bound_parameter_data.hpp"
31
30
  #include "duckdb/transaction/transaction_context.hpp"
32
31
 
33
32
  namespace duckdb {
33
+
34
34
  class Appender;
35
35
  class Catalog;
36
36
  class CatalogSearchPath;
@@ -131,6 +131,9 @@ public:
131
131
  const string &table_name);
132
132
  //! Get the table info of a specific table, or nullptr if it cannot be found. Uses INVALID_CATALOG.
133
133
  DUCKDB_API unique_ptr<TableDescription> TableInfo(const string &schema_name, const string &table_name);
134
+ //! Execute a query with the given collection "attached" to the query using a CTE
135
+ DUCKDB_API void Append(ColumnDataCollection &collection, const string &query, const vector<string> &column_names,
136
+ const string &collection_name);
134
137
  //! Appends a DataChunk and its default columns to the specified table.
135
138
  DUCKDB_API void Append(TableDescription &description, ColumnDataCollection &collection,
136
139
  optional_ptr<const vector<LogicalIndex>> column_ids = nullptr);
@@ -190,7 +193,7 @@ public:
190
193
  bool requires_valid_transaction = true);
191
194
 
192
195
  //! Equivalent to CURRENT_SETTING(key) SQL function.
193
- DUCKDB_API SettingLookupResult TryGetCurrentSetting(const std::string &key, Value &result) const;
196
+ DUCKDB_API SettingLookupResult TryGetCurrentSetting(const string &key, Value &result) const;
194
197
 
195
198
  //! Returns the parser options for this client context
196
199
  DUCKDB_API ParserOptions GetParserOptions() const;
@@ -224,8 +227,7 @@ public:
224
227
 
225
228
  private:
226
229
  //! Parse statements and resolve pragmas from a query
227
- bool ParseStatements(ClientContextLock &lock, const string &query, vector<unique_ptr<SQLStatement>> &result,
228
- ErrorData &error);
230
+ vector<unique_ptr<SQLStatement>> ParseStatements(ClientContextLock &lock, const string &query);
229
231
  //! Issues a query to the database and returns a Pending Query Result
230
232
  unique_ptr<PendingQueryResult> PendingQueryInternal(ClientContextLock &lock, unique_ptr<SQLStatement> statement,
231
233
  const PendingQueryParameters &parameters, bool verify = true);
@@ -250,7 +252,7 @@ private:
250
252
  shared_ptr<PreparedStatementData> statement_p,
251
253
  const PendingQueryParameters &parameters);
252
254
  unique_ptr<PendingQueryResult> PendingPreparedStatementInternal(ClientContextLock &lock,
253
- shared_ptr<PreparedStatementData> statement_p,
255
+ shared_ptr<PreparedStatementData> statement_data_p,
254
256
  const PendingQueryParameters &parameters);
255
257
  void CheckIfPreparedStatementIsExecutable(PreparedStatementData &statement);
256
258
 
@@ -302,6 +304,8 @@ private:
302
304
  CreatePreparedStatementInternal(ClientContextLock &lock, const string &query, unique_ptr<SQLStatement> statement,
303
305
  optional_ptr<case_insensitive_map_t<BoundParameterData>> values);
304
306
 
307
+ SettingLookupResult TryGetCurrentSettingInternal(const string &key, Value &result) const;
308
+
305
309
  private:
306
310
  //! Lock on using the ClientContext in parallel
307
311
  mutex context_lock;
@@ -325,4 +329,25 @@ private:
325
329
  lock_guard<mutex> client_guard;
326
330
  };
327
331
 
332
+ //! The QueryContext wraps an optional client context.
333
+ //! It makes query-related information available to operations.
334
+ class QueryContext {
335
+ public:
336
+ QueryContext() : context(nullptr) {
337
+ }
338
+ QueryContext(optional_ptr<ClientContext> context) : context(context) { // NOLINT: allow implicit construction
339
+ }
340
+
341
+ public:
342
+ bool Valid() const {
343
+ return context != nullptr;
344
+ }
345
+ optional_ptr<ClientContext> GetClientContext() const {
346
+ return context;
347
+ }
348
+
349
+ private:
350
+ optional_ptr<ClientContext> context;
351
+ };
352
+
328
353
  } // namespace duckdb