duckdb 0.9.3-dev2.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1226) hide show
  1. package/.github/workflows/NodeJS.yml +1 -1
  2. package/README.md +6 -6
  3. package/binding.gyp +32 -7
  4. package/package.json +1 -1
  5. package/src/connection.cpp +6 -6
  6. package/src/database.cpp +12 -10
  7. package/src/duckdb/extension/icu/icu-datefunc.cpp +22 -10
  8. package/src/duckdb/extension/icu/icu-datepart.cpp +42 -22
  9. package/src/duckdb/extension/icu/icu-datetrunc.cpp +40 -7
  10. package/src/duckdb/extension/icu/icu-strptime.cpp +14 -8
  11. package/src/duckdb/extension/icu/icu-table-range.cpp +1 -1
  12. package/src/duckdb/extension/icu/icu-timezone.cpp +43 -16
  13. package/src/duckdb/extension/icu/icu_extension.cpp +1 -1
  14. package/src/duckdb/extension/icu/include/icu-datefunc.hpp +3 -0
  15. package/src/duckdb/extension/icu/third_party/icu/stubdata/stubdata.cpp +1 -1
  16. package/src/duckdb/extension/json/buffered_json_reader.cpp +78 -62
  17. package/src/duckdb/extension/json/include/buffered_json_reader.hpp +11 -7
  18. package/src/duckdb/extension/json/include/json_common.hpp +0 -14
  19. package/src/duckdb/extension/json/include/json_deserializer.hpp +1 -0
  20. package/src/duckdb/extension/json/include/json_functions.hpp +1 -0
  21. package/src/duckdb/extension/json/include/json_scan.hpp +19 -5
  22. package/src/duckdb/extension/json/include/json_serializer.hpp +2 -1
  23. package/src/duckdb/extension/json/include/json_structure.hpp +12 -10
  24. package/src/duckdb/extension/json/json_common.cpp +1 -0
  25. package/src/duckdb/extension/json/json_deserializer.cpp +13 -0
  26. package/src/duckdb/extension/json/json_extension.cpp +3 -3
  27. package/src/duckdb/extension/json/json_functions/copy_json.cpp +8 -4
  28. package/src/duckdb/extension/json/json_functions/json_array_length.cpp +1 -1
  29. package/src/duckdb/extension/json/json_functions/json_contains.cpp +3 -3
  30. package/src/duckdb/extension/json/json_functions/json_create.cpp +53 -8
  31. package/src/duckdb/extension/json/json_functions/json_extract.cpp +10 -6
  32. package/src/duckdb/extension/json/json_functions/json_keys.cpp +1 -1
  33. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +2 -3
  34. package/src/duckdb/extension/json/json_functions/json_serialize_plan.cpp +210 -0
  35. package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +22 -19
  36. package/src/duckdb/extension/json/json_functions/json_structure.cpp +71 -43
  37. package/src/duckdb/extension/json/json_functions/json_transform.cpp +105 -8
  38. package/src/duckdb/extension/json/json_functions/json_type.cpp +1 -1
  39. package/src/duckdb/extension/json/json_functions/json_valid.cpp +1 -1
  40. package/src/duckdb/extension/json/json_functions/read_json.cpp +43 -18
  41. package/src/duckdb/extension/json/json_functions/read_json_objects.cpp +1 -1
  42. package/src/duckdb/extension/json/json_functions.cpp +9 -5
  43. package/src/duckdb/extension/json/json_scan.cpp +147 -125
  44. package/src/duckdb/extension/json/json_serializer.cpp +9 -0
  45. package/src/duckdb/extension/json/serialize_json.cpp +6 -0
  46. package/src/duckdb/extension/parquet/column_reader.cpp +53 -18
  47. package/src/duckdb/extension/parquet/column_writer.cpp +29 -6
  48. package/src/duckdb/extension/parquet/include/column_reader.hpp +0 -1
  49. package/src/duckdb/extension/parquet/include/decode_utils.hpp +2 -2
  50. package/src/duckdb/extension/parquet/include/parquet_crypto.hpp +87 -0
  51. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -3
  52. package/src/duckdb/extension/parquet/include/parquet_decimal_utils.hpp +16 -3
  53. package/src/duckdb/extension/parquet/include/parquet_metadata.hpp +10 -0
  54. package/src/duckdb/extension/parquet/include/parquet_reader.hpp +34 -6
  55. package/src/duckdb/extension/parquet/include/parquet_statistics.hpp +3 -2
  56. package/src/duckdb/extension/parquet/include/parquet_timestamp.hpp +2 -0
  57. package/src/duckdb/extension/parquet/include/parquet_writer.hpp +21 -1
  58. package/src/duckdb/extension/parquet/parquet_crypto.cpp +370 -0
  59. package/src/duckdb/extension/parquet/parquet_extension.cpp +254 -24
  60. package/src/duckdb/extension/parquet/parquet_metadata.cpp +204 -16
  61. package/src/duckdb/extension/parquet/parquet_reader.cpp +108 -34
  62. package/src/duckdb/extension/parquet/parquet_statistics.cpp +75 -30
  63. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +15 -8
  64. package/src/duckdb/extension/parquet/parquet_writer.cpp +62 -10
  65. package/src/duckdb/extension/parquet/serialize_parquet.cpp +60 -0
  66. package/src/duckdb/src/catalog/catalog.cpp +23 -25
  67. package/src/duckdb/src/catalog/catalog_entry/column_dependency_manager.cpp +1 -0
  68. package/src/duckdb/src/catalog/catalog_entry/dependency/dependency_dependent_entry.cpp +31 -0
  69. package/src/duckdb/src/catalog/catalog_entry/dependency/dependency_entry.cpp +44 -0
  70. package/src/duckdb/src/catalog/catalog_entry/dependency/dependency_subject_entry.cpp +31 -0
  71. package/src/duckdb/src/catalog/catalog_entry/duck_index_entry.cpp +35 -10
  72. package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +22 -6
  73. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +110 -33
  74. package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +33 -17
  75. package/src/duckdb/src/catalog/catalog_entry/macro_catalog_entry.cpp +16 -0
  76. package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +7 -6
  77. package/src/duckdb/src/catalog/catalog_entry/sequence_catalog_entry.cpp +88 -14
  78. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +6 -15
  79. package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +20 -20
  80. package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +4 -0
  81. package/src/duckdb/src/catalog/catalog_entry.cpp +29 -0
  82. package/src/duckdb/src/catalog/catalog_set.cpp +358 -343
  83. package/src/duckdb/src/catalog/catalog_transaction.cpp +4 -0
  84. package/src/duckdb/src/catalog/default/default_functions.cpp +13 -4
  85. package/src/duckdb/src/catalog/default/default_schemas.cpp +5 -1
  86. package/src/duckdb/src/catalog/default/default_views.cpp +6 -2
  87. package/src/duckdb/src/catalog/dependency_catalog_set.cpp +51 -0
  88. package/src/duckdb/src/catalog/dependency_manager.cpp +510 -114
  89. package/src/duckdb/src/catalog/duck_catalog.cpp +4 -4
  90. package/src/duckdb/src/common/adbc/adbc.cpp +73 -53
  91. package/src/duckdb/src/common/adbc/driver_manager.cpp +1101 -268
  92. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +20 -9
  93. package/src/duckdb/src/common/bind_helpers.cpp +1 -0
  94. package/src/duckdb/src/common/box_renderer.cpp +52 -1
  95. package/src/duckdb/src/common/compressed_file_system.cpp +1 -0
  96. package/src/duckdb/src/common/constants.cpp +0 -1
  97. package/src/duckdb/src/common/enum_util.cpp +522 -107
  98. package/src/duckdb/src/common/enums/catalog_type.cpp +64 -1
  99. package/src/duckdb/src/common/enums/compression_type.cpp +14 -0
  100. package/src/duckdb/src/common/enums/date_part_specifier.cpp +1 -0
  101. package/src/duckdb/src/common/enums/expression_type.cpp +4 -0
  102. package/src/duckdb/src/common/enums/file_compression_type.cpp +1 -0
  103. package/src/duckdb/src/common/enums/join_type.cpp +33 -0
  104. package/src/duckdb/src/common/enums/logical_operator_type.cpp +5 -3
  105. package/src/duckdb/src/common/enums/optimizer_type.cpp +9 -1
  106. package/src/duckdb/src/common/enums/physical_operator_type.cpp +8 -4
  107. package/src/duckdb/src/common/enums/statement_type.cpp +2 -2
  108. package/src/duckdb/src/common/error_data.cpp +113 -0
  109. package/src/duckdb/src/common/exception/binder_exception.cpp +47 -0
  110. package/src/duckdb/src/common/exception/catalog_exception.cpp +55 -0
  111. package/src/duckdb/src/common/exception/parser_exception.cpp +19 -0
  112. package/src/duckdb/src/common/exception.cpp +110 -121
  113. package/src/duckdb/src/common/exception_format_value.cpp +9 -1
  114. package/src/duckdb/src/common/extra_type_info.cpp +48 -0
  115. package/src/duckdb/src/common/file_system.cpp +12 -7
  116. package/src/duckdb/src/common/gzip_file_system.cpp +18 -18
  117. package/src/duckdb/src/common/hive_partitioning.cpp +5 -1
  118. package/src/duckdb/src/common/http_state.cpp +20 -3
  119. package/src/duckdb/src/common/local_file_system.cpp +214 -15
  120. package/src/duckdb/src/common/multi_file_reader.cpp +20 -7
  121. package/src/duckdb/src/common/operator/cast_operators.cpp +397 -414
  122. package/src/duckdb/src/common/operator/convert_to_string.cpp +4 -0
  123. package/src/duckdb/src/common/operator/string_cast.cpp +5 -0
  124. package/src/duckdb/src/common/progress_bar/progress_bar.cpp +61 -12
  125. package/src/duckdb/src/common/progress_bar/terminal_progress_bar_display.cpp +13 -4
  126. package/src/duckdb/src/common/radix_partitioning.cpp +1 -1
  127. package/src/duckdb/src/common/row_operations/row_aggregate.cpp +2 -1
  128. package/src/duckdb/src/common/row_operations/row_gather.cpp +7 -1
  129. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +78 -12
  130. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +222 -61
  131. package/src/duckdb/src/common/row_operations/row_matcher.cpp +6 -1
  132. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +51 -0
  133. package/src/duckdb/src/common/row_operations/row_scatter.cpp +8 -1
  134. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +6 -0
  135. package/src/duckdb/src/common/serializer/binary_serializer.cpp +5 -0
  136. package/src/duckdb/src/common/serializer/serializer.cpp +19 -0
  137. package/src/duckdb/src/common/sort/comparators.cpp +126 -0
  138. package/src/duckdb/src/common/sort/partition_state.cpp +17 -17
  139. package/src/duckdb/src/common/sort/radix_sort.cpp +2 -1
  140. package/src/duckdb/src/common/sort/sort_state.cpp +10 -5
  141. package/src/duckdb/src/common/sort/sorted_block.cpp +7 -6
  142. package/src/duckdb/src/common/string_util.cpp +302 -24
  143. package/src/duckdb/src/common/tree_renderer.cpp +8 -6
  144. package/src/duckdb/src/common/types/cast_helpers.cpp +6 -0
  145. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +1 -1
  146. package/src/duckdb/src/common/types/column/column_data_collection.cpp +58 -0
  147. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +8 -1
  148. package/src/duckdb/src/common/types/data_chunk.cpp +9 -0
  149. package/src/duckdb/src/common/types/date.cpp +2 -2
  150. package/src/duckdb/src/common/types/hash.cpp +9 -1
  151. package/src/duckdb/src/common/types/hugeint.cpp +229 -51
  152. package/src/duckdb/src/common/types/hyperloglog.cpp +10 -3
  153. package/src/duckdb/src/common/types/interval.cpp +67 -12
  154. package/src/duckdb/src/common/types/list_segment.cpp +98 -4
  155. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +11 -1
  156. package/src/duckdb/src/common/types/row/row_data_collection.cpp +1 -1
  157. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +2 -2
  158. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +3 -2
  159. package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +63 -3
  160. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +331 -127
  161. package/src/duckdb/src/common/types/time.cpp +47 -75
  162. package/src/duckdb/src/common/types/timestamp.cpp +16 -3
  163. package/src/duckdb/src/common/types/uhugeint.cpp +746 -0
  164. package/src/duckdb/src/common/types/validity_mask.cpp +6 -2
  165. package/src/duckdb/src/common/types/value.cpp +183 -27
  166. package/src/duckdb/src/common/types/vector.cpp +331 -30
  167. package/src/duckdb/src/common/types/vector_buffer.cpp +29 -1
  168. package/src/duckdb/src/common/types/vector_cache.cpp +22 -1
  169. package/src/duckdb/src/common/types.cpp +606 -90
  170. package/src/duckdb/src/common/value_operations/comparison_operations.cpp +21 -1
  171. package/src/duckdb/src/common/vector_operations/comparison_operators.cpp +5 -0
  172. package/src/duckdb/src/common/vector_operations/generators.cpp +2 -2
  173. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +131 -2
  174. package/src/duckdb/src/common/vector_operations/vector_copy.cpp +26 -4
  175. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +41 -0
  176. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +7 -0
  177. package/src/duckdb/src/common/virtual_file_system.cpp +0 -1
  178. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +2 -1
  179. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +144 -56
  180. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +2 -0
  181. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +27 -0
  182. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +4 -3
  183. package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +25 -5
  184. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +100 -3
  185. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +2 -1
  186. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +9 -1
  187. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +83 -52
  188. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +485 -289
  189. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +3 -3
  190. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
  191. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +34 -37
  192. package/src/duckdb/src/core_functions/function_list.cpp +30 -1
  193. package/src/duckdb/src/core_functions/lambda_functions.cpp +416 -0
  194. package/src/duckdb/src/core_functions/scalar/array/array_functions.cpp +294 -0
  195. package/src/duckdb/src/core_functions/scalar/array/array_value.cpp +87 -0
  196. package/src/duckdb/src/core_functions/scalar/blob/create_sort_key.cpp +686 -0
  197. package/src/duckdb/src/core_functions/scalar/blob/encode.cpp +1 -0
  198. package/src/duckdb/src/core_functions/scalar/date/current.cpp +3 -3
  199. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +295 -20
  200. package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +1 -0
  201. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +8 -7
  202. package/src/duckdb/src/core_functions/scalar/date/to_interval.cpp +84 -23
  203. package/src/duckdb/src/core_functions/scalar/generic/error.cpp +4 -4
  204. package/src/duckdb/src/core_functions/scalar/generic/least.cpp +7 -8
  205. package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
  206. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +17 -6
  207. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +8 -0
  208. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +28 -14
  209. package/src/duckdb/src/core_functions/scalar/list/list_filter.cpp +49 -0
  210. package/src/duckdb/src/core_functions/scalar/list/list_reduce.cpp +230 -0
  211. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +85 -16
  212. package/src/duckdb/src/core_functions/scalar/list/list_transform.cpp +41 -0
  213. package/src/duckdb/src/core_functions/scalar/list/list_value.cpp +21 -2
  214. package/src/duckdb/src/core_functions/scalar/map/map.cpp +6 -5
  215. package/src/duckdb/src/core_functions/scalar/map/map_entries.cpp +2 -2
  216. package/src/duckdb/src/core_functions/scalar/map/map_from_entries.cpp +1 -2
  217. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +24 -4
  218. package/src/duckdb/src/core_functions/scalar/operators/bitwise.cpp +6 -0
  219. package/src/duckdb/src/core_functions/scalar/random/random.cpp +2 -2
  220. package/src/duckdb/src/core_functions/scalar/random/setseed.cpp +2 -2
  221. package/src/duckdb/src/core_functions/scalar/secret/which_secret.cpp +28 -0
  222. package/src/duckdb/src/core_functions/scalar/string/bar.cpp +9 -4
  223. package/src/duckdb/src/core_functions/scalar/string/format_bytes.cpp +7 -2
  224. package/src/duckdb/src/core_functions/scalar/string/hex.cpp +63 -4
  225. package/src/duckdb/src/core_functions/scalar/string/pad.cpp +2 -2
  226. package/src/duckdb/src/core_functions/scalar/string/parse_path.cpp +348 -0
  227. package/src/duckdb/src/core_functions/scalar/string/regexp_escape.cpp +22 -0
  228. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +6 -5
  229. package/src/duckdb/src/core_functions/scalar/struct/struct_insert.cpp +3 -3
  230. package/src/duckdb/src/core_functions/scalar/struct/struct_pack.cpp +1 -1
  231. package/src/duckdb/src/execution/aggregate_hashtable.cpp +9 -2
  232. package/src/duckdb/src/execution/column_binding_resolver.cpp +44 -10
  233. package/src/duckdb/src/execution/expression_executor/execute_between.cpp +4 -0
  234. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +4 -0
  235. package/src/duckdb/src/execution/expression_executor/execute_comparison.cpp +4 -0
  236. package/src/duckdb/src/execution/expression_executor.cpp +2 -1
  237. package/src/duckdb/src/execution/index/art/art.cpp +202 -53
  238. package/src/duckdb/src/execution/index/art/art_key.cpp +20 -27
  239. package/src/duckdb/src/execution/index/fixed_size_allocator.cpp +52 -17
  240. package/src/duckdb/src/execution/index/fixed_size_buffer.cpp +14 -8
  241. package/src/duckdb/src/execution/index/index_type_set.cpp +32 -0
  242. package/src/duckdb/src/execution/index/unknown_index.cpp +65 -0
  243. package/src/duckdb/src/execution/join_hashtable.cpp +151 -174
  244. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -0
  245. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +4 -0
  246. package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +2 -1
  247. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +82 -36
  248. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +58 -32
  249. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +35 -19
  250. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer.cpp +90 -0
  251. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.cpp +124 -0
  252. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_file_handle.cpp +97 -0
  253. package/src/duckdb/src/execution/operator/csv_scanner/scanner/base_scanner.cpp +71 -0
  254. package/src/duckdb/src/execution/operator/csv_scanner/scanner/column_count_scanner.cpp +98 -0
  255. package/src/duckdb/src/execution/operator/csv_scanner/scanner/scanner_boundary.cpp +105 -0
  256. package/src/duckdb/src/execution/operator/csv_scanner/scanner/skip_scanner.cpp +63 -0
  257. package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +1091 -0
  258. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/csv_sniffer.cpp +124 -26
  259. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +117 -129
  260. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +46 -22
  261. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +83 -199
  262. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_refinement.cpp +21 -122
  263. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_replacement.cpp +18 -17
  264. package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine.cpp +22 -0
  265. package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine_cache.cpp +201 -0
  266. package/src/duckdb/src/execution/operator/csv_scanner/table_function/csv_file_scanner.cpp +221 -0
  267. package/src/duckdb/src/execution/operator/csv_scanner/table_function/global_csv_state.cpp +204 -0
  268. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +186 -0
  269. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +532 -0
  270. package/src/duckdb/src/execution/operator/helper/physical_buffered_collector.cpp +85 -0
  271. package/src/duckdb/src/execution/operator/helper/physical_create_secret.cpp +21 -0
  272. package/src/duckdb/src/execution/operator/helper/physical_materialized_collector.cpp +1 -1
  273. package/src/duckdb/src/execution/operator/helper/physical_pragma.cpp +2 -2
  274. package/src/duckdb/src/execution/operator/helper/physical_reservoir_sample.cpp +34 -9
  275. package/src/duckdb/src/execution/operator/helper/physical_result_collector.cpp +10 -0
  276. package/src/duckdb/src/execution/operator/helper/physical_transaction.cpp +1 -0
  277. package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +25 -10
  278. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +7 -8
  279. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +1 -1
  280. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +5 -2
  281. package/src/duckdb/src/execution/operator/join/physical_comparison_join.cpp +1 -1
  282. package/src/duckdb/src/execution/operator/join/physical_delim_join.cpp +5 -127
  283. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +221 -61
  284. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +18 -21
  285. package/src/duckdb/src/execution/operator/join/physical_join.cpp +10 -5
  286. package/src/duckdb/src/execution/operator/join/physical_left_delim_join.cpp +137 -0
  287. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +11 -4
  288. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +2 -2
  289. package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +19 -4
  290. package/src/duckdb/src/execution/operator/join/physical_right_delim_join.cpp +121 -0
  291. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +3 -2
  292. package/src/duckdb/src/execution/operator/persistent/physical_copy_database.cpp +59 -0
  293. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +132 -92
  294. package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +54 -54
  295. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  296. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +4 -0
  297. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +21 -3
  298. package/src/duckdb/src/execution/operator/schema/physical_alter.cpp +1 -0
  299. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +61 -43
  300. package/src/duckdb/src/execution/operator/schema/physical_create_art_index.cpp +15 -13
  301. package/src/duckdb/src/execution/operator/schema/physical_create_schema.cpp +1 -0
  302. package/src/duckdb/src/execution/operator/schema/physical_drop.cpp +10 -0
  303. package/src/duckdb/src/execution/operator/set/physical_cte.cpp +44 -90
  304. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +3 -0
  305. package/src/duckdb/src/execution/operator/set/physical_union.cpp +8 -4
  306. package/src/duckdb/src/execution/physical_operator.cpp +3 -1
  307. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +30 -143
  308. package/src/duckdb/src/execution/physical_plan/plan_copy_database.cpp +12 -0
  309. package/src/duckdb/src/execution/physical_plan/plan_copy_to_file.cpp +11 -4
  310. package/src/duckdb/src/execution/physical_plan/plan_create_index.cpp +8 -8
  311. package/src/duckdb/src/execution/physical_plan/plan_create_secret.cpp +11 -0
  312. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +9 -8
  313. package/src/duckdb/src/execution/physical_plan/plan_cte.cpp +5 -3
  314. package/src/duckdb/src/execution/physical_plan/plan_delim_join.cpp +15 -6
  315. package/src/duckdb/src/execution/physical_plan/plan_positional_join.cpp +1 -0
  316. package/src/duckdb/src/execution/physical_plan/plan_pragma.cpp +1 -1
  317. package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +3 -1
  318. package/src/duckdb/src/execution/physical_plan/plan_set_operation.cpp +90 -12
  319. package/src/duckdb/src/execution/physical_plan/plan_window.cpp +67 -22
  320. package/src/duckdb/src/execution/physical_plan_generator.cpp +6 -3
  321. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +163 -32
  322. package/src/duckdb/src/execution/reservoir_sample.cpp +112 -32
  323. package/src/duckdb/src/execution/window_executor.cpp +291 -26
  324. package/src/duckdb/src/execution/window_segment_tree.cpp +958 -114
  325. package/src/duckdb/src/function/aggregate/distributive/count.cpp +18 -16
  326. package/src/duckdb/src/function/aggregate/distributive/first.cpp +11 -4
  327. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +303 -131
  328. package/src/duckdb/src/function/cast/array_casts.cpp +226 -0
  329. package/src/duckdb/src/function/cast/bit_cast.cpp +2 -0
  330. package/src/duckdb/src/function/cast/cast_function_set.cpp +13 -2
  331. package/src/duckdb/src/function/cast/decimal_cast.cpp +2 -0
  332. package/src/duckdb/src/function/cast/default_casts.cpp +4 -1
  333. package/src/duckdb/src/function/cast/list_casts.cpp +151 -6
  334. package/src/duckdb/src/function/cast/numeric_casts.cpp +4 -0
  335. package/src/duckdb/src/function/cast/string_cast.cpp +95 -5
  336. package/src/duckdb/src/function/cast/struct_cast.cpp +53 -19
  337. package/src/duckdb/src/function/cast/time_casts.cpp +23 -1
  338. package/src/duckdb/src/function/cast/union/from_struct.cpp +1 -0
  339. package/src/duckdb/src/function/cast/union_casts.cpp +4 -3
  340. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +8 -4
  341. package/src/duckdb/src/function/cast_rules.cpp +197 -31
  342. package/src/duckdb/src/function/compression_config.cpp +4 -0
  343. package/src/duckdb/src/function/function.cpp +15 -9
  344. package/src/duckdb/src/function/function_binder.cpp +80 -29
  345. package/src/duckdb/src/function/function_set.cpp +6 -6
  346. package/src/duckdb/src/function/pragma/pragma_functions.cpp +10 -8
  347. package/src/duckdb/src/function/pragma/pragma_queries.cpp +34 -38
  348. package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +12 -0
  349. package/src/duckdb/src/function/scalar/list/contains_or_position.cpp +10 -1
  350. package/src/duckdb/src/function/scalar/list/list_concat.cpp +11 -1
  351. package/src/duckdb/src/function/scalar/list/list_extract.cpp +14 -3
  352. package/src/duckdb/src/function/scalar/list/list_resize.cpp +4 -0
  353. package/src/duckdb/src/function/scalar/list/list_select.cpp +176 -0
  354. package/src/duckdb/src/function/scalar/list/list_zip.cpp +165 -0
  355. package/src/duckdb/src/function/scalar/nested_functions.cpp +33 -0
  356. package/src/duckdb/src/function/scalar/operators/add.cpp +53 -6
  357. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +48 -14
  358. package/src/duckdb/src/function/scalar/operators/multiply.cpp +9 -1
  359. package/src/duckdb/src/function/scalar/operators/subtract.cpp +19 -4
  360. package/src/duckdb/src/function/scalar/sequence/nextval.cpp +28 -55
  361. package/src/duckdb/src/function/scalar/strftime_format.cpp +242 -19
  362. package/src/duckdb/src/function/scalar/string/caseconvert.cpp +2 -2
  363. package/src/duckdb/src/function/scalar/string/concat.cpp +16 -6
  364. package/src/duckdb/src/function/scalar/string/length.cpp +124 -24
  365. package/src/duckdb/src/function/scalar/string/regexp.cpp +27 -27
  366. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +64 -15
  367. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +4 -3
  368. package/src/duckdb/src/function/scalar_function.cpp +8 -7
  369. package/src/duckdb/src/function/table/arrow/arrow_duck_schema.cpp +12 -0
  370. package/src/duckdb/src/function/table/arrow.cpp +20 -27
  371. package/src/duckdb/src/function/table/arrow_conversion.cpp +433 -150
  372. package/src/duckdb/src/function/table/copy_csv.cpp +62 -62
  373. package/src/duckdb/src/function/table/range.cpp +6 -3
  374. package/src/duckdb/src/function/table/read_csv.cpp +107 -759
  375. package/src/duckdb/src/function/table/read_file.cpp +242 -0
  376. package/src/duckdb/src/function/table/sniff_csv.cpp +275 -0
  377. package/src/duckdb/src/function/table/system/duckdb_columns.cpp +15 -3
  378. package/src/duckdb/src/function/table/system/duckdb_databases.cpp +5 -0
  379. package/src/duckdb/src/function/table/system/duckdb_dependencies.cpp +9 -13
  380. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +67 -14
  381. package/src/duckdb/src/function/table/system/duckdb_indexes.cpp +12 -15
  382. package/src/duckdb/src/function/table/system/duckdb_memory.cpp +63 -0
  383. package/src/duckdb/src/function/table/system/duckdb_optimizers.cpp +57 -0
  384. package/src/duckdb/src/function/table/system/duckdb_schemas.cpp +5 -0
  385. package/src/duckdb/src/function/table/system/duckdb_secrets.cpp +128 -0
  386. package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +12 -6
  387. package/src/duckdb/src/function/table/system/duckdb_settings.cpp +0 -1
  388. package/src/duckdb/src/function/table/system/duckdb_tables.cpp +5 -0
  389. package/src/duckdb/src/function/table/system/duckdb_types.cpp +6 -0
  390. package/src/duckdb/src/function/table/system/duckdb_views.cpp +5 -0
  391. package/src/duckdb/src/function/table/system/pragma_table_info.cpp +166 -64
  392. package/src/duckdb/src/function/table/system/test_all_types.cpp +2 -1
  393. package/src/duckdb/src/function/table/system_functions.cpp +3 -2
  394. package/src/duckdb/src/function/table/table_scan.cpp +50 -110
  395. package/src/duckdb/src/function/table/version/pragma_version.cpp +4 -44
  396. package/src/duckdb/src/function/table_function.cpp +2 -2
  397. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +4 -3
  398. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/dependency/dependency_dependent_entry.hpp +27 -0
  399. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/dependency/dependency_entry.hpp +66 -0
  400. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/dependency/dependency_subject_entry.hpp +27 -0
  401. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_index_entry.hpp +25 -5
  402. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_schema_entry.hpp +3 -1
  403. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -1
  404. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/index_catalog_entry.hpp +19 -5
  405. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/list.hpp +1 -0
  406. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/scalar_macro_catalog_entry.hpp +2 -0
  407. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +1 -1
  408. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +26 -11
  409. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +1 -0
  410. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_macro_catalog_entry.hpp +2 -0
  411. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +1 -0
  412. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/view_catalog_entry.hpp +2 -0
  413. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +15 -0
  414. package/src/duckdb/src/include/duckdb/catalog/catalog_set.hpp +41 -49
  415. package/src/duckdb/src/include/duckdb/catalog/catalog_transaction.hpp +1 -0
  416. package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +3 -1
  417. package/src/duckdb/src/include/duckdb/catalog/dependency.hpp +120 -8
  418. package/src/duckdb/src/include/duckdb/catalog/dependency_catalog_set.hpp +32 -0
  419. package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +2 -0
  420. package/src/duckdb/src/include/duckdb/catalog/dependency_manager.hpp +92 -12
  421. package/src/duckdb/src/include/duckdb/catalog/standard_entry.hpp +1 -1
  422. package/src/duckdb/src/include/duckdb/common/adbc/adbc-init.hpp +4 -2
  423. package/src/duckdb/src/include/duckdb/common/adbc/adbc.h +1153 -12
  424. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +6 -6
  425. package/src/duckdb/src/include/duckdb/common/adbc/driver_manager.h +0 -2
  426. package/src/duckdb/src/include/duckdb/common/adbc/options.h +64 -0
  427. package/src/duckdb/src/include/duckdb/common/adbc/single_batch_array_stream.hpp +8 -0
  428. package/src/duckdb/src/include/duckdb/common/arrow/arrow.hpp +25 -6
  429. package/src/duckdb/src/include/duckdb/common/arrow/arrow_wrapper.hpp +3 -3
  430. package/src/duckdb/src/include/duckdb/common/arrow/result_arrow_wrapper.hpp +1 -1
  431. package/src/duckdb/src/include/duckdb/common/bit_utils.hpp +30 -0
  432. package/src/duckdb/src/include/duckdb/common/bitpacking.hpp +6 -6
  433. package/src/duckdb/src/include/duckdb/common/case_insensitive_map.hpp +10 -0
  434. package/src/duckdb/src/include/duckdb/common/constants.hpp +1 -0
  435. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +75 -19
  436. package/src/duckdb/src/include/duckdb/common/enums/catalog_type.hpp +11 -1
  437. package/src/duckdb/src/include/duckdb/common/enums/compression_type.hpp +3 -0
  438. package/src/duckdb/src/include/duckdb/common/enums/expression_type.hpp +2 -0
  439. package/src/duckdb/src/include/duckdb/common/enums/index_constraint_type.hpp +35 -0
  440. package/src/duckdb/src/include/duckdb/common/enums/join_type.hpp +16 -3
  441. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +6 -5
  442. package/src/duckdb/src/include/duckdb/common/enums/memory_tag.hpp +32 -0
  443. package/src/duckdb/src/include/duckdb/common/enums/on_create_conflict.hpp +26 -0
  444. package/src/duckdb/src/include/duckdb/common/enums/optimizer_type.hpp +2 -0
  445. package/src/duckdb/src/include/duckdb/common/enums/pending_execution_result.hpp +7 -1
  446. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +9 -3
  447. package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +6 -5
  448. package/src/duckdb/src/include/duckdb/common/enums/tableref_type.hpp +3 -2
  449. package/src/duckdb/src/include/duckdb/common/enums/wal_type.hpp +1 -0
  450. package/src/duckdb/src/include/duckdb/common/error_data.hpp +72 -0
  451. package/src/duckdb/src/include/duckdb/common/exception/binder_exception.hpp +47 -0
  452. package/src/duckdb/src/include/duckdb/common/exception/catalog_exception.hpp +39 -0
  453. package/src/duckdb/src/include/duckdb/common/exception/conversion_exception.hpp +27 -0
  454. package/src/duckdb/src/include/duckdb/common/exception/http_exception.hpp +62 -0
  455. package/src/duckdb/src/include/duckdb/common/exception/list.hpp +6 -0
  456. package/src/duckdb/src/include/duckdb/common/exception/parser_exception.hpp +29 -0
  457. package/src/duckdb/src/include/duckdb/common/exception/transaction_exception.hpp +25 -0
  458. package/src/duckdb/src/include/duckdb/common/exception.hpp +52 -166
  459. package/src/duckdb/src/include/duckdb/common/exception_format_value.hpp +7 -4
  460. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +53 -1
  461. package/src/duckdb/src/include/duckdb/common/helper.hpp +13 -3
  462. package/src/duckdb/src/include/duckdb/common/http_state.hpp +18 -4
  463. package/src/duckdb/src/include/duckdb/common/hugeint.hpp +5 -1
  464. package/src/duckdb/src/include/duckdb/common/limits.hpp +19 -1
  465. package/src/duckdb/src/include/duckdb/common/local_file_system.hpp +1 -0
  466. package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +7 -2
  467. package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +16 -3
  468. package/src/duckdb/src/include/duckdb/common/operator/add.hpp +13 -2
  469. package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +114 -5
  470. package/src/duckdb/src/include/duckdb/common/operator/comparison_operators.hpp +0 -4
  471. package/src/duckdb/src/include/duckdb/common/operator/convert_to_string.hpp +2 -0
  472. package/src/duckdb/src/include/duckdb/common/operator/decimal_cast_operators.hpp +29 -0
  473. package/src/duckdb/src/include/duckdb/common/operator/double_cast_operator.hpp +52 -0
  474. package/src/duckdb/src/include/duckdb/common/operator/integer_cast_operator.hpp +459 -0
  475. package/src/duckdb/src/include/duckdb/common/operator/multiply.hpp +2 -0
  476. package/src/duckdb/src/include/duckdb/common/operator/numeric_cast.hpp +136 -0
  477. package/src/duckdb/src/include/duckdb/common/operator/string_cast.hpp +2 -0
  478. package/src/duckdb/src/include/duckdb/common/operator/subtract.hpp +7 -1
  479. package/src/duckdb/src/include/duckdb/common/optional_idx.hpp +7 -5
  480. package/src/duckdb/src/include/duckdb/common/platform.h +53 -0
  481. package/src/duckdb/src/include/duckdb/common/progress_bar/display/terminal_progress_bar_display.hpp +5 -5
  482. package/src/duckdb/src/include/duckdb/common/progress_bar/progress_bar.hpp +22 -6
  483. package/src/duckdb/src/include/duckdb/common/radix.hpp +6 -0
  484. package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +20 -6
  485. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -0
  486. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +1 -0
  487. package/src/duckdb/src/include/duckdb/common/serializer/deserializer.hpp +43 -4
  488. package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +1 -0
  489. package/src/duckdb/src/include/duckdb/common/serializer/serializer.hpp +15 -0
  490. package/src/duckdb/src/include/duckdb/common/sort/comparators.hpp +2 -0
  491. package/src/duckdb/src/include/duckdb/common/sort/partition_state.hpp +12 -2
  492. package/src/duckdb/src/include/duckdb/common/sort/sort.hpp +81 -0
  493. package/src/duckdb/src/include/duckdb/common/sort/sorted_block.hpp +0 -78
  494. package/src/duckdb/src/include/duckdb/common/string_util.hpp +23 -1
  495. package/src/duckdb/src/include/duckdb/common/type_util.hpp +5 -1
  496. package/src/duckdb/src/include/duckdb/common/types/cast_helpers.hpp +26 -3
  497. package/src/duckdb/src/include/duckdb/common/types/conflict_manager.hpp +8 -0
  498. package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +3 -0
  499. package/src/duckdb/src/include/duckdb/common/types/date.hpp +3 -0
  500. package/src/duckdb/src/include/duckdb/common/types/datetime.hpp +5 -3
  501. package/src/duckdb/src/include/duckdb/common/types/hash.hpp +2 -0
  502. package/src/duckdb/src/include/duckdb/common/types/hugeint.hpp +81 -15
  503. package/src/duckdb/src/include/duckdb/common/types/interval.hpp +57 -29
  504. package/src/duckdb/src/include/duckdb/common/types/list_segment.hpp +1 -1
  505. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +4 -2
  506. package/src/duckdb/src/include/duckdb/common/types/row/row_data_collection.hpp +2 -2
  507. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_collection.hpp +26 -22
  508. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +7 -0
  509. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +7 -5
  510. package/src/duckdb/src/include/duckdb/common/types/time.hpp +6 -2
  511. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +2 -0
  512. package/src/duckdb/src/include/duckdb/common/types/uhugeint.hpp +216 -0
  513. package/src/duckdb/src/include/duckdb/common/types/validity_mask.hpp +18 -10
  514. package/src/duckdb/src/include/duckdb/common/types/value.hpp +31 -0
  515. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +18 -2
  516. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +22 -1
  517. package/src/duckdb/src/include/duckdb/common/types.hpp +151 -49
  518. package/src/duckdb/src/include/duckdb/common/uhugeint.hpp +81 -0
  519. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +70 -6
  520. package/src/duckdb/src/include/duckdb/common/vector_size.hpp +6 -6
  521. package/src/duckdb/src/include/duckdb/core_functions/aggregate/distributive_functions.hpp +29 -2
  522. package/src/duckdb/src/include/duckdb/core_functions/lambda_functions.hpp +131 -0
  523. package/src/duckdb/src/include/duckdb/core_functions/scalar/array_functions.hpp +69 -0
  524. package/src/duckdb/src/include/duckdb/core_functions/scalar/blob_functions.hpp +9 -0
  525. package/src/duckdb/src/include/duckdb/core_functions/scalar/date_functions.hpp +40 -4
  526. package/src/duckdb/src/include/duckdb/core_functions/scalar/list_functions.hpp +42 -0
  527. package/src/duckdb/src/include/duckdb/core_functions/scalar/secret_functions.hpp +27 -0
  528. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +56 -2
  529. package/src/duckdb/src/include/duckdb/core_functions/to_interval.hpp +29 -0
  530. package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +2 -2
  531. package/src/duckdb/src/include/duckdb/execution/executor.hpp +11 -13
  532. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +34 -19
  533. package/src/duckdb/src/include/duckdb/execution/index/fixed_size_allocator.hpp +18 -14
  534. package/src/duckdb/src/include/duckdb/execution/index/fixed_size_buffer.hpp +2 -1
  535. package/src/duckdb/src/include/duckdb/execution/index/index_type.hpp +57 -0
  536. package/src/duckdb/src/include/duckdb/execution/index/index_type_set.hpp +29 -0
  537. package/src/duckdb/src/include/duckdb/execution/index/unknown_index.hpp +65 -0
  538. package/src/duckdb/src/include/duckdb/execution/join_hashtable.hpp +35 -24
  539. package/src/duckdb/src/include/duckdb/execution/merge_sort_tree.hpp +630 -0
  540. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_hash_aggregate.hpp +2 -0
  541. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_window.hpp +3 -2
  542. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/buffer_manager/csv_buffer.hpp +103 -0
  543. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.hpp +74 -0
  544. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/buffer_manager/csv_file_handle.hpp +60 -0
  545. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/options/csv_option.hpp +155 -0
  546. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/options/csv_reader_options.hpp +163 -0
  547. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/options/state_machine_options.hpp +35 -0
  548. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/base_scanner.hpp +228 -0
  549. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/column_count_scanner.hpp +70 -0
  550. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/scanner_boundary.hpp +93 -0
  551. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/skip_scanner.hpp +60 -0
  552. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/string_value_scanner.hpp +197 -0
  553. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/sniffer/csv_sniffer.hpp +189 -0
  554. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/sniffer/quote_rules.hpp +21 -0
  555. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/state_machine/csv_state.hpp +30 -0
  556. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/state_machine/csv_state_machine.hpp +99 -0
  557. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/state_machine/csv_state_machine_cache.hpp +87 -0
  558. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/table_function/csv_file_scanner.hpp +70 -0
  559. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/table_function/global_csv_state.hpp +80 -0
  560. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/util/csv_casting.hpp +137 -0
  561. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/util/csv_error.hpp +104 -0
  562. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_batch_collector.hpp +0 -4
  563. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_buffered_collector.hpp +37 -0
  564. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_create_secret.hpp +38 -0
  565. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_pragma.hpp +4 -7
  566. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_reservoir_sample.hpp +6 -2
  567. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_blockwise_nl_join.hpp +1 -2
  568. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_delim_join.hpp +5 -18
  569. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_hash_join.hpp +14 -5
  570. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_iejoin.hpp +2 -2
  571. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_join.hpp +2 -1
  572. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_left_delim_join.hpp +37 -0
  573. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_nested_loop_join.hpp +1 -2
  574. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp +1 -1
  575. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_range_join.hpp +1 -1
  576. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_right_delim_join.hpp +37 -0
  577. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_order.hpp +0 -1
  578. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_top_n.hpp +0 -1
  579. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_database.hpp +35 -0
  580. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +8 -3
  581. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_export.hpp +14 -0
  582. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +1 -4
  583. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_expression_scan.hpp +0 -1
  584. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +17 -12
  585. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +4 -0
  586. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_union.hpp +3 -1
  587. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +2 -1
  588. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +6 -2
  589. package/src/duckdb/src/include/duckdb/execution/radix_partitioned_hashtable.hpp +3 -1
  590. package/src/duckdb/src/include/duckdb/execution/reservoir_sample.hpp +32 -18
  591. package/src/duckdb/src/include/duckdb/execution/task_error_manager.hpp +57 -0
  592. package/src/duckdb/src/include/duckdb/execution/window_executor.hpp +2 -0
  593. package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +101 -19
  594. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +46 -14
  595. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +6 -2
  596. package/src/duckdb/src/include/duckdb/function/built_in_functions.hpp +1 -0
  597. package/src/duckdb/src/include/duckdb/function/cast/bound_cast_data.hpp +26 -1
  598. package/src/duckdb/src/include/duckdb/function/cast/cast_function_set.hpp +3 -0
  599. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +1 -0
  600. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +7 -1
  601. package/src/duckdb/src/include/duckdb/function/compression/compression.hpp +10 -0
  602. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +16 -4
  603. package/src/duckdb/src/include/duckdb/function/function.hpp +12 -7
  604. package/src/duckdb/src/include/duckdb/function/function_binder.hpp +15 -12
  605. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +4 -3
  606. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +3 -3
  607. package/src/duckdb/src/include/duckdb/function/pragma/pragma_functions.hpp +4 -1
  608. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -0
  609. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +21 -1
  610. package/src/duckdb/src/include/duckdb/function/scalar/sequence_functions.hpp +22 -0
  611. package/src/duckdb/src/include/duckdb/function/scalar/strftime_format.hpp +16 -2
  612. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +22 -8
  613. package/src/duckdb/src/include/duckdb/function/table/arrow/arrow_duck_schema.hpp +6 -0
  614. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +35 -3
  615. package/src/duckdb/src/include/duckdb/function/table/list.hpp +1 -0
  616. package/src/duckdb/src/include/duckdb/function/table/range.hpp +12 -0
  617. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +14 -16
  618. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +12 -8
  619. package/src/duckdb/src/include/duckdb/function/table/table_scan.hpp +0 -2
  620. package/src/duckdb/src/include/duckdb/function/table_function.hpp +8 -3
  621. package/src/duckdb/src/include/duckdb/main/appender.hpp +3 -1
  622. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +3 -2
  623. package/src/duckdb/src/include/duckdb/main/buffered_data/buffered_data.hpp +89 -0
  624. package/src/duckdb/src/include/duckdb/main/buffered_data/simple_buffered_data.hpp +53 -0
  625. package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +2 -1
  626. package/src/duckdb/src/include/duckdb/main/capi/cast/generic.hpp +2 -0
  627. package/src/duckdb/src/include/duckdb/main/chunk_scan_state/query_result.hpp +4 -4
  628. package/src/duckdb/src/include/duckdb/main/chunk_scan_state.hpp +3 -3
  629. package/src/duckdb/src/include/duckdb/main/client_config.hpp +8 -10
  630. package/src/duckdb/src/include/duckdb/main/client_context.hpp +22 -23
  631. package/src/duckdb/src/include/duckdb/main/client_context_state.hpp +37 -0
  632. package/src/duckdb/src/include/duckdb/main/client_data.hpp +1 -7
  633. package/src/duckdb/src/include/duckdb/main/config.hpp +24 -7
  634. package/src/duckdb/src/include/duckdb/main/connection.hpp +8 -1
  635. package/src/duckdb/src/include/duckdb/main/connection_manager.hpp +17 -26
  636. package/src/duckdb/src/include/duckdb/main/database.hpp +4 -2
  637. package/src/duckdb/src/include/duckdb/main/database_manager.hpp +39 -7
  638. package/src/duckdb/src/include/duckdb/main/database_path_and_type.hpp +5 -4
  639. package/src/duckdb/src/include/duckdb/main/error_manager.hpp +4 -1
  640. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +203 -197
  641. package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +42 -16
  642. package/src/duckdb/src/include/duckdb/main/extension_util.hpp +8 -1
  643. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +1 -1
  644. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +5 -2
  645. package/src/duckdb/src/include/duckdb/main/prepared_statement.hpp +4 -4
  646. package/src/duckdb/src/include/duckdb/main/prepared_statement_data.hpp +2 -0
  647. package/src/duckdb/src/include/duckdb/main/query_profiler.hpp +0 -32
  648. package/src/duckdb/src/include/duckdb/main/query_result.hpp +13 -12
  649. package/src/duckdb/src/include/duckdb/main/relation/read_csv_relation.hpp +6 -6
  650. package/src/duckdb/src/include/duckdb/main/relation/setop_relation.hpp +3 -1
  651. package/src/duckdb/src/include/duckdb/main/secret/secret.hpp +206 -0
  652. package/src/duckdb/src/include/duckdb/main/secret/secret_manager.hpp +211 -0
  653. package/src/duckdb/src/include/duckdb/main/secret/secret_storage.hpp +164 -0
  654. package/src/duckdb/src/include/duckdb/main/settings.hpp +52 -13
  655. package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +9 -1
  656. package/src/duckdb/src/include/duckdb/optimizer/deliminator.hpp +4 -1
  657. package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +2 -0
  658. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_node.hpp +1 -1
  659. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_relation.hpp +2 -0
  660. package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph_manager.hpp +3 -0
  661. package/src/duckdb/src/include/duckdb/optimizer/join_order/relation_statistics_helper.hpp +1 -0
  662. package/src/duckdb/src/include/duckdb/parallel/event.hpp +2 -2
  663. package/src/duckdb/src/include/duckdb/parallel/meta_pipeline.hpp +14 -22
  664. package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +20 -0
  665. package/src/duckdb/src/include/duckdb/parallel/pipeline_executor.hpp +3 -5
  666. package/src/duckdb/src/include/duckdb/parallel/task.hpp +7 -0
  667. package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +10 -4
  668. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +3 -0
  669. package/src/duckdb/src/include/duckdb/parser/column_definition.hpp +8 -1
  670. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +11 -4
  671. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +16 -9
  672. package/src/duckdb/src/include/duckdb/parser/expression/lambdaref_expression.hpp +47 -0
  673. package/src/duckdb/src/include/duckdb/parser/expression/list.hpp +1 -0
  674. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +29 -2
  675. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +2 -1
  676. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +47 -2
  677. package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +3 -0
  678. package/src/duckdb/src/include/duckdb/parser/parsed_data/bound_pragma_info.hpp +29 -0
  679. package/src/duckdb/src/include/duckdb/parser/parsed_data/comment_on_info.hpp +45 -0
  680. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_index_info.hpp +21 -22
  681. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +5 -11
  682. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_schema_info.hpp +23 -0
  683. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_secret_info.hpp +47 -0
  684. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_info.hpp +3 -1
  685. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_type_info.hpp +2 -0
  686. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +4 -0
  687. package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +6 -1
  688. package/src/duckdb/src/include/duckdb/parser/parsed_data/extra_drop_info.hpp +66 -0
  689. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +3 -1
  690. package/src/duckdb/src/include/duckdb/parser/parsed_data/pragma_info.hpp +8 -4
  691. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +1 -3
  692. package/src/duckdb/src/include/duckdb/parser/parser_extension.hpp +2 -0
  693. package/src/duckdb/src/include/duckdb/parser/qualified_name.hpp +1 -1
  694. package/src/duckdb/src/include/duckdb/parser/query_error_context.hpp +5 -22
  695. package/src/duckdb/src/include/duckdb/parser/query_node/set_operation_node.hpp +2 -0
  696. package/src/duckdb/src/include/duckdb/parser/statement/copy_database_statement.hpp +40 -0
  697. package/src/duckdb/src/include/duckdb/parser/statement/list.hpp +1 -1
  698. package/src/duckdb/src/include/duckdb/parser/statement/set_statement.hpp +4 -3
  699. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -2
  700. package/src/duckdb/src/include/duckdb/parser/tableref/list.hpp +1 -0
  701. package/src/duckdb/src/include/duckdb/parser/tableref/showref.hpp +47 -0
  702. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +2 -1
  703. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +2 -1
  704. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +20 -3
  705. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +5 -1
  706. package/src/duckdb/src/include/duckdb/planner/binder.hpp +24 -27
  707. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +4 -0
  708. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +4 -0
  709. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +4 -1
  710. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +2 -1
  711. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +4 -2
  712. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +5 -6
  713. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +11 -0
  714. package/src/duckdb/src/include/duckdb/planner/expression.hpp +2 -1
  715. package/src/duckdb/src/include/duckdb/planner/expression_binder/column_alias_binder.hpp +2 -2
  716. package/src/duckdb/src/include/duckdb/planner/expression_binder/index_binder.hpp +3 -2
  717. package/src/duckdb/src/include/duckdb/planner/expression_binder/order_binder.hpp +2 -1
  718. package/src/duckdb/src/include/duckdb/planner/expression_binder/table_function_binder.hpp +2 -1
  719. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +65 -22
  720. package/src/duckdb/src/include/duckdb/planner/filter/struct_filter.hpp +41 -0
  721. package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +2 -1
  722. package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +2 -1
  723. package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +2 -0
  724. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_database.hpp +45 -0
  725. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +3 -0
  726. package/src/duckdb/src/include/duckdb/planner/operator/logical_create_secret.hpp +43 -0
  727. package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +3 -2
  728. package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +5 -10
  729. package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +2 -0
  730. package/src/duckdb/src/include/duckdb/planner/operator/logical_set_operation.hpp +11 -4
  731. package/src/duckdb/src/include/duckdb/planner/parsed_data/bound_create_table_info.hpp +3 -3
  732. package/src/duckdb/src/include/duckdb/planner/pragma_handler.hpp +1 -1
  733. package/src/duckdb/src/include/duckdb/planner/query_node/bound_set_operation_node.hpp +2 -0
  734. package/src/duckdb/src/include/duckdb/planner/subquery/flatten_dependent_join.hpp +3 -0
  735. package/src/duckdb/src/include/duckdb/planner/subquery/rewrite_cte_scan.hpp +29 -0
  736. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +9 -7
  737. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +2 -1
  738. package/src/duckdb/src/include/duckdb/planner/tableref/bound_dummytableref.hpp +3 -2
  739. package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +9 -5
  740. package/src/duckdb/src/include/duckdb/storage/buffer/buffer_pool.hpp +23 -6
  741. package/src/duckdb/src/include/duckdb/storage/buffer/temporary_file_information.hpp +7 -0
  742. package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +11 -4
  743. package/src/duckdb/src/include/duckdb/storage/checkpoint/row_group_writer.hpp +0 -3
  744. package/src/duckdb/src/include/duckdb/storage/checkpoint/string_checkpoint_state.hpp +1 -1
  745. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +7 -7
  746. package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +1 -1
  747. package/src/duckdb/src/include/duckdb/storage/compression/alp/algorithm/alp.hpp +408 -0
  748. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_analyze.hpp +173 -0
  749. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_compress.hpp +283 -0
  750. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_constants.hpp +134 -0
  751. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_fetch.hpp +42 -0
  752. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_scan.hpp +244 -0
  753. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_utils.hpp +103 -0
  754. package/src/duckdb/src/include/duckdb/storage/compression/alprd/algorithm/alprd.hpp +235 -0
  755. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_analyze.hpp +134 -0
  756. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_compress.hpp +301 -0
  757. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_constants.hpp +35 -0
  758. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_fetch.hpp +41 -0
  759. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_scan.hpp +252 -0
  760. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +7 -103
  761. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +5 -234
  762. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_scan.hpp +2 -2
  763. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +7 -107
  764. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +5 -184
  765. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +12 -17
  766. package/src/duckdb/src/include/duckdb/storage/database_size.hpp +1 -0
  767. package/src/duckdb/src/include/duckdb/storage/index.hpp +40 -42
  768. package/src/duckdb/src/include/duckdb/storage/index_storage_info.hpp +77 -0
  769. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_manager.hpp +6 -2
  770. package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +0 -1
  771. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +12 -6
  772. package/src/duckdb/src/include/duckdb/storage/segment/uncompressed.hpp +8 -3
  773. package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +17 -17
  774. package/src/duckdb/src/include/duckdb/storage/statistics/array_stats.hpp +40 -0
  775. package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +12 -3
  776. package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats_union.hpp +3 -0
  777. package/src/duckdb/src/include/duckdb/storage/storage_extension.hpp +3 -2
  778. package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +49 -24
  779. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +8 -4
  780. package/src/duckdb/src/include/duckdb/storage/table/array_column_data.hpp +67 -0
  781. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +3 -3
  782. package/src/duckdb/src/include/duckdb/storage/table/column_data_checkpointer.hpp +1 -0
  783. package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +1 -2
  784. package/src/duckdb/src/include/duckdb/storage/table/data_table_info.hpp +8 -3
  785. package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +1 -1
  786. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +4 -2
  787. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +7 -0
  788. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +12 -1
  789. package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +1 -1
  790. package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +1 -1
  791. package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +16 -12
  792. package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +4 -0
  793. package/src/duckdb/src/include/duckdb/storage/table_storage_info.hpp +6 -9
  794. package/src/duckdb/src/include/duckdb/storage/temporary_memory_manager.hpp +119 -0
  795. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +13 -55
  796. package/src/duckdb/src/include/duckdb/transaction/duck_transaction.hpp +1 -1
  797. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +4 -5
  798. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +2 -2
  799. package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +6 -3
  800. package/src/duckdb/src/include/duckdb/transaction/transaction_context.hpp +4 -4
  801. package/src/duckdb/src/include/duckdb/transaction/transaction_manager.hpp +3 -3
  802. package/src/duckdb/src/include/duckdb/verification/fetch_row_verifier.hpp +25 -0
  803. package/src/duckdb/src/include/duckdb/verification/statement_verifier.hpp +5 -0
  804. package/src/duckdb/src/include/duckdb.h +571 -143
  805. package/src/duckdb/src/main/appender.cpp +17 -2
  806. package/src/duckdb/src/main/attached_database.cpp +24 -12
  807. package/src/duckdb/src/main/buffered_data/simple_buffered_data.cpp +96 -0
  808. package/src/duckdb/src/main/capi/appender-c.cpp +42 -3
  809. package/src/duckdb/src/main/capi/arrow-c.cpp +32 -9
  810. package/src/duckdb/src/main/capi/datetime-c.cpp +22 -0
  811. package/src/duckdb/src/main/capi/duckdb-c.cpp +14 -4
  812. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +66 -2
  813. package/src/duckdb/src/main/capi/helper-c.cpp +76 -2
  814. package/src/duckdb/src/main/capi/hugeint-c.cpp +23 -0
  815. package/src/duckdb/src/main/capi/logical_types-c.cpp +27 -3
  816. package/src/duckdb/src/main/capi/pending-c.cpp +43 -9
  817. package/src/duckdb/src/main/capi/prepared-c.cpp +38 -2
  818. package/src/duckdb/src/main/capi/result-c.cpp +54 -3
  819. package/src/duckdb/src/main/capi/table_function-c.cpp +4 -4
  820. package/src/duckdb/src/main/capi/value-c.cpp +10 -0
  821. package/src/duckdb/src/main/chunk_scan_state/query_result.cpp +3 -3
  822. package/src/duckdb/src/main/client_context.cpp +259 -250
  823. package/src/duckdb/src/main/client_data.cpp +0 -1
  824. package/src/duckdb/src/main/client_verify.cpp +26 -8
  825. package/src/duckdb/src/main/config.cpp +34 -13
  826. package/src/duckdb/src/main/connection.cpp +27 -6
  827. package/src/duckdb/src/main/connection_manager.cpp +54 -0
  828. package/src/duckdb/src/main/database.cpp +44 -39
  829. package/src/duckdb/src/main/database_manager.cpp +106 -8
  830. package/src/duckdb/src/main/database_path_and_type.cpp +27 -8
  831. package/src/duckdb/src/main/db_instance_cache.cpp +4 -4
  832. package/src/duckdb/src/main/error_manager.cpp +12 -3
  833. package/src/duckdb/src/main/extension/extension_alias.cpp +2 -2
  834. package/src/duckdb/src/main/extension/extension_helper.cpp +15 -16
  835. package/src/duckdb/src/main/extension/extension_install.cpp +33 -24
  836. package/src/duckdb/src/main/extension/extension_load.cpp +22 -21
  837. package/src/duckdb/src/main/extension/extension_util.cpp +12 -0
  838. package/src/duckdb/src/main/materialized_query_result.cpp +1 -1
  839. package/src/duckdb/src/main/pending_query_result.cpp +25 -8
  840. package/src/duckdb/src/main/prepared_statement.cpp +5 -5
  841. package/src/duckdb/src/main/prepared_statement_data.cpp +8 -1
  842. package/src/duckdb/src/main/query_profiler.cpp +11 -11
  843. package/src/duckdb/src/main/query_result.cpp +32 -6
  844. package/src/duckdb/src/main/relation/cross_product_relation.cpp +1 -1
  845. package/src/duckdb/src/main/relation/join_relation.cpp +2 -2
  846. package/src/duckdb/src/main/relation/read_csv_relation.cpp +38 -32
  847. package/src/duckdb/src/main/relation/setop_relation.cpp +5 -3
  848. package/src/duckdb/src/main/relation.cpp +5 -5
  849. package/src/duckdb/src/main/secret/secret.cpp +135 -0
  850. package/src/duckdb/src/main/secret/secret_manager.cpp +634 -0
  851. package/src/duckdb/src/main/secret/secret_storage.cpp +233 -0
  852. package/src/duckdb/src/main/settings/settings.cpp +133 -38
  853. package/src/duckdb/src/main/stream_query_result.cpp +53 -14
  854. package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +6 -0
  855. package/src/duckdb/src/optimizer/cse_optimizer.cpp +1 -1
  856. package/src/duckdb/src/optimizer/deliminator.cpp +136 -14
  857. package/src/duckdb/src/optimizer/filter_combiner.cpp +72 -26
  858. package/src/duckdb/src/optimizer/filter_pushdown.cpp +3 -0
  859. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +2 -1
  860. package/src/duckdb/src/optimizer/join_order/cost_model.cpp +0 -1
  861. package/src/duckdb/src/optimizer/join_order/join_node.cpp +4 -0
  862. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +3 -6
  863. package/src/duckdb/src/optimizer/join_order/join_relation_set.cpp +20 -0
  864. package/src/duckdb/src/optimizer/join_order/query_graph_manager.cpp +71 -40
  865. package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +12 -3
  866. package/src/duckdb/src/optimizer/join_order/relation_statistics_helper.cpp +77 -3
  867. package/src/duckdb/src/optimizer/pushdown/pushdown_projection.cpp +7 -7
  868. package/src/duckdb/src/optimizer/pushdown/pushdown_semi_anti_join.cpp +56 -0
  869. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +21 -0
  870. package/src/duckdb/src/optimizer/rule/date_part_simplification.cpp +2 -2
  871. package/src/duckdb/src/optimizer/rule/move_constants.cpp +15 -10
  872. package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +70 -0
  873. package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +17 -5
  874. package/src/duckdb/src/optimizer/statistics/expression/propagate_cast.cpp +1 -0
  875. package/src/duckdb/src/optimizer/statistics/expression/propagate_comparison.cpp +1 -0
  876. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +1 -2
  877. package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +22 -9
  878. package/src/duckdb/src/optimizer/statistics/operator/propagate_window.cpp +28 -4
  879. package/src/duckdb/src/optimizer/unnest_rewriter.cpp +12 -7
  880. package/src/duckdb/src/parallel/event.cpp +2 -2
  881. package/src/duckdb/src/parallel/executor.cpp +114 -81
  882. package/src/duckdb/src/parallel/executor_task.cpp +2 -4
  883. package/src/duckdb/src/parallel/meta_pipeline.cpp +28 -29
  884. package/src/duckdb/src/parallel/pipeline.cpp +41 -41
  885. package/src/duckdb/src/parallel/pipeline_event.cpp +2 -4
  886. package/src/duckdb/src/parallel/pipeline_executor.cpp +13 -75
  887. package/src/duckdb/src/parallel/task_scheduler.cpp +22 -13
  888. package/src/duckdb/src/parser/column_definition.cpp +22 -4
  889. package/src/duckdb/src/parser/column_list.cpp +2 -1
  890. package/src/duckdb/src/parser/expression/function_expression.cpp +1 -1
  891. package/src/duckdb/src/parser/expression/lambda_expression.cpp +51 -0
  892. package/src/duckdb/src/parser/expression/lambdaref_expression.cpp +59 -0
  893. package/src/duckdb/src/parser/expression/window_expression.cpp +9 -1
  894. package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +40 -0
  895. package/src/duckdb/src/parser/parsed_data/attach_info.cpp +1 -0
  896. package/src/duckdb/src/parser/parsed_data/comment_on_info.cpp +19 -0
  897. package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +11 -9
  898. package/src/duckdb/src/parser/parsed_data/create_info.cpp +1 -0
  899. package/src/duckdb/src/parser/parsed_data/create_secret_info.cpp +22 -0
  900. package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +17 -0
  901. package/src/duckdb/src/parser/parsed_data/create_type_info.cpp +19 -0
  902. package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +13 -9
  903. package/src/duckdb/src/parser/parsed_data/drop_info.cpp +8 -9
  904. package/src/duckdb/src/parser/parsed_data/extra_drop_info.cpp +16 -0
  905. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +3 -1
  906. package/src/duckdb/src/parser/parser.cpp +14 -8
  907. package/src/duckdb/src/parser/query_error_context.cpp +12 -13
  908. package/src/duckdb/src/parser/query_node/select_node.cpp +5 -1
  909. package/src/duckdb/src/parser/query_node/set_operation_node.cpp +8 -13
  910. package/src/duckdb/src/parser/statement/copy_database_statement.cpp +41 -0
  911. package/src/duckdb/src/parser/statement/set_statement.cpp +5 -1
  912. package/src/duckdb/src/parser/tableref/basetableref.cpp +1 -0
  913. package/src/duckdb/src/parser/tableref/showref.cpp +47 -0
  914. package/src/duckdb/src/parser/transform/constraint/transform_constraint.cpp +6 -2
  915. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +1 -0
  916. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +30 -15
  917. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +1 -0
  918. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +3 -2
  919. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +34 -4
  920. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +26 -12
  921. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +1 -1
  922. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +34 -5
  923. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +3 -1
  924. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +3 -1
  925. package/src/duckdb/src/parser/transform/expression/transform_multi_assign_reference.cpp +3 -3
  926. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +3 -3
  927. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +1 -1
  928. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +13 -13
  929. package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +2 -0
  930. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +1 -1
  931. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +32 -1
  932. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +1 -1
  933. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +1 -0
  934. package/src/duckdb/src/parser/transform/statement/transform_comment_on.cpp +108 -0
  935. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +45 -37
  936. package/src/duckdb/src/parser/transform/statement/transform_copy_database.cpp +29 -0
  937. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +5 -14
  938. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +0 -1
  939. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +1 -1
  940. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +25 -6
  941. package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -1
  942. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +6 -14
  943. package/src/duckdb/src/parser/transform/statement/transform_secret.cpp +103 -0
  944. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +8 -1
  945. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +4 -8
  946. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -5
  947. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +14 -41
  948. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +13 -6
  949. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +3 -1
  950. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +1 -1
  951. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +1 -2
  952. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +6 -5
  953. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +1 -1
  954. package/src/duckdb/src/parser/transformer.cpp +22 -0
  955. package/src/duckdb/src/planner/bind_context.cpp +23 -14
  956. package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +15 -14
  957. package/src/duckdb/src/planner/binder/expression/bind_between_expression.cpp +20 -9
  958. package/src/duckdb/src/planner/binder/expression/bind_case_expression.cpp +12 -7
  959. package/src/duckdb/src/planner/binder/expression/bind_cast_expression.cpp +4 -4
  960. package/src/duckdb/src/planner/binder/expression/bind_collate_expression.cpp +3 -3
  961. package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +279 -195
  962. package/src/duckdb/src/planner/binder/expression/bind_comparison_expression.cpp +103 -17
  963. package/src/duckdb/src/planner/binder/expression/bind_conjunction_expression.cpp +3 -3
  964. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +91 -68
  965. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +116 -84
  966. package/src/duckdb/src/planner/binder/expression/bind_macro_expression.cpp +85 -15
  967. package/src/duckdb/src/planner/binder/expression/bind_operator_expression.cpp +68 -31
  968. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +7 -7
  969. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +11 -7
  970. package/src/duckdb/src/planner/binder/expression/bind_unnest_expression.cpp +42 -19
  971. package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +38 -16
  972. package/src/duckdb/src/planner/binder/query_node/bind_cte_node.cpp +16 -7
  973. package/src/duckdb/src/planner/binder/query_node/bind_recursive_cte_node.cpp +3 -0
  974. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +83 -12
  975. package/src/duckdb/src/planner/binder/query_node/bind_setop_node.cpp +28 -37
  976. package/src/duckdb/src/planner/binder/query_node/bind_table_macro_node.cpp +3 -4
  977. package/src/duckdb/src/planner/binder/query_node/plan_cte_node.cpp +2 -2
  978. package/src/duckdb/src/planner/binder/query_node/plan_recursive_cte_node.cpp +3 -3
  979. package/src/duckdb/src/planner/binder/query_node/plan_setop.cpp +7 -5
  980. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +10 -0
  981. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +48 -50
  982. package/src/duckdb/src/planner/binder/statement/bind_copy_database.cpp +187 -0
  983. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +38 -22
  984. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +8 -15
  985. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +6 -1
  986. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +2 -2
  987. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +12 -10
  988. package/src/duckdb/src/planner/binder/statement/bind_pragma.cpp +37 -13
  989. package/src/duckdb/src/planner/binder/statement/bind_set.cpp +8 -2
  990. package/src/duckdb/src/planner/binder/statement/bind_simple.cpp +2 -0
  991. package/src/duckdb/src/planner/binder/statement/bind_summarize.cpp +29 -14
  992. package/src/duckdb/src/planner/binder/statement/bind_vacuum.cpp +1 -1
  993. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +16 -6
  994. package/src/duckdb/src/planner/binder/tableref/bind_expressionlistref.cpp +11 -4
  995. package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +1 -1
  996. package/src/duckdb/src/planner/binder/tableref/bind_named_parameters.cpp +2 -2
  997. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +18 -17
  998. package/src/duckdb/src/planner/binder/tableref/bind_showref.cpp +85 -0
  999. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +11 -17
  1000. package/src/duckdb/src/planner/binder/tableref/plan_cteref.cpp +1 -9
  1001. package/src/duckdb/src/planner/binder.cpp +31 -26
  1002. package/src/duckdb/src/planner/bound_result_modifier.cpp +24 -0
  1003. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +1 -1
  1004. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +10 -1
  1005. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +20 -4
  1006. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +9 -10
  1007. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +65 -3
  1008. package/src/duckdb/src/planner/expression.cpp +15 -5
  1009. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +5 -6
  1010. package/src/duckdb/src/planner/expression_binder/check_binder.cpp +9 -8
  1011. package/src/duckdb/src/planner/expression_binder/column_alias_binder.cpp +10 -7
  1012. package/src/duckdb/src/planner/expression_binder/having_binder.cpp +9 -4
  1013. package/src/duckdb/src/planner/expression_binder/index_binder.cpp +0 -25
  1014. package/src/duckdb/src/planner/expression_binder/order_binder.cpp +8 -11
  1015. package/src/duckdb/src/planner/expression_binder/qualify_binder.cpp +3 -2
  1016. package/src/duckdb/src/planner/expression_binder/table_function_binder.cpp +15 -8
  1017. package/src/duckdb/src/planner/expression_binder/where_binder.cpp +3 -4
  1018. package/src/duckdb/src/planner/expression_binder.cpp +51 -25
  1019. package/src/duckdb/src/planner/expression_iterator.cpp +2 -1
  1020. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -0
  1021. package/src/duckdb/src/planner/filter/struct_filter.cpp +33 -0
  1022. package/src/duckdb/src/planner/joinside.cpp +1 -1
  1023. package/src/duckdb/src/planner/logical_operator.cpp +2 -1
  1024. package/src/duckdb/src/planner/operator/logical_copy_database.cpp +32 -0
  1025. package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +13 -4
  1026. package/src/duckdb/src/planner/operator/logical_create_table.cpp +2 -0
  1027. package/src/duckdb/src/planner/operator/logical_get.cpp +4 -1
  1028. package/src/duckdb/src/planner/operator/logical_join.cpp +8 -0
  1029. package/src/duckdb/src/planner/planner.cpp +24 -23
  1030. package/src/duckdb/src/planner/pragma_handler.cpp +10 -19
  1031. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +99 -6
  1032. package/src/duckdb/src/planner/subquery/rewrite_cte_scan.cpp +36 -0
  1033. package/src/duckdb/src/planner/table_binding.cpp +14 -12
  1034. package/src/duckdb/src/storage/buffer/block_handle.cpp +12 -10
  1035. package/src/duckdb/src/storage/buffer/block_manager.cpp +1 -1
  1036. package/src/duckdb/src/storage/buffer/buffer_pool.cpp +25 -9
  1037. package/src/duckdb/src/storage/buffer/buffer_pool_reservation.cpp +4 -3
  1038. package/src/duckdb/src/storage/buffer_manager.cpp +14 -3
  1039. package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +0 -8
  1040. package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +15 -7
  1041. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +1 -1
  1042. package/src/duckdb/src/storage/checkpoint_manager.cpp +94 -41
  1043. package/src/duckdb/src/storage/compression/alp/alp.cpp +57 -0
  1044. package/src/duckdb/src/storage/compression/alp/alp_constants.cpp +13 -0
  1045. package/src/duckdb/src/storage/compression/alprd.cpp +57 -0
  1046. package/src/duckdb/src/storage/compression/bitpacking.cpp +86 -55
  1047. package/src/duckdb/src/storage/compression/bitpacking_hugeint.cpp +41 -41
  1048. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +1 -3
  1049. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +2 -0
  1050. package/src/duckdb/src/storage/compression/fsst.cpp +4 -4
  1051. package/src/duckdb/src/storage/compression/numeric_constant.cpp +3 -0
  1052. package/src/duckdb/src/storage/compression/rle.cpp +6 -4
  1053. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +7 -7
  1054. package/src/duckdb/src/storage/compression/uncompressed.cpp +1 -0
  1055. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +6 -6
  1056. package/src/duckdb/src/storage/data_table.cpp +32 -96
  1057. package/src/duckdb/src/storage/index.cpp +23 -11
  1058. package/src/duckdb/src/storage/local_storage.cpp +36 -19
  1059. package/src/duckdb/src/storage/metadata/metadata_manager.cpp +2 -2
  1060. package/src/duckdb/src/storage/partial_block_manager.cpp +1 -1
  1061. package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +9 -4
  1062. package/src/duckdb/src/storage/serialization/serialize_expression.cpp +3 -3
  1063. package/src/duckdb/src/storage/serialization/serialize_extra_drop_info.cpp +42 -0
  1064. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +7 -17
  1065. package/src/duckdb/src/storage/serialization/serialize_macro_function.cpp +2 -2
  1066. package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +84 -77
  1067. package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +63 -4
  1068. package/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp +23 -0
  1069. package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +2 -0
  1070. package/src/duckdb/src/storage/serialization/serialize_storage.cpp +35 -0
  1071. package/src/duckdb/src/storage/serialization/serialize_table_filter.cpp +19 -0
  1072. package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +22 -1
  1073. package/src/duckdb/src/storage/serialization/serialize_types.cpp +50 -0
  1074. package/src/duckdb/src/storage/single_file_block_manager.cpp +46 -7
  1075. package/src/duckdb/src/storage/standard_buffer_manager.cpp +57 -28
  1076. package/src/duckdb/src/storage/statistics/array_stats.cpp +131 -0
  1077. package/src/duckdb/src/storage/statistics/base_statistics.cpp +62 -4
  1078. package/src/duckdb/src/storage/statistics/column_statistics.cpp +1 -0
  1079. package/src/duckdb/src/storage/statistics/distinct_statistics.cpp +3 -1
  1080. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +21 -0
  1081. package/src/duckdb/src/storage/statistics/numeric_stats_union.cpp +5 -0
  1082. package/src/duckdb/src/storage/statistics/string_stats.cpp +2 -2
  1083. package/src/duckdb/src/storage/storage_info.cpp +1 -1
  1084. package/src/duckdb/src/storage/storage_manager.cpp +47 -22
  1085. package/src/duckdb/src/storage/table/array_column_data.cpp +241 -0
  1086. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -1
  1087. package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +3 -1
  1088. package/src/duckdb/src/storage/table/column_data.cpp +41 -18
  1089. package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +12 -3
  1090. package/src/duckdb/src/storage/table/column_segment.cpp +40 -6
  1091. package/src/duckdb/src/storage/table/list_column_data.cpp +18 -15
  1092. package/src/duckdb/src/storage/table/row_group.cpp +73 -21
  1093. package/src/duckdb/src/storage/table/row_group_collection.cpp +395 -20
  1094. package/src/duckdb/src/storage/table/row_version_manager.cpp +2 -1
  1095. package/src/duckdb/src/storage/table/scan_state.cpp +4 -0
  1096. package/src/duckdb/src/storage/table/standard_column_data.cpp +11 -5
  1097. package/src/duckdb/src/storage/table/struct_column_data.cpp +30 -10
  1098. package/src/duckdb/src/storage/table/table_statistics.cpp +7 -1
  1099. package/src/duckdb/src/storage/table/update_segment.cpp +18 -2
  1100. package/src/duckdb/src/storage/table_index_list.cpp +73 -7
  1101. package/src/duckdb/src/storage/temporary_memory_manager.cpp +148 -0
  1102. package/src/duckdb/src/storage/wal_replay.cpp +329 -152
  1103. package/src/duckdb/src/storage/write_ahead_log.cpp +157 -137
  1104. package/src/duckdb/src/transaction/cleanup_state.cpp +3 -2
  1105. package/src/duckdb/src/transaction/commit_state.cpp +89 -63
  1106. package/src/duckdb/src/transaction/duck_transaction.cpp +5 -3
  1107. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +26 -54
  1108. package/src/duckdb/src/transaction/meta_transaction.cpp +37 -23
  1109. package/src/duckdb/src/transaction/transaction_context.cpp +23 -4
  1110. package/src/duckdb/src/transaction/undo_buffer.cpp +16 -2
  1111. package/src/duckdb/src/verification/fetch_row_verifier.cpp +13 -0
  1112. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +5 -7
  1113. package/src/duckdb/src/verification/statement_verifier.cpp +6 -5
  1114. package/src/duckdb/third_party/fast_float/fast_float/fast_float.h +100 -29
  1115. package/src/duckdb/third_party/fmt/include/fmt/format-inl.h +1 -1
  1116. package/src/duckdb/third_party/fmt/include/fmt/format.h +4 -2
  1117. package/src/duckdb/third_party/fmt/include/fmt/printf.h +5 -5
  1118. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +4 -0
  1119. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +82 -21
  1120. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +551 -1004
  1121. package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +17 -3
  1122. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +24861 -23465
  1123. package/src/duckdb/third_party/libpg_query/src_backend_parser_scan.cpp +420 -389
  1124. package/src/duckdb/third_party/mbedtls/include/mbedtls/aes.h +640 -1
  1125. package/src/duckdb/third_party/mbedtls/include/mbedtls/aes_alt.h +1 -0
  1126. package/src/duckdb/third_party/mbedtls/include/mbedtls/aria.h +358 -0
  1127. package/src/duckdb/third_party/mbedtls/include/mbedtls/aria_alt.h +1 -0
  1128. package/src/duckdb/third_party/mbedtls/include/mbedtls/camellia.h +316 -0
  1129. package/src/duckdb/third_party/mbedtls/include/mbedtls/camellia_alt.h +1 -0
  1130. package/src/duckdb/third_party/mbedtls/include/mbedtls/ccm.h +1 -1
  1131. package/src/duckdb/third_party/mbedtls/include/mbedtls/ccm_alt.h +1 -0
  1132. package/src/duckdb/third_party/mbedtls/include/mbedtls/chacha20.h +1 -0
  1133. package/src/duckdb/third_party/mbedtls/include/mbedtls/chachapoly.h +1 -0
  1134. package/src/duckdb/third_party/mbedtls/include/mbedtls/cipher.h +124 -124
  1135. package/src/duckdb/third_party/mbedtls/include/mbedtls/cmac.h +1 -0
  1136. package/src/duckdb/third_party/mbedtls/include/mbedtls/entropy.h +293 -0
  1137. package/src/duckdb/third_party/mbedtls/include/mbedtls/gcm.h +383 -0
  1138. package/src/duckdb/third_party/mbedtls/include/mbedtls/gcm_alt.h +1 -0
  1139. package/src/duckdb/third_party/mbedtls/include/mbedtls/mbedtls_config.h +9 -0
  1140. package/src/duckdb/third_party/mbedtls/include/mbedtls/nist_kw.h +1 -0
  1141. package/src/duckdb/third_party/mbedtls/include/mbedtls/timing.h +1 -0
  1142. package/src/duckdb/third_party/mbedtls/include/mbedtls_wrapper.hpp +35 -6
  1143. package/src/duckdb/third_party/mbedtls/library/aes.cpp +2171 -0
  1144. package/src/duckdb/third_party/mbedtls/library/aesni.h +1 -0
  1145. package/src/duckdb/third_party/mbedtls/library/aria.cpp +1058 -0
  1146. package/src/duckdb/third_party/mbedtls/library/camellia.cpp +1087 -0
  1147. package/src/duckdb/third_party/mbedtls/library/cipher.cpp +1633 -0
  1148. package/src/duckdb/third_party/mbedtls/library/cipher_wrap.cpp +2270 -0
  1149. package/src/duckdb/third_party/mbedtls/library/cipher_wrap.h +146 -0
  1150. package/src/duckdb/third_party/mbedtls/library/entropy.cpp +701 -0
  1151. package/src/duckdb/third_party/mbedtls/library/entropy_poll.cpp +237 -0
  1152. package/src/duckdb/third_party/mbedtls/library/entropy_poll.h +76 -0
  1153. package/src/duckdb/third_party/mbedtls/library/gcm.cpp +1161 -0
  1154. package/src/duckdb/third_party/mbedtls/library/padlock.h +1 -0
  1155. package/src/duckdb/third_party/mbedtls/mbedtls_wrapper.cpp +132 -24
  1156. package/src/duckdb/third_party/pcg/pcg_uint128.hpp +1 -1
  1157. package/src/duckdb/third_party/skiplist/HeadNode.h +934 -0
  1158. package/src/duckdb/third_party/skiplist/IntegrityEnums.h +62 -0
  1159. package/src/duckdb/third_party/skiplist/Node.h +641 -0
  1160. package/src/duckdb/third_party/skiplist/NodeRefs.h +251 -0
  1161. package/src/duckdb/third_party/skiplist/RollingMedian.h +202 -0
  1162. package/src/duckdb/third_party/skiplist/SkipList.cpp +40 -0
  1163. package/src/duckdb/third_party/skiplist/SkipList.h +549 -0
  1164. package/src/duckdb/third_party/thrift/thrift/thrift-config.h +1 -1
  1165. package/src/duckdb/ub_extension_json_json_functions.cpp +2 -0
  1166. package/src/duckdb/ub_src_catalog.cpp +3 -1
  1167. package/src/duckdb/ub_src_catalog_catalog_entry_dependency.cpp +6 -0
  1168. package/src/duckdb/ub_src_common.cpp +1 -1
  1169. package/src/duckdb/ub_src_common_exception.cpp +6 -0
  1170. package/src/duckdb/ub_src_common_types.cpp +2 -2
  1171. package/src/duckdb/ub_src_core_functions.cpp +2 -0
  1172. package/src/duckdb/ub_src_core_functions_scalar_array.cpp +4 -0
  1173. package/src/duckdb/ub_src_core_functions_scalar_blob.cpp +2 -0
  1174. package/src/duckdb/ub_src_core_functions_scalar_list.cpp +7 -3
  1175. package/src/duckdb/ub_src_core_functions_scalar_secret.cpp +2 -0
  1176. package/src/duckdb/ub_src_core_functions_scalar_string.cpp +4 -0
  1177. package/src/duckdb/ub_src_execution_index.cpp +4 -0
  1178. package/src/duckdb/ub_src_execution_operator_csv_scanner_buffer_manager.cpp +6 -0
  1179. package/src/duckdb/ub_src_execution_operator_csv_scanner_scanner.cpp +10 -0
  1180. package/src/duckdb/ub_src_execution_operator_csv_scanner_state_machine.cpp +4 -0
  1181. package/src/duckdb/ub_src_execution_operator_csv_scanner_table_function.cpp +4 -0
  1182. package/src/duckdb/ub_src_execution_operator_csv_scanner_util.cpp +4 -0
  1183. package/src/duckdb/ub_src_execution_operator_helper.cpp +4 -0
  1184. package/src/duckdb/ub_src_execution_operator_join.cpp +4 -2
  1185. package/src/duckdb/ub_src_execution_operator_persistent.cpp +2 -0
  1186. package/src/duckdb/ub_src_execution_physical_plan.cpp +4 -2
  1187. package/src/duckdb/ub_src_function_cast.cpp +2 -0
  1188. package/src/duckdb/ub_src_function_scalar_list.cpp +4 -0
  1189. package/src/duckdb/ub_src_function_table.cpp +4 -4
  1190. package/src/duckdb/ub_src_function_table_system.cpp +6 -0
  1191. package/src/duckdb/ub_src_main.cpp +2 -0
  1192. package/src/duckdb/ub_src_main_buffered_data.cpp +2 -0
  1193. package/src/duckdb/ub_src_main_secret.cpp +6 -0
  1194. package/src/duckdb/ub_src_optimizer_pushdown.cpp +2 -0
  1195. package/src/duckdb/ub_src_parser_expression.cpp +2 -0
  1196. package/src/duckdb/ub_src_parser_parsed_data.cpp +6 -0
  1197. package/src/duckdb/ub_src_parser_statement.cpp +2 -2
  1198. package/src/duckdb/ub_src_parser_tableref.cpp +2 -0
  1199. package/src/duckdb/ub_src_parser_transform_statement.cpp +6 -0
  1200. package/src/duckdb/ub_src_planner_binder_statement.cpp +2 -2
  1201. package/src/duckdb/ub_src_planner_binder_tableref.cpp +2 -0
  1202. package/src/duckdb/ub_src_planner_filter.cpp +2 -0
  1203. package/src/duckdb/ub_src_planner_operator.cpp +2 -0
  1204. package/src/duckdb/ub_src_planner_subquery.cpp +2 -0
  1205. package/src/duckdb/ub_src_storage.cpp +2 -0
  1206. package/src/duckdb/ub_src_storage_compression.cpp +2 -0
  1207. package/src/duckdb/ub_src_storage_compression_alp.cpp +4 -0
  1208. package/src/duckdb/ub_src_storage_serialization.cpp +2 -0
  1209. package/src/duckdb/ub_src_storage_statistics.cpp +2 -0
  1210. package/src/duckdb/ub_src_storage_table.cpp +2 -0
  1211. package/src/duckdb_node.hpp +1 -1
  1212. package/src/statement.cpp +18 -8
  1213. package/src/utils.cpp +1 -15
  1214. package/test/affected.test.ts +2 -2
  1215. package/test/columns.test.ts +4 -3
  1216. package/test/config.test.ts +30 -0
  1217. package/test/each.test.ts +2 -2
  1218. package/test/exec.test.ts +2 -2
  1219. package/test/named_columns.test.ts +2 -2
  1220. package/test/null_error.test.ts +2 -2
  1221. package/test/prepare.test.ts +28 -26
  1222. package/test/serialization.test.ts +7 -6
  1223. package/test/test_all_types.test.ts +9 -4
  1224. package/test/typescript_decls.test.ts +6 -6
  1225. package/test/udf.test.ts +23 -23
  1226. package/test/unicode.test.ts +2 -2
@@ -9,7 +9,7 @@
9
9
 
10
10
  #pragma once
11
11
 
12
- // duplicate of duckdb/main/winapi.hpp
12
+ //! duplicate of duckdb/main/winapi.hpp
13
13
  #ifndef DUCKDB_API
14
14
  #ifdef _WIN32
15
15
  #if defined(DUCKDB_BUILD_LIBRARY) && !defined(DUCKDB_BUILD_LOADABLE_EXTENSION)
@@ -22,7 +22,7 @@
22
22
  #endif
23
23
  #endif
24
24
 
25
- // duplicate of duckdb/main/winapi.hpp
25
+ //! duplicate of duckdb/main/winapi.hpp
26
26
  #ifndef DUCKDB_EXTENSION_API
27
27
  #ifdef _WIN32
28
28
  #ifdef DUCKDB_BUILD_LOADABLE_EXTENSION
@@ -35,10 +35,10 @@
35
35
  #endif
36
36
  #endif
37
37
 
38
- // API versions
39
- // if no explicit API version is defined, the latest API version is used
40
- // Note that using older API versions (i.e. not using DUCKDB_API_LATEST) is deprecated.
41
- // These will not be supported long-term, and will be removed in future versions.
38
+ //! API versions
39
+ //! If no explicit API version is defined, the latest API version is used.
40
+ //! Note that using older API versions (i.e. not using DUCKDB_API_LATEST) is deprecated.
41
+ //! These will not be supported long-term, and will be removed in future versions.
42
42
  #ifndef DUCKDB_API_0_3_1
43
43
  #define DUCKDB_API_0_3_1 1
44
44
  #endif
@@ -55,17 +55,17 @@
55
55
 
56
56
  #include <stdbool.h>
57
57
  #include <stdint.h>
58
- #include <stdlib.h>
58
+ #include <stddef.h>
59
59
 
60
60
  #ifdef __cplusplus
61
61
  extern "C" {
62
62
  #endif
63
63
 
64
64
  //===--------------------------------------------------------------------===//
65
- // Type Information
65
+ // Enums
66
66
  //===--------------------------------------------------------------------===//
67
- typedef uint64_t idx_t;
68
67
 
68
+ //! An enum over DuckDB's internal types.
69
69
  typedef enum DUCKDB_TYPE {
70
70
  DUCKDB_TYPE_INVALID = 0,
71
71
  // bool
@@ -100,6 +100,8 @@ typedef enum DUCKDB_TYPE {
100
100
  DUCKDB_TYPE_INTERVAL,
101
101
  // duckdb_hugeint
102
102
  DUCKDB_TYPE_HUGEINT,
103
+ // duckdb_uhugeint
104
+ DUCKDB_TYPE_UHUGEINT,
103
105
  // const char*
104
106
  DUCKDB_TYPE_VARCHAR,
105
107
  // duckdb_blob
@@ -126,14 +128,82 @@ typedef enum DUCKDB_TYPE {
126
128
  DUCKDB_TYPE_UNION,
127
129
  // duckdb_bit
128
130
  DUCKDB_TYPE_BIT,
131
+ // duckdb_time_tz
132
+ DUCKDB_TYPE_TIME_TZ,
133
+ // duckdb_timestamp
134
+ DUCKDB_TYPE_TIMESTAMP_TZ,
129
135
  } duckdb_type;
136
+ //! An enum over the returned state of different functions.
137
+ typedef enum { DuckDBSuccess = 0, DuckDBError = 1 } duckdb_state;
138
+ //! An enum over the pending state of a pending query result.
139
+ typedef enum {
140
+ DUCKDB_PENDING_RESULT_READY = 0,
141
+ DUCKDB_PENDING_RESULT_NOT_READY = 1,
142
+ DUCKDB_PENDING_ERROR = 2,
143
+ DUCKDB_PENDING_NO_TASKS_AVAILABLE = 3
144
+ } duckdb_pending_state;
145
+ //! An enum over DuckDB's different result types.
146
+ typedef enum {
147
+ DUCKDB_RESULT_TYPE_INVALID,
148
+ DUCKDB_RESULT_TYPE_CHANGED_ROWS,
149
+ DUCKDB_RESULT_TYPE_NOTHING,
150
+ DUCKDB_RESULT_TYPE_QUERY_RESULT,
151
+ } duckdb_result_type;
152
+ //! An enum over DuckDB's different statement types.
153
+ typedef enum {
154
+ DUCKDB_STATEMENT_TYPE_INVALID,
155
+ DUCKDB_STATEMENT_TYPE_SELECT,
156
+ DUCKDB_STATEMENT_TYPE_INSERT,
157
+ DUCKDB_STATEMENT_TYPE_UPDATE,
158
+ DUCKDB_STATEMENT_TYPE_EXPLAIN,
159
+ DUCKDB_STATEMENT_TYPE_DELETE,
160
+ DUCKDB_STATEMENT_TYPE_PREPARE,
161
+ DUCKDB_STATEMENT_TYPE_CREATE,
162
+ DUCKDB_STATEMENT_TYPE_EXECUTE,
163
+ DUCKDB_STATEMENT_TYPE_ALTER,
164
+ DUCKDB_STATEMENT_TYPE_TRANSACTION,
165
+ DUCKDB_STATEMENT_TYPE_COPY,
166
+ DUCKDB_STATEMENT_TYPE_ANALYZE,
167
+ DUCKDB_STATEMENT_TYPE_VARIABLE_SET,
168
+ DUCKDB_STATEMENT_TYPE_CREATE_FUNC,
169
+ DUCKDB_STATEMENT_TYPE_DROP,
170
+ DUCKDB_STATEMENT_TYPE_EXPORT,
171
+ DUCKDB_STATEMENT_TYPE_PRAGMA,
172
+ DUCKDB_STATEMENT_TYPE_VACUUM,
173
+ DUCKDB_STATEMENT_TYPE_CALL,
174
+ DUCKDB_STATEMENT_TYPE_SET,
175
+ DUCKDB_STATEMENT_TYPE_LOAD,
176
+ DUCKDB_STATEMENT_TYPE_RELATION,
177
+ DUCKDB_STATEMENT_TYPE_EXTENSION,
178
+ DUCKDB_STATEMENT_TYPE_LOGICAL_PLAN,
179
+ DUCKDB_STATEMENT_TYPE_ATTACH,
180
+ DUCKDB_STATEMENT_TYPE_DETACH,
181
+ DUCKDB_STATEMENT_TYPE_MULTI,
182
+ } duckdb_statement_type;
183
+
184
+ //===--------------------------------------------------------------------===//
185
+ // General type definitions
186
+ //===--------------------------------------------------------------------===//
187
+
188
+ //! DuckDB's index type.
189
+ typedef uint64_t idx_t;
190
+
191
+ //! The callback that will be called to destroy data, e.g.,
192
+ //! bind data (if any), init data (if any), extra data for replacement scans (if any)
193
+ typedef void (*duckdb_delete_callback_t)(void *data);
194
+
195
+ //! Used for threading, contains a task state. Must be destroyed with `duckdb_destroy_state`.
196
+ typedef void *duckdb_task_state;
197
+
198
+ //===--------------------------------------------------------------------===//
199
+ // Types (no explicit freeing)
200
+ //===--------------------------------------------------------------------===//
130
201
 
131
202
  //! Days are stored as days since 1970-01-01
132
203
  //! Use the duckdb_from_date/duckdb_to_date function to extract individual information
133
204
  typedef struct {
134
205
  int32_t days;
135
206
  } duckdb_date;
136
-
137
207
  typedef struct {
138
208
  int32_t year;
139
209
  int8_t month;
@@ -145,7 +215,6 @@ typedef struct {
145
215
  typedef struct {
146
216
  int64_t micros;
147
217
  } duckdb_time;
148
-
149
218
  typedef struct {
150
219
  int8_t hour;
151
220
  int8_t min;
@@ -153,46 +222,60 @@ typedef struct {
153
222
  int32_t micros;
154
223
  } duckdb_time_struct;
155
224
 
225
+ //! TIME_TZ is stored as 40 bits for int64_t micros, and 24 bits for int32_t offset
226
+ typedef struct {
227
+ uint64_t bits;
228
+ } duckdb_time_tz;
229
+ typedef struct {
230
+ duckdb_time time;
231
+ int32_t offset;
232
+ } duckdb_time_tz_struct;
233
+
156
234
  //! Timestamps are stored as microseconds since 1970-01-01
157
235
  //! Use the duckdb_from_timestamp/duckdb_to_timestamp function to extract individual information
158
236
  typedef struct {
159
237
  int64_t micros;
160
238
  } duckdb_timestamp;
161
-
162
239
  typedef struct {
163
240
  duckdb_date_struct date;
164
241
  duckdb_time_struct time;
165
242
  } duckdb_timestamp_struct;
166
-
167
243
  typedef struct {
168
244
  int32_t months;
169
245
  int32_t days;
170
246
  int64_t micros;
171
247
  } duckdb_interval;
172
248
 
173
- //! Hugeints are composed in a (lower, upper) component
249
+ //! Hugeints are composed of a (lower, upper) component
174
250
  //! The value of the hugeint is upper * 2^64 + lower
175
251
  //! For easy usage, the functions duckdb_hugeint_to_double/duckdb_double_to_hugeint are recommended
176
252
  typedef struct {
177
253
  uint64_t lower;
178
254
  int64_t upper;
179
255
  } duckdb_hugeint;
256
+ typedef struct {
257
+ uint64_t lower;
258
+ uint64_t upper;
259
+ } duckdb_uhugeint;
180
260
 
261
+ //! Decimals are composed of a width and a scale, and are stored in a hugeint
181
262
  typedef struct {
182
263
  uint8_t width;
183
264
  uint8_t scale;
184
-
185
265
  duckdb_hugeint value;
186
266
  } duckdb_decimal;
187
267
 
268
+ //! A type holding information about the query execution progress
188
269
  typedef struct {
189
- char *data;
190
- idx_t size;
191
- } duckdb_string;
192
-
193
- /*
194
- The internal data representation of a VARCHAR/BLOB column
195
- */
270
+ double percentage;
271
+ uint64_t rows_processed;
272
+ uint64_t total_rows_to_process;
273
+ } duckdb_query_progress_type;
274
+
275
+ //! The internal representation of a VARCHAR (string_t). If the VARCHAR does not
276
+ //! exceed 12 characters, then we inline it. Otherwise, we inline a prefix for faster
277
+ //! string comparisons and store a pointer to the remaining characters. This is a non-
278
+ //! owning structure, i.e., it does not have to be freed.
196
279
  typedef struct {
197
280
  union {
198
281
  struct {
@@ -207,16 +290,18 @@ typedef struct {
207
290
  } value;
208
291
  } duckdb_string_t;
209
292
 
210
- typedef struct {
211
- void *data;
212
- idx_t size;
213
- } duckdb_blob;
214
-
293
+ //! The internal representation of a list metadata entry contains the list's offset in
294
+ //! the child vector, and its length. The parent vector holds these metadata entries,
295
+ //! whereas the child vector holds the data
215
296
  typedef struct {
216
297
  uint64_t offset;
217
298
  uint64_t length;
218
299
  } duckdb_list_entry;
219
300
 
301
+ //! A column consists of a pointer to its internal data. Don't operate on this type directly.
302
+ //! Instead, use functions such as duckdb_column_data, duckdb_nullmask_data,
303
+ //! duckdb_column_type, and duckdb_column_name, which take the result and the column index
304
+ //! as their parameters
220
305
  typedef struct {
221
306
  #if DUCKDB_API_VERSION < DUCKDB_API_0_3_2
222
307
  void *data;
@@ -236,6 +321,32 @@ typedef struct {
236
321
  void *internal_data;
237
322
  } duckdb_column;
238
323
 
324
+ //! A vector to a specified column in a data chunk. Lives as long as the
325
+ //! data chunk lives, i.e., must not be destroyed.
326
+ typedef struct _duckdb_vector {
327
+ void *__vctr;
328
+ } * duckdb_vector;
329
+
330
+ //===--------------------------------------------------------------------===//
331
+ // Types (explicit freeing/destroying)
332
+ //===--------------------------------------------------------------------===//
333
+
334
+ //! Strings are composed of a char pointer and a size. You must free string.data
335
+ //! with `duckdb_free`.
336
+ typedef struct {
337
+ char *data;
338
+ idx_t size;
339
+ } duckdb_string;
340
+
341
+ //! BLOBs are composed of a byte pointer and a size. You must free blob.data
342
+ //! with `duckdb_free`.
343
+ typedef struct {
344
+ void *data;
345
+ idx_t size;
346
+ } duckdb_blob;
347
+
348
+ //! A query result consists of a pointer to its internal data.
349
+ //! Must be freed with 'duckdb_destroy_result'.
239
350
  typedef struct {
240
351
  #if DUCKDB_API_VERSION < DUCKDB_API_0_3_2
241
352
  idx_t column_count;
@@ -250,7 +361,7 @@ typedef struct {
250
361
  idx_t __deprecated_row_count;
251
362
  // deprecated, use duckdb_rows_changed
252
363
  idx_t __deprecated_rows_changed;
253
- // deprecated, use duckdb_column_ family of functions
364
+ // deprecated, use duckdb_column_*-family of functions
254
365
  duckdb_column *__deprecated_columns;
255
366
  // deprecated, use duckdb_result_error
256
367
  char *__deprecated_error_message;
@@ -258,59 +369,125 @@ typedef struct {
258
369
  void *internal_data;
259
370
  } duckdb_result;
260
371
 
372
+ //! A database object. Should be closed with `duckdb_close`.
261
373
  typedef struct _duckdb_database {
262
374
  void *__db;
263
375
  } * duckdb_database;
376
+
377
+ //! A connection to a duckdb database. Must be closed with `duckdb_disconnect`.
264
378
  typedef struct _duckdb_connection {
265
379
  void *__conn;
266
380
  } * duckdb_connection;
381
+
382
+ //! A prepared statement is a parameterized query that allows you to bind parameters to it.
383
+ //! Must be destroyed with `duckdb_destroy_prepare`.
267
384
  typedef struct _duckdb_prepared_statement {
268
385
  void *__prep;
269
386
  } * duckdb_prepared_statement;
387
+
388
+ //! Extracted statements. Must be destroyed with `duckdb_destroy_extracted`.
270
389
  typedef struct _duckdb_extracted_statements {
271
390
  void *__extrac;
272
391
  } * duckdb_extracted_statements;
392
+
393
+ //! The pending result represents an intermediate structure for a query that is not yet fully executed.
394
+ //! Must be destroyed with `duckdb_destroy_pending`.
273
395
  typedef struct _duckdb_pending_result {
274
396
  void *__pend;
275
397
  } * duckdb_pending_result;
398
+
399
+ //! The appender enables fast data loading into DuckDB.
400
+ //! Must be destroyed with `duckdb_appender_destroy`.
276
401
  typedef struct _duckdb_appender {
277
402
  void *__appn;
278
403
  } * duckdb_appender;
279
- typedef struct _duckdb_arrow {
280
- void *__arrw;
281
- } * duckdb_arrow;
282
- typedef struct _duckdb_arrow_stream {
283
- void *__arrwstr;
284
- } * duckdb_arrow_stream;
404
+
405
+ //! Can be used to provide start-up options for the DuckDB instance.
406
+ //! Must be destroyed with `duckdb_destroy_config`.
285
407
  typedef struct _duckdb_config {
286
408
  void *__cnfg;
287
409
  } * duckdb_config;
288
- typedef struct _duckdb_arrow_schema {
289
- void *__arrs;
290
- } * duckdb_arrow_schema;
291
- typedef struct _duckdb_arrow_array {
292
- void *__arra;
293
- } * duckdb_arrow_array;
410
+
411
+ //! Holds an internal logical type.
412
+ //! Must be destroyed with `duckdb_destroy_logical_type`.
294
413
  typedef struct _duckdb_logical_type {
295
414
  void *__lglt;
296
415
  } * duckdb_logical_type;
416
+
417
+ //! Contains a data chunk from a duckdb_result.
418
+ //! Must be destroyed with `duckdb_destroy_data_chunk`.
297
419
  typedef struct _duckdb_data_chunk {
298
420
  void *__dtck;
299
421
  } * duckdb_data_chunk;
300
- typedef struct _duckdb_vector {
301
- void *__vctr;
302
- } * duckdb_vector;
422
+
423
+ //! Holds a DuckDB value, which wraps a type.
424
+ //! Must be destroyed with `duckdb_destroy_value`.
303
425
  typedef struct _duckdb_value {
304
426
  void *__val;
305
427
  } * duckdb_value;
306
428
 
307
- typedef enum { DuckDBSuccess = 0, DuckDBError = 1 } duckdb_state;
308
- typedef enum {
309
- DUCKDB_PENDING_RESULT_READY = 0,
310
- DUCKDB_PENDING_RESULT_NOT_READY = 1,
311
- DUCKDB_PENDING_ERROR = 2,
312
- DUCKDB_PENDING_NO_TASKS_AVAILABLE = 3
313
- } duckdb_pending_state;
429
+ //===--------------------------------------------------------------------===//
430
+ // Table function types
431
+ //===--------------------------------------------------------------------===//
432
+
433
+ //! A table function. Must be destroyed with `duckdb_destroy_table_function`.
434
+ typedef void *duckdb_table_function;
435
+
436
+ //! The bind info of the function. When setting this info, it is necessary to pass a destroy-callback function.
437
+ typedef void *duckdb_bind_info;
438
+
439
+ //! Additional function init info. When setting this info, it is necessary to pass a destroy-callback function.
440
+ typedef void *duckdb_init_info;
441
+
442
+ //! Additional function info. When setting this info, it is necessary to pass a destroy-callback function.
443
+ typedef void *duckdb_function_info;
444
+
445
+ //! The bind function of the table function.
446
+ typedef void (*duckdb_table_function_bind_t)(duckdb_bind_info info);
447
+
448
+ //! The (possibly thread-local) init function of the table function.
449
+ typedef void (*duckdb_table_function_init_t)(duckdb_init_info info);
450
+
451
+ //! The main function of the table function.
452
+ typedef void (*duckdb_table_function_t)(duckdb_function_info info, duckdb_data_chunk output);
453
+
454
+ //===--------------------------------------------------------------------===//
455
+ // Replacement scan types
456
+ //===--------------------------------------------------------------------===//
457
+
458
+ //! Additional replacement scan info. When setting this info, it is necessary to pass a destroy-callback function.
459
+ typedef void *duckdb_replacement_scan_info;
460
+
461
+ //! A replacement scan function that can be added to a database.
462
+ typedef void (*duckdb_replacement_callback_t)(duckdb_replacement_scan_info info, const char *table_name, void *data);
463
+
464
+ //===--------------------------------------------------------------------===//
465
+ // Arrow-related types
466
+ //===--------------------------------------------------------------------===//
467
+
468
+ //! Holds an arrow query result. Must be destroyed with `duckdb_destroy_arrow`.
469
+ typedef struct _duckdb_arrow {
470
+ void *__arrw;
471
+ } * duckdb_arrow;
472
+
473
+ //! Holds an arrow array stream. Must be destroyed with `duckdb_destroy_arrow_stream`.
474
+ typedef struct _duckdb_arrow_stream {
475
+ void *__arrwstr;
476
+ } * duckdb_arrow_stream;
477
+
478
+ //! Holds an arrow schema. Remember to release the respective ArrowSchema object.
479
+ typedef struct _duckdb_arrow_schema {
480
+ void *__arrs;
481
+ } * duckdb_arrow_schema;
482
+
483
+ //! Holds an arrow array. Remember to release the respective ArrowArray object.
484
+ typedef struct _duckdb_arrow_array {
485
+ void *__arra;
486
+ } * duckdb_arrow_array;
487
+
488
+ //===--------------------------------------------------------------------===//
489
+ // Functions
490
+ //===--------------------------------------------------------------------===//
314
491
 
315
492
  //===--------------------------------------------------------------------===//
316
493
  // Open/Connect
@@ -319,7 +496,7 @@ typedef enum {
319
496
  /*!
320
497
  Creates a new database or opens an existing database file stored at the given path.
321
498
  If no path is given a new in-memory database is created instead.
322
- The instantiated database should be closed with 'duckdb_close'
499
+ The instantiated database should be closed with 'duckdb_close'.
323
500
 
324
501
  * path: Path to the database file on disk, or `nullptr` or `:memory:` to open an in-memory database.
325
502
  * out_database: The result database object.
@@ -329,6 +506,7 @@ DUCKDB_API duckdb_state duckdb_open(const char *path, duckdb_database *out_datab
329
506
 
330
507
  /*!
331
508
  Extended version of duckdb_open. Creates a new database or opens an existing database file stored at the given path.
509
+ The instantiated database should be closed with 'duckdb_close'.
332
510
 
333
511
  * path: Path to the database file on disk, or `nullptr` or `:memory:` to open an in-memory database.
334
512
  * out_database: The result database object.
@@ -342,9 +520,9 @@ DUCKDB_API duckdb_state duckdb_open_ext(const char *path, duckdb_database *out_d
342
520
 
343
521
  /*!
344
522
  Closes the specified database and de-allocates all memory allocated for that database.
345
- This should be called after you are done with any database allocated through `duckdb_open`.
523
+ This should be called after you are done with any database allocated through `duckdb_open` or `duckdb_open_ext`.
346
524
  Note that failing to call `duckdb_close` (in case of e.g. a program crash) will not cause data corruption.
347
- Still it is recommended to always correctly close a database object after you are done with it.
525
+ Still, it is recommended to always correctly close a database object after you are done with it.
348
526
 
349
527
  * database: The database object to shut down.
350
528
  */
@@ -353,7 +531,7 @@ DUCKDB_API void duckdb_close(duckdb_database *database);
353
531
  /*!
354
532
  Opens a connection to a database. Connections are required to query the database, and store transactional state
355
533
  associated with the connection.
356
- The instantiated connection should be closed using 'duckdb_disconnect'
534
+ The instantiated connection should be closed using 'duckdb_disconnect'.
357
535
 
358
536
  * database: The database file to connect to.
359
537
  * out_connection: The result connection object.
@@ -364,7 +542,7 @@ DUCKDB_API duckdb_state duckdb_connect(duckdb_database database, duckdb_connecti
364
542
  /*!
365
543
  Interrupt running query
366
544
 
367
- * connection: The connection to interruot
545
+ * connection: The connection to interrupt
368
546
  */
369
547
  DUCKDB_API void duckdb_interrupt(duckdb_connection connection);
370
548
 
@@ -374,7 +552,7 @@ Get progress of the running query
374
552
  * connection: The working connection
375
553
  * returns: -1 if no progress or a percentage of the progress
376
554
  */
377
- DUCKDB_API double duckdb_query_progress(duckdb_connection connection);
555
+ DUCKDB_API duckdb_query_progress_type duckdb_query_progress(duckdb_connection connection);
378
556
 
379
557
  /*!
380
558
  Closes the specified connection and de-allocates all memory allocated for that connection.
@@ -393,9 +571,11 @@ DUCKDB_API const char *duckdb_library_version();
393
571
  //===--------------------------------------------------------------------===//
394
572
  // Configuration
395
573
  //===--------------------------------------------------------------------===//
574
+
396
575
  /*!
397
576
  Initializes an empty configuration object that can be used to provide start-up options for the DuckDB instance
398
577
  through `duckdb_open_ext`.
578
+ The duckdb_config must be destroyed using 'duckdb_destroy_config'
399
579
 
400
580
  This will always succeed unless there is a malloc failure.
401
581
 
@@ -442,7 +622,7 @@ This can fail if either the name is invalid, or if the value provided for the op
442
622
  DUCKDB_API duckdb_state duckdb_set_config(duckdb_config config, const char *name, const char *option);
443
623
 
444
624
  /*!
445
- Destroys the specified configuration option and de-allocates all memory allocated for the object.
625
+ Destroys the specified configuration object and de-allocates all memory allocated for the object.
446
626
 
447
627
  * config: The configuration object to destroy.
448
628
  */
@@ -451,6 +631,7 @@ DUCKDB_API void duckdb_destroy_config(duckdb_config *config);
451
631
  //===--------------------------------------------------------------------===//
452
632
  // Query Execution
453
633
  //===--------------------------------------------------------------------===//
634
+
454
635
  /*!
455
636
  Executes a SQL query within a connection and stores the full (materialized) result in the out_result pointer.
456
637
  If the query fails to execute, DuckDBError is returned and the error message can be retrieved by calling
@@ -474,7 +655,7 @@ Closes the result and de-allocates all memory allocated for that connection.
474
655
  DUCKDB_API void duckdb_destroy_result(duckdb_result *result);
475
656
 
476
657
  /*!
477
- Returns the column name of the specified column. The result should not need be freed; the column names will
658
+ Returns the column name of the specified column. The result should not need to be freed; the column names will
478
659
  automatically be destroyed when the result is destroyed.
479
660
 
480
661
  Returns `NULL` if the column is out of range.
@@ -496,6 +677,14 @@ Returns `DUCKDB_TYPE_INVALID` if the column is out of range.
496
677
  */
497
678
  DUCKDB_API duckdb_type duckdb_column_type(duckdb_result *result, idx_t col);
498
679
 
680
+ /*!
681
+ Returns the statement type of the statement that was executed
682
+
683
+ * result: The result object to fetch the statement type from.
684
+ * returns: duckdb_statement_type value or DUCKDB_STATEMENT_TYPE_INVALID
685
+ */
686
+ DUCKDB_API duckdb_statement_type duckdb_result_statement_type(duckdb_result result);
687
+
499
688
  /*!
500
689
  Returns the logical column type of the specified column.
501
690
 
@@ -518,7 +707,7 @@ Returns the number of columns present in a the result object.
518
707
  DUCKDB_API idx_t duckdb_column_count(duckdb_result *result);
519
708
 
520
709
  /*!
521
- Returns the number of rows present in a the result object.
710
+ Returns the number of rows present in the result object.
522
711
 
523
712
  * result: The result object.
524
713
  * returns: The number of rows present in the result object.
@@ -627,7 +816,18 @@ Returns the number of data chunks present in the result.
627
816
  */
628
817
  DUCKDB_API idx_t duckdb_result_chunk_count(duckdb_result result);
629
818
 
819
+ /*!
820
+ Returns the return_type of the given result, or DUCKDB_RETURN_TYPE_INVALID on error
821
+
822
+ * result: The result object
823
+ * returns: The return_type
824
+ */
825
+ DUCKDB_API duckdb_result_type duckdb_result_return_type(duckdb_result result);
826
+
827
+ //===--------------------------------------------------------------------===//
630
828
  // Safe fetch functions
829
+ //===--------------------------------------------------------------------===//
830
+
631
831
  // These functions will perform conversions if necessary.
632
832
  // On failure (e.g. if conversion cannot be performed or if the value is NULL) a default value is returned.
633
833
  // Note that these functions are slow since they perform bounds checking and conversion
@@ -663,6 +863,11 @@ DUCKDB_API int64_t duckdb_value_int64(duckdb_result *result, idx_t col, idx_t ro
663
863
  */
664
864
  DUCKDB_API duckdb_hugeint duckdb_value_hugeint(duckdb_result *result, idx_t col, idx_t row);
665
865
 
866
+ /*!
867
+ * returns: The duckdb_uhugeint value at the specified location, or 0 if the value cannot be converted.
868
+ */
869
+ DUCKDB_API duckdb_uhugeint duckdb_value_uhugeint(duckdb_result *result, idx_t col, idx_t row);
870
+
666
871
  /*!
667
872
  * returns: The duckdb_decimal value at the specified location, or 0 if the value cannot be converted.
668
873
  */
@@ -725,10 +930,10 @@ converted. The result must be freed with `duckdb_free`.
725
930
  */
726
931
  DUCKDB_API char *duckdb_value_varchar(duckdb_result *result, idx_t col, idx_t row);
727
932
 
728
- /*!s
729
- * returns: The string value at the specified location.
730
- The result must be freed with `duckdb_free`.
731
- */
933
+ /*!
934
+ * returns: The string value at the specified location.
935
+ * The resulting field "string.data" must be freed with `duckdb_free.`
936
+ */
732
937
  DUCKDB_API duckdb_string duckdb_value_string(duckdb_result *result, idx_t col, idx_t row);
733
938
 
734
939
  /*!
@@ -753,7 +958,7 @@ DUCKDB_API duckdb_string duckdb_value_string_internal(duckdb_result *result, idx
753
958
 
754
959
  /*!
755
960
  * returns: The duckdb_blob value at the specified location. Returns a blob with blob.data set to nullptr if the
756
- value cannot be converted. The resulting "blob.data" must be freed with `duckdb_free.`
961
+ value cannot be converted. The resulting field "blob.data" must be freed with `duckdb_free.`
757
962
  */
758
963
  DUCKDB_API duckdb_blob duckdb_value_blob(duckdb_result *result, idx_t col, idx_t row);
759
964
 
@@ -765,6 +970,7 @@ DUCKDB_API bool duckdb_value_is_null(duckdb_result *result, idx_t col, idx_t row
765
970
  //===--------------------------------------------------------------------===//
766
971
  // Helpers
767
972
  //===--------------------------------------------------------------------===//
973
+
768
974
  /*!
769
975
  Allocate `size` bytes of memory using the duckdb internal malloc function. Any memory allocated in this manner
770
976
  should be freed using `duckdb_free`.
@@ -775,7 +981,8 @@ should be freed using `duckdb_free`.
775
981
  DUCKDB_API void *duckdb_malloc(size_t size);
776
982
 
777
983
  /*!
778
- Free a value returned from `duckdb_malloc`, `duckdb_value_varchar` or `duckdb_value_blob`.
984
+ Free a value returned from `duckdb_malloc`, `duckdb_value_varchar`, `duckdb_value_blob`, or
985
+ `duckdb_value_string`.
779
986
 
780
987
  * ptr: The memory region to de-allocate.
781
988
  */
@@ -799,6 +1006,7 @@ DUCKDB_API bool duckdb_string_is_inlined(duckdb_string_t string);
799
1006
  //===--------------------------------------------------------------------===//
800
1007
  // Date/Time/Timestamp Helpers
801
1008
  //===--------------------------------------------------------------------===//
1009
+
802
1010
  /*!
803
1011
  Decompose a `duckdb_date` object into year, month and date (stored as `duckdb_date_struct`).
804
1012
 
@@ -815,6 +1023,14 @@ Re-compose a `duckdb_date` from year, month and date (`duckdb_date_struct`).
815
1023
  */
816
1024
  DUCKDB_API duckdb_date duckdb_to_date(duckdb_date_struct date);
817
1025
 
1026
+ /*!
1027
+ Test a `duckdb_date` to see if it is a finite value.
1028
+
1029
+ * date: The date object, as obtained from a `DUCKDB_TYPE_DATE` column.
1030
+ * returns: True if the date is finite, false if it is ±infinity.
1031
+ */
1032
+ DUCKDB_API bool duckdb_is_finite_date(duckdb_date date);
1033
+
818
1034
  /*!
819
1035
  Decompose a `duckdb_time` object into hour, minute, second and microsecond (stored as `duckdb_time_struct`).
820
1036
 
@@ -823,6 +1039,26 @@ Decompose a `duckdb_time` object into hour, minute, second and microsecond (stor
823
1039
  */
824
1040
  DUCKDB_API duckdb_time_struct duckdb_from_time(duckdb_time time);
825
1041
 
1042
+ /*!
1043
+ Create a `duckdb_time_tz` object from micros and a timezone offset.
1044
+
1045
+ * micros: The microsecond component of the time.
1046
+ * offset: The timezone offset component of the time.
1047
+ * returns: The `duckdb_time_tz` element.
1048
+ */
1049
+ DUCKDB_API duckdb_time_tz duckdb_create_time_tz(int64_t micros, int32_t offset);
1050
+
1051
+ /*!
1052
+ Decompose a TIME_TZ objects into micros and a timezone offset.
1053
+
1054
+ Use `duckdb_from_time` to further decompose the micros into hour, minute, second and microsecond.
1055
+
1056
+ * micros: The time object, as obtained from a `DUCKDB_TYPE_TIME_TZ` column.
1057
+ * out_micros: The microsecond component of the time.
1058
+ * out_offset: The timezone offset component of the time.
1059
+ */
1060
+ DUCKDB_API duckdb_time_tz_struct duckdb_from_time_tz(duckdb_time_tz micros);
1061
+
826
1062
  /*!
827
1063
  Re-compose a `duckdb_time` from hour, minute, second and microsecond (`duckdb_time_struct`).
828
1064
 
@@ -847,9 +1083,18 @@ Re-compose a `duckdb_timestamp` from a duckdb_timestamp_struct.
847
1083
  */
848
1084
  DUCKDB_API duckdb_timestamp duckdb_to_timestamp(duckdb_timestamp_struct ts);
849
1085
 
1086
+ /*!
1087
+ Test a `duckdb_timestamp` to see if it is a finite value.
1088
+
1089
+ * ts: The timestamp object, as obtained from a `DUCKDB_TYPE_TIMESTAMP` column.
1090
+ * returns: True if the timestamp is finite, false if it is ±infinity.
1091
+ */
1092
+ DUCKDB_API bool duckdb_is_finite_timestamp(duckdb_timestamp ts);
1093
+
850
1094
  //===--------------------------------------------------------------------===//
851
1095
  // Hugeint Helpers
852
1096
  //===--------------------------------------------------------------------===//
1097
+
853
1098
  /*!
854
1099
  Converts a duckdb_hugeint object (as obtained from a `DUCKDB_TYPE_HUGEINT` column) into a double.
855
1100
 
@@ -868,6 +1113,32 @@ If the conversion fails because the double value is too big the result will be 0
868
1113
  */
869
1114
  DUCKDB_API duckdb_hugeint duckdb_double_to_hugeint(double val);
870
1115
 
1116
+ //===--------------------------------------------------------------------===//
1117
+ // Unsigned Hugeint Helpers
1118
+ //===--------------------------------------------------------------------===//
1119
+
1120
+ /*!
1121
+ Converts a duckdb_uhugeint object (as obtained from a `DUCKDB_TYPE_UHUGEINT` column) into a double.
1122
+
1123
+ * val: The uhugeint value.
1124
+ * returns: The converted `double` element.
1125
+ */
1126
+ DUCKDB_API double duckdb_uhugeint_to_double(duckdb_uhugeint val);
1127
+
1128
+ /*!
1129
+ Converts a double value to a duckdb_uhugeint object.
1130
+
1131
+ If the conversion fails because the double value is too big the result will be 0.
1132
+
1133
+ * val: The double value.
1134
+ * returns: The converted `duckdb_uhugeint` element.
1135
+ */
1136
+ DUCKDB_API duckdb_uhugeint duckdb_double_to_uhugeint(double val);
1137
+
1138
+ //===--------------------------------------------------------------------===//
1139
+ // Decimal Helpers
1140
+ //===--------------------------------------------------------------------===//
1141
+
871
1142
  /*!
872
1143
  Converts a double value to a duckdb_decimal object.
873
1144
 
@@ -878,9 +1149,6 @@ If the conversion fails because the double value is too big, or the width/scale
878
1149
  */
879
1150
  DUCKDB_API duckdb_decimal duckdb_double_to_decimal(double val, uint8_t width, uint8_t scale);
880
1151
 
881
- //===--------------------------------------------------------------------===//
882
- // Decimal Helpers
883
- //===--------------------------------------------------------------------===//
884
1152
  /*!
885
1153
  Converts a duckdb_decimal object (as obtained from a `DUCKDB_TYPE_DECIMAL` column) into a double.
886
1154
 
@@ -892,6 +1160,7 @@ DUCKDB_API double duckdb_decimal_to_double(duckdb_decimal val);
892
1160
  //===--------------------------------------------------------------------===//
893
1161
  // Prepared Statements
894
1162
  //===--------------------------------------------------------------------===//
1163
+
895
1164
  // A prepared statement is a parameterized query that allows you to bind parameters to it.
896
1165
  // * This is useful to easily supply parameters to functions and avoid SQL injection attacks.
897
1166
  // * This is useful to speed up queries that you will execute several times with different parameters.
@@ -971,6 +1240,18 @@ Clear the params bind to the prepared statement.
971
1240
  */
972
1241
  DUCKDB_API duckdb_state duckdb_clear_bindings(duckdb_prepared_statement prepared_statement);
973
1242
 
1243
+ /*!
1244
+ Returns the statement type of the statement to be executed
1245
+
1246
+ * statement: The prepared statement.
1247
+ * returns: duckdb_statement_type value or DUCKDB_STATEMENT_TYPE_INVALID
1248
+ */
1249
+ DUCKDB_API duckdb_statement_type duckdb_prepared_statement_type(duckdb_prepared_statement statement);
1250
+
1251
+ //===--------------------------------------------------------------------===//
1252
+ // Bind Values to Prepared Statements
1253
+ //===--------------------------------------------------------------------===//
1254
+
974
1255
  /*!
975
1256
  Binds a value to the prepared statement at the specified index.
976
1257
  */
@@ -1014,6 +1295,11 @@ Binds a duckdb_hugeint value to the prepared statement at the specified index.
1014
1295
  DUCKDB_API duckdb_state duckdb_bind_hugeint(duckdb_prepared_statement prepared_statement, idx_t param_idx,
1015
1296
  duckdb_hugeint val);
1016
1297
  /*!
1298
+ Binds an duckdb_uhugeint value to the prepared statement at the specified index.
1299
+ */
1300
+ DUCKDB_API duckdb_state duckdb_bind_uhugeint(duckdb_prepared_statement prepared_statement, idx_t param_idx,
1301
+ duckdb_uhugeint val);
1302
+ /*!
1017
1303
  Binds a duckdb_decimal value to the prepared statement at the specified index.
1018
1304
  */
1019
1305
  DUCKDB_API duckdb_state duckdb_bind_decimal(duckdb_prepared_statement prepared_statement, idx_t param_idx,
@@ -1096,12 +1382,18 @@ Binds a NULL value to the prepared statement at the specified index.
1096
1382
  */
1097
1383
  DUCKDB_API duckdb_state duckdb_bind_null(duckdb_prepared_statement prepared_statement, idx_t param_idx);
1098
1384
 
1385
+ //===--------------------------------------------------------------------===//
1386
+ // Execute Prepared Statements
1387
+ //===--------------------------------------------------------------------===//
1388
+
1099
1389
  /*!
1100
1390
  Executes the prepared statement with the given bound parameters, and returns a materialized query result.
1101
1391
 
1102
1392
  This method can be called multiple times for each prepared statement, and the parameters can be modified
1103
1393
  between calls to this function.
1104
1394
 
1395
+ Note that the result must be freed with `duckdb_destroy_result`.
1396
+
1105
1397
  * prepared_statement: The prepared statement to execute.
1106
1398
  * out_result: The query result.
1107
1399
  * returns: `DuckDBSuccess` on success or `DuckDBError` on failure.
@@ -1110,50 +1402,34 @@ DUCKDB_API duckdb_state duckdb_execute_prepared(duckdb_prepared_statement prepar
1110
1402
  duckdb_result *out_result);
1111
1403
 
1112
1404
  /*!
1113
- Executes the prepared statement with the given bound parameters, and returns an arrow query result.
1114
-
1115
- * prepared_statement: The prepared statement to execute.
1116
- * out_result: The query result.
1117
- * returns: `DuckDBSuccess` on success or `DuckDBError` on failure.
1118
- */
1119
- DUCKDB_API duckdb_state duckdb_execute_prepared_arrow(duckdb_prepared_statement prepared_statement,
1120
- duckdb_arrow *out_result);
1121
-
1122
- /*!
1123
- Scans the Arrow stream and creates a view with the given name.
1405
+ Executes the prepared statement with the given bound parameters, and returns an optionally-streaming query result.
1406
+ To determine if the resulting query was in fact streamed, use `duckdb_result_is_streaming`
1124
1407
 
1125
- * connection: The connection on which to execute the scan.
1126
- * table_name: Name of the temporary view to create.
1127
- * arrow: Arrow stream wrapper.
1128
- * returns: `DuckDBSuccess` on success or `DuckDBError` on failure.
1129
- */
1130
- DUCKDB_API duckdb_state duckdb_arrow_scan(duckdb_connection connection, const char *table_name,
1131
- duckdb_arrow_stream arrow);
1408
+ This method can be called multiple times for each prepared statement, and the parameters can be modified
1409
+ between calls to this function.
1132
1410
 
1133
- /*!
1134
- Scans the Arrow array and creates a view with the given name.
1411
+ Note that the result must be freed with `duckdb_destroy_result`.
1135
1412
 
1136
- * connection: The connection on which to execute the scan.
1137
- * table_name: Name of the temporary view to create.
1138
- * arrow_schema: Arrow schema wrapper.
1139
- * arrow_array: Arrow array wrapper.
1140
- * out_stream: Output array stream that wraps around the passed schema, for releasing/deleting once done.
1413
+ * prepared_statement: The prepared statement to execute.
1414
+ * out_result: The query result.
1141
1415
  * returns: `DuckDBSuccess` on success or `DuckDBError` on failure.
1142
1416
  */
1143
- DUCKDB_API duckdb_state duckdb_arrow_array_scan(duckdb_connection connection, const char *table_name,
1144
- duckdb_arrow_schema arrow_schema, duckdb_arrow_array arrow_array,
1145
- duckdb_arrow_stream *out_stream);
1417
+ DUCKDB_API duckdb_state duckdb_execute_prepared_streaming(duckdb_prepared_statement prepared_statement,
1418
+ duckdb_result *out_result);
1146
1419
 
1147
1420
  //===--------------------------------------------------------------------===//
1148
1421
  // Extract Statements
1149
1422
  //===--------------------------------------------------------------------===//
1423
+
1150
1424
  // A query string can be extracted into multiple SQL statements. Each statement can be prepared and executed separately.
1151
1425
 
1152
1426
  /*!
1153
1427
  Extract all statements from a query.
1154
1428
  Note that after calling `duckdb_extract_statements`, the extracted statements should always be destroyed using
1155
1429
  `duckdb_destroy_extracted`, even if no statements were extracted.
1430
+
1156
1431
  If the extract fails, `duckdb_extract_statements_error` can be called to obtain the reason why the extract failed.
1432
+
1157
1433
  * connection: The connection object
1158
1434
  * query: The SQL query to extract
1159
1435
  * out_extracted_statements: The resulting extracted statements object
@@ -1166,7 +1442,9 @@ DUCKDB_API idx_t duckdb_extract_statements(duckdb_connection connection, const c
1166
1442
  Prepare an extracted statement.
1167
1443
  Note that after calling `duckdb_prepare_extracted_statement`, the prepared statement should always be destroyed using
1168
1444
  `duckdb_destroy_prepare`, even if the prepare fails.
1445
+
1169
1446
  If the prepare fails, `duckdb_prepare_error` can be called to obtain the reason why the prepare failed.
1447
+
1170
1448
  * connection: The connection object
1171
1449
  * extracted_statements: The extracted statements object
1172
1450
  * index: The index of the extracted statement to prepare
@@ -1180,6 +1458,7 @@ DUCKDB_API duckdb_state duckdb_prepare_extracted_statement(duckdb_connection con
1180
1458
  /*!
1181
1459
  Returns the error message contained within the extracted statements.
1182
1460
  The result of this function must not be freed. It will be cleaned up when `duckdb_destroy_extracted` is called.
1461
+
1183
1462
  * result: The extracted statements to fetch the error from.
1184
1463
  * returns: The error of the extracted statements.
1185
1464
  */
@@ -1194,6 +1473,7 @@ DUCKDB_API void duckdb_destroy_extracted(duckdb_extracted_statements *extracted_
1194
1473
  //===--------------------------------------------------------------------===//
1195
1474
  // Pending Result Interface
1196
1475
  //===--------------------------------------------------------------------===//
1476
+
1197
1477
  /*!
1198
1478
  Executes the prepared statement with the given bound parameters, and returns a pending result.
1199
1479
  The pending result represents an intermediate structure for a query that is not yet fully executed.
@@ -1250,17 +1530,31 @@ If this returns DUCKDB_PENDING_ERROR, an error occurred during execution.
1250
1530
 
1251
1531
  The error message can be obtained by calling duckdb_pending_error on the pending_result.
1252
1532
 
1253
- * pending_result: The pending result to execute a task within..
1533
+ * pending_result: The pending result to execute a task within.
1254
1534
  * returns: The state of the pending result after the execution.
1255
1535
  */
1256
1536
  DUCKDB_API duckdb_pending_state duckdb_pending_execute_task(duckdb_pending_result pending_result);
1257
1537
 
1538
+ /*!
1539
+ If this returns DUCKDB_PENDING_RESULT_READY, the duckdb_execute_pending function can be called to obtain the result.
1540
+ If this returns DUCKDB_PENDING_RESULT_NOT_READY, the duckdb_pending_execute_check_state function should be called again.
1541
+ If this returns DUCKDB_PENDING_ERROR, an error occurred during execution.
1542
+
1543
+ The error message can be obtained by calling duckdb_pending_error on the pending_result.
1544
+
1545
+ * pending_result: The pending result.
1546
+ * returns: The state of the pending result.
1547
+ */
1548
+ DUCKDB_API duckdb_pending_state duckdb_pending_execute_check_state(duckdb_pending_result pending_result);
1549
+
1258
1550
  /*!
1259
1551
  Fully execute a pending query result, returning the final query result.
1260
1552
 
1261
1553
  If duckdb_pending_execute_task has been called until DUCKDB_PENDING_RESULT_READY was returned, this will return fast.
1262
1554
  Otherwise, all remaining tasks must be executed first.
1263
1555
 
1556
+ Note that the result must be freed with `duckdb_destroy_result`.
1557
+
1264
1558
  * pending_result: The pending result to execute.
1265
1559
  * out_result: The result object.
1266
1560
  * returns: `DuckDBSuccess` on success or `DuckDBError` on failure.
@@ -1279,6 +1573,7 @@ DUCKDB_API bool duckdb_pending_execution_is_finished(duckdb_pending_state pendin
1279
1573
  //===--------------------------------------------------------------------===//
1280
1574
  // Value Interface
1281
1575
  //===--------------------------------------------------------------------===//
1576
+
1282
1577
  /*!
1283
1578
  Destroys the value and de-allocates all memory allocated for that type.
1284
1579
 
@@ -1311,6 +1606,25 @@ Creates a value from an int64
1311
1606
  */
1312
1607
  DUCKDB_API duckdb_value duckdb_create_int64(int64_t val);
1313
1608
 
1609
+ /*!
1610
+ Creates a struct value from a type and an array of values
1611
+
1612
+ * type: The type of the struct
1613
+ * values: The values for the struct fields
1614
+ * returns: The value. This must be destroyed with `duckdb_destroy_value`.
1615
+ */
1616
+ DUCKDB_API duckdb_value duckdb_create_struct_value(duckdb_logical_type type, duckdb_value *values);
1617
+
1618
+ /*!
1619
+ Creates a list value from a type and an array of values of length `value_count`
1620
+
1621
+ * type: The type of the list
1622
+ * values: The values for the list
1623
+ * value_count: The number of values in the list
1624
+ * returns: The value. This must be destroyed with `duckdb_destroy_value`.
1625
+ */
1626
+ DUCKDB_API duckdb_value duckdb_create_list_value(duckdb_logical_type type, duckdb_value *values, idx_t value_count);
1627
+
1314
1628
  /*!
1315
1629
  Obtains a string representation of the given value.
1316
1630
  The result must be destroyed with `duckdb_free`.
@@ -1343,6 +1657,15 @@ This should not be used with `DUCKDB_TYPE_DECIMAL`.
1343
1657
  */
1344
1658
  DUCKDB_API duckdb_logical_type duckdb_create_logical_type(duckdb_type type);
1345
1659
 
1660
+ /*!
1661
+ Returns the alias of a duckdb_logical_type, if one is set, else `NULL`.
1662
+ The result must be destroyed with `duckdb_free`.
1663
+
1664
+ * type: The logical type to return the alias of
1665
+ * returns: The alias or `NULL`
1666
+ */
1667
+ DUCKDB_API char *duckdb_logical_type_get_alias(duckdb_logical_type type);
1668
+
1346
1669
  /*!
1347
1670
  Creates a list type from its child type.
1348
1671
  The resulting type should be destroyed with `duckdb_destroy_logical_type`.
@@ -1362,14 +1685,14 @@ The resulting type should be destroyed with `duckdb_destroy_logical_type`.
1362
1685
  DUCKDB_API duckdb_logical_type duckdb_create_map_type(duckdb_logical_type key_type, duckdb_logical_type value_type);
1363
1686
 
1364
1687
  /*!
1365
- Creates a UNION type from the passed types array
1688
+ Creates a UNION type from the passed types array.
1366
1689
  The resulting type should be destroyed with `duckdb_destroy_logical_type`.
1367
1690
 
1368
1691
  * types: The array of types that the union should consist of.
1369
1692
  * type_amount: The size of the types array.
1370
1693
  * returns: The logical type.
1371
1694
  */
1372
- DUCKDB_API duckdb_logical_type duckdb_create_union_type(duckdb_logical_type member_types, const char **member_names,
1695
+ DUCKDB_API duckdb_logical_type duckdb_create_union_type(duckdb_logical_type *member_types, const char **member_names,
1373
1696
  idx_t member_count);
1374
1697
 
1375
1698
  /*!
@@ -1385,7 +1708,18 @@ DUCKDB_API duckdb_logical_type duckdb_create_struct_type(duckdb_logical_type *me
1385
1708
  idx_t member_count);
1386
1709
 
1387
1710
  /*!
1388
- Creates a `duckdb_logical_type` of type decimal with the specified width and scale
1711
+ Creates an ENUM type from the passed member name array.
1712
+ The resulting type should be destroyed with `duckdb_destroy_logical_type`.
1713
+
1714
+ * enum_name: The name of the enum.
1715
+ * member_names: The array of names that the enum should consist of.
1716
+ * member_count: The number of elements that were specified in the array.
1717
+ * returns: The logical type.
1718
+ */
1719
+ DUCKDB_API duckdb_logical_type duckdb_create_enum_type(const char **member_names, idx_t member_count);
1720
+
1721
+ /*!
1722
+ Creates a `duckdb_logical_type` of type decimal with the specified width and scale.
1389
1723
  The resulting type should be destroyed with `duckdb_destroy_logical_type`.
1390
1724
 
1391
1725
  * width: The width of the decimal type
@@ -1395,7 +1729,7 @@ The resulting type should be destroyed with `duckdb_destroy_logical_type`.
1395
1729
  DUCKDB_API duckdb_logical_type duckdb_create_decimal_type(uint8_t width, uint8_t scale);
1396
1730
 
1397
1731
  /*!
1398
- Retrieves the type class of a `duckdb_logical_type`.
1732
+ Retrieves the enum type class of a `duckdb_logical_type`.
1399
1733
 
1400
1734
  * type: The logical type object
1401
1735
  * returns: The type id
@@ -1435,7 +1769,7 @@ Retrieves the internal storage type of an enum type.
1435
1769
  DUCKDB_API duckdb_type duckdb_enum_internal_type(duckdb_logical_type type);
1436
1770
 
1437
1771
  /*!
1438
- Retrieves the dictionary size of the enum type
1772
+ Retrieves the dictionary size of the enum type.
1439
1773
 
1440
1774
  * type: The logical type object
1441
1775
  * returns: The dictionary size of the enum type
@@ -1445,7 +1779,7 @@ DUCKDB_API uint32_t duckdb_enum_dictionary_size(duckdb_logical_type type);
1445
1779
  /*!
1446
1780
  Retrieves the dictionary value at the specified position from the enum.
1447
1781
 
1448
- The result must be freed with `duckdb_free`
1782
+ The result must be freed with `duckdb_free`.
1449
1783
 
1450
1784
  * type: The logical type object
1451
1785
  * index: The index in the dictionary
@@ -1456,7 +1790,7 @@ DUCKDB_API char *duckdb_enum_dictionary_value(duckdb_logical_type type, idx_t in
1456
1790
  /*!
1457
1791
  Retrieves the child type of the given list type.
1458
1792
 
1459
- The result must be freed with `duckdb_destroy_logical_type`
1793
+ The result must be freed with `duckdb_destroy_logical_type`.
1460
1794
 
1461
1795
  * type: The logical type object
1462
1796
  * returns: The child type of the list type. Must be destroyed with `duckdb_destroy_logical_type`.
@@ -1466,7 +1800,7 @@ DUCKDB_API duckdb_logical_type duckdb_list_type_child_type(duckdb_logical_type t
1466
1800
  /*!
1467
1801
  Retrieves the key type of the given map type.
1468
1802
 
1469
- The result must be freed with `duckdb_destroy_logical_type`
1803
+ The result must be freed with `duckdb_destroy_logical_type`.
1470
1804
 
1471
1805
  * type: The logical type object
1472
1806
  * returns: The key type of the map type. Must be destroyed with `duckdb_destroy_logical_type`.
@@ -1476,7 +1810,7 @@ DUCKDB_API duckdb_logical_type duckdb_map_type_key_type(duckdb_logical_type type
1476
1810
  /*!
1477
1811
  Retrieves the value type of the given map type.
1478
1812
 
1479
- The result must be freed with `duckdb_destroy_logical_type`
1813
+ The result must be freed with `duckdb_destroy_logical_type`.
1480
1814
 
1481
1815
  * type: The logical type object
1482
1816
  * returns: The value type of the map type. Must be destroyed with `duckdb_destroy_logical_type`.
@@ -1494,7 +1828,7 @@ DUCKDB_API idx_t duckdb_struct_type_child_count(duckdb_logical_type type);
1494
1828
  /*!
1495
1829
  Retrieves the name of the struct child.
1496
1830
 
1497
- The result must be freed with `duckdb_free`
1831
+ The result must be freed with `duckdb_free`.
1498
1832
 
1499
1833
  * type: The logical type object
1500
1834
  * index: The child index
@@ -1505,7 +1839,7 @@ DUCKDB_API char *duckdb_struct_type_child_name(duckdb_logical_type type, idx_t i
1505
1839
  /*!
1506
1840
  Retrieves the child type of the given struct type at the specified index.
1507
1841
 
1508
- The result must be freed with `duckdb_destroy_logical_type`
1842
+ The result must be freed with `duckdb_destroy_logical_type`.
1509
1843
 
1510
1844
  * type: The logical type object
1511
1845
  * index: The child index
@@ -1524,7 +1858,7 @@ DUCKDB_API idx_t duckdb_union_type_member_count(duckdb_logical_type type);
1524
1858
  /*!
1525
1859
  Retrieves the name of the union member.
1526
1860
 
1527
- The result must be freed with `duckdb_free`
1861
+ The result must be freed with `duckdb_free`.
1528
1862
 
1529
1863
  * type: The logical type object
1530
1864
  * index: The child index
@@ -1535,7 +1869,7 @@ DUCKDB_API char *duckdb_union_type_member_name(duckdb_logical_type type, idx_t i
1535
1869
  /*!
1536
1870
  Retrieves the child type of the given union member at the specified index.
1537
1871
 
1538
- The result must be freed with `duckdb_destroy_logical_type`
1872
+ The result must be freed with `duckdb_destroy_logical_type`.
1539
1873
 
1540
1874
  * type: The logical type object
1541
1875
  * index: The child index
@@ -1553,9 +1887,12 @@ DUCKDB_API void duckdb_destroy_logical_type(duckdb_logical_type *type);
1553
1887
  //===--------------------------------------------------------------------===//
1554
1888
  // Data Chunk Interface
1555
1889
  //===--------------------------------------------------------------------===//
1890
+
1556
1891
  /*!
1557
1892
  Creates an empty DataChunk with the specified set of types.
1558
1893
 
1894
+ Note that the result must be destroyed with `duckdb_destroy_data_chunk`.
1895
+
1559
1896
  * types: An array of types of the data chunk.
1560
1897
  * column_count: The number of columns.
1561
1898
  * returns: The data chunk.
@@ -1614,6 +1951,7 @@ DUCKDB_API void duckdb_data_chunk_set_size(duckdb_data_chunk chunk, idx_t size);
1614
1951
  //===--------------------------------------------------------------------===//
1615
1952
  // Vector Interface
1616
1953
  //===--------------------------------------------------------------------===//
1954
+
1617
1955
  /*!
1618
1956
  Retrieves the column type of the specified vector.
1619
1957
 
@@ -1698,7 +2036,7 @@ The resulting vector is valid as long as the parent vector is valid.
1698
2036
  DUCKDB_API duckdb_vector duckdb_list_vector_get_child(duckdb_vector vector);
1699
2037
 
1700
2038
  /*!
1701
- Returns the size of the child vector of the list
2039
+ Returns the size of the child vector of the list.
1702
2040
 
1703
2041
  * vector: The vector
1704
2042
  * returns: The size of the child list
@@ -1737,6 +2075,7 @@ DUCKDB_API duckdb_vector duckdb_struct_vector_get_child(duckdb_vector vector, id
1737
2075
  //===--------------------------------------------------------------------===//
1738
2076
  // Validity Mask Functions
1739
2077
  //===--------------------------------------------------------------------===//
2078
+
1740
2079
  /*!
1741
2080
  Returns whether or not a row is valid (i.e. not NULL) in the given validity mask.
1742
2081
 
@@ -1781,15 +2120,6 @@ DUCKDB_API void duckdb_validity_set_row_valid(uint64_t *validity, idx_t row);
1781
2120
  //===--------------------------------------------------------------------===//
1782
2121
  // Table Functions
1783
2122
  //===--------------------------------------------------------------------===//
1784
- typedef void *duckdb_table_function;
1785
- typedef void *duckdb_bind_info;
1786
- typedef void *duckdb_init_info;
1787
- typedef void *duckdb_function_info;
1788
-
1789
- typedef void (*duckdb_table_function_bind_t)(duckdb_bind_info info);
1790
- typedef void (*duckdb_table_function_init_t)(duckdb_init_info info);
1791
- typedef void (*duckdb_table_function_t)(duckdb_function_info info, duckdb_data_chunk output);
1792
- typedef void (*duckdb_delete_callback_t)(void *data);
1793
2123
 
1794
2124
  /*!
1795
2125
  Creates a new empty table function.
@@ -1844,7 +2174,7 @@ DUCKDB_API void duckdb_table_function_set_extra_info(duckdb_table_function table
1844
2174
  duckdb_delete_callback_t destroy);
1845
2175
 
1846
2176
  /*!
1847
- Sets the bind function of the table function
2177
+ Sets the bind function of the table function.
1848
2178
 
1849
2179
  * table_function: The table function
1850
2180
  * bind: The bind function
@@ -1852,7 +2182,7 @@ Sets the bind function of the table function
1852
2182
  DUCKDB_API void duckdb_table_function_set_bind(duckdb_table_function table_function, duckdb_table_function_bind_t bind);
1853
2183
 
1854
2184
  /*!
1855
- Sets the init function of the table function
2185
+ Sets the init function of the table function.
1856
2186
 
1857
2187
  * table_function: The table function
1858
2188
  * init: The init function
@@ -1860,7 +2190,7 @@ Sets the init function of the table function
1860
2190
  DUCKDB_API void duckdb_table_function_set_init(duckdb_table_function table_function, duckdb_table_function_init_t init);
1861
2191
 
1862
2192
  /*!
1863
- Sets the thread-local init function of the table function
2193
+ Sets the thread-local init function of the table function.
1864
2194
 
1865
2195
  * table_function: The table function
1866
2196
  * init: The init function
@@ -1869,7 +2199,7 @@ DUCKDB_API void duckdb_table_function_set_local_init(duckdb_table_function table
1869
2199
  duckdb_table_function_init_t init);
1870
2200
 
1871
2201
  /*!
1872
- Sets the main function of the table function
2202
+ Sets the main function of the table function.
1873
2203
 
1874
2204
  * table_function: The table function
1875
2205
  * function: The function
@@ -1905,8 +2235,9 @@ DUCKDB_API duckdb_state duckdb_register_table_function(duckdb_connection con, du
1905
2235
  //===--------------------------------------------------------------------===//
1906
2236
  // Table Function Bind
1907
2237
  //===--------------------------------------------------------------------===//
2238
+
1908
2239
  /*!
1909
- Retrieves the extra info of the function as set in `duckdb_table_function_set_extra_info`
2240
+ Retrieves the extra info of the function as set in `duckdb_table_function_set_extra_info`.
1910
2241
 
1911
2242
  * info: The info object
1912
2243
  * returns: The extra info
@@ -1982,7 +2313,7 @@ DUCKDB_API void duckdb_bind_set_error(duckdb_bind_info info, const char *error);
1982
2313
  //===--------------------------------------------------------------------===//
1983
2314
 
1984
2315
  /*!
1985
- Retrieves the extra info of the function as set in `duckdb_table_function_set_extra_info`
2316
+ Retrieves the extra info of the function as set in `duckdb_table_function_set_extra_info`.
1986
2317
 
1987
2318
  * info: The info object
1988
2319
  * returns: The extra info
@@ -2051,12 +2382,13 @@ DUCKDB_API void duckdb_init_set_error(duckdb_init_info info, const char *error);
2051
2382
  //===--------------------------------------------------------------------===//
2052
2383
 
2053
2384
  /*!
2054
- Retrieves the extra info of the function as set in `duckdb_table_function_set_extra_info`
2385
+ Retrieves the extra info of the function as set in `duckdb_table_function_set_extra_info`.
2055
2386
 
2056
2387
  * info: The info object
2057
2388
  * returns: The extra info
2058
2389
  */
2059
2390
  DUCKDB_API void *duckdb_function_get_extra_info(duckdb_function_info info);
2391
+
2060
2392
  /*!
2061
2393
  Gets the bind data set by `duckdb_bind_set_bind_data` during the bind.
2062
2394
 
@@ -2095,12 +2427,9 @@ DUCKDB_API void duckdb_function_set_error(duckdb_function_info info, const char
2095
2427
  //===--------------------------------------------------------------------===//
2096
2428
  // Replacement Scans
2097
2429
  //===--------------------------------------------------------------------===//
2098
- typedef void *duckdb_replacement_scan_info;
2099
-
2100
- typedef void (*duckdb_replacement_callback_t)(duckdb_replacement_scan_info info, const char *table_name, void *data);
2101
2430
 
2102
2431
  /*!
2103
- Add a replacement scan definition to the specified database
2432
+ Add a replacement scan definition to the specified database.
2104
2433
 
2105
2434
  * db: The database object to add the replacement scan to
2106
2435
  * replacement: The replacement scan callback
@@ -2111,8 +2440,8 @@ DUCKDB_API void duckdb_add_replacement_scan(duckdb_database db, duckdb_replaceme
2111
2440
  void *extra_data, duckdb_delete_callback_t delete_callback);
2112
2441
 
2113
2442
  /*!
2114
- Sets the replacement function name to use. If this function is called in the replacement callback,
2115
- the replacement scan is performed. If it is not called, the replacement callback is not performed.
2443
+ Sets the replacement function name. If this function is called in the replacement callback,
2444
+ the replacement scan is performed. If it is not called, the replacement callback is not performed.
2116
2445
 
2117
2446
  * info: The info object
2118
2447
  * function_name: The function name to substitute.
@@ -2146,12 +2475,17 @@ DUCKDB_API void duckdb_replacement_scan_set_error(duckdb_replacement_scan_info i
2146
2475
  // the row should be finished by calling `duckdb_appender_end_row`. After all rows have been appended,
2147
2476
  // `duckdb_appender_destroy` should be used to finalize the appender and clean up the resulting memory.
2148
2477
 
2478
+ // Instead of appending rows with `duckdb_appender_end_row`, it is also possible to fill and append
2479
+ // chunks-at-a-time.
2480
+
2149
2481
  // Note that `duckdb_appender_destroy` should always be called on the resulting appender, even if the function returns
2150
2482
  // `DuckDBError`.
2151
2483
 
2152
2484
  /*!
2153
2485
  Creates an appender object.
2154
2486
 
2487
+ Note that the object must be destroyed with `duckdb_appender_destroy`.
2488
+
2155
2489
  * connection: The connection context to create the appender in.
2156
2490
  * schema: The schema of the table to append to, or `nullptr` for the default schema.
2157
2491
  * table: The table name to append to.
@@ -2161,6 +2495,25 @@ Creates an appender object.
2161
2495
  DUCKDB_API duckdb_state duckdb_appender_create(duckdb_connection connection, const char *schema, const char *table,
2162
2496
  duckdb_appender *out_appender);
2163
2497
 
2498
+ /*!
2499
+ Returns the number of columns in the table that belongs to the appender.
2500
+
2501
+ * appender The appender to get the column count from.
2502
+ * returns: The number of columns in the table.
2503
+ */
2504
+ DUCKDB_API idx_t duckdb_appender_column_count(duckdb_appender appender);
2505
+
2506
+ /*!
2507
+ Returns the type of the column at the specified index.
2508
+
2509
+ Note: The resulting type should be destroyed with `duckdb_destroy_logical_type`.
2510
+
2511
+ * appender The appender to get the column type from.
2512
+ * col_idx The index of the column to get the type of.
2513
+ * returns: The duckdb_logical_type of the column.
2514
+ */
2515
+ DUCKDB_API duckdb_logical_type duckdb_appender_column_type(duckdb_appender appender, idx_t col_idx);
2516
+
2164
2517
  /*!
2165
2518
  Returns the error message associated with the given appender.
2166
2519
  If the appender has no error message, this returns `nullptr` instead.
@@ -2225,18 +2578,22 @@ DUCKDB_API duckdb_state duckdb_append_bool(duckdb_appender appender, bool value)
2225
2578
  Append an int8_t value to the appender.
2226
2579
  */
2227
2580
  DUCKDB_API duckdb_state duckdb_append_int8(duckdb_appender appender, int8_t value);
2581
+
2228
2582
  /*!
2229
2583
  Append an int16_t value to the appender.
2230
2584
  */
2231
2585
  DUCKDB_API duckdb_state duckdb_append_int16(duckdb_appender appender, int16_t value);
2586
+
2232
2587
  /*!
2233
2588
  Append an int32_t value to the appender.
2234
2589
  */
2235
2590
  DUCKDB_API duckdb_state duckdb_append_int32(duckdb_appender appender, int32_t value);
2591
+
2236
2592
  /*!
2237
2593
  Append an int64_t value to the appender.
2238
2594
  */
2239
2595
  DUCKDB_API duckdb_state duckdb_append_int64(duckdb_appender appender, int64_t value);
2596
+
2240
2597
  /*!
2241
2598
  Append a duckdb_hugeint value to the appender.
2242
2599
  */
@@ -2246,23 +2603,32 @@ DUCKDB_API duckdb_state duckdb_append_hugeint(duckdb_appender appender, duckdb_h
2246
2603
  Append a uint8_t value to the appender.
2247
2604
  */
2248
2605
  DUCKDB_API duckdb_state duckdb_append_uint8(duckdb_appender appender, uint8_t value);
2606
+
2249
2607
  /*!
2250
2608
  Append a uint16_t value to the appender.
2251
2609
  */
2252
2610
  DUCKDB_API duckdb_state duckdb_append_uint16(duckdb_appender appender, uint16_t value);
2611
+
2253
2612
  /*!
2254
2613
  Append a uint32_t value to the appender.
2255
2614
  */
2256
2615
  DUCKDB_API duckdb_state duckdb_append_uint32(duckdb_appender appender, uint32_t value);
2616
+
2257
2617
  /*!
2258
2618
  Append a uint64_t value to the appender.
2259
2619
  */
2260
2620
  DUCKDB_API duckdb_state duckdb_append_uint64(duckdb_appender appender, uint64_t value);
2261
2621
 
2622
+ /*!
2623
+ Append a duckdb_uhugeint value to the appender.
2624
+ */
2625
+ DUCKDB_API duckdb_state duckdb_append_uhugeint(duckdb_appender appender, duckdb_uhugeint value);
2626
+
2262
2627
  /*!
2263
2628
  Append a float value to the appender.
2264
2629
  */
2265
2630
  DUCKDB_API duckdb_state duckdb_append_float(duckdb_appender appender, float value);
2631
+
2266
2632
  /*!
2267
2633
  Append a double value to the appender.
2268
2634
  */
@@ -2272,14 +2638,17 @@ DUCKDB_API duckdb_state duckdb_append_double(duckdb_appender appender, double va
2272
2638
  Append a duckdb_date value to the appender.
2273
2639
  */
2274
2640
  DUCKDB_API duckdb_state duckdb_append_date(duckdb_appender appender, duckdb_date value);
2641
+
2275
2642
  /*!
2276
2643
  Append a duckdb_time value to the appender.
2277
2644
  */
2278
2645
  DUCKDB_API duckdb_state duckdb_append_time(duckdb_appender appender, duckdb_time value);
2646
+
2279
2647
  /*!
2280
2648
  Append a duckdb_timestamp value to the appender.
2281
2649
  */
2282
2650
  DUCKDB_API duckdb_state duckdb_append_timestamp(duckdb_appender appender, duckdb_timestamp value);
2651
+
2283
2652
  /*!
2284
2653
  Append a duckdb_interval value to the appender.
2285
2654
  */
@@ -2289,14 +2658,17 @@ DUCKDB_API duckdb_state duckdb_append_interval(duckdb_appender appender, duckdb_
2289
2658
  Append a varchar value to the appender.
2290
2659
  */
2291
2660
  DUCKDB_API duckdb_state duckdb_append_varchar(duckdb_appender appender, const char *val);
2661
+
2292
2662
  /*!
2293
2663
  Append a varchar value to the appender.
2294
2664
  */
2295
2665
  DUCKDB_API duckdb_state duckdb_append_varchar_length(duckdb_appender appender, const char *val, idx_t length);
2666
+
2296
2667
  /*!
2297
2668
  Append a blob value to the appender.
2298
2669
  */
2299
2670
  DUCKDB_API duckdb_state duckdb_append_blob(duckdb_appender appender, const void *data, idx_t length);
2671
+
2300
2672
  /*!
2301
2673
  Append a NULL value to the appender (of any type).
2302
2674
  */
@@ -2318,6 +2690,7 @@ DUCKDB_API duckdb_state duckdb_append_data_chunk(duckdb_appender appender, duckd
2318
2690
  //===--------------------------------------------------------------------===//
2319
2691
  // Arrow Interface
2320
2692
  //===--------------------------------------------------------------------===//
2693
+
2321
2694
  /*!
2322
2695
  Executes a SQL query within a connection and stores the full (materialized) result in an arrow structure.
2323
2696
  If the query fails to execute, DuckDBError is returned and the error message can be retrieved by calling
@@ -2334,7 +2707,8 @@ query fails, otherwise the error stored within the result will not be freed corr
2334
2707
  DUCKDB_API duckdb_state duckdb_query_arrow(duckdb_connection connection, const char *query, duckdb_arrow *out_result);
2335
2708
 
2336
2709
  /*!
2337
- Fetch the internal arrow schema from the arrow result.
2710
+ Fetch the internal arrow schema from the arrow result. Remember to call release on the respective
2711
+ ArrowSchema object.
2338
2712
 
2339
2713
  * result: The result to fetch the schema from.
2340
2714
  * out_schema: The output schema.
@@ -2343,7 +2717,8 @@ Fetch the internal arrow schema from the arrow result.
2343
2717
  DUCKDB_API duckdb_state duckdb_query_arrow_schema(duckdb_arrow result, duckdb_arrow_schema *out_schema);
2344
2718
 
2345
2719
  /*!
2346
- Fetch the internal arrow schema from the prepared statement.
2720
+ Fetch the internal arrow schema from the prepared statement. Remember to call release on the respective
2721
+ ArrowSchema object.
2347
2722
 
2348
2723
  * result: The prepared statement to fetch the schema from.
2349
2724
  * out_schema: The output schema.
@@ -2351,9 +2726,19 @@ Fetch the internal arrow schema from the prepared statement.
2351
2726
  */
2352
2727
  DUCKDB_API duckdb_state duckdb_prepared_arrow_schema(duckdb_prepared_statement prepared,
2353
2728
  duckdb_arrow_schema *out_schema);
2729
+ /*!
2730
+ Convert a data chunk into an arrow struct array. Remember to call release on the respective
2731
+ ArrowArray object.
2732
+
2733
+ * result: The result object the data chunk have been fetched from.
2734
+ * chunk: The data chunk to convert.
2735
+ * out_array: The output array.
2736
+ */
2737
+ DUCKDB_API void duckdb_result_arrow_array(duckdb_result result, duckdb_data_chunk chunk, duckdb_arrow_array *out_array);
2354
2738
 
2355
2739
  /*!
2356
- Fetch an internal arrow array from the arrow result.
2740
+ Fetch an internal arrow struct array from the arrow result. Remember to call release on the respective
2741
+ ArrowArray object.
2357
2742
 
2358
2743
  This function can be called multiple time to get next chunks, which will free the previous out_array.
2359
2744
  So consume the out_array before calling this function again.
@@ -2365,7 +2750,7 @@ So consume the out_array before calling this function again.
2365
2750
  DUCKDB_API duckdb_state duckdb_query_arrow_array(duckdb_arrow result, duckdb_arrow_array *out_array);
2366
2751
 
2367
2752
  /*!
2368
- Returns the number of columns present in a the arrow result object.
2753
+ Returns the number of columns present in the arrow result object.
2369
2754
 
2370
2755
  * result: The result object.
2371
2756
  * returns: The number of columns present in the result object.
@@ -2373,7 +2758,7 @@ Returns the number of columns present in a the arrow result object.
2373
2758
  DUCKDB_API idx_t duckdb_arrow_column_count(duckdb_arrow result);
2374
2759
 
2375
2760
  /*!
2376
- Returns the number of rows present in a the arrow result object.
2761
+ Returns the number of rows present in the arrow result object.
2377
2762
 
2378
2763
  * result: The result object.
2379
2764
  * returns: The number of rows present in the result object.
@@ -2395,7 +2780,7 @@ Returns the error message contained within the result. The error is only set if
2395
2780
 
2396
2781
  The error message should not be freed. It will be de-allocated when `duckdb_destroy_arrow` is called.
2397
2782
 
2398
- * result: The result object to fetch the nullmask from.
2783
+ * result: The result object to fetch the error from.
2399
2784
  * returns: The error of the result.
2400
2785
  */
2401
2786
  DUCKDB_API const char *duckdb_query_arrow_error(duckdb_arrow result);
@@ -2407,10 +2792,53 @@ Closes the result and de-allocates all memory allocated for the arrow result.
2407
2792
  */
2408
2793
  DUCKDB_API void duckdb_destroy_arrow(duckdb_arrow *result);
2409
2794
 
2795
+ /*!
2796
+ Releases the arrow array stream and de-allocates its memory.
2797
+
2798
+ * stream: The arrow array stream to destroy.
2799
+ */
2800
+ DUCKDB_API void duckdb_destroy_arrow_stream(duckdb_arrow_stream *stream_p);
2801
+
2802
+ /*!
2803
+ Executes the prepared statement with the given bound parameters, and returns an arrow query result.
2804
+ Note that after running `duckdb_execute_prepared_arrow`, `duckdb_destroy_arrow` must be called on the result object.
2805
+
2806
+ * prepared_statement: The prepared statement to execute.
2807
+ * out_result: The query result.
2808
+ * returns: `DuckDBSuccess` on success or `DuckDBError` on failure.
2809
+ */
2810
+ DUCKDB_API duckdb_state duckdb_execute_prepared_arrow(duckdb_prepared_statement prepared_statement,
2811
+ duckdb_arrow *out_result);
2812
+
2813
+ /*!
2814
+ Scans the Arrow stream and creates a view with the given name.
2815
+
2816
+ * connection: The connection on which to execute the scan.
2817
+ * table_name: Name of the temporary view to create.
2818
+ * arrow: Arrow stream wrapper.
2819
+ * returns: `DuckDBSuccess` on success or `DuckDBError` on failure.
2820
+ */
2821
+ DUCKDB_API duckdb_state duckdb_arrow_scan(duckdb_connection connection, const char *table_name,
2822
+ duckdb_arrow_stream arrow);
2823
+
2824
+ /*!
2825
+ Scans the Arrow array and creates a view with the given name.
2826
+ Note that after running `duckdb_arrow_array_scan`, `duckdb_destroy_arrow_stream` must be called on the out stream.
2827
+
2828
+ * connection: The connection on which to execute the scan.
2829
+ * table_name: Name of the temporary view to create.
2830
+ * arrow_schema: Arrow schema wrapper.
2831
+ * arrow_array: Arrow array wrapper.
2832
+ * out_stream: Output array stream that wraps around the passed schema, for releasing/deleting once done.
2833
+ * returns: `DuckDBSuccess` on success or `DuckDBError` on failure.
2834
+ */
2835
+ DUCKDB_API duckdb_state duckdb_arrow_array_scan(duckdb_connection connection, const char *table_name,
2836
+ duckdb_arrow_schema arrow_schema, duckdb_arrow_array arrow_array,
2837
+ duckdb_arrow_stream *out_stream);
2838
+
2410
2839
  //===--------------------------------------------------------------------===//
2411
2840
  // Threading Information
2412
2841
  //===--------------------------------------------------------------------===//
2413
- typedef void *duckdb_task_state;
2414
2842
 
2415
2843
  /*!
2416
2844
  Execute DuckDB tasks on this thread.
@@ -2424,9 +2852,9 @@ DUCKDB_API void duckdb_execute_tasks(duckdb_database database, idx_t max_tasks);
2424
2852
 
2425
2853
  /*!
2426
2854
  Creates a task state that can be used with duckdb_execute_tasks_state to execute tasks until
2427
- duckdb_finish_execution is called on the state.
2855
+ `duckdb_finish_execution` is called on the state.
2428
2856
 
2429
- duckdb_destroy_state should be called on the result in order to free memory.
2857
+ `duckdb_destroy_state` must be called on the result.
2430
2858
 
2431
2859
  * database: The database object to create the task state for
2432
2860
  * returns: The task state that can be used with duckdb_execute_tasks_state.
@@ -2483,7 +2911,7 @@ on the task state.
2483
2911
  DUCKDB_API void duckdb_destroy_task_state(duckdb_task_state state);
2484
2912
 
2485
2913
  /*!
2486
- Returns true if execution of the current query is finished.
2914
+ Returns true if the execution of the current query is finished.
2487
2915
 
2488
2916
  * con: The connection on which to check
2489
2917
  */