duckdb 0.9.3-dev0.0 → 0.9.3-dev14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1215) hide show
  1. package/LICENSE +1 -1
  2. package/binding.gyp +32 -7
  3. package/package.json +1 -1
  4. package/src/connection.cpp +6 -6
  5. package/src/database.cpp +12 -10
  6. package/src/duckdb/extension/icu/icu-datefunc.cpp +22 -10
  7. package/src/duckdb/extension/icu/icu-datepart.cpp +42 -22
  8. package/src/duckdb/extension/icu/icu-datetrunc.cpp +40 -7
  9. package/src/duckdb/extension/icu/icu-strptime.cpp +14 -8
  10. package/src/duckdb/extension/icu/icu-table-range.cpp +1 -1
  11. package/src/duckdb/extension/icu/icu-timezone.cpp +43 -16
  12. package/src/duckdb/extension/icu/icu_extension.cpp +1 -1
  13. package/src/duckdb/extension/icu/include/icu-datefunc.hpp +3 -0
  14. package/src/duckdb/extension/icu/third_party/icu/stubdata/stubdata.cpp +1 -1
  15. package/src/duckdb/extension/json/buffered_json_reader.cpp +78 -62
  16. package/src/duckdb/extension/json/include/buffered_json_reader.hpp +11 -7
  17. package/src/duckdb/extension/json/include/json_common.hpp +0 -14
  18. package/src/duckdb/extension/json/include/json_deserializer.hpp +1 -0
  19. package/src/duckdb/extension/json/include/json_functions.hpp +1 -0
  20. package/src/duckdb/extension/json/include/json_scan.hpp +19 -5
  21. package/src/duckdb/extension/json/include/json_serializer.hpp +2 -1
  22. package/src/duckdb/extension/json/include/json_structure.hpp +12 -10
  23. package/src/duckdb/extension/json/json_common.cpp +1 -0
  24. package/src/duckdb/extension/json/json_deserializer.cpp +13 -0
  25. package/src/duckdb/extension/json/json_extension.cpp +3 -3
  26. package/src/duckdb/extension/json/json_functions/copy_json.cpp +8 -4
  27. package/src/duckdb/extension/json/json_functions/json_array_length.cpp +1 -1
  28. package/src/duckdb/extension/json/json_functions/json_contains.cpp +3 -3
  29. package/src/duckdb/extension/json/json_functions/json_create.cpp +53 -8
  30. package/src/duckdb/extension/json/json_functions/json_extract.cpp +10 -6
  31. package/src/duckdb/extension/json/json_functions/json_keys.cpp +1 -1
  32. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +2 -3
  33. package/src/duckdb/extension/json/json_functions/json_serialize_plan.cpp +210 -0
  34. package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +22 -19
  35. package/src/duckdb/extension/json/json_functions/json_structure.cpp +71 -43
  36. package/src/duckdb/extension/json/json_functions/json_transform.cpp +105 -8
  37. package/src/duckdb/extension/json/json_functions/json_type.cpp +1 -1
  38. package/src/duckdb/extension/json/json_functions/json_valid.cpp +1 -1
  39. package/src/duckdb/extension/json/json_functions/read_json.cpp +43 -18
  40. package/src/duckdb/extension/json/json_functions/read_json_objects.cpp +1 -1
  41. package/src/duckdb/extension/json/json_functions.cpp +9 -5
  42. package/src/duckdb/extension/json/json_scan.cpp +147 -125
  43. package/src/duckdb/extension/json/json_serializer.cpp +9 -0
  44. package/src/duckdb/extension/json/serialize_json.cpp +6 -0
  45. package/src/duckdb/extension/parquet/column_reader.cpp +53 -18
  46. package/src/duckdb/extension/parquet/column_writer.cpp +29 -6
  47. package/src/duckdb/extension/parquet/include/column_reader.hpp +0 -1
  48. package/src/duckdb/extension/parquet/include/decode_utils.hpp +2 -2
  49. package/src/duckdb/extension/parquet/include/parquet_crypto.hpp +87 -0
  50. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -3
  51. package/src/duckdb/extension/parquet/include/parquet_decimal_utils.hpp +16 -3
  52. package/src/duckdb/extension/parquet/include/parquet_metadata.hpp +10 -0
  53. package/src/duckdb/extension/parquet/include/parquet_reader.hpp +34 -6
  54. package/src/duckdb/extension/parquet/include/parquet_statistics.hpp +3 -2
  55. package/src/duckdb/extension/parquet/include/parquet_timestamp.hpp +2 -0
  56. package/src/duckdb/extension/parquet/include/parquet_writer.hpp +21 -1
  57. package/src/duckdb/extension/parquet/parquet_crypto.cpp +370 -0
  58. package/src/duckdb/extension/parquet/parquet_extension.cpp +254 -24
  59. package/src/duckdb/extension/parquet/parquet_metadata.cpp +204 -16
  60. package/src/duckdb/extension/parquet/parquet_reader.cpp +108 -34
  61. package/src/duckdb/extension/parquet/parquet_statistics.cpp +75 -30
  62. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +15 -8
  63. package/src/duckdb/extension/parquet/parquet_writer.cpp +62 -10
  64. package/src/duckdb/extension/parquet/serialize_parquet.cpp +60 -0
  65. package/src/duckdb/src/catalog/catalog.cpp +23 -25
  66. package/src/duckdb/src/catalog/catalog_entry/column_dependency_manager.cpp +1 -0
  67. package/src/duckdb/src/catalog/catalog_entry/dependency/dependency_dependent_entry.cpp +31 -0
  68. package/src/duckdb/src/catalog/catalog_entry/dependency/dependency_entry.cpp +44 -0
  69. package/src/duckdb/src/catalog/catalog_entry/dependency/dependency_subject_entry.cpp +31 -0
  70. package/src/duckdb/src/catalog/catalog_entry/duck_index_entry.cpp +35 -10
  71. package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +22 -6
  72. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +110 -33
  73. package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +33 -17
  74. package/src/duckdb/src/catalog/catalog_entry/macro_catalog_entry.cpp +16 -0
  75. package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +7 -6
  76. package/src/duckdb/src/catalog/catalog_entry/sequence_catalog_entry.cpp +88 -14
  77. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +6 -15
  78. package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +20 -20
  79. package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +4 -0
  80. package/src/duckdb/src/catalog/catalog_entry.cpp +29 -0
  81. package/src/duckdb/src/catalog/catalog_set.cpp +358 -343
  82. package/src/duckdb/src/catalog/catalog_transaction.cpp +4 -0
  83. package/src/duckdb/src/catalog/default/default_functions.cpp +13 -4
  84. package/src/duckdb/src/catalog/default/default_schemas.cpp +5 -1
  85. package/src/duckdb/src/catalog/default/default_views.cpp +6 -2
  86. package/src/duckdb/src/catalog/dependency_catalog_set.cpp +51 -0
  87. package/src/duckdb/src/catalog/dependency_manager.cpp +510 -114
  88. package/src/duckdb/src/catalog/duck_catalog.cpp +4 -4
  89. package/src/duckdb/src/common/adbc/adbc.cpp +73 -53
  90. package/src/duckdb/src/common/adbc/driver_manager.cpp +1101 -268
  91. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +20 -9
  92. package/src/duckdb/src/common/bind_helpers.cpp +1 -0
  93. package/src/duckdb/src/common/box_renderer.cpp +52 -1
  94. package/src/duckdb/src/common/compressed_file_system.cpp +1 -0
  95. package/src/duckdb/src/common/constants.cpp +0 -1
  96. package/src/duckdb/src/common/enum_util.cpp +522 -107
  97. package/src/duckdb/src/common/enums/catalog_type.cpp +64 -1
  98. package/src/duckdb/src/common/enums/compression_type.cpp +14 -0
  99. package/src/duckdb/src/common/enums/date_part_specifier.cpp +1 -0
  100. package/src/duckdb/src/common/enums/expression_type.cpp +4 -0
  101. package/src/duckdb/src/common/enums/file_compression_type.cpp +1 -0
  102. package/src/duckdb/src/common/enums/join_type.cpp +33 -0
  103. package/src/duckdb/src/common/enums/logical_operator_type.cpp +5 -3
  104. package/src/duckdb/src/common/enums/optimizer_type.cpp +9 -1
  105. package/src/duckdb/src/common/enums/physical_operator_type.cpp +8 -4
  106. package/src/duckdb/src/common/enums/statement_type.cpp +2 -2
  107. package/src/duckdb/src/common/error_data.cpp +113 -0
  108. package/src/duckdb/src/common/exception/binder_exception.cpp +47 -0
  109. package/src/duckdb/src/common/exception/catalog_exception.cpp +55 -0
  110. package/src/duckdb/src/common/exception/parser_exception.cpp +19 -0
  111. package/src/duckdb/src/common/exception.cpp +110 -121
  112. package/src/duckdb/src/common/exception_format_value.cpp +9 -1
  113. package/src/duckdb/src/common/extra_type_info.cpp +48 -0
  114. package/src/duckdb/src/common/file_system.cpp +12 -7
  115. package/src/duckdb/src/common/gzip_file_system.cpp +18 -18
  116. package/src/duckdb/src/common/hive_partitioning.cpp +5 -1
  117. package/src/duckdb/src/common/http_state.cpp +20 -3
  118. package/src/duckdb/src/common/local_file_system.cpp +214 -15
  119. package/src/duckdb/src/common/multi_file_reader.cpp +20 -7
  120. package/src/duckdb/src/common/operator/cast_operators.cpp +397 -414
  121. package/src/duckdb/src/common/operator/convert_to_string.cpp +4 -0
  122. package/src/duckdb/src/common/operator/string_cast.cpp +5 -0
  123. package/src/duckdb/src/common/progress_bar/progress_bar.cpp +61 -12
  124. package/src/duckdb/src/common/progress_bar/terminal_progress_bar_display.cpp +13 -4
  125. package/src/duckdb/src/common/radix_partitioning.cpp +1 -1
  126. package/src/duckdb/src/common/row_operations/row_aggregate.cpp +2 -1
  127. package/src/duckdb/src/common/row_operations/row_gather.cpp +7 -1
  128. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +78 -12
  129. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +222 -61
  130. package/src/duckdb/src/common/row_operations/row_matcher.cpp +6 -1
  131. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +51 -0
  132. package/src/duckdb/src/common/row_operations/row_scatter.cpp +8 -1
  133. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +6 -0
  134. package/src/duckdb/src/common/serializer/binary_serializer.cpp +5 -0
  135. package/src/duckdb/src/common/serializer/serializer.cpp +19 -0
  136. package/src/duckdb/src/common/sort/comparators.cpp +126 -0
  137. package/src/duckdb/src/common/sort/partition_state.cpp +17 -17
  138. package/src/duckdb/src/common/sort/radix_sort.cpp +2 -1
  139. package/src/duckdb/src/common/sort/sort_state.cpp +10 -5
  140. package/src/duckdb/src/common/sort/sorted_block.cpp +7 -6
  141. package/src/duckdb/src/common/string_util.cpp +302 -24
  142. package/src/duckdb/src/common/tree_renderer.cpp +8 -6
  143. package/src/duckdb/src/common/types/cast_helpers.cpp +6 -0
  144. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +1 -1
  145. package/src/duckdb/src/common/types/column/column_data_collection.cpp +58 -0
  146. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +8 -1
  147. package/src/duckdb/src/common/types/data_chunk.cpp +9 -0
  148. package/src/duckdb/src/common/types/date.cpp +2 -2
  149. package/src/duckdb/src/common/types/hash.cpp +9 -1
  150. package/src/duckdb/src/common/types/hugeint.cpp +229 -51
  151. package/src/duckdb/src/common/types/hyperloglog.cpp +10 -3
  152. package/src/duckdb/src/common/types/interval.cpp +67 -12
  153. package/src/duckdb/src/common/types/list_segment.cpp +98 -4
  154. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +11 -1
  155. package/src/duckdb/src/common/types/row/row_data_collection.cpp +1 -1
  156. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +2 -2
  157. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +3 -2
  158. package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +63 -3
  159. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +331 -127
  160. package/src/duckdb/src/common/types/time.cpp +47 -75
  161. package/src/duckdb/src/common/types/timestamp.cpp +16 -3
  162. package/src/duckdb/src/common/types/uhugeint.cpp +746 -0
  163. package/src/duckdb/src/common/types/validity_mask.cpp +6 -2
  164. package/src/duckdb/src/common/types/value.cpp +183 -27
  165. package/src/duckdb/src/common/types/vector.cpp +331 -30
  166. package/src/duckdb/src/common/types/vector_buffer.cpp +29 -1
  167. package/src/duckdb/src/common/types/vector_cache.cpp +22 -1
  168. package/src/duckdb/src/common/types.cpp +606 -90
  169. package/src/duckdb/src/common/value_operations/comparison_operations.cpp +21 -1
  170. package/src/duckdb/src/common/vector_operations/comparison_operators.cpp +5 -0
  171. package/src/duckdb/src/common/vector_operations/generators.cpp +2 -2
  172. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +131 -2
  173. package/src/duckdb/src/common/vector_operations/vector_copy.cpp +26 -4
  174. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +41 -0
  175. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +7 -0
  176. package/src/duckdb/src/common/virtual_file_system.cpp +0 -1
  177. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +2 -1
  178. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +144 -56
  179. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +2 -0
  180. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +27 -0
  181. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +4 -3
  182. package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +25 -5
  183. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +100 -3
  184. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +2 -1
  185. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +9 -1
  186. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +83 -52
  187. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +485 -289
  188. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +3 -3
  189. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
  190. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +34 -37
  191. package/src/duckdb/src/core_functions/function_list.cpp +30 -1
  192. package/src/duckdb/src/core_functions/lambda_functions.cpp +416 -0
  193. package/src/duckdb/src/core_functions/scalar/array/array_functions.cpp +294 -0
  194. package/src/duckdb/src/core_functions/scalar/array/array_value.cpp +87 -0
  195. package/src/duckdb/src/core_functions/scalar/blob/create_sort_key.cpp +686 -0
  196. package/src/duckdb/src/core_functions/scalar/blob/encode.cpp +1 -0
  197. package/src/duckdb/src/core_functions/scalar/date/current.cpp +3 -3
  198. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +295 -20
  199. package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +1 -0
  200. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +8 -7
  201. package/src/duckdb/src/core_functions/scalar/date/to_interval.cpp +84 -23
  202. package/src/duckdb/src/core_functions/scalar/generic/error.cpp +4 -4
  203. package/src/duckdb/src/core_functions/scalar/generic/least.cpp +7 -8
  204. package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
  205. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +17 -6
  206. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +8 -0
  207. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +28 -14
  208. package/src/duckdb/src/core_functions/scalar/list/list_filter.cpp +49 -0
  209. package/src/duckdb/src/core_functions/scalar/list/list_reduce.cpp +230 -0
  210. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +85 -16
  211. package/src/duckdb/src/core_functions/scalar/list/list_transform.cpp +41 -0
  212. package/src/duckdb/src/core_functions/scalar/list/list_value.cpp +21 -2
  213. package/src/duckdb/src/core_functions/scalar/map/map.cpp +6 -5
  214. package/src/duckdb/src/core_functions/scalar/map/map_entries.cpp +2 -2
  215. package/src/duckdb/src/core_functions/scalar/map/map_from_entries.cpp +1 -2
  216. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +24 -4
  217. package/src/duckdb/src/core_functions/scalar/operators/bitwise.cpp +6 -0
  218. package/src/duckdb/src/core_functions/scalar/random/random.cpp +2 -2
  219. package/src/duckdb/src/core_functions/scalar/random/setseed.cpp +2 -2
  220. package/src/duckdb/src/core_functions/scalar/secret/which_secret.cpp +28 -0
  221. package/src/duckdb/src/core_functions/scalar/string/bar.cpp +9 -4
  222. package/src/duckdb/src/core_functions/scalar/string/format_bytes.cpp +7 -2
  223. package/src/duckdb/src/core_functions/scalar/string/hex.cpp +63 -4
  224. package/src/duckdb/src/core_functions/scalar/string/pad.cpp +2 -2
  225. package/src/duckdb/src/core_functions/scalar/string/parse_path.cpp +348 -0
  226. package/src/duckdb/src/core_functions/scalar/string/regexp_escape.cpp +22 -0
  227. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +6 -5
  228. package/src/duckdb/src/core_functions/scalar/struct/struct_insert.cpp +3 -3
  229. package/src/duckdb/src/core_functions/scalar/struct/struct_pack.cpp +1 -1
  230. package/src/duckdb/src/execution/aggregate_hashtable.cpp +9 -2
  231. package/src/duckdb/src/execution/column_binding_resolver.cpp +44 -10
  232. package/src/duckdb/src/execution/expression_executor/execute_between.cpp +4 -0
  233. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +4 -0
  234. package/src/duckdb/src/execution/expression_executor/execute_comparison.cpp +4 -0
  235. package/src/duckdb/src/execution/expression_executor.cpp +2 -1
  236. package/src/duckdb/src/execution/index/art/art.cpp +202 -53
  237. package/src/duckdb/src/execution/index/art/art_key.cpp +20 -27
  238. package/src/duckdb/src/execution/index/fixed_size_allocator.cpp +52 -17
  239. package/src/duckdb/src/execution/index/fixed_size_buffer.cpp +14 -8
  240. package/src/duckdb/src/execution/index/index_type_set.cpp +32 -0
  241. package/src/duckdb/src/execution/index/unknown_index.cpp +65 -0
  242. package/src/duckdb/src/execution/join_hashtable.cpp +151 -174
  243. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -0
  244. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +4 -0
  245. package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +2 -1
  246. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +82 -36
  247. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +58 -32
  248. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +35 -19
  249. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer.cpp +90 -0
  250. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.cpp +124 -0
  251. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_file_handle.cpp +97 -0
  252. package/src/duckdb/src/execution/operator/csv_scanner/scanner/base_scanner.cpp +71 -0
  253. package/src/duckdb/src/execution/operator/csv_scanner/scanner/column_count_scanner.cpp +98 -0
  254. package/src/duckdb/src/execution/operator/csv_scanner/scanner/scanner_boundary.cpp +105 -0
  255. package/src/duckdb/src/execution/operator/csv_scanner/scanner/skip_scanner.cpp +63 -0
  256. package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +1091 -0
  257. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/csv_sniffer.cpp +124 -26
  258. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +117 -129
  259. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +46 -22
  260. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +83 -199
  261. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_refinement.cpp +21 -122
  262. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_replacement.cpp +18 -17
  263. package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine.cpp +22 -0
  264. package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine_cache.cpp +201 -0
  265. package/src/duckdb/src/execution/operator/csv_scanner/table_function/csv_file_scanner.cpp +221 -0
  266. package/src/duckdb/src/execution/operator/csv_scanner/table_function/global_csv_state.cpp +204 -0
  267. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +186 -0
  268. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +532 -0
  269. package/src/duckdb/src/execution/operator/helper/physical_buffered_collector.cpp +85 -0
  270. package/src/duckdb/src/execution/operator/helper/physical_create_secret.cpp +21 -0
  271. package/src/duckdb/src/execution/operator/helper/physical_materialized_collector.cpp +1 -1
  272. package/src/duckdb/src/execution/operator/helper/physical_pragma.cpp +2 -2
  273. package/src/duckdb/src/execution/operator/helper/physical_reservoir_sample.cpp +34 -9
  274. package/src/duckdb/src/execution/operator/helper/physical_result_collector.cpp +10 -0
  275. package/src/duckdb/src/execution/operator/helper/physical_transaction.cpp +1 -0
  276. package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +25 -10
  277. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +7 -8
  278. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +1 -1
  279. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +5 -2
  280. package/src/duckdb/src/execution/operator/join/physical_comparison_join.cpp +1 -1
  281. package/src/duckdb/src/execution/operator/join/physical_delim_join.cpp +5 -127
  282. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +221 -61
  283. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +18 -21
  284. package/src/duckdb/src/execution/operator/join/physical_join.cpp +10 -5
  285. package/src/duckdb/src/execution/operator/join/physical_left_delim_join.cpp +137 -0
  286. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +11 -4
  287. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +2 -2
  288. package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +19 -4
  289. package/src/duckdb/src/execution/operator/join/physical_right_delim_join.cpp +121 -0
  290. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +3 -2
  291. package/src/duckdb/src/execution/operator/persistent/physical_copy_database.cpp +59 -0
  292. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +132 -92
  293. package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +54 -54
  294. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  295. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +4 -0
  296. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +21 -3
  297. package/src/duckdb/src/execution/operator/schema/physical_alter.cpp +1 -0
  298. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +61 -43
  299. package/src/duckdb/src/execution/operator/schema/physical_create_art_index.cpp +15 -13
  300. package/src/duckdb/src/execution/operator/schema/physical_create_schema.cpp +1 -0
  301. package/src/duckdb/src/execution/operator/schema/physical_drop.cpp +10 -0
  302. package/src/duckdb/src/execution/operator/set/physical_cte.cpp +44 -90
  303. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +3 -0
  304. package/src/duckdb/src/execution/operator/set/physical_union.cpp +8 -4
  305. package/src/duckdb/src/execution/physical_operator.cpp +3 -1
  306. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +30 -143
  307. package/src/duckdb/src/execution/physical_plan/plan_copy_database.cpp +12 -0
  308. package/src/duckdb/src/execution/physical_plan/plan_copy_to_file.cpp +11 -4
  309. package/src/duckdb/src/execution/physical_plan/plan_create_index.cpp +8 -8
  310. package/src/duckdb/src/execution/physical_plan/plan_create_secret.cpp +11 -0
  311. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +9 -8
  312. package/src/duckdb/src/execution/physical_plan/plan_cte.cpp +5 -3
  313. package/src/duckdb/src/execution/physical_plan/plan_delim_join.cpp +15 -6
  314. package/src/duckdb/src/execution/physical_plan/plan_positional_join.cpp +1 -0
  315. package/src/duckdb/src/execution/physical_plan/plan_pragma.cpp +1 -1
  316. package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +3 -1
  317. package/src/duckdb/src/execution/physical_plan/plan_set_operation.cpp +90 -12
  318. package/src/duckdb/src/execution/physical_plan/plan_window.cpp +67 -22
  319. package/src/duckdb/src/execution/physical_plan_generator.cpp +6 -3
  320. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +163 -32
  321. package/src/duckdb/src/execution/reservoir_sample.cpp +112 -32
  322. package/src/duckdb/src/execution/window_executor.cpp +291 -26
  323. package/src/duckdb/src/execution/window_segment_tree.cpp +958 -114
  324. package/src/duckdb/src/function/aggregate/distributive/count.cpp +18 -16
  325. package/src/duckdb/src/function/aggregate/distributive/first.cpp +11 -4
  326. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +303 -131
  327. package/src/duckdb/src/function/cast/array_casts.cpp +226 -0
  328. package/src/duckdb/src/function/cast/bit_cast.cpp +2 -0
  329. package/src/duckdb/src/function/cast/cast_function_set.cpp +13 -2
  330. package/src/duckdb/src/function/cast/decimal_cast.cpp +2 -0
  331. package/src/duckdb/src/function/cast/default_casts.cpp +4 -1
  332. package/src/duckdb/src/function/cast/list_casts.cpp +151 -6
  333. package/src/duckdb/src/function/cast/numeric_casts.cpp +4 -0
  334. package/src/duckdb/src/function/cast/string_cast.cpp +95 -5
  335. package/src/duckdb/src/function/cast/struct_cast.cpp +53 -19
  336. package/src/duckdb/src/function/cast/time_casts.cpp +23 -1
  337. package/src/duckdb/src/function/cast/union/from_struct.cpp +1 -0
  338. package/src/duckdb/src/function/cast/union_casts.cpp +4 -3
  339. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +8 -4
  340. package/src/duckdb/src/function/cast_rules.cpp +197 -31
  341. package/src/duckdb/src/function/compression_config.cpp +4 -0
  342. package/src/duckdb/src/function/function.cpp +15 -9
  343. package/src/duckdb/src/function/function_binder.cpp +80 -29
  344. package/src/duckdb/src/function/function_set.cpp +6 -6
  345. package/src/duckdb/src/function/pragma/pragma_functions.cpp +10 -8
  346. package/src/duckdb/src/function/pragma/pragma_queries.cpp +34 -38
  347. package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +12 -0
  348. package/src/duckdb/src/function/scalar/list/contains_or_position.cpp +10 -1
  349. package/src/duckdb/src/function/scalar/list/list_concat.cpp +11 -1
  350. package/src/duckdb/src/function/scalar/list/list_extract.cpp +14 -3
  351. package/src/duckdb/src/function/scalar/list/list_resize.cpp +4 -0
  352. package/src/duckdb/src/function/scalar/list/list_select.cpp +176 -0
  353. package/src/duckdb/src/function/scalar/list/list_zip.cpp +165 -0
  354. package/src/duckdb/src/function/scalar/nested_functions.cpp +33 -0
  355. package/src/duckdb/src/function/scalar/operators/add.cpp +53 -6
  356. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +48 -14
  357. package/src/duckdb/src/function/scalar/operators/multiply.cpp +9 -1
  358. package/src/duckdb/src/function/scalar/operators/subtract.cpp +19 -4
  359. package/src/duckdb/src/function/scalar/sequence/nextval.cpp +28 -55
  360. package/src/duckdb/src/function/scalar/strftime_format.cpp +242 -19
  361. package/src/duckdb/src/function/scalar/string/caseconvert.cpp +2 -2
  362. package/src/duckdb/src/function/scalar/string/concat.cpp +16 -6
  363. package/src/duckdb/src/function/scalar/string/length.cpp +124 -24
  364. package/src/duckdb/src/function/scalar/string/regexp.cpp +27 -27
  365. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +64 -15
  366. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +4 -3
  367. package/src/duckdb/src/function/scalar_function.cpp +8 -7
  368. package/src/duckdb/src/function/table/arrow/arrow_duck_schema.cpp +12 -0
  369. package/src/duckdb/src/function/table/arrow.cpp +20 -27
  370. package/src/duckdb/src/function/table/arrow_conversion.cpp +433 -150
  371. package/src/duckdb/src/function/table/copy_csv.cpp +62 -62
  372. package/src/duckdb/src/function/table/range.cpp +6 -3
  373. package/src/duckdb/src/function/table/read_csv.cpp +107 -759
  374. package/src/duckdb/src/function/table/read_file.cpp +242 -0
  375. package/src/duckdb/src/function/table/sniff_csv.cpp +275 -0
  376. package/src/duckdb/src/function/table/system/duckdb_columns.cpp +15 -3
  377. package/src/duckdb/src/function/table/system/duckdb_databases.cpp +5 -0
  378. package/src/duckdb/src/function/table/system/duckdb_dependencies.cpp +9 -13
  379. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +67 -14
  380. package/src/duckdb/src/function/table/system/duckdb_indexes.cpp +12 -15
  381. package/src/duckdb/src/function/table/system/duckdb_memory.cpp +63 -0
  382. package/src/duckdb/src/function/table/system/duckdb_optimizers.cpp +57 -0
  383. package/src/duckdb/src/function/table/system/duckdb_schemas.cpp +5 -0
  384. package/src/duckdb/src/function/table/system/duckdb_secrets.cpp +128 -0
  385. package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +12 -6
  386. package/src/duckdb/src/function/table/system/duckdb_settings.cpp +0 -1
  387. package/src/duckdb/src/function/table/system/duckdb_tables.cpp +5 -0
  388. package/src/duckdb/src/function/table/system/duckdb_types.cpp +6 -0
  389. package/src/duckdb/src/function/table/system/duckdb_views.cpp +5 -0
  390. package/src/duckdb/src/function/table/system/pragma_table_info.cpp +166 -64
  391. package/src/duckdb/src/function/table/system/test_all_types.cpp +2 -1
  392. package/src/duckdb/src/function/table/system_functions.cpp +3 -2
  393. package/src/duckdb/src/function/table/table_scan.cpp +50 -110
  394. package/src/duckdb/src/function/table/version/pragma_version.cpp +4 -44
  395. package/src/duckdb/src/function/table_function.cpp +2 -2
  396. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +4 -3
  397. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/dependency/dependency_dependent_entry.hpp +27 -0
  398. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/dependency/dependency_entry.hpp +66 -0
  399. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/dependency/dependency_subject_entry.hpp +27 -0
  400. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_index_entry.hpp +25 -5
  401. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_schema_entry.hpp +3 -1
  402. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -1
  403. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/index_catalog_entry.hpp +19 -5
  404. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/list.hpp +1 -0
  405. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/scalar_macro_catalog_entry.hpp +2 -0
  406. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +1 -1
  407. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +26 -11
  408. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +1 -0
  409. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_macro_catalog_entry.hpp +2 -0
  410. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +1 -0
  411. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/view_catalog_entry.hpp +2 -0
  412. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +15 -0
  413. package/src/duckdb/src/include/duckdb/catalog/catalog_set.hpp +41 -49
  414. package/src/duckdb/src/include/duckdb/catalog/catalog_transaction.hpp +1 -0
  415. package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +3 -1
  416. package/src/duckdb/src/include/duckdb/catalog/dependency.hpp +120 -8
  417. package/src/duckdb/src/include/duckdb/catalog/dependency_catalog_set.hpp +32 -0
  418. package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +2 -0
  419. package/src/duckdb/src/include/duckdb/catalog/dependency_manager.hpp +92 -12
  420. package/src/duckdb/src/include/duckdb/catalog/standard_entry.hpp +1 -1
  421. package/src/duckdb/src/include/duckdb/common/adbc/adbc-init.hpp +4 -2
  422. package/src/duckdb/src/include/duckdb/common/adbc/adbc.h +1153 -12
  423. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +6 -6
  424. package/src/duckdb/src/include/duckdb/common/adbc/driver_manager.h +0 -2
  425. package/src/duckdb/src/include/duckdb/common/adbc/options.h +64 -0
  426. package/src/duckdb/src/include/duckdb/common/adbc/single_batch_array_stream.hpp +8 -0
  427. package/src/duckdb/src/include/duckdb/common/arrow/arrow.hpp +25 -6
  428. package/src/duckdb/src/include/duckdb/common/arrow/arrow_wrapper.hpp +3 -3
  429. package/src/duckdb/src/include/duckdb/common/arrow/result_arrow_wrapper.hpp +1 -1
  430. package/src/duckdb/src/include/duckdb/common/bit_utils.hpp +30 -0
  431. package/src/duckdb/src/include/duckdb/common/bitpacking.hpp +6 -6
  432. package/src/duckdb/src/include/duckdb/common/case_insensitive_map.hpp +10 -0
  433. package/src/duckdb/src/include/duckdb/common/constants.hpp +1 -0
  434. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +75 -19
  435. package/src/duckdb/src/include/duckdb/common/enums/catalog_type.hpp +11 -1
  436. package/src/duckdb/src/include/duckdb/common/enums/compression_type.hpp +3 -0
  437. package/src/duckdb/src/include/duckdb/common/enums/expression_type.hpp +2 -0
  438. package/src/duckdb/src/include/duckdb/common/enums/index_constraint_type.hpp +35 -0
  439. package/src/duckdb/src/include/duckdb/common/enums/join_type.hpp +16 -3
  440. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +6 -5
  441. package/src/duckdb/src/include/duckdb/common/enums/memory_tag.hpp +32 -0
  442. package/src/duckdb/src/include/duckdb/common/enums/on_create_conflict.hpp +26 -0
  443. package/src/duckdb/src/include/duckdb/common/enums/optimizer_type.hpp +2 -0
  444. package/src/duckdb/src/include/duckdb/common/enums/pending_execution_result.hpp +7 -1
  445. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +9 -3
  446. package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +6 -5
  447. package/src/duckdb/src/include/duckdb/common/enums/tableref_type.hpp +3 -2
  448. package/src/duckdb/src/include/duckdb/common/enums/wal_type.hpp +1 -0
  449. package/src/duckdb/src/include/duckdb/common/error_data.hpp +72 -0
  450. package/src/duckdb/src/include/duckdb/common/exception/binder_exception.hpp +47 -0
  451. package/src/duckdb/src/include/duckdb/common/exception/catalog_exception.hpp +39 -0
  452. package/src/duckdb/src/include/duckdb/common/exception/conversion_exception.hpp +27 -0
  453. package/src/duckdb/src/include/duckdb/common/exception/http_exception.hpp +62 -0
  454. package/src/duckdb/src/include/duckdb/common/exception/list.hpp +6 -0
  455. package/src/duckdb/src/include/duckdb/common/exception/parser_exception.hpp +29 -0
  456. package/src/duckdb/src/include/duckdb/common/exception/transaction_exception.hpp +25 -0
  457. package/src/duckdb/src/include/duckdb/common/exception.hpp +52 -166
  458. package/src/duckdb/src/include/duckdb/common/exception_format_value.hpp +7 -4
  459. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +53 -1
  460. package/src/duckdb/src/include/duckdb/common/helper.hpp +13 -3
  461. package/src/duckdb/src/include/duckdb/common/http_state.hpp +18 -4
  462. package/src/duckdb/src/include/duckdb/common/hugeint.hpp +5 -1
  463. package/src/duckdb/src/include/duckdb/common/limits.hpp +19 -1
  464. package/src/duckdb/src/include/duckdb/common/local_file_system.hpp +1 -0
  465. package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +7 -2
  466. package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +16 -3
  467. package/src/duckdb/src/include/duckdb/common/operator/add.hpp +13 -2
  468. package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +114 -5
  469. package/src/duckdb/src/include/duckdb/common/operator/comparison_operators.hpp +0 -4
  470. package/src/duckdb/src/include/duckdb/common/operator/convert_to_string.hpp +2 -0
  471. package/src/duckdb/src/include/duckdb/common/operator/decimal_cast_operators.hpp +29 -0
  472. package/src/duckdb/src/include/duckdb/common/operator/double_cast_operator.hpp +52 -0
  473. package/src/duckdb/src/include/duckdb/common/operator/integer_cast_operator.hpp +459 -0
  474. package/src/duckdb/src/include/duckdb/common/operator/multiply.hpp +2 -0
  475. package/src/duckdb/src/include/duckdb/common/operator/numeric_cast.hpp +136 -0
  476. package/src/duckdb/src/include/duckdb/common/operator/string_cast.hpp +2 -0
  477. package/src/duckdb/src/include/duckdb/common/operator/subtract.hpp +7 -1
  478. package/src/duckdb/src/include/duckdb/common/optional_idx.hpp +7 -5
  479. package/src/duckdb/src/include/duckdb/common/platform.h +53 -0
  480. package/src/duckdb/src/include/duckdb/common/progress_bar/display/terminal_progress_bar_display.hpp +5 -5
  481. package/src/duckdb/src/include/duckdb/common/progress_bar/progress_bar.hpp +22 -6
  482. package/src/duckdb/src/include/duckdb/common/radix.hpp +6 -0
  483. package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +20 -6
  484. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -0
  485. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +1 -0
  486. package/src/duckdb/src/include/duckdb/common/serializer/deserializer.hpp +43 -4
  487. package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +1 -0
  488. package/src/duckdb/src/include/duckdb/common/serializer/serializer.hpp +15 -0
  489. package/src/duckdb/src/include/duckdb/common/sort/comparators.hpp +2 -0
  490. package/src/duckdb/src/include/duckdb/common/sort/partition_state.hpp +12 -2
  491. package/src/duckdb/src/include/duckdb/common/sort/sort.hpp +81 -0
  492. package/src/duckdb/src/include/duckdb/common/sort/sorted_block.hpp +0 -78
  493. package/src/duckdb/src/include/duckdb/common/string_util.hpp +23 -1
  494. package/src/duckdb/src/include/duckdb/common/type_util.hpp +5 -1
  495. package/src/duckdb/src/include/duckdb/common/types/cast_helpers.hpp +26 -3
  496. package/src/duckdb/src/include/duckdb/common/types/conflict_manager.hpp +8 -0
  497. package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +3 -0
  498. package/src/duckdb/src/include/duckdb/common/types/date.hpp +3 -0
  499. package/src/duckdb/src/include/duckdb/common/types/datetime.hpp +5 -3
  500. package/src/duckdb/src/include/duckdb/common/types/hash.hpp +2 -0
  501. package/src/duckdb/src/include/duckdb/common/types/hugeint.hpp +81 -15
  502. package/src/duckdb/src/include/duckdb/common/types/interval.hpp +57 -29
  503. package/src/duckdb/src/include/duckdb/common/types/list_segment.hpp +1 -1
  504. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +4 -2
  505. package/src/duckdb/src/include/duckdb/common/types/row/row_data_collection.hpp +2 -2
  506. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_collection.hpp +26 -22
  507. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +7 -0
  508. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +7 -5
  509. package/src/duckdb/src/include/duckdb/common/types/time.hpp +6 -2
  510. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +2 -0
  511. package/src/duckdb/src/include/duckdb/common/types/uhugeint.hpp +216 -0
  512. package/src/duckdb/src/include/duckdb/common/types/validity_mask.hpp +18 -10
  513. package/src/duckdb/src/include/duckdb/common/types/value.hpp +31 -0
  514. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +18 -2
  515. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +22 -1
  516. package/src/duckdb/src/include/duckdb/common/types.hpp +151 -49
  517. package/src/duckdb/src/include/duckdb/common/uhugeint.hpp +81 -0
  518. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +70 -6
  519. package/src/duckdb/src/include/duckdb/common/vector_size.hpp +6 -6
  520. package/src/duckdb/src/include/duckdb/core_functions/aggregate/distributive_functions.hpp +29 -2
  521. package/src/duckdb/src/include/duckdb/core_functions/lambda_functions.hpp +131 -0
  522. package/src/duckdb/src/include/duckdb/core_functions/scalar/array_functions.hpp +69 -0
  523. package/src/duckdb/src/include/duckdb/core_functions/scalar/blob_functions.hpp +9 -0
  524. package/src/duckdb/src/include/duckdb/core_functions/scalar/date_functions.hpp +40 -4
  525. package/src/duckdb/src/include/duckdb/core_functions/scalar/list_functions.hpp +42 -0
  526. package/src/duckdb/src/include/duckdb/core_functions/scalar/secret_functions.hpp +27 -0
  527. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +56 -2
  528. package/src/duckdb/src/include/duckdb/core_functions/to_interval.hpp +29 -0
  529. package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +2 -2
  530. package/src/duckdb/src/include/duckdb/execution/executor.hpp +11 -13
  531. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +34 -19
  532. package/src/duckdb/src/include/duckdb/execution/index/fixed_size_allocator.hpp +18 -14
  533. package/src/duckdb/src/include/duckdb/execution/index/fixed_size_buffer.hpp +2 -1
  534. package/src/duckdb/src/include/duckdb/execution/index/index_type.hpp +57 -0
  535. package/src/duckdb/src/include/duckdb/execution/index/index_type_set.hpp +29 -0
  536. package/src/duckdb/src/include/duckdb/execution/index/unknown_index.hpp +65 -0
  537. package/src/duckdb/src/include/duckdb/execution/join_hashtable.hpp +35 -24
  538. package/src/duckdb/src/include/duckdb/execution/merge_sort_tree.hpp +630 -0
  539. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_hash_aggregate.hpp +2 -0
  540. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_window.hpp +3 -2
  541. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/buffer_manager/csv_buffer.hpp +103 -0
  542. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.hpp +74 -0
  543. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/buffer_manager/csv_file_handle.hpp +60 -0
  544. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/options/csv_option.hpp +155 -0
  545. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/options/csv_reader_options.hpp +163 -0
  546. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/options/state_machine_options.hpp +35 -0
  547. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/base_scanner.hpp +228 -0
  548. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/column_count_scanner.hpp +70 -0
  549. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/scanner_boundary.hpp +93 -0
  550. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/skip_scanner.hpp +60 -0
  551. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/string_value_scanner.hpp +197 -0
  552. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/sniffer/csv_sniffer.hpp +189 -0
  553. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/sniffer/quote_rules.hpp +21 -0
  554. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/state_machine/csv_state.hpp +30 -0
  555. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/state_machine/csv_state_machine.hpp +99 -0
  556. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/state_machine/csv_state_machine_cache.hpp +87 -0
  557. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/table_function/csv_file_scanner.hpp +70 -0
  558. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/table_function/global_csv_state.hpp +80 -0
  559. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/util/csv_casting.hpp +137 -0
  560. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/util/csv_error.hpp +104 -0
  561. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_batch_collector.hpp +0 -4
  562. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_buffered_collector.hpp +37 -0
  563. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_create_secret.hpp +38 -0
  564. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_pragma.hpp +4 -7
  565. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_reservoir_sample.hpp +6 -2
  566. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_blockwise_nl_join.hpp +1 -2
  567. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_delim_join.hpp +5 -18
  568. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_hash_join.hpp +14 -5
  569. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_iejoin.hpp +2 -2
  570. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_join.hpp +2 -1
  571. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_left_delim_join.hpp +37 -0
  572. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_nested_loop_join.hpp +1 -2
  573. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp +1 -1
  574. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_range_join.hpp +1 -1
  575. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_right_delim_join.hpp +37 -0
  576. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_order.hpp +0 -1
  577. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_top_n.hpp +0 -1
  578. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_database.hpp +35 -0
  579. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +8 -3
  580. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_export.hpp +14 -0
  581. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +1 -4
  582. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_expression_scan.hpp +0 -1
  583. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +17 -12
  584. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +4 -0
  585. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_union.hpp +3 -1
  586. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +2 -1
  587. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +6 -2
  588. package/src/duckdb/src/include/duckdb/execution/radix_partitioned_hashtable.hpp +3 -1
  589. package/src/duckdb/src/include/duckdb/execution/reservoir_sample.hpp +32 -18
  590. package/src/duckdb/src/include/duckdb/execution/task_error_manager.hpp +57 -0
  591. package/src/duckdb/src/include/duckdb/execution/window_executor.hpp +2 -0
  592. package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +101 -19
  593. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +46 -14
  594. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +6 -2
  595. package/src/duckdb/src/include/duckdb/function/built_in_functions.hpp +1 -0
  596. package/src/duckdb/src/include/duckdb/function/cast/bound_cast_data.hpp +26 -1
  597. package/src/duckdb/src/include/duckdb/function/cast/cast_function_set.hpp +3 -0
  598. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +1 -0
  599. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +7 -1
  600. package/src/duckdb/src/include/duckdb/function/compression/compression.hpp +10 -0
  601. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +16 -4
  602. package/src/duckdb/src/include/duckdb/function/function.hpp +12 -7
  603. package/src/duckdb/src/include/duckdb/function/function_binder.hpp +15 -12
  604. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +4 -3
  605. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +3 -3
  606. package/src/duckdb/src/include/duckdb/function/pragma/pragma_functions.hpp +4 -1
  607. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -0
  608. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +21 -1
  609. package/src/duckdb/src/include/duckdb/function/scalar/sequence_functions.hpp +22 -0
  610. package/src/duckdb/src/include/duckdb/function/scalar/strftime_format.hpp +16 -2
  611. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +22 -8
  612. package/src/duckdb/src/include/duckdb/function/table/arrow/arrow_duck_schema.hpp +6 -0
  613. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +35 -3
  614. package/src/duckdb/src/include/duckdb/function/table/list.hpp +1 -0
  615. package/src/duckdb/src/include/duckdb/function/table/range.hpp +12 -0
  616. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +14 -16
  617. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +12 -8
  618. package/src/duckdb/src/include/duckdb/function/table/table_scan.hpp +0 -2
  619. package/src/duckdb/src/include/duckdb/function/table_function.hpp +8 -3
  620. package/src/duckdb/src/include/duckdb/main/appender.hpp +3 -1
  621. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +3 -2
  622. package/src/duckdb/src/include/duckdb/main/buffered_data/buffered_data.hpp +89 -0
  623. package/src/duckdb/src/include/duckdb/main/buffered_data/simple_buffered_data.hpp +53 -0
  624. package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +2 -1
  625. package/src/duckdb/src/include/duckdb/main/capi/cast/generic.hpp +2 -0
  626. package/src/duckdb/src/include/duckdb/main/chunk_scan_state/query_result.hpp +4 -4
  627. package/src/duckdb/src/include/duckdb/main/chunk_scan_state.hpp +3 -3
  628. package/src/duckdb/src/include/duckdb/main/client_config.hpp +8 -10
  629. package/src/duckdb/src/include/duckdb/main/client_context.hpp +22 -23
  630. package/src/duckdb/src/include/duckdb/main/client_context_state.hpp +37 -0
  631. package/src/duckdb/src/include/duckdb/main/client_data.hpp +1 -7
  632. package/src/duckdb/src/include/duckdb/main/config.hpp +24 -7
  633. package/src/duckdb/src/include/duckdb/main/connection.hpp +8 -1
  634. package/src/duckdb/src/include/duckdb/main/connection_manager.hpp +17 -26
  635. package/src/duckdb/src/include/duckdb/main/database.hpp +4 -2
  636. package/src/duckdb/src/include/duckdb/main/database_manager.hpp +39 -7
  637. package/src/duckdb/src/include/duckdb/main/database_path_and_type.hpp +5 -4
  638. package/src/duckdb/src/include/duckdb/main/error_manager.hpp +4 -1
  639. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +203 -197
  640. package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +42 -16
  641. package/src/duckdb/src/include/duckdb/main/extension_util.hpp +8 -1
  642. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +1 -1
  643. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +5 -2
  644. package/src/duckdb/src/include/duckdb/main/prepared_statement.hpp +4 -4
  645. package/src/duckdb/src/include/duckdb/main/prepared_statement_data.hpp +2 -0
  646. package/src/duckdb/src/include/duckdb/main/query_profiler.hpp +0 -32
  647. package/src/duckdb/src/include/duckdb/main/query_result.hpp +13 -12
  648. package/src/duckdb/src/include/duckdb/main/relation/read_csv_relation.hpp +6 -6
  649. package/src/duckdb/src/include/duckdb/main/relation/setop_relation.hpp +3 -1
  650. package/src/duckdb/src/include/duckdb/main/secret/secret.hpp +206 -0
  651. package/src/duckdb/src/include/duckdb/main/secret/secret_manager.hpp +211 -0
  652. package/src/duckdb/src/include/duckdb/main/secret/secret_storage.hpp +164 -0
  653. package/src/duckdb/src/include/duckdb/main/settings.hpp +52 -13
  654. package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +9 -1
  655. package/src/duckdb/src/include/duckdb/optimizer/deliminator.hpp +4 -1
  656. package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +2 -0
  657. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_node.hpp +1 -1
  658. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_relation.hpp +2 -0
  659. package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph_manager.hpp +3 -0
  660. package/src/duckdb/src/include/duckdb/optimizer/join_order/relation_statistics_helper.hpp +1 -0
  661. package/src/duckdb/src/include/duckdb/parallel/event.hpp +2 -2
  662. package/src/duckdb/src/include/duckdb/parallel/meta_pipeline.hpp +14 -22
  663. package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +20 -0
  664. package/src/duckdb/src/include/duckdb/parallel/pipeline_executor.hpp +3 -5
  665. package/src/duckdb/src/include/duckdb/parallel/task.hpp +7 -0
  666. package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +10 -4
  667. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +3 -0
  668. package/src/duckdb/src/include/duckdb/parser/column_definition.hpp +8 -1
  669. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +11 -4
  670. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +16 -9
  671. package/src/duckdb/src/include/duckdb/parser/expression/lambdaref_expression.hpp +47 -0
  672. package/src/duckdb/src/include/duckdb/parser/expression/list.hpp +1 -0
  673. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +29 -2
  674. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +2 -1
  675. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +47 -2
  676. package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +3 -0
  677. package/src/duckdb/src/include/duckdb/parser/parsed_data/bound_pragma_info.hpp +29 -0
  678. package/src/duckdb/src/include/duckdb/parser/parsed_data/comment_on_info.hpp +45 -0
  679. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_index_info.hpp +21 -22
  680. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +5 -11
  681. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_schema_info.hpp +23 -0
  682. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_secret_info.hpp +47 -0
  683. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_info.hpp +3 -1
  684. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_type_info.hpp +2 -0
  685. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +4 -0
  686. package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +6 -1
  687. package/src/duckdb/src/include/duckdb/parser/parsed_data/extra_drop_info.hpp +66 -0
  688. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +3 -1
  689. package/src/duckdb/src/include/duckdb/parser/parsed_data/pragma_info.hpp +8 -4
  690. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +1 -3
  691. package/src/duckdb/src/include/duckdb/parser/parser_extension.hpp +2 -0
  692. package/src/duckdb/src/include/duckdb/parser/qualified_name.hpp +1 -1
  693. package/src/duckdb/src/include/duckdb/parser/query_error_context.hpp +5 -22
  694. package/src/duckdb/src/include/duckdb/parser/query_node/set_operation_node.hpp +2 -0
  695. package/src/duckdb/src/include/duckdb/parser/statement/copy_database_statement.hpp +40 -0
  696. package/src/duckdb/src/include/duckdb/parser/statement/list.hpp +1 -1
  697. package/src/duckdb/src/include/duckdb/parser/statement/set_statement.hpp +4 -3
  698. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -2
  699. package/src/duckdb/src/include/duckdb/parser/tableref/list.hpp +1 -0
  700. package/src/duckdb/src/include/duckdb/parser/tableref/showref.hpp +47 -0
  701. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +2 -1
  702. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +2 -1
  703. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +20 -3
  704. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +5 -1
  705. package/src/duckdb/src/include/duckdb/planner/binder.hpp +24 -27
  706. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +4 -0
  707. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +4 -0
  708. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +4 -1
  709. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +2 -1
  710. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +4 -2
  711. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +5 -6
  712. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +11 -0
  713. package/src/duckdb/src/include/duckdb/planner/expression.hpp +2 -1
  714. package/src/duckdb/src/include/duckdb/planner/expression_binder/column_alias_binder.hpp +2 -2
  715. package/src/duckdb/src/include/duckdb/planner/expression_binder/index_binder.hpp +3 -2
  716. package/src/duckdb/src/include/duckdb/planner/expression_binder/order_binder.hpp +2 -1
  717. package/src/duckdb/src/include/duckdb/planner/expression_binder/table_function_binder.hpp +2 -1
  718. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +65 -22
  719. package/src/duckdb/src/include/duckdb/planner/filter/struct_filter.hpp +41 -0
  720. package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +2 -1
  721. package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +2 -1
  722. package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +2 -0
  723. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_database.hpp +45 -0
  724. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +3 -0
  725. package/src/duckdb/src/include/duckdb/planner/operator/logical_create_secret.hpp +43 -0
  726. package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +3 -2
  727. package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +5 -10
  728. package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +2 -0
  729. package/src/duckdb/src/include/duckdb/planner/operator/logical_set_operation.hpp +11 -4
  730. package/src/duckdb/src/include/duckdb/planner/parsed_data/bound_create_table_info.hpp +3 -3
  731. package/src/duckdb/src/include/duckdb/planner/pragma_handler.hpp +1 -1
  732. package/src/duckdb/src/include/duckdb/planner/query_node/bound_set_operation_node.hpp +2 -0
  733. package/src/duckdb/src/include/duckdb/planner/subquery/flatten_dependent_join.hpp +3 -0
  734. package/src/duckdb/src/include/duckdb/planner/subquery/rewrite_cte_scan.hpp +29 -0
  735. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +9 -7
  736. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +2 -1
  737. package/src/duckdb/src/include/duckdb/planner/tableref/bound_dummytableref.hpp +3 -2
  738. package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +9 -5
  739. package/src/duckdb/src/include/duckdb/storage/buffer/buffer_pool.hpp +23 -6
  740. package/src/duckdb/src/include/duckdb/storage/buffer/temporary_file_information.hpp +7 -0
  741. package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +11 -4
  742. package/src/duckdb/src/include/duckdb/storage/checkpoint/row_group_writer.hpp +0 -3
  743. package/src/duckdb/src/include/duckdb/storage/checkpoint/string_checkpoint_state.hpp +1 -1
  744. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +7 -7
  745. package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +1 -1
  746. package/src/duckdb/src/include/duckdb/storage/compression/alp/algorithm/alp.hpp +408 -0
  747. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_analyze.hpp +173 -0
  748. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_compress.hpp +283 -0
  749. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_constants.hpp +134 -0
  750. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_fetch.hpp +42 -0
  751. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_scan.hpp +244 -0
  752. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_utils.hpp +103 -0
  753. package/src/duckdb/src/include/duckdb/storage/compression/alprd/algorithm/alprd.hpp +235 -0
  754. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_analyze.hpp +134 -0
  755. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_compress.hpp +301 -0
  756. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_constants.hpp +35 -0
  757. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_fetch.hpp +41 -0
  758. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_scan.hpp +252 -0
  759. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +7 -103
  760. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +5 -234
  761. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_scan.hpp +2 -2
  762. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +7 -107
  763. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +5 -184
  764. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +12 -17
  765. package/src/duckdb/src/include/duckdb/storage/database_size.hpp +1 -0
  766. package/src/duckdb/src/include/duckdb/storage/index.hpp +40 -42
  767. package/src/duckdb/src/include/duckdb/storage/index_storage_info.hpp +77 -0
  768. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_manager.hpp +6 -2
  769. package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +0 -1
  770. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +12 -6
  771. package/src/duckdb/src/include/duckdb/storage/segment/uncompressed.hpp +8 -3
  772. package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +17 -17
  773. package/src/duckdb/src/include/duckdb/storage/statistics/array_stats.hpp +40 -0
  774. package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +12 -3
  775. package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats_union.hpp +3 -0
  776. package/src/duckdb/src/include/duckdb/storage/storage_extension.hpp +3 -2
  777. package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +49 -24
  778. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +8 -4
  779. package/src/duckdb/src/include/duckdb/storage/table/array_column_data.hpp +67 -0
  780. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +3 -3
  781. package/src/duckdb/src/include/duckdb/storage/table/column_data_checkpointer.hpp +1 -0
  782. package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +1 -2
  783. package/src/duckdb/src/include/duckdb/storage/table/data_table_info.hpp +8 -3
  784. package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +1 -1
  785. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +4 -2
  786. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +7 -0
  787. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +12 -1
  788. package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +1 -1
  789. package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +1 -1
  790. package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +16 -12
  791. package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +4 -0
  792. package/src/duckdb/src/include/duckdb/storage/table_storage_info.hpp +6 -9
  793. package/src/duckdb/src/include/duckdb/storage/temporary_memory_manager.hpp +119 -0
  794. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +13 -55
  795. package/src/duckdb/src/include/duckdb/transaction/duck_transaction.hpp +1 -1
  796. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +4 -5
  797. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +2 -2
  798. package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +6 -3
  799. package/src/duckdb/src/include/duckdb/transaction/transaction_context.hpp +4 -4
  800. package/src/duckdb/src/include/duckdb/transaction/transaction_manager.hpp +3 -3
  801. package/src/duckdb/src/include/duckdb/verification/fetch_row_verifier.hpp +25 -0
  802. package/src/duckdb/src/include/duckdb/verification/statement_verifier.hpp +5 -0
  803. package/src/duckdb/src/include/duckdb.h +571 -143
  804. package/src/duckdb/src/main/appender.cpp +17 -2
  805. package/src/duckdb/src/main/attached_database.cpp +24 -12
  806. package/src/duckdb/src/main/buffered_data/simple_buffered_data.cpp +96 -0
  807. package/src/duckdb/src/main/capi/appender-c.cpp +42 -3
  808. package/src/duckdb/src/main/capi/arrow-c.cpp +32 -9
  809. package/src/duckdb/src/main/capi/datetime-c.cpp +22 -0
  810. package/src/duckdb/src/main/capi/duckdb-c.cpp +14 -4
  811. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +66 -2
  812. package/src/duckdb/src/main/capi/helper-c.cpp +76 -2
  813. package/src/duckdb/src/main/capi/hugeint-c.cpp +23 -0
  814. package/src/duckdb/src/main/capi/logical_types-c.cpp +27 -3
  815. package/src/duckdb/src/main/capi/pending-c.cpp +43 -9
  816. package/src/duckdb/src/main/capi/prepared-c.cpp +38 -2
  817. package/src/duckdb/src/main/capi/result-c.cpp +54 -3
  818. package/src/duckdb/src/main/capi/table_function-c.cpp +4 -4
  819. package/src/duckdb/src/main/capi/value-c.cpp +10 -0
  820. package/src/duckdb/src/main/chunk_scan_state/query_result.cpp +3 -3
  821. package/src/duckdb/src/main/client_context.cpp +259 -250
  822. package/src/duckdb/src/main/client_data.cpp +0 -1
  823. package/src/duckdb/src/main/client_verify.cpp +26 -8
  824. package/src/duckdb/src/main/config.cpp +34 -13
  825. package/src/duckdb/src/main/connection.cpp +27 -6
  826. package/src/duckdb/src/main/connection_manager.cpp +54 -0
  827. package/src/duckdb/src/main/database.cpp +44 -39
  828. package/src/duckdb/src/main/database_manager.cpp +106 -8
  829. package/src/duckdb/src/main/database_path_and_type.cpp +27 -8
  830. package/src/duckdb/src/main/db_instance_cache.cpp +4 -4
  831. package/src/duckdb/src/main/error_manager.cpp +12 -3
  832. package/src/duckdb/src/main/extension/extension_alias.cpp +2 -2
  833. package/src/duckdb/src/main/extension/extension_helper.cpp +15 -16
  834. package/src/duckdb/src/main/extension/extension_install.cpp +33 -24
  835. package/src/duckdb/src/main/extension/extension_load.cpp +22 -21
  836. package/src/duckdb/src/main/extension/extension_util.cpp +12 -0
  837. package/src/duckdb/src/main/materialized_query_result.cpp +1 -1
  838. package/src/duckdb/src/main/pending_query_result.cpp +25 -8
  839. package/src/duckdb/src/main/prepared_statement.cpp +5 -5
  840. package/src/duckdb/src/main/prepared_statement_data.cpp +8 -1
  841. package/src/duckdb/src/main/query_profiler.cpp +11 -11
  842. package/src/duckdb/src/main/query_result.cpp +32 -6
  843. package/src/duckdb/src/main/relation/cross_product_relation.cpp +1 -1
  844. package/src/duckdb/src/main/relation/join_relation.cpp +2 -2
  845. package/src/duckdb/src/main/relation/read_csv_relation.cpp +38 -32
  846. package/src/duckdb/src/main/relation/setop_relation.cpp +5 -3
  847. package/src/duckdb/src/main/relation.cpp +5 -5
  848. package/src/duckdb/src/main/secret/secret.cpp +135 -0
  849. package/src/duckdb/src/main/secret/secret_manager.cpp +634 -0
  850. package/src/duckdb/src/main/secret/secret_storage.cpp +233 -0
  851. package/src/duckdb/src/main/settings/settings.cpp +133 -38
  852. package/src/duckdb/src/main/stream_query_result.cpp +53 -14
  853. package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +6 -0
  854. package/src/duckdb/src/optimizer/cse_optimizer.cpp +1 -1
  855. package/src/duckdb/src/optimizer/deliminator.cpp +136 -14
  856. package/src/duckdb/src/optimizer/filter_combiner.cpp +72 -26
  857. package/src/duckdb/src/optimizer/filter_pushdown.cpp +3 -0
  858. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +2 -1
  859. package/src/duckdb/src/optimizer/join_order/cost_model.cpp +0 -1
  860. package/src/duckdb/src/optimizer/join_order/join_node.cpp +4 -0
  861. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +3 -6
  862. package/src/duckdb/src/optimizer/join_order/join_relation_set.cpp +20 -0
  863. package/src/duckdb/src/optimizer/join_order/query_graph_manager.cpp +71 -40
  864. package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +12 -3
  865. package/src/duckdb/src/optimizer/join_order/relation_statistics_helper.cpp +77 -3
  866. package/src/duckdb/src/optimizer/pushdown/pushdown_projection.cpp +7 -7
  867. package/src/duckdb/src/optimizer/pushdown/pushdown_semi_anti_join.cpp +56 -0
  868. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +21 -0
  869. package/src/duckdb/src/optimizer/rule/date_part_simplification.cpp +2 -2
  870. package/src/duckdb/src/optimizer/rule/move_constants.cpp +15 -10
  871. package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +70 -0
  872. package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +17 -5
  873. package/src/duckdb/src/optimizer/statistics/expression/propagate_cast.cpp +1 -0
  874. package/src/duckdb/src/optimizer/statistics/expression/propagate_comparison.cpp +1 -0
  875. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +1 -2
  876. package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +22 -9
  877. package/src/duckdb/src/optimizer/statistics/operator/propagate_window.cpp +28 -4
  878. package/src/duckdb/src/optimizer/unnest_rewriter.cpp +12 -7
  879. package/src/duckdb/src/parallel/event.cpp +2 -2
  880. package/src/duckdb/src/parallel/executor.cpp +114 -81
  881. package/src/duckdb/src/parallel/executor_task.cpp +2 -4
  882. package/src/duckdb/src/parallel/meta_pipeline.cpp +28 -29
  883. package/src/duckdb/src/parallel/pipeline.cpp +41 -41
  884. package/src/duckdb/src/parallel/pipeline_event.cpp +2 -4
  885. package/src/duckdb/src/parallel/pipeline_executor.cpp +13 -75
  886. package/src/duckdb/src/parallel/task_scheduler.cpp +22 -13
  887. package/src/duckdb/src/parser/column_definition.cpp +22 -4
  888. package/src/duckdb/src/parser/column_list.cpp +2 -1
  889. package/src/duckdb/src/parser/expression/function_expression.cpp +1 -1
  890. package/src/duckdb/src/parser/expression/lambda_expression.cpp +51 -0
  891. package/src/duckdb/src/parser/expression/lambdaref_expression.cpp +59 -0
  892. package/src/duckdb/src/parser/expression/window_expression.cpp +9 -1
  893. package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +40 -0
  894. package/src/duckdb/src/parser/parsed_data/attach_info.cpp +1 -0
  895. package/src/duckdb/src/parser/parsed_data/comment_on_info.cpp +19 -0
  896. package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +11 -9
  897. package/src/duckdb/src/parser/parsed_data/create_info.cpp +1 -0
  898. package/src/duckdb/src/parser/parsed_data/create_secret_info.cpp +22 -0
  899. package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +17 -0
  900. package/src/duckdb/src/parser/parsed_data/create_type_info.cpp +19 -0
  901. package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +13 -9
  902. package/src/duckdb/src/parser/parsed_data/drop_info.cpp +8 -9
  903. package/src/duckdb/src/parser/parsed_data/extra_drop_info.cpp +16 -0
  904. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +3 -1
  905. package/src/duckdb/src/parser/parser.cpp +14 -8
  906. package/src/duckdb/src/parser/query_error_context.cpp +12 -13
  907. package/src/duckdb/src/parser/query_node/select_node.cpp +5 -1
  908. package/src/duckdb/src/parser/query_node/set_operation_node.cpp +8 -13
  909. package/src/duckdb/src/parser/statement/copy_database_statement.cpp +41 -0
  910. package/src/duckdb/src/parser/statement/set_statement.cpp +5 -1
  911. package/src/duckdb/src/parser/tableref/basetableref.cpp +1 -0
  912. package/src/duckdb/src/parser/tableref/showref.cpp +47 -0
  913. package/src/duckdb/src/parser/transform/constraint/transform_constraint.cpp +6 -2
  914. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +1 -0
  915. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +30 -15
  916. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +1 -0
  917. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +3 -2
  918. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +34 -4
  919. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +26 -12
  920. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +1 -1
  921. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +34 -5
  922. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +3 -1
  923. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +3 -1
  924. package/src/duckdb/src/parser/transform/expression/transform_multi_assign_reference.cpp +3 -3
  925. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +3 -3
  926. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +1 -1
  927. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +13 -13
  928. package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +2 -0
  929. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +1 -1
  930. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +32 -1
  931. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +1 -1
  932. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +1 -0
  933. package/src/duckdb/src/parser/transform/statement/transform_comment_on.cpp +108 -0
  934. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +45 -37
  935. package/src/duckdb/src/parser/transform/statement/transform_copy_database.cpp +29 -0
  936. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +5 -14
  937. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +0 -1
  938. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +1 -1
  939. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +25 -6
  940. package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -1
  941. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +6 -14
  942. package/src/duckdb/src/parser/transform/statement/transform_secret.cpp +103 -0
  943. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +8 -1
  944. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +4 -8
  945. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -5
  946. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +14 -41
  947. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +13 -6
  948. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +3 -1
  949. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +1 -1
  950. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +1 -2
  951. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +6 -5
  952. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +1 -1
  953. package/src/duckdb/src/parser/transformer.cpp +22 -0
  954. package/src/duckdb/src/planner/bind_context.cpp +23 -14
  955. package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +15 -14
  956. package/src/duckdb/src/planner/binder/expression/bind_between_expression.cpp +20 -9
  957. package/src/duckdb/src/planner/binder/expression/bind_case_expression.cpp +12 -7
  958. package/src/duckdb/src/planner/binder/expression/bind_cast_expression.cpp +4 -4
  959. package/src/duckdb/src/planner/binder/expression/bind_collate_expression.cpp +3 -3
  960. package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +279 -195
  961. package/src/duckdb/src/planner/binder/expression/bind_comparison_expression.cpp +103 -17
  962. package/src/duckdb/src/planner/binder/expression/bind_conjunction_expression.cpp +3 -3
  963. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +91 -68
  964. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +116 -84
  965. package/src/duckdb/src/planner/binder/expression/bind_macro_expression.cpp +85 -15
  966. package/src/duckdb/src/planner/binder/expression/bind_operator_expression.cpp +68 -31
  967. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +7 -7
  968. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +11 -7
  969. package/src/duckdb/src/planner/binder/expression/bind_unnest_expression.cpp +42 -19
  970. package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +38 -16
  971. package/src/duckdb/src/planner/binder/query_node/bind_cte_node.cpp +16 -7
  972. package/src/duckdb/src/planner/binder/query_node/bind_recursive_cte_node.cpp +3 -0
  973. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +83 -12
  974. package/src/duckdb/src/planner/binder/query_node/bind_setop_node.cpp +28 -37
  975. package/src/duckdb/src/planner/binder/query_node/bind_table_macro_node.cpp +3 -4
  976. package/src/duckdb/src/planner/binder/query_node/plan_cte_node.cpp +2 -2
  977. package/src/duckdb/src/planner/binder/query_node/plan_recursive_cte_node.cpp +3 -3
  978. package/src/duckdb/src/planner/binder/query_node/plan_setop.cpp +7 -5
  979. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +10 -0
  980. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +48 -50
  981. package/src/duckdb/src/planner/binder/statement/bind_copy_database.cpp +187 -0
  982. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +38 -22
  983. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +8 -15
  984. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +6 -1
  985. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +2 -2
  986. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +12 -10
  987. package/src/duckdb/src/planner/binder/statement/bind_pragma.cpp +37 -13
  988. package/src/duckdb/src/planner/binder/statement/bind_set.cpp +8 -2
  989. package/src/duckdb/src/planner/binder/statement/bind_simple.cpp +2 -0
  990. package/src/duckdb/src/planner/binder/statement/bind_summarize.cpp +29 -14
  991. package/src/duckdb/src/planner/binder/statement/bind_vacuum.cpp +1 -1
  992. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +16 -6
  993. package/src/duckdb/src/planner/binder/tableref/bind_expressionlistref.cpp +11 -4
  994. package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +1 -1
  995. package/src/duckdb/src/planner/binder/tableref/bind_named_parameters.cpp +2 -2
  996. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +18 -17
  997. package/src/duckdb/src/planner/binder/tableref/bind_showref.cpp +85 -0
  998. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +11 -17
  999. package/src/duckdb/src/planner/binder/tableref/plan_cteref.cpp +1 -9
  1000. package/src/duckdb/src/planner/binder.cpp +31 -26
  1001. package/src/duckdb/src/planner/bound_result_modifier.cpp +24 -0
  1002. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +1 -1
  1003. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +10 -1
  1004. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +20 -4
  1005. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +9 -10
  1006. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +65 -3
  1007. package/src/duckdb/src/planner/expression.cpp +15 -5
  1008. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +5 -6
  1009. package/src/duckdb/src/planner/expression_binder/check_binder.cpp +9 -8
  1010. package/src/duckdb/src/planner/expression_binder/column_alias_binder.cpp +10 -7
  1011. package/src/duckdb/src/planner/expression_binder/having_binder.cpp +9 -4
  1012. package/src/duckdb/src/planner/expression_binder/index_binder.cpp +0 -25
  1013. package/src/duckdb/src/planner/expression_binder/order_binder.cpp +8 -11
  1014. package/src/duckdb/src/planner/expression_binder/qualify_binder.cpp +3 -2
  1015. package/src/duckdb/src/planner/expression_binder/table_function_binder.cpp +15 -8
  1016. package/src/duckdb/src/planner/expression_binder/where_binder.cpp +3 -4
  1017. package/src/duckdb/src/planner/expression_binder.cpp +51 -25
  1018. package/src/duckdb/src/planner/expression_iterator.cpp +2 -1
  1019. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -0
  1020. package/src/duckdb/src/planner/filter/struct_filter.cpp +33 -0
  1021. package/src/duckdb/src/planner/joinside.cpp +1 -1
  1022. package/src/duckdb/src/planner/logical_operator.cpp +2 -1
  1023. package/src/duckdb/src/planner/operator/logical_copy_database.cpp +32 -0
  1024. package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +13 -4
  1025. package/src/duckdb/src/planner/operator/logical_create_table.cpp +2 -0
  1026. package/src/duckdb/src/planner/operator/logical_get.cpp +4 -1
  1027. package/src/duckdb/src/planner/operator/logical_join.cpp +8 -0
  1028. package/src/duckdb/src/planner/planner.cpp +24 -23
  1029. package/src/duckdb/src/planner/pragma_handler.cpp +10 -19
  1030. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +99 -6
  1031. package/src/duckdb/src/planner/subquery/rewrite_cte_scan.cpp +36 -0
  1032. package/src/duckdb/src/planner/table_binding.cpp +14 -12
  1033. package/src/duckdb/src/storage/buffer/block_handle.cpp +12 -10
  1034. package/src/duckdb/src/storage/buffer/block_manager.cpp +1 -1
  1035. package/src/duckdb/src/storage/buffer/buffer_pool.cpp +25 -9
  1036. package/src/duckdb/src/storage/buffer/buffer_pool_reservation.cpp +4 -3
  1037. package/src/duckdb/src/storage/buffer_manager.cpp +14 -3
  1038. package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +0 -8
  1039. package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +15 -7
  1040. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +1 -1
  1041. package/src/duckdb/src/storage/checkpoint_manager.cpp +94 -41
  1042. package/src/duckdb/src/storage/compression/alp/alp.cpp +57 -0
  1043. package/src/duckdb/src/storage/compression/alp/alp_constants.cpp +13 -0
  1044. package/src/duckdb/src/storage/compression/alprd.cpp +57 -0
  1045. package/src/duckdb/src/storage/compression/bitpacking.cpp +86 -55
  1046. package/src/duckdb/src/storage/compression/bitpacking_hugeint.cpp +41 -41
  1047. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +1 -3
  1048. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +2 -0
  1049. package/src/duckdb/src/storage/compression/fsst.cpp +4 -4
  1050. package/src/duckdb/src/storage/compression/numeric_constant.cpp +3 -0
  1051. package/src/duckdb/src/storage/compression/rle.cpp +6 -4
  1052. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +7 -7
  1053. package/src/duckdb/src/storage/compression/uncompressed.cpp +1 -0
  1054. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +6 -6
  1055. package/src/duckdb/src/storage/data_table.cpp +32 -96
  1056. package/src/duckdb/src/storage/index.cpp +23 -11
  1057. package/src/duckdb/src/storage/local_storage.cpp +36 -19
  1058. package/src/duckdb/src/storage/metadata/metadata_manager.cpp +2 -2
  1059. package/src/duckdb/src/storage/partial_block_manager.cpp +1 -1
  1060. package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +9 -4
  1061. package/src/duckdb/src/storage/serialization/serialize_expression.cpp +3 -3
  1062. package/src/duckdb/src/storage/serialization/serialize_extra_drop_info.cpp +42 -0
  1063. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +7 -17
  1064. package/src/duckdb/src/storage/serialization/serialize_macro_function.cpp +2 -2
  1065. package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +84 -77
  1066. package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +63 -4
  1067. package/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp +23 -0
  1068. package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +2 -0
  1069. package/src/duckdb/src/storage/serialization/serialize_storage.cpp +35 -0
  1070. package/src/duckdb/src/storage/serialization/serialize_table_filter.cpp +19 -0
  1071. package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +22 -1
  1072. package/src/duckdb/src/storage/serialization/serialize_types.cpp +50 -0
  1073. package/src/duckdb/src/storage/single_file_block_manager.cpp +46 -7
  1074. package/src/duckdb/src/storage/standard_buffer_manager.cpp +57 -28
  1075. package/src/duckdb/src/storage/statistics/array_stats.cpp +131 -0
  1076. package/src/duckdb/src/storage/statistics/base_statistics.cpp +62 -4
  1077. package/src/duckdb/src/storage/statistics/column_statistics.cpp +1 -0
  1078. package/src/duckdb/src/storage/statistics/distinct_statistics.cpp +3 -1
  1079. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +21 -0
  1080. package/src/duckdb/src/storage/statistics/numeric_stats_union.cpp +5 -0
  1081. package/src/duckdb/src/storage/statistics/string_stats.cpp +2 -2
  1082. package/src/duckdb/src/storage/storage_info.cpp +1 -1
  1083. package/src/duckdb/src/storage/storage_manager.cpp +47 -22
  1084. package/src/duckdb/src/storage/table/array_column_data.cpp +241 -0
  1085. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -1
  1086. package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +3 -1
  1087. package/src/duckdb/src/storage/table/column_data.cpp +41 -18
  1088. package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +12 -3
  1089. package/src/duckdb/src/storage/table/column_segment.cpp +40 -6
  1090. package/src/duckdb/src/storage/table/list_column_data.cpp +18 -15
  1091. package/src/duckdb/src/storage/table/row_group.cpp +73 -21
  1092. package/src/duckdb/src/storage/table/row_group_collection.cpp +395 -20
  1093. package/src/duckdb/src/storage/table/row_version_manager.cpp +2 -1
  1094. package/src/duckdb/src/storage/table/scan_state.cpp +4 -0
  1095. package/src/duckdb/src/storage/table/standard_column_data.cpp +11 -5
  1096. package/src/duckdb/src/storage/table/struct_column_data.cpp +30 -10
  1097. package/src/duckdb/src/storage/table/table_statistics.cpp +7 -1
  1098. package/src/duckdb/src/storage/table/update_segment.cpp +18 -2
  1099. package/src/duckdb/src/storage/table_index_list.cpp +73 -7
  1100. package/src/duckdb/src/storage/temporary_memory_manager.cpp +148 -0
  1101. package/src/duckdb/src/storage/wal_replay.cpp +329 -152
  1102. package/src/duckdb/src/storage/write_ahead_log.cpp +157 -137
  1103. package/src/duckdb/src/transaction/cleanup_state.cpp +3 -2
  1104. package/src/duckdb/src/transaction/commit_state.cpp +89 -63
  1105. package/src/duckdb/src/transaction/duck_transaction.cpp +5 -3
  1106. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +26 -54
  1107. package/src/duckdb/src/transaction/meta_transaction.cpp +37 -23
  1108. package/src/duckdb/src/transaction/transaction_context.cpp +23 -4
  1109. package/src/duckdb/src/transaction/undo_buffer.cpp +16 -2
  1110. package/src/duckdb/src/verification/fetch_row_verifier.cpp +13 -0
  1111. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +5 -7
  1112. package/src/duckdb/src/verification/statement_verifier.cpp +6 -5
  1113. package/src/duckdb/third_party/fast_float/fast_float/fast_float.h +100 -29
  1114. package/src/duckdb/third_party/fmt/include/fmt/format-inl.h +1 -1
  1115. package/src/duckdb/third_party/fmt/include/fmt/format.h +4 -2
  1116. package/src/duckdb/third_party/fmt/include/fmt/printf.h +5 -5
  1117. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +4 -0
  1118. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +82 -21
  1119. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +551 -1004
  1120. package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +17 -3
  1121. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +24861 -23465
  1122. package/src/duckdb/third_party/libpg_query/src_backend_parser_scan.cpp +420 -389
  1123. package/src/duckdb/third_party/mbedtls/include/mbedtls/aes.h +640 -1
  1124. package/src/duckdb/third_party/mbedtls/include/mbedtls/aes_alt.h +1 -0
  1125. package/src/duckdb/third_party/mbedtls/include/mbedtls/aria.h +358 -0
  1126. package/src/duckdb/third_party/mbedtls/include/mbedtls/aria_alt.h +1 -0
  1127. package/src/duckdb/third_party/mbedtls/include/mbedtls/camellia.h +316 -0
  1128. package/src/duckdb/third_party/mbedtls/include/mbedtls/camellia_alt.h +1 -0
  1129. package/src/duckdb/third_party/mbedtls/include/mbedtls/ccm.h +1 -1
  1130. package/src/duckdb/third_party/mbedtls/include/mbedtls/ccm_alt.h +1 -0
  1131. package/src/duckdb/third_party/mbedtls/include/mbedtls/chacha20.h +1 -0
  1132. package/src/duckdb/third_party/mbedtls/include/mbedtls/chachapoly.h +1 -0
  1133. package/src/duckdb/third_party/mbedtls/include/mbedtls/cipher.h +124 -124
  1134. package/src/duckdb/third_party/mbedtls/include/mbedtls/cmac.h +1 -0
  1135. package/src/duckdb/third_party/mbedtls/include/mbedtls/entropy.h +293 -0
  1136. package/src/duckdb/third_party/mbedtls/include/mbedtls/gcm.h +383 -0
  1137. package/src/duckdb/third_party/mbedtls/include/mbedtls/gcm_alt.h +1 -0
  1138. package/src/duckdb/third_party/mbedtls/include/mbedtls/mbedtls_config.h +9 -0
  1139. package/src/duckdb/third_party/mbedtls/include/mbedtls/nist_kw.h +1 -0
  1140. package/src/duckdb/third_party/mbedtls/include/mbedtls/timing.h +1 -0
  1141. package/src/duckdb/third_party/mbedtls/include/mbedtls_wrapper.hpp +35 -6
  1142. package/src/duckdb/third_party/mbedtls/library/aes.cpp +2171 -0
  1143. package/src/duckdb/third_party/mbedtls/library/aesni.h +1 -0
  1144. package/src/duckdb/third_party/mbedtls/library/aria.cpp +1058 -0
  1145. package/src/duckdb/third_party/mbedtls/library/camellia.cpp +1087 -0
  1146. package/src/duckdb/third_party/mbedtls/library/cipher.cpp +1633 -0
  1147. package/src/duckdb/third_party/mbedtls/library/cipher_wrap.cpp +2270 -0
  1148. package/src/duckdb/third_party/mbedtls/library/cipher_wrap.h +146 -0
  1149. package/src/duckdb/third_party/mbedtls/library/entropy.cpp +701 -0
  1150. package/src/duckdb/third_party/mbedtls/library/entropy_poll.cpp +237 -0
  1151. package/src/duckdb/third_party/mbedtls/library/entropy_poll.h +76 -0
  1152. package/src/duckdb/third_party/mbedtls/library/gcm.cpp +1161 -0
  1153. package/src/duckdb/third_party/mbedtls/library/padlock.h +1 -0
  1154. package/src/duckdb/third_party/mbedtls/mbedtls_wrapper.cpp +132 -24
  1155. package/src/duckdb/third_party/pcg/pcg_uint128.hpp +1 -1
  1156. package/src/duckdb/third_party/skiplist/HeadNode.h +934 -0
  1157. package/src/duckdb/third_party/skiplist/IntegrityEnums.h +62 -0
  1158. package/src/duckdb/third_party/skiplist/Node.h +641 -0
  1159. package/src/duckdb/third_party/skiplist/NodeRefs.h +251 -0
  1160. package/src/duckdb/third_party/skiplist/RollingMedian.h +202 -0
  1161. package/src/duckdb/third_party/skiplist/SkipList.cpp +40 -0
  1162. package/src/duckdb/third_party/skiplist/SkipList.h +549 -0
  1163. package/src/duckdb/third_party/thrift/thrift/thrift-config.h +1 -1
  1164. package/src/duckdb/ub_extension_json_json_functions.cpp +2 -0
  1165. package/src/duckdb/ub_src_catalog.cpp +3 -1
  1166. package/src/duckdb/ub_src_catalog_catalog_entry_dependency.cpp +6 -0
  1167. package/src/duckdb/ub_src_common.cpp +1 -1
  1168. package/src/duckdb/ub_src_common_exception.cpp +6 -0
  1169. package/src/duckdb/ub_src_common_types.cpp +2 -2
  1170. package/src/duckdb/ub_src_core_functions.cpp +2 -0
  1171. package/src/duckdb/ub_src_core_functions_scalar_array.cpp +4 -0
  1172. package/src/duckdb/ub_src_core_functions_scalar_blob.cpp +2 -0
  1173. package/src/duckdb/ub_src_core_functions_scalar_list.cpp +7 -3
  1174. package/src/duckdb/ub_src_core_functions_scalar_secret.cpp +2 -0
  1175. package/src/duckdb/ub_src_core_functions_scalar_string.cpp +4 -0
  1176. package/src/duckdb/ub_src_execution_index.cpp +4 -0
  1177. package/src/duckdb/ub_src_execution_operator_csv_scanner_buffer_manager.cpp +6 -0
  1178. package/src/duckdb/ub_src_execution_operator_csv_scanner_scanner.cpp +10 -0
  1179. package/src/duckdb/ub_src_execution_operator_csv_scanner_state_machine.cpp +4 -0
  1180. package/src/duckdb/ub_src_execution_operator_csv_scanner_table_function.cpp +4 -0
  1181. package/src/duckdb/ub_src_execution_operator_csv_scanner_util.cpp +4 -0
  1182. package/src/duckdb/ub_src_execution_operator_helper.cpp +4 -0
  1183. package/src/duckdb/ub_src_execution_operator_join.cpp +4 -2
  1184. package/src/duckdb/ub_src_execution_operator_persistent.cpp +2 -0
  1185. package/src/duckdb/ub_src_execution_physical_plan.cpp +4 -2
  1186. package/src/duckdb/ub_src_function_cast.cpp +2 -0
  1187. package/src/duckdb/ub_src_function_scalar_list.cpp +4 -0
  1188. package/src/duckdb/ub_src_function_table.cpp +4 -4
  1189. package/src/duckdb/ub_src_function_table_system.cpp +6 -0
  1190. package/src/duckdb/ub_src_main.cpp +2 -0
  1191. package/src/duckdb/ub_src_main_buffered_data.cpp +2 -0
  1192. package/src/duckdb/ub_src_main_secret.cpp +6 -0
  1193. package/src/duckdb/ub_src_optimizer_pushdown.cpp +2 -0
  1194. package/src/duckdb/ub_src_parser_expression.cpp +2 -0
  1195. package/src/duckdb/ub_src_parser_parsed_data.cpp +6 -0
  1196. package/src/duckdb/ub_src_parser_statement.cpp +2 -2
  1197. package/src/duckdb/ub_src_parser_tableref.cpp +2 -0
  1198. package/src/duckdb/ub_src_parser_transform_statement.cpp +6 -0
  1199. package/src/duckdb/ub_src_planner_binder_statement.cpp +2 -2
  1200. package/src/duckdb/ub_src_planner_binder_tableref.cpp +2 -0
  1201. package/src/duckdb/ub_src_planner_filter.cpp +2 -0
  1202. package/src/duckdb/ub_src_planner_operator.cpp +2 -0
  1203. package/src/duckdb/ub_src_planner_subquery.cpp +2 -0
  1204. package/src/duckdb/ub_src_storage.cpp +2 -0
  1205. package/src/duckdb/ub_src_storage_compression.cpp +2 -0
  1206. package/src/duckdb/ub_src_storage_compression_alp.cpp +4 -0
  1207. package/src/duckdb/ub_src_storage_serialization.cpp +2 -0
  1208. package/src/duckdb/ub_src_storage_statistics.cpp +2 -0
  1209. package/src/duckdb/ub_src_storage_table.cpp +2 -0
  1210. package/src/duckdb_node.hpp +1 -1
  1211. package/src/statement.cpp +18 -8
  1212. package/src/utils.cpp +1 -15
  1213. package/test/columns.test.ts +2 -1
  1214. package/test/config.test.ts +30 -0
  1215. package/test/test_all_types.test.ts +9 -4
@@ -1,3 +1,9 @@
1
+ ////////////////////////////////////////////////////////////////////
2
+ ////////////////////////////////////////////////////////////////////
3
+ // THIS FILE IS GENERATED BY apache/arrow, DO NOT EDIT MANUALLY //
4
+ ////////////////////////////////////////////////////////////////////
5
+ ////////////////////////////////////////////////////////////////////
6
+
1
7
  // Licensed to the Apache Software Foundation (ASF) under one
2
8
  // or more contributor license agreements. See the NOTICE file
3
9
  // distributed with this work for additional information
@@ -35,7 +41,7 @@
35
41
  /// but not concurrent access. Specific implementations may permit
36
42
  /// multiple threads.
37
43
  ///
38
- /// \version 1.0.0
44
+ /// \version 1.1.0
39
45
 
40
46
  #pragma once
41
47
 
@@ -51,18 +57,103 @@
51
57
  /// @{
52
58
 
53
59
  //! @cond Doxygen_Suppress
54
- namespace duckdb_adbc {
55
-
56
60
  #ifdef __cplusplus
57
61
  extern "C" {
58
62
  #endif
59
63
 
60
- #ifndef ARROW_ADBC
61
- #define ARROW_ADBC
64
+ // Extra guard for versions of Arrow without the canonical guard
65
+ #ifndef ARROW_FLAG_DICTIONARY_ORDERED
66
+
67
+ #ifndef ARROW_C_DATA_INTERFACE
68
+ #define ARROW_C_DATA_INTERFACE
69
+
70
+ #define ARROW_FLAG_DICTIONARY_ORDERED 1
71
+ #define ARROW_FLAG_NULLABLE 2
72
+ #define ARROW_FLAG_MAP_KEYS_SORTED 4
73
+
74
+ struct ArrowSchema {
75
+ // Array type description
76
+ const char *format;
77
+ const char *name;
78
+ const char *metadata;
79
+ int64_t flags;
80
+ int64_t n_children;
81
+ struct ArrowSchema **children;
82
+ struct ArrowSchema *dictionary;
83
+
84
+ // Release callback
85
+ void (*release)(struct ArrowSchema *);
86
+ // Opaque producer-specific data
87
+ void *private_data;
88
+ };
89
+
90
+ struct ArrowArray {
91
+ // Array data description
92
+ int64_t length;
93
+ int64_t null_count;
94
+ int64_t offset;
95
+ int64_t n_buffers;
96
+ int64_t n_children;
97
+ const void **buffers;
98
+ struct ArrowArray **children;
99
+ struct ArrowArray *dictionary;
100
+
101
+ // Release callback
102
+ void (*release)(struct ArrowArray *);
103
+ // Opaque producer-specific data
104
+ void *private_data;
105
+ };
106
+
107
+ #endif // ARROW_C_DATA_INTERFACE
108
+
109
+ #ifndef ARROW_C_STREAM_INTERFACE
110
+ #define ARROW_C_STREAM_INTERFACE
111
+
112
+ struct ArrowArrayStream {
113
+ // Callback to get the stream type
114
+ // (will be the same for all arrays in the stream).
115
+ //
116
+ // Return value: 0 if successful, an `errno`-compatible error code otherwise.
117
+ //
118
+ // If successful, the ArrowSchema must be released independently from the stream.
119
+ int (*get_schema)(struct ArrowArrayStream *, struct ArrowSchema *out);
120
+
121
+ // Callback to get the next array
122
+ // (if no error and the array is released, the stream has ended)
123
+ //
124
+ // Return value: 0 if successful, an `errno`-compatible error code otherwise.
125
+ //
126
+ // If successful, the ArrowArray must be released independently from the stream.
127
+ int (*get_next)(struct ArrowArrayStream *, struct ArrowArray *out);
128
+
129
+ // Callback to get optional detailed error information.
130
+ // This must only be called if the last stream operation failed
131
+ // with a non-0 return code.
132
+ //
133
+ // Return value: pointer to a null-terminated character array describing
134
+ // the last error, or NULL if no description is available.
135
+ //
136
+ // The returned pointer is only valid until the next operation on this stream
137
+ // (including release).
138
+ const char *(*get_last_error)(struct ArrowArrayStream *);
139
+
140
+ // Release callback: release the stream's own resources.
141
+ // Note that arrays returned by `get_next` must be individually released.
142
+ void (*release)(struct ArrowArrayStream *);
143
+
144
+ // Opaque producer-specific data
145
+ void *private_data;
146
+ };
147
+
148
+ #endif // ARROW_C_STREAM_INTERFACE
149
+ #endif // ARROW_FLAG_DICTIONARY_ORDERED
150
+
151
+ //! @endcond
152
+
153
+ /// @}
62
154
 
63
155
  #ifndef ADBC_EXPORTING
64
156
  #define ADBC_EXPORTING
65
- #endif
66
157
 
67
158
  // Storage class macros for Windows
68
159
  // Allow overriding/aliasing with application-defined macros
@@ -163,7 +254,24 @@ typedef uint8_t AdbcStatusCode;
163
254
  /// May indicate a database-side error only.
164
255
  #define ADBC_STATUS_UNAUTHORIZED 14
165
256
 
257
+ /// \brief Inform the driver/driver manager that we are using the extended
258
+ /// AdbcError struct from ADBC 1.1.0.
259
+ ///
260
+ /// See the AdbcError documentation for usage.
261
+ ///
262
+ /// \since ADBC API revision 1.1.0
263
+ #define ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA INT32_MIN
264
+
166
265
  /// \brief A detailed error message for an operation.
266
+ ///
267
+ /// The caller must zero-initialize this struct (clarified in ADBC 1.1.0).
268
+ ///
269
+ /// The structure was extended in ADBC 1.1.0. Drivers and clients using ADBC
270
+ /// 1.0.0 will not have the private_data or private_driver fields. Drivers
271
+ /// should read/write these fields if and only if vendor_code is equal to
272
+ /// ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA. Clients are required to initialize
273
+ /// this struct to avoid the possibility of uninitialized values confusing the
274
+ /// driver.
167
275
  struct ADBC_EXPORT AdbcError {
168
276
  /// \brief The error message.
169
277
  char *message;
@@ -181,8 +289,105 @@ struct ADBC_EXPORT AdbcError {
181
289
  /// Unlike other structures, this is an embedded callback to make it
182
290
  /// easier for the driver manager and driver to cooperate.
183
291
  void (*release)(struct AdbcError *error);
292
+
293
+ /// \brief Opaque implementation-defined state.
294
+ ///
295
+ /// This field may not be used unless vendor_code is
296
+ /// ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA. If present, this field is NULLPTR
297
+ /// iff the error is unintialized/freed.
298
+ ///
299
+ /// \since ADBC API revision 1.1.0
300
+ void *private_data;
301
+
302
+ /// \brief The associated driver (used by the driver manager to help
303
+ /// track state).
304
+ ///
305
+ /// This field may not be used unless vendor_code is
306
+ /// ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA.
307
+ ///
308
+ /// \since ADBC API revision 1.1.0
309
+ struct AdbcDriver *private_driver;
184
310
  };
185
311
 
312
+ #ifdef __cplusplus
313
+ /// \brief A helper to initialize the full AdbcError structure.
314
+ ///
315
+ /// \since ADBC API revision 1.1.0
316
+ #define ADBC_ERROR_INIT \
317
+ (AdbcError {nullptr, ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA, {0, 0, 0, 0, 0}, nullptr, nullptr, nullptr})
318
+ #else
319
+ /// \brief A helper to initialize the full AdbcError structure.
320
+ ///
321
+ /// \since ADBC API revision 1.1.0
322
+ #define ADBC_ERROR_INIT \
323
+ ((struct AdbcError) {NULL, ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA, {0, 0, 0, 0, 0}, NULL, NULL, NULL})
324
+ #endif
325
+
326
+ /// \brief The size of the AdbcError structure in ADBC 1.0.0.
327
+ ///
328
+ /// Drivers written for ADBC 1.1.0 and later should never touch more than this
329
+ /// portion of an AdbcDriver struct when vendor_code is not
330
+ /// ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA.
331
+ ///
332
+ /// \since ADBC API revision 1.1.0
333
+ #define ADBC_ERROR_1_0_0_SIZE (offsetof(struct AdbcError, private_data))
334
+ /// \brief The size of the AdbcError structure in ADBC 1.1.0.
335
+ ///
336
+ /// Drivers written for ADBC 1.1.0 and later should never touch more than this
337
+ /// portion of an AdbcDriver struct when vendor_code is
338
+ /// ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA.
339
+ ///
340
+ /// \since ADBC API revision 1.1.0
341
+ #define ADBC_ERROR_1_1_0_SIZE (sizeof(struct AdbcError))
342
+
343
+ /// \brief Extra key-value metadata for an error.
344
+ ///
345
+ /// The fields here are owned by the driver and should not be freed. The
346
+ /// fields here are invalidated when the release callback in AdbcError is
347
+ /// called.
348
+ ///
349
+ /// \since ADBC API revision 1.1.0
350
+ struct ADBC_EXPORT AdbcErrorDetail {
351
+ /// \brief The metadata key.
352
+ const char *key;
353
+ /// \brief The binary metadata value.
354
+ const uint8_t *value;
355
+ /// \brief The length of the metadata value.
356
+ size_t value_length;
357
+ };
358
+
359
+ /// \brief Get the number of metadata values available in an error.
360
+ ///
361
+ /// \since ADBC API revision 1.1.0
362
+ ADBC_EXPORT
363
+ int AdbcErrorGetDetailCount(const struct AdbcError *error);
364
+
365
+ /// \brief Get a metadata value in an error by index.
366
+ ///
367
+ /// If index is invalid, returns an AdbcErrorDetail initialized with NULL/0
368
+ /// fields.
369
+ ///
370
+ /// \since ADBC API revision 1.1.0
371
+ ADBC_EXPORT
372
+ struct AdbcErrorDetail AdbcErrorGetDetail(const struct AdbcError *error, int index);
373
+
374
+ /// \brief Get an ADBC error from an ArrowArrayStream created by a driver.
375
+ ///
376
+ /// This allows retrieving error details and other metadata that would
377
+ /// normally be suppressed by the Arrow C Stream Interface.
378
+ ///
379
+ /// The caller MUST NOT release the error; it is managed by the release
380
+ /// callback in the stream itself.
381
+ ///
382
+ /// \param[in] stream The stream to query.
383
+ /// \param[out] status The ADBC status code, or ADBC_STATUS_OK if there is no
384
+ /// error. Not written to if the stream does not contain an ADBC error or
385
+ /// if the pointer is NULL.
386
+ /// \return NULL if not supported.
387
+ /// \since ADBC API revision 1.1.0
388
+ ADBC_EXPORT
389
+ const struct AdbcError *AdbcErrorFromArrayStream(struct ArrowArrayStream *stream, AdbcStatusCode *status);
390
+
186
391
  /// @}
187
392
 
188
393
  /// \defgroup adbc-constants Constants
@@ -194,6 +399,14 @@ struct ADBC_EXPORT AdbcError {
194
399
  /// point to an AdbcDriver.
195
400
  #define ADBC_VERSION_1_0_0 1000000
196
401
 
402
+ /// \brief ADBC revision 1.1.0.
403
+ ///
404
+ /// When passed to an AdbcDriverInitFunc(), the driver parameter must
405
+ /// point to an AdbcDriver.
406
+ ///
407
+ /// \since ADBC API revision 1.1.0
408
+ #define ADBC_VERSION_1_1_0 1001000
409
+
197
410
  /// \brief Canonical option value for enabling an option.
198
411
  ///
199
412
  /// For use as the value in SetOption calls.
@@ -203,6 +416,34 @@ struct ADBC_EXPORT AdbcError {
203
416
  /// For use as the value in SetOption calls.
204
417
  #define ADBC_OPTION_VALUE_DISABLED "false"
205
418
 
419
+ /// \brief Canonical option name for URIs.
420
+ ///
421
+ /// Should be used as the expected option name to specify a URI for
422
+ /// any ADBC driver.
423
+ ///
424
+ /// The type is char*.
425
+ ///
426
+ /// \since ADBC API revision 1.1.0
427
+ #define ADBC_OPTION_URI "uri"
428
+ /// \brief Canonical option name for usernames.
429
+ ///
430
+ /// Should be used as the expected option name to specify a username
431
+ /// to a driver for authentication.
432
+ ///
433
+ /// The type is char*.
434
+ ///
435
+ /// \since ADBC API revision 1.1.0
436
+ #define ADBC_OPTION_USERNAME "username"
437
+ /// \brief Canonical option name for passwords.
438
+ ///
439
+ /// Should be used as the expected option name to specify a password
440
+ /// for authentication to a driver.
441
+ ///
442
+ /// The type is char*.
443
+ ///
444
+ /// \since ADBC API revision 1.1.0
445
+ #define ADBC_OPTION_PASSWORD "password"
446
+
206
447
  /// \brief The database vendor/product name (e.g. the server name).
207
448
  /// (type: utf8).
208
449
  ///
@@ -230,6 +471,15 @@ struct ADBC_EXPORT AdbcError {
230
471
  ///
231
472
  /// \see AdbcConnectionGetInfo
232
473
  #define ADBC_INFO_DRIVER_ARROW_VERSION 102
474
+ /// \brief The driver ADBC API version (type: int64).
475
+ ///
476
+ /// The value should be one of the ADBC_VERSION constants.
477
+ ///
478
+ /// \since ADBC API revision 1.1.0
479
+ /// \see AdbcConnectionGetInfo
480
+ /// \see ADBC_VERSION_1_0_0
481
+ /// \see ADBC_VERSION_1_1_0
482
+ #define ADBC_INFO_DRIVER_ADBC_VERSION 103
233
483
 
234
484
  /// \brief Return metadata on catalogs, schemas, tables, and columns.
235
485
  ///
@@ -252,18 +502,133 @@ struct ADBC_EXPORT AdbcError {
252
502
  /// \see AdbcConnectionGetObjects
253
503
  #define ADBC_OBJECT_DEPTH_COLUMNS ADBC_OBJECT_DEPTH_ALL
254
504
 
505
+ /// \defgroup adbc-table-statistics ADBC Statistic Types
506
+ /// Standard statistic names for AdbcConnectionGetStatistics.
507
+ /// @{
508
+
509
+ /// \brief The dictionary-encoded name of the average byte width statistic.
510
+ #define ADBC_STATISTIC_AVERAGE_BYTE_WIDTH_KEY 0
511
+ /// \brief The average byte width statistic. The average size in bytes of a
512
+ /// row in the column. Value type is float64.
513
+ ///
514
+ /// For example, this is roughly the average length of a string for a string
515
+ /// column.
516
+ #define ADBC_STATISTIC_AVERAGE_BYTE_WIDTH_NAME "adbc.statistic.byte_width"
517
+ /// \brief The dictionary-encoded name of the distinct value count statistic.
518
+ #define ADBC_STATISTIC_DISTINCT_COUNT_KEY 1
519
+ /// \brief The distinct value count (NDV) statistic. The number of distinct
520
+ /// values in the column. Value type is int64 (when not approximate) or
521
+ /// float64 (when approximate).
522
+ #define ADBC_STATISTIC_DISTINCT_COUNT_NAME "adbc.statistic.distinct_count"
523
+ /// \brief The dictionary-encoded name of the max byte width statistic.
524
+ #define ADBC_STATISTIC_MAX_BYTE_WIDTH_KEY 2
525
+ /// \brief The max byte width statistic. The maximum size in bytes of a row
526
+ /// in the column. Value type is int64 (when not approximate) or float64
527
+ /// (when approximate).
528
+ ///
529
+ /// For example, this is the maximum length of a string for a string column.
530
+ #define ADBC_STATISTIC_MAX_BYTE_WIDTH_NAME "adbc.statistic.byte_width"
531
+ /// \brief The dictionary-encoded name of the max value statistic.
532
+ #define ADBC_STATISTIC_MAX_VALUE_KEY 3
533
+ /// \brief The max value statistic. Value type is column-dependent.
534
+ #define ADBC_STATISTIC_MAX_VALUE_NAME "adbc.statistic.byte_width"
535
+ /// \brief The dictionary-encoded name of the min value statistic.
536
+ #define ADBC_STATISTIC_MIN_VALUE_KEY 4
537
+ /// \brief The min value statistic. Value type is column-dependent.
538
+ #define ADBC_STATISTIC_MIN_VALUE_NAME "adbc.statistic.byte_width"
539
+ /// \brief The dictionary-encoded name of the null count statistic.
540
+ #define ADBC_STATISTIC_NULL_COUNT_KEY 5
541
+ /// \brief The null count statistic. The number of values that are null in
542
+ /// the column. Value type is int64 (when not approximate) or float64
543
+ /// (when approximate).
544
+ #define ADBC_STATISTIC_NULL_COUNT_NAME "adbc.statistic.null_count"
545
+ /// \brief The dictionary-encoded name of the row count statistic.
546
+ #define ADBC_STATISTIC_ROW_COUNT_KEY 6
547
+ /// \brief The row count statistic. The number of rows in the column or
548
+ /// table. Value type is int64 (when not approximate) or float64 (when
549
+ /// approximate).
550
+ #define ADBC_STATISTIC_ROW_COUNT_NAME "adbc.statistic.row_count"
551
+ /// @}
552
+
255
553
  /// \brief The name of the canonical option for whether autocommit is
256
554
  /// enabled.
257
555
  ///
556
+ /// The type is char*.
557
+ ///
258
558
  /// \see AdbcConnectionSetOption
259
559
  #define ADBC_CONNECTION_OPTION_AUTOCOMMIT "adbc.connection.autocommit"
260
560
 
261
561
  /// \brief The name of the canonical option for whether the current
262
562
  /// connection should be restricted to being read-only.
263
563
  ///
564
+ /// The type is char*.
565
+ ///
264
566
  /// \see AdbcConnectionSetOption
265
567
  #define ADBC_CONNECTION_OPTION_READ_ONLY "adbc.connection.readonly"
266
568
 
569
+ /// \brief The name of the canonical option for the current catalog.
570
+ ///
571
+ /// The type is char*.
572
+ ///
573
+ /// \see AdbcConnectionGetOption
574
+ /// \see AdbcConnectionSetOption
575
+ /// \since ADBC API revision 1.1.0
576
+ #define ADBC_CONNECTION_OPTION_CURRENT_CATALOG "adbc.connection.catalog"
577
+
578
+ /// \brief The name of the canonical option for the current schema.
579
+ ///
580
+ /// The type is char*.
581
+ ///
582
+ /// \see AdbcConnectionGetOption
583
+ /// \see AdbcConnectionSetOption
584
+ /// \since ADBC API revision 1.1.0
585
+ #define ADBC_CONNECTION_OPTION_CURRENT_DB_SCHEMA "adbc.connection.db_schema"
586
+
587
+ /// \brief The name of the canonical option for making query execution
588
+ /// nonblocking.
589
+ ///
590
+ /// When enabled, AdbcStatementExecutePartitions will return
591
+ /// partitions as soon as they are available, instead of returning
592
+ /// them all at the end. When there are no more to return, it will
593
+ /// return an empty set of partitions. AdbcStatementExecuteQuery and
594
+ /// AdbcStatementExecuteSchema are not affected.
595
+ ///
596
+ /// The default is ADBC_OPTION_VALUE_DISABLED.
597
+ ///
598
+ /// The type is char*.
599
+ ///
600
+ /// \see AdbcStatementSetOption
601
+ /// \since ADBC API revision 1.1.0
602
+ #define ADBC_STATEMENT_OPTION_INCREMENTAL "adbc.statement.exec.incremental"
603
+
604
+ /// \brief The name of the option for getting the progress of a query.
605
+ ///
606
+ /// The value is not necessarily in any particular range or have any
607
+ /// particular units. (For example, it might be a percentage, bytes of data,
608
+ /// rows of data, number of workers, etc.) The max value can be retrieved via
609
+ /// ADBC_STATEMENT_OPTION_MAX_PROGRESS. This represents the progress of
610
+ /// execution, not of consumption (i.e., it is independent of how much of the
611
+ /// result set has been read by the client via ArrowArrayStream.get_next().)
612
+ ///
613
+ /// The type is double.
614
+ ///
615
+ /// \see AdbcStatementGetOptionDouble
616
+ /// \since ADBC API revision 1.1.0
617
+ #define ADBC_STATEMENT_OPTION_PROGRESS "adbc.statement.exec.progress"
618
+
619
+ /// \brief The name of the option for getting the maximum progress of a query.
620
+ ///
621
+ /// This is the value of ADBC_STATEMENT_OPTION_PROGRESS for a completed query.
622
+ /// If not supported, or if the value is nonpositive, then the maximum is not
623
+ /// known. (For instance, the query may be fully streaming and the driver
624
+ /// does not know when the result set will end.)
625
+ ///
626
+ /// The type is double.
627
+ ///
628
+ /// \see AdbcStatementGetOptionDouble
629
+ /// \since ADBC API revision 1.1.0
630
+ #define ADBC_STATEMENT_OPTION_MAX_PROGRESS "adbc.statement.exec.max_progress"
631
+
267
632
  /// \brief The name of the canonical option for setting the isolation
268
633
  /// level of a transaction.
269
634
  ///
@@ -272,6 +637,8 @@ struct ADBC_EXPORT AdbcError {
272
637
  /// isolation level is not supported by a driver, it should return an
273
638
  /// appropriate error.
274
639
  ///
640
+ /// The type is char*.
641
+ ///
275
642
  /// \see AdbcConnectionSetOption
276
643
  #define ADBC_CONNECTION_OPTION_ISOLATION_LEVEL "adbc.connection.transaction.isolation_level"
277
644
 
@@ -356,8 +723,12 @@ struct ADBC_EXPORT AdbcError {
356
723
  /// exist. If the table exists but has a different schema,
357
724
  /// ADBC_STATUS_ALREADY_EXISTS should be raised. Else, data should be
358
725
  /// appended to the target table.
726
+ ///
727
+ /// The type is char*.
359
728
  #define ADBC_INGEST_OPTION_TARGET_TABLE "adbc.ingest.target_table"
360
729
  /// \brief Whether to create (the default) or append.
730
+ ///
731
+ /// The type is char*.
361
732
  #define ADBC_INGEST_OPTION_MODE "adbc.ingest.mode"
362
733
  /// \brief Create the table and insert data; error if the table exists.
363
734
  #define ADBC_INGEST_OPTION_MODE_CREATE "adbc.ingest.mode.create"
@@ -365,6 +736,15 @@ struct ADBC_EXPORT AdbcError {
365
736
  /// table does not exist (ADBC_STATUS_NOT_FOUND) or does not match
366
737
  /// the schema of the data to append (ADBC_STATUS_ALREADY_EXISTS).
367
738
  #define ADBC_INGEST_OPTION_MODE_APPEND "adbc.ingest.mode.append"
739
+ /// \brief Create the table and insert data; drop the original table
740
+ /// if it already exists.
741
+ /// \since ADBC API revision 1.1.0
742
+ #define ADBC_INGEST_OPTION_MODE_REPLACE "adbc.ingest.mode.replace"
743
+ /// \brief Insert data; create the table if it does not exist, or
744
+ /// error if the table exists, but the schema does not match the
745
+ /// schema of the data to append (ADBC_STATUS_ALREADY_EXISTS).
746
+ /// \since ADBC API revision 1.1.0
747
+ #define ADBC_INGEST_OPTION_MODE_CREATE_APPEND "adbc.ingest.mode.create_append"
368
748
 
369
749
  /// @}
370
750
 
@@ -530,7 +910,7 @@ struct ADBC_EXPORT AdbcDriver {
530
910
  AdbcStatusCode (*DatabaseRelease)(struct AdbcDatabase *, struct AdbcError *);
531
911
 
532
912
  AdbcStatusCode (*ConnectionCommit)(struct AdbcConnection *, struct AdbcError *);
533
- AdbcStatusCode (*ConnectionGetInfo)(struct AdbcConnection *, uint32_t *, size_t, struct ArrowArrayStream *,
913
+ AdbcStatusCode (*ConnectionGetInfo)(struct AdbcConnection *, const uint32_t *, size_t, struct ArrowArrayStream *,
534
914
  struct AdbcError *);
535
915
  AdbcStatusCode (*ConnectionGetObjects)(struct AdbcConnection *, int, const char *, const char *, const char *,
536
916
  const char **, const char *, struct ArrowArrayStream *, struct AdbcError *);
@@ -559,8 +939,89 @@ struct ADBC_EXPORT AdbcDriver {
559
939
  AdbcStatusCode (*StatementSetOption)(struct AdbcStatement *, const char *, const char *, struct AdbcError *);
560
940
  AdbcStatusCode (*StatementSetSqlQuery)(struct AdbcStatement *, const char *, struct AdbcError *);
561
941
  AdbcStatusCode (*StatementSetSubstraitPlan)(struct AdbcStatement *, const uint8_t *, size_t, struct AdbcError *);
942
+
943
+ /// \defgroup adbc-1.1.0 ADBC API Revision 1.1.0
944
+ ///
945
+ /// Functions added in ADBC 1.1.0. For backwards compatibility,
946
+ /// these members must not be accessed unless the version passed to
947
+ /// the AdbcDriverInitFunc is greater than or equal to
948
+ /// ADBC_VERSION_1_1_0.
949
+ ///
950
+ /// For a 1.0.0 driver being loaded by a 1.1.0 driver manager: the
951
+ /// 1.1.0 manager will allocate the new, expanded AdbcDriver struct
952
+ /// and attempt to have the driver initialize it with
953
+ /// ADBC_VERSION_1_1_0. This must return an error, after which the
954
+ /// driver will try again with ADBC_VERSION_1_0_0. The driver must
955
+ /// not access the new fields, which will carry undefined values.
956
+ ///
957
+ /// For a 1.1.0 driver being loaded by a 1.0.0 driver manager: the
958
+ /// 1.0.0 manager will allocate the old AdbcDriver struct and
959
+ /// attempt to have the driver initialize it with
960
+ /// ADBC_VERSION_1_0_0. The driver must not access the new fields,
961
+ /// and should initialize the old fields.
962
+ ///
963
+ /// @{
964
+
965
+ int (*ErrorGetDetailCount)(const struct AdbcError *error);
966
+ struct AdbcErrorDetail (*ErrorGetDetail)(const struct AdbcError *error, int index);
967
+ const struct AdbcError *(*ErrorFromArrayStream)(struct ArrowArrayStream *stream, AdbcStatusCode *status);
968
+
969
+ AdbcStatusCode (*DatabaseGetOption)(struct AdbcDatabase *, const char *, char *, size_t *, struct AdbcError *);
970
+ AdbcStatusCode (*DatabaseGetOptionBytes)(struct AdbcDatabase *, const char *, uint8_t *, size_t *,
971
+ struct AdbcError *);
972
+ AdbcStatusCode (*DatabaseGetOptionDouble)(struct AdbcDatabase *, const char *, double *, struct AdbcError *);
973
+ AdbcStatusCode (*DatabaseGetOptionInt)(struct AdbcDatabase *, const char *, int64_t *, struct AdbcError *);
974
+ AdbcStatusCode (*DatabaseSetOptionBytes)(struct AdbcDatabase *, const char *, const uint8_t *, size_t,
975
+ struct AdbcError *);
976
+ AdbcStatusCode (*DatabaseSetOptionDouble)(struct AdbcDatabase *, const char *, double, struct AdbcError *);
977
+ AdbcStatusCode (*DatabaseSetOptionInt)(struct AdbcDatabase *, const char *, int64_t, struct AdbcError *);
978
+
979
+ AdbcStatusCode (*ConnectionCancel)(struct AdbcConnection *, struct AdbcError *);
980
+ AdbcStatusCode (*ConnectionGetOption)(struct AdbcConnection *, const char *, char *, size_t *, struct AdbcError *);
981
+ AdbcStatusCode (*ConnectionGetOptionBytes)(struct AdbcConnection *, const char *, uint8_t *, size_t *,
982
+ struct AdbcError *);
983
+ AdbcStatusCode (*ConnectionGetOptionDouble)(struct AdbcConnection *, const char *, double *, struct AdbcError *);
984
+ AdbcStatusCode (*ConnectionGetOptionInt)(struct AdbcConnection *, const char *, int64_t *, struct AdbcError *);
985
+ AdbcStatusCode (*ConnectionGetStatistics)(struct AdbcConnection *, const char *, const char *, const char *, char,
986
+ struct ArrowArrayStream *, struct AdbcError *);
987
+ AdbcStatusCode (*ConnectionGetStatisticNames)(struct AdbcConnection *, struct ArrowArrayStream *,
988
+ struct AdbcError *);
989
+ AdbcStatusCode (*ConnectionSetOptionBytes)(struct AdbcConnection *, const char *, const uint8_t *, size_t,
990
+ struct AdbcError *);
991
+ AdbcStatusCode (*ConnectionSetOptionDouble)(struct AdbcConnection *, const char *, double, struct AdbcError *);
992
+ AdbcStatusCode (*ConnectionSetOptionInt)(struct AdbcConnection *, const char *, int64_t, struct AdbcError *);
993
+
994
+ AdbcStatusCode (*StatementCancel)(struct AdbcStatement *, struct AdbcError *);
995
+ AdbcStatusCode (*StatementExecuteSchema)(struct AdbcStatement *, struct ArrowSchema *, struct AdbcError *);
996
+ AdbcStatusCode (*StatementGetOption)(struct AdbcStatement *, const char *, char *, size_t *, struct AdbcError *);
997
+ AdbcStatusCode (*StatementGetOptionBytes)(struct AdbcStatement *, const char *, uint8_t *, size_t *,
998
+ struct AdbcError *);
999
+ AdbcStatusCode (*StatementGetOptionDouble)(struct AdbcStatement *, const char *, double *, struct AdbcError *);
1000
+ AdbcStatusCode (*StatementGetOptionInt)(struct AdbcStatement *, const char *, int64_t *, struct AdbcError *);
1001
+ AdbcStatusCode (*StatementSetOptionBytes)(struct AdbcStatement *, const char *, const uint8_t *, size_t,
1002
+ struct AdbcError *);
1003
+ AdbcStatusCode (*StatementSetOptionDouble)(struct AdbcStatement *, const char *, double, struct AdbcError *);
1004
+ AdbcStatusCode (*StatementSetOptionInt)(struct AdbcStatement *, const char *, int64_t, struct AdbcError *);
1005
+
1006
+ /// @}
562
1007
  };
563
1008
 
1009
+ /// \brief The size of the AdbcDriver structure in ADBC 1.0.0.
1010
+ /// Drivers written for ADBC 1.1.0 and later should never touch more
1011
+ /// than this portion of an AdbcDriver struct when given
1012
+ /// ADBC_VERSION_1_0_0.
1013
+ ///
1014
+ /// \since ADBC API revision 1.1.0
1015
+ #define ADBC_DRIVER_1_0_0_SIZE (offsetof(struct AdbcDriver, ErrorGetDetailCount))
1016
+
1017
+ /// \brief The size of the AdbcDriver structure in ADBC 1.1.0.
1018
+ /// Drivers written for ADBC 1.1.0 and later should never touch more
1019
+ /// than this portion of an AdbcDriver struct when given
1020
+ /// ADBC_VERSION_1_1_0.
1021
+ ///
1022
+ /// \since ADBC API revision 1.1.0
1023
+ #define ADBC_DRIVER_1_1_0_SIZE (sizeof(struct AdbcDriver))
1024
+
564
1025
  /// @}
565
1026
 
566
1027
  /// \addtogroup adbc-database
@@ -576,16 +1037,186 @@ struct ADBC_EXPORT AdbcDriver {
576
1037
  ADBC_EXPORT
577
1038
  AdbcStatusCode AdbcDatabaseNew(struct AdbcDatabase *database, struct AdbcError *error);
578
1039
 
1040
+ /// \brief Get a string option of the database.
1041
+ ///
1042
+ /// This must always be thread-safe (other operations are not), though
1043
+ /// given the semantics here, it is not recommended to call GetOption
1044
+ /// concurrently with itself.
1045
+ ///
1046
+ /// length must be provided and must be the size of the buffer pointed
1047
+ /// to by value. If there is sufficient space, the driver will copy
1048
+ /// the option value (including the null terminator) to buffer and set
1049
+ /// length to the size of the actual value. If the buffer is too
1050
+ /// small, no data will be written and length will be set to the
1051
+ /// required length.
1052
+ ///
1053
+ /// In other words:
1054
+ ///
1055
+ /// - If output length <= input length, value will contain a value
1056
+ /// with length bytes.
1057
+ /// - If output length > input length, nothing has been written to
1058
+ /// value.
1059
+ ///
1060
+ /// For standard options, drivers must always support getting the
1061
+ /// option value (if they support getting option values at all) via
1062
+ /// the type specified in the option. (For example, an option set via
1063
+ /// SetOptionDouble must be retrievable via GetOptionDouble.) Drivers
1064
+ /// may also support getting a converted option value via other
1065
+ /// getters if needed. (For example, getting the string
1066
+ /// representation of a double option.)
1067
+ ///
1068
+ /// \since ADBC API revision 1.1.0
1069
+ /// \param[in] database The database.
1070
+ /// \param[in] key The option to get.
1071
+ /// \param[out] value The option value.
1072
+ /// \param[in,out] length The length of value.
1073
+ /// \param[out] error An optional location to return an error
1074
+ /// message if necessary.
1075
+ /// \return ADBC_STATUS_NOT_FOUND if the option is not recognized.
1076
+ ADBC_EXPORT
1077
+ AdbcStatusCode AdbcDatabaseGetOption(struct AdbcDatabase *database, const char *key, char *value, size_t *length,
1078
+ struct AdbcError *error);
1079
+
1080
+ /// \brief Get a bytestring option of the database.
1081
+ ///
1082
+ /// This must always be thread-safe (other operations are not), though
1083
+ /// given the semantics here, it is not recommended to call
1084
+ /// GetOptionBytes concurrently with itself.
1085
+ ///
1086
+ /// length must be provided and must be the size of the buffer pointed
1087
+ /// to by value. If there is sufficient space, the driver will copy
1088
+ /// the option value to buffer and set length to the size of the
1089
+ /// actual value. If the buffer is too small, no data will be written
1090
+ /// and length will be set to the required length.
1091
+ ///
1092
+ /// In other words:
1093
+ ///
1094
+ /// - If output length <= input length, value will contain a value
1095
+ /// with length bytes.
1096
+ /// - If output length > input length, nothing has been written to
1097
+ /// value.
1098
+ ///
1099
+ /// For standard options, drivers must always support getting the
1100
+ /// option value (if they support getting option values at all) via
1101
+ /// the type specified in the option. (For example, an option set via
1102
+ /// SetOptionDouble must be retrievable via GetOptionDouble.) Drivers
1103
+ /// may also support getting a converted option value via other
1104
+ /// getters if needed. (For example, getting the string
1105
+ /// representation of a double option.)
1106
+ ///
1107
+ /// \since ADBC API revision 1.1.0
1108
+ /// \param[in] database The database.
1109
+ /// \param[in] key The option to get.
1110
+ /// \param[out] value The option value.
1111
+ /// \param[in,out] length The option value length.
1112
+ /// \param[out] error An optional location to return an error
1113
+ /// message if necessary.
1114
+ /// \return ADBC_STATUS_NOT_FOUND if the option is not recognized.
1115
+ ADBC_EXPORT
1116
+ AdbcStatusCode AdbcDatabaseGetOptionBytes(struct AdbcDatabase *database, const char *key, uint8_t *value,
1117
+ size_t *length, struct AdbcError *error);
1118
+
1119
+ /// \brief Get a double option of the database.
1120
+ ///
1121
+ /// This must always be thread-safe (other operations are not).
1122
+ ///
1123
+ /// For standard options, drivers must always support getting the
1124
+ /// option value (if they support getting option values at all) via
1125
+ /// the type specified in the option. (For example, an option set via
1126
+ /// SetOptionDouble must be retrievable via GetOptionDouble.) Drivers
1127
+ /// may also support getting a converted option value via other
1128
+ /// getters if needed. (For example, getting the double
1129
+ /// representation of an integer option.)
1130
+ ///
1131
+ /// \since ADBC API revision 1.1.0
1132
+ /// \param[in] database The database.
1133
+ /// \param[in] key The option to get.
1134
+ /// \param[out] value The option value.
1135
+ /// \param[out] error An optional location to return an error
1136
+ /// message if necessary.
1137
+ /// \return ADBC_STATUS_NOT_FOUND if the option is not recognized.
1138
+ ADBC_EXPORT
1139
+ AdbcStatusCode AdbcDatabaseGetOptionDouble(struct AdbcDatabase *database, const char *key, double *value,
1140
+ struct AdbcError *error);
1141
+
1142
+ /// \brief Get an integer option of the database.
1143
+ ///
1144
+ /// This must always be thread-safe (other operations are not).
1145
+ ///
1146
+ /// For standard options, drivers must always support getting the
1147
+ /// option value (if they support getting option values at all) via
1148
+ /// the type specified in the option. (For example, an option set via
1149
+ /// SetOptionDouble must be retrievable via GetOptionDouble.) Drivers
1150
+ /// may also support getting a converted option value via other
1151
+ /// getters if needed. (For example, getting the integer
1152
+ /// representation of a double option.)
1153
+ ///
1154
+ /// \since ADBC API revision 1.1.0
1155
+ /// \param[in] database The database.
1156
+ /// \param[in] key The option to get.
1157
+ /// \param[out] value The option value.
1158
+ /// \param[out] error An optional location to return an error
1159
+ /// message if necessary.
1160
+ /// \return ADBC_STATUS_NOT_FOUND if the option is not recognized.
1161
+ ADBC_EXPORT
1162
+ AdbcStatusCode AdbcDatabaseGetOptionInt(struct AdbcDatabase *database, const char *key, int64_t *value,
1163
+ struct AdbcError *error);
1164
+
579
1165
  /// \brief Set a char* option.
580
1166
  ///
581
1167
  /// Options may be set before AdbcDatabaseInit. Some drivers may
582
1168
  /// support setting options after initialization as well.
583
1169
  ///
1170
+ /// \param[in] database The database.
1171
+ /// \param[in] key The option to set.
1172
+ /// \param[in] value The option value.
1173
+ /// \param[out] error An optional location to return an error
1174
+ /// message if necessary.
584
1175
  /// \return ADBC_STATUS_NOT_IMPLEMENTED if the option is not recognized
585
1176
  ADBC_EXPORT
586
1177
  AdbcStatusCode AdbcDatabaseSetOption(struct AdbcDatabase *database, const char *key, const char *value,
587
1178
  struct AdbcError *error);
588
1179
 
1180
+ /// \brief Set a bytestring option on a database.
1181
+ ///
1182
+ /// \since ADBC API revision 1.1.0
1183
+ /// \param[in] database The database.
1184
+ /// \param[in] key The option to set.
1185
+ /// \param[in] value The option value.
1186
+ /// \param[in] length The option value length.
1187
+ /// \param[out] error An optional location to return an error
1188
+ /// message if necessary.
1189
+ /// \return ADBC_STATUS_NOT_IMPLEMENTED if the option is not recognized
1190
+ ADBC_EXPORT
1191
+ AdbcStatusCode AdbcDatabaseSetOptionBytes(struct AdbcDatabase *database, const char *key, const uint8_t *value,
1192
+ size_t length, struct AdbcError *error);
1193
+
1194
+ /// \brief Set a double option on a database.
1195
+ ///
1196
+ /// \since ADBC API revision 1.1.0
1197
+ /// \param[in] database The database.
1198
+ /// \param[in] key The option to set.
1199
+ /// \param[in] value The option value.
1200
+ /// \param[out] error An optional location to return an error
1201
+ /// message if necessary.
1202
+ /// \return ADBC_STATUS_NOT_IMPLEMENTED if the option is not recognized
1203
+ ADBC_EXPORT
1204
+ AdbcStatusCode AdbcDatabaseSetOptionDouble(struct AdbcDatabase *database, const char *key, double value,
1205
+ struct AdbcError *error);
1206
+
1207
+ /// \brief Set an integer option on a database.
1208
+ ///
1209
+ /// \since ADBC API revision 1.1.0
1210
+ /// \param[in] database The database.
1211
+ /// \param[in] key The option to set.
1212
+ /// \param[in] value The option value.
1213
+ /// \param[out] error An optional location to return an error
1214
+ /// message if necessary.
1215
+ /// \return ADBC_STATUS_NOT_IMPLEMENTED if the option is not recognized
1216
+ ADBC_EXPORT
1217
+ AdbcStatusCode AdbcDatabaseSetOptionInt(struct AdbcDatabase *database, const char *key, int64_t value,
1218
+ struct AdbcError *error);
1219
+
589
1220
  /// \brief Finish setting options and initialize the database.
590
1221
  ///
591
1222
  /// Some drivers may support setting options after initialization
@@ -620,11 +1251,62 @@ AdbcStatusCode AdbcConnectionNew(struct AdbcConnection *connection, struct AdbcE
620
1251
  /// Options may be set before AdbcConnectionInit. Some drivers may
621
1252
  /// support setting options after initialization as well.
622
1253
  ///
1254
+ /// \param[in] connection The database connection.
1255
+ /// \param[in] key The option to set.
1256
+ /// \param[in] value The option value.
1257
+ /// \param[out] error An optional location to return an error
1258
+ /// message if necessary.
623
1259
  /// \return ADBC_STATUS_NOT_IMPLEMENTED if the option is not recognized
624
1260
  ADBC_EXPORT
625
1261
  AdbcStatusCode AdbcConnectionSetOption(struct AdbcConnection *connection, const char *key, const char *value,
626
1262
  struct AdbcError *error);
627
1263
 
1264
+ /// \brief Set a bytestring option on a connection.
1265
+ ///
1266
+ /// \since ADBC API revision 1.1.0
1267
+ /// \param[in] connection The connection.
1268
+ /// \param[in] key The option to set.
1269
+ /// \param[in] value The option value.
1270
+ /// \param[in] length The option value length.
1271
+ /// \param[out] error An optional location to return an error
1272
+ /// message if necessary.
1273
+ /// \return ADBC_STATUS_NOT_IMPLEMENTED if the option is not recognized
1274
+ ADBC_EXPORT
1275
+ AdbcStatusCode AdbcConnectionSetOptionBytes(struct AdbcConnection *connection, const char *key, const uint8_t *value,
1276
+ size_t length, struct AdbcError *error);
1277
+
1278
+ /// \brief Set an integer option.
1279
+ ///
1280
+ /// Options may be set before AdbcConnectionInit. Some drivers may
1281
+ /// support setting options after initialization as well.
1282
+ ///
1283
+ /// \since ADBC API revision 1.1.0
1284
+ /// \param[in] connection The database connection.
1285
+ /// \param[in] key The option to set.
1286
+ /// \param[in] value The option value.
1287
+ /// \param[out] error An optional location to return an error
1288
+ /// message if necessary.
1289
+ /// \return ADBC_STATUS_NOT_IMPLEMENTED if the option is not recognized
1290
+ ADBC_EXPORT
1291
+ AdbcStatusCode AdbcConnectionSetOptionInt(struct AdbcConnection *connection, const char *key, int64_t value,
1292
+ struct AdbcError *error);
1293
+
1294
+ /// \brief Set a double option.
1295
+ ///
1296
+ /// Options may be set before AdbcConnectionInit. Some drivers may
1297
+ /// support setting options after initialization as well.
1298
+ ///
1299
+ /// \since ADBC API revision 1.1.0
1300
+ /// \param[in] connection The database connection.
1301
+ /// \param[in] key The option to set.
1302
+ /// \param[in] value The option value.
1303
+ /// \param[out] error An optional location to return an error
1304
+ /// message if necessary.
1305
+ /// \return ADBC_STATUS_NOT_IMPLEMENTED if the option is not recognized
1306
+ ADBC_EXPORT
1307
+ AdbcStatusCode AdbcConnectionSetOptionDouble(struct AdbcConnection *connection, const char *key, double value,
1308
+ struct AdbcError *error);
1309
+
628
1310
  /// \brief Finish setting options and initialize the connection.
629
1311
  ///
630
1312
  /// Some drivers may support setting options after initialization
@@ -641,6 +1323,29 @@ AdbcStatusCode AdbcConnectionInit(struct AdbcConnection *connection, struct Adbc
641
1323
  ADBC_EXPORT
642
1324
  AdbcStatusCode AdbcConnectionRelease(struct AdbcConnection *connection, struct AdbcError *error);
643
1325
 
1326
+ /// \brief Cancel the in-progress operation on a connection.
1327
+ ///
1328
+ /// This can be called during AdbcConnectionGetObjects (or similar),
1329
+ /// or while consuming an ArrowArrayStream returned from such.
1330
+ /// Calling this function should make the other functions return
1331
+ /// ADBC_STATUS_CANCELLED (from ADBC functions) or ECANCELED (from
1332
+ /// methods of ArrowArrayStream). (It is not guaranteed to, for
1333
+ /// instance, the result set may be buffered in memory already.)
1334
+ ///
1335
+ /// This must always be thread-safe (other operations are not). It is
1336
+ /// not necessarily signal-safe.
1337
+ ///
1338
+ /// \since ADBC API revision 1.1.0
1339
+ ///
1340
+ /// \param[in] connection The connection to cancel.
1341
+ /// \param[out] error An optional location to return an error
1342
+ /// message if necessary.
1343
+ ///
1344
+ /// \return ADBC_STATUS_INVALID_STATE if there is no operation to cancel.
1345
+ /// \return ADBC_STATUS_UNKNOWN if the operation could not be cancelled.
1346
+ ADBC_EXPORT
1347
+ AdbcStatusCode AdbcConnectionCancel(struct AdbcConnection *connection, struct AdbcError *error);
1348
+
644
1349
  /// \defgroup adbc-connection-metadata Metadata
645
1350
  /// Functions for retrieving metadata about the database.
646
1351
  ///
@@ -654,6 +1359,8 @@ AdbcStatusCode AdbcConnectionRelease(struct AdbcConnection *connection, struct A
654
1359
  /// concurrent active statements and it must execute a SQL query
655
1360
  /// internally in order to implement the metadata function).
656
1361
  ///
1362
+ /// This AdbcConnection must outlive the returned ArrowArrayStream.
1363
+ ///
657
1364
  /// Some functions accept "search pattern" arguments, which are
658
1365
  /// strings that can contain the special character "%" to match zero
659
1366
  /// or more characters, or "_" to match exactly one character. (See
@@ -688,6 +1395,10 @@ AdbcStatusCode AdbcConnectionRelease(struct AdbcConnection *connection, struct A
688
1395
  /// for ADBC usage. Drivers/vendors will ignore requests for
689
1396
  /// unrecognized codes (the row will be omitted from the result).
690
1397
  ///
1398
+ /// Since ADBC 1.1.0: the range [500, 1_000) is reserved for "XDBC"
1399
+ /// information, which is the same metadata provided by the same info
1400
+ /// code range in the Arrow Flight SQL GetSqlInfo RPC.
1401
+ ///
691
1402
  /// \param[in] connection The connection to query.
692
1403
  /// \param[in] info_codes A list of metadata codes to fetch, or NULL
693
1404
  /// to fetch all.
@@ -696,8 +1407,8 @@ AdbcStatusCode AdbcConnectionRelease(struct AdbcConnection *connection, struct A
696
1407
  /// \param[out] out The result set.
697
1408
  /// \param[out] error Error details, if an error occurs.
698
1409
  ADBC_EXPORT
699
- AdbcStatusCode AdbcConnectionGetInfo(struct AdbcConnection *connection, uint32_t *info_codes, size_t info_codes_length,
700
- struct ArrowArrayStream *out, struct AdbcError *error);
1410
+ AdbcStatusCode AdbcConnectionGetInfo(struct AdbcConnection *connection, const uint32_t *info_codes,
1411
+ size_t info_codes_length, struct ArrowArrayStream *out, struct AdbcError *error);
701
1412
 
702
1413
  /// \brief Get a hierarchical view of all catalogs, database schemas,
703
1414
  /// tables, and columns.
@@ -778,6 +1489,8 @@ AdbcStatusCode AdbcConnectionGetInfo(struct AdbcConnection *connection, uint32_t
778
1489
  /// | fk_table | utf8 not null |
779
1490
  /// | fk_column_name | utf8 not null |
780
1491
  ///
1492
+ /// This AdbcConnection must outlive the returned ArrowArrayStream.
1493
+ ///
781
1494
  /// \param[in] connection The database connection.
782
1495
  /// \param[in] depth The level of nesting to display. If 0, display
783
1496
  /// all levels. If 1, display only catalogs (i.e. catalog_schemas
@@ -806,6 +1519,205 @@ AdbcStatusCode AdbcConnectionGetObjects(struct AdbcConnection *connection, int d
806
1519
  const char *db_schema, const char *table_name, const char **table_type,
807
1520
  const char *column_name, struct ArrowArrayStream *out, struct AdbcError *error);
808
1521
 
1522
+ /// \brief Get a string option of the connection.
1523
+ ///
1524
+ /// This must always be thread-safe (other operations are not), though
1525
+ /// given the semantics here, it is not recommended to call GetOption
1526
+ /// concurrently with itself.
1527
+ ///
1528
+ /// length must be provided and must be the size of the buffer pointed
1529
+ /// to by value. If there is sufficient space, the driver will copy
1530
+ /// the option value (including the null terminator) to buffer and set
1531
+ /// length to the size of the actual value. If the buffer is too
1532
+ /// small, no data will be written and length will be set to the
1533
+ /// required length.
1534
+ ///
1535
+ /// In other words:
1536
+ ///
1537
+ /// - If output length <= input length, value will contain a value
1538
+ /// with length bytes.
1539
+ /// - If output length > input length, nothing has been written to
1540
+ /// value.
1541
+ ///
1542
+ /// \since ADBC API revision 1.1.0
1543
+ /// \param[in] connection The database connection.
1544
+ /// \param[in] key The option to get.
1545
+ /// \param[out] value The option value.
1546
+ /// \param[in,out] length The length of value.
1547
+ /// \param[out] error An optional location to return an error
1548
+ /// message if necessary.
1549
+ /// \return ADBC_STATUS_NOT_FOUND if the option is not recognized.
1550
+ ADBC_EXPORT
1551
+ AdbcStatusCode AdbcConnectionGetOption(struct AdbcConnection *connection, const char *key, char *value, size_t *length,
1552
+ struct AdbcError *error);
1553
+
1554
+ /// \brief Get a bytestring option of the connection.
1555
+ ///
1556
+ /// This must always be thread-safe (other operations are not), though
1557
+ /// given the semantics here, it is not recommended to call
1558
+ /// GetOptionBytes concurrently with itself.
1559
+ ///
1560
+ /// length must be provided and must be the size of the buffer pointed
1561
+ /// to by value. If there is sufficient space, the driver will copy
1562
+ /// the option value to buffer and set length to the size of the
1563
+ /// actual value. If the buffer is too small, no data will be written
1564
+ /// and length will be set to the required length.
1565
+ ///
1566
+ /// In other words:
1567
+ ///
1568
+ /// - If output length <= input length, value will contain a value
1569
+ /// with length bytes.
1570
+ /// - If output length > input length, nothing has been written to
1571
+ /// value.
1572
+ ///
1573
+ /// For standard options, drivers must always support getting the
1574
+ /// option value (if they support getting option values at all) via
1575
+ /// the type specified in the option. (For example, an option set via
1576
+ /// SetOptionDouble must be retrievable via GetOptionDouble.) Drivers
1577
+ /// may also support getting a converted option value via other
1578
+ /// getters if needed. (For example, getting the string
1579
+ /// representation of a double option.)
1580
+ ///
1581
+ /// \since ADBC API revision 1.1.0
1582
+ /// \param[in] connection The connection.
1583
+ /// \param[in] key The option to get.
1584
+ /// \param[out] value The option value.
1585
+ /// \param[in,out] length The option value length.
1586
+ /// \param[out] error An optional location to return an error
1587
+ /// message if necessary.
1588
+ /// \return ADBC_STATUS_NOT_FOUND if the option is not recognized.
1589
+ ADBC_EXPORT
1590
+ AdbcStatusCode AdbcConnectionGetOptionBytes(struct AdbcConnection *connection, const char *key, uint8_t *value,
1591
+ size_t *length, struct AdbcError *error);
1592
+
1593
+ /// \brief Get an integer option of the connection.
1594
+ ///
1595
+ /// This must always be thread-safe (other operations are not).
1596
+ ///
1597
+ /// For standard options, drivers must always support getting the
1598
+ /// option value (if they support getting option values at all) via
1599
+ /// the type specified in the option. (For example, an option set via
1600
+ /// SetOptionDouble must be retrievable via GetOptionDouble.) Drivers
1601
+ /// may also support getting a converted option value via other
1602
+ /// getters if needed. (For example, getting the string
1603
+ /// representation of a double option.)
1604
+ ///
1605
+ /// \since ADBC API revision 1.1.0
1606
+ /// \param[in] connection The database connection.
1607
+ /// \param[in] key The option to get.
1608
+ /// \param[out] value The option value.
1609
+ /// \param[out] error An optional location to return an error
1610
+ /// message if necessary.
1611
+ /// \return ADBC_STATUS_NOT_FOUND if the option is not recognized.
1612
+ ADBC_EXPORT
1613
+ AdbcStatusCode AdbcConnectionGetOptionInt(struct AdbcConnection *connection, const char *key, int64_t *value,
1614
+ struct AdbcError *error);
1615
+
1616
+ /// \brief Get a double option of the connection.
1617
+ ///
1618
+ /// This must always be thread-safe (other operations are not).
1619
+ ///
1620
+ /// For standard options, drivers must always support getting the
1621
+ /// option value (if they support getting option values at all) via
1622
+ /// the type specified in the option. (For example, an option set via
1623
+ /// SetOptionDouble must be retrievable via GetOptionDouble.) Drivers
1624
+ /// may also support getting a converted option value via other
1625
+ /// getters if needed. (For example, getting the string
1626
+ /// representation of a double option.)
1627
+ ///
1628
+ /// \since ADBC API revision 1.1.0
1629
+ /// \param[in] connection The database connection.
1630
+ /// \param[in] key The option to get.
1631
+ /// \param[out] value The option value.
1632
+ /// \param[out] error An optional location to return an error
1633
+ /// message if necessary.
1634
+ /// \return ADBC_STATUS_NOT_FOUND if the option is not recognized.
1635
+ ADBC_EXPORT
1636
+ AdbcStatusCode AdbcConnectionGetOptionDouble(struct AdbcConnection *connection, const char *key, double *value,
1637
+ struct AdbcError *error);
1638
+
1639
+ /// \brief Get statistics about the data distribution of table(s).
1640
+ ///
1641
+ /// The result is an Arrow dataset with the following schema:
1642
+ ///
1643
+ /// | Field Name | Field Type |
1644
+ /// |--------------------------|----------------------------------|
1645
+ /// | catalog_name | utf8 |
1646
+ /// | catalog_db_schemas | list<DB_SCHEMA_SCHEMA> not null |
1647
+ ///
1648
+ /// DB_SCHEMA_SCHEMA is a Struct with fields:
1649
+ ///
1650
+ /// | Field Name | Field Type |
1651
+ /// |--------------------------|----------------------------------|
1652
+ /// | db_schema_name | utf8 |
1653
+ /// | db_schema_statistics | list<STATISTICS_SCHEMA> not null |
1654
+ ///
1655
+ /// STATISTICS_SCHEMA is a Struct with fields:
1656
+ ///
1657
+ /// | Field Name | Field Type | Comments |
1658
+ /// |--------------------------|----------------------------------| -------- |
1659
+ /// | table_name | utf8 not null | |
1660
+ /// | column_name | utf8 | (1) |
1661
+ /// | statistic_key | int16 not null | (2) |
1662
+ /// | statistic_value | VALUE_SCHEMA not null | |
1663
+ /// | statistic_is_approximate | bool not null | (3) |
1664
+ ///
1665
+ /// 1. If null, then the statistic applies to the entire table.
1666
+ /// 2. A dictionary-encoded statistic name (although we do not use the Arrow
1667
+ /// dictionary type). Values in [0, 1024) are reserved for ADBC. Other
1668
+ /// values are for implementation-specific statistics. For the definitions
1669
+ /// of predefined statistic types, see \ref adbc-table-statistics. To get
1670
+ /// driver-specific statistic names, use AdbcConnectionGetStatisticNames.
1671
+ /// 3. If true, then the value is approximate or best-effort.
1672
+ ///
1673
+ /// VALUE_SCHEMA is a dense union with members:
1674
+ ///
1675
+ /// | Field Name | Field Type |
1676
+ /// |--------------------------|----------------------------------|
1677
+ /// | int64 | int64 |
1678
+ /// | uint64 | uint64 |
1679
+ /// | float64 | float64 |
1680
+ /// | binary | binary |
1681
+ ///
1682
+ /// This AdbcConnection must outlive the returned ArrowArrayStream.
1683
+ ///
1684
+ /// \since ADBC API revision 1.1.0
1685
+ /// \param[in] connection The database connection.
1686
+ /// \param[in] catalog The catalog (or nullptr). May be a search
1687
+ /// pattern (see section documentation).
1688
+ /// \param[in] db_schema The database schema (or nullptr). May be a
1689
+ /// search pattern (see section documentation).
1690
+ /// \param[in] table_name The table name (or nullptr). May be a
1691
+ /// search pattern (see section documentation).
1692
+ /// \param[in] approximate If zero, request exact values of
1693
+ /// statistics, else allow for best-effort, approximate, or cached
1694
+ /// values. The database may return approximate values regardless,
1695
+ /// as indicated in the result. Requesting exact values may be
1696
+ /// expensive or unsupported.
1697
+ /// \param[out] out The result set.
1698
+ /// \param[out] error Error details, if an error occurs.
1699
+ ADBC_EXPORT
1700
+ AdbcStatusCode AdbcConnectionGetStatistics(struct AdbcConnection *connection, const char *catalog,
1701
+ const char *db_schema, const char *table_name, char approximate,
1702
+ struct ArrowArrayStream *out, struct AdbcError *error);
1703
+
1704
+ /// \brief Get the names of statistics specific to this driver.
1705
+ ///
1706
+ /// The result is an Arrow dataset with the following schema:
1707
+ ///
1708
+ /// Field Name | Field Type
1709
+ /// ---------------|----------------
1710
+ /// statistic_name | utf8 not null
1711
+ /// statistic_key | int16 not null
1712
+ ///
1713
+ /// \since ADBC API revision 1.1.0
1714
+ /// \param[in] connection The database connection.
1715
+ /// \param[out] out The result set.
1716
+ /// \param[out] error Error details, if an error occurs.
1717
+ ADBC_EXPORT
1718
+ AdbcStatusCode AdbcConnectionGetStatisticNames(struct AdbcConnection *connection, struct ArrowArrayStream *out,
1719
+ struct AdbcError *error);
1720
+
809
1721
  /// \brief Get the Arrow schema of a table.
810
1722
  ///
811
1723
  /// \param[in] connection The database connection.
@@ -827,6 +1739,8 @@ AdbcStatusCode AdbcConnectionGetTableSchema(struct AdbcConnection *connection, c
827
1739
  /// ---------------|--------------
828
1740
  /// table_type | utf8 not null
829
1741
  ///
1742
+ /// This AdbcConnection must outlive the returned ArrowArrayStream.
1743
+ ///
830
1744
  /// \param[in] connection The database connection.
831
1745
  /// \param[out] out The result set.
832
1746
  /// \param[out] error Error details, if an error occurs.
@@ -854,6 +1768,8 @@ AdbcStatusCode AdbcConnectionGetTableTypes(struct AdbcConnection *connection, st
854
1768
  ///
855
1769
  /// A partition can be retrieved from AdbcPartitions.
856
1770
  ///
1771
+ /// This AdbcConnection must outlive the returned ArrowArrayStream.
1772
+ ///
857
1773
  /// \param[in] connection The connection to use. This does not have
858
1774
  /// to be the same connection that the partition was created on.
859
1775
  /// \param[in] serialized_partition The partition descriptor.
@@ -918,7 +1834,11 @@ AdbcStatusCode AdbcStatementRelease(struct AdbcStatement *statement, struct Adbc
918
1834
 
919
1835
  /// \brief Execute a statement and get the results.
920
1836
  ///
921
- /// This invalidates any prior result sets.
1837
+ /// This invalidates any prior result sets. This AdbcStatement must
1838
+ /// outlive the returned ArrowArrayStream.
1839
+ ///
1840
+ /// Since ADBC 1.1.0: releasing the returned ArrowArrayStream without
1841
+ /// consuming it fully is equivalent to calling AdbcStatementCancel.
922
1842
  ///
923
1843
  /// \param[in] statement The statement to execute.
924
1844
  /// \param[out] out The results. Pass NULL if the client does not
@@ -931,6 +1851,26 @@ ADBC_EXPORT
931
1851
  AdbcStatusCode AdbcStatementExecuteQuery(struct AdbcStatement *statement, struct ArrowArrayStream *out,
932
1852
  int64_t *rows_affected, struct AdbcError *error);
933
1853
 
1854
+ /// \brief Get the schema of the result set of a query without
1855
+ /// executing it.
1856
+ ///
1857
+ /// This invalidates any prior result sets.
1858
+ ///
1859
+ /// Depending on the driver, this may require first executing
1860
+ /// AdbcStatementPrepare.
1861
+ ///
1862
+ /// \since ADBC API revision 1.1.0
1863
+ ///
1864
+ /// \param[in] statement The statement to execute.
1865
+ /// \param[out] out The result schema.
1866
+ /// \param[out] error An optional location to return an error
1867
+ /// message if necessary.
1868
+ ///
1869
+ /// \return ADBC_STATUS_NOT_IMPLEMENTED if the driver does not support this.
1870
+ ADBC_EXPORT
1871
+ AdbcStatusCode AdbcStatementExecuteSchema(struct AdbcStatement *statement, struct ArrowSchema *schema,
1872
+ struct AdbcError *error);
1873
+
934
1874
  /// \brief Turn this statement into a prepared statement to be
935
1875
  /// executed multiple times.
936
1876
  ///
@@ -1008,6 +1948,154 @@ ADBC_EXPORT
1008
1948
  AdbcStatusCode AdbcStatementBindStream(struct AdbcStatement *statement, struct ArrowArrayStream *stream,
1009
1949
  struct AdbcError *error);
1010
1950
 
1951
+ /// \brief Cancel execution of an in-progress query.
1952
+ ///
1953
+ /// This can be called during AdbcStatementExecuteQuery (or similar),
1954
+ /// or while consuming an ArrowArrayStream returned from such.
1955
+ /// Calling this function should make the other functions return
1956
+ /// ADBC_STATUS_CANCELLED (from ADBC functions) or ECANCELED (from
1957
+ /// methods of ArrowArrayStream). (It is not guaranteed to, for
1958
+ /// instance, the result set may be buffered in memory already.)
1959
+ ///
1960
+ /// This must always be thread-safe (other operations are not). It is
1961
+ /// not necessarily signal-safe.
1962
+ ///
1963
+ /// \since ADBC API revision 1.1.0
1964
+ ///
1965
+ /// \param[in] statement The statement to cancel.
1966
+ /// \param[out] error An optional location to return an error
1967
+ /// message if necessary.
1968
+ ///
1969
+ /// \return ADBC_STATUS_INVALID_STATE if there is no query to cancel.
1970
+ /// \return ADBC_STATUS_UNKNOWN if the query could not be cancelled.
1971
+ ADBC_EXPORT
1972
+ AdbcStatusCode AdbcStatementCancel(struct AdbcStatement *statement, struct AdbcError *error);
1973
+
1974
+ /// \brief Get a string option of the statement.
1975
+ ///
1976
+ /// This must always be thread-safe (other operations are not), though
1977
+ /// given the semantics here, it is not recommended to call GetOption
1978
+ /// concurrently with itself.
1979
+ ///
1980
+ /// length must be provided and must be the size of the buffer pointed
1981
+ /// to by value. If there is sufficient space, the driver will copy
1982
+ /// the option value (including the null terminator) to buffer and set
1983
+ /// length to the size of the actual value. If the buffer is too
1984
+ /// small, no data will be written and length will be set to the
1985
+ /// required length.
1986
+ ///
1987
+ /// In other words:
1988
+ ///
1989
+ /// - If output length <= input length, value will contain a value
1990
+ /// with length bytes.
1991
+ /// - If output length > input length, nothing has been written to
1992
+ /// value.
1993
+ ///
1994
+ /// For standard options, drivers must always support getting the
1995
+ /// option value (if they support getting option values at all) via
1996
+ /// the type specified in the option. (For example, an option set via
1997
+ /// SetOptionDouble must be retrievable via GetOptionDouble.) Drivers
1998
+ /// may also support getting a converted option value via other
1999
+ /// getters if needed. (For example, getting the string
2000
+ /// representation of a double option.)
2001
+ ///
2002
+ /// \since ADBC API revision 1.1.0
2003
+ /// \param[in] statement The statement.
2004
+ /// \param[in] key The option to get.
2005
+ /// \param[out] value The option value.
2006
+ /// \param[in,out] length The length of value.
2007
+ /// \param[out] error An optional location to return an error
2008
+ /// message if necessary.
2009
+ /// \return ADBC_STATUS_NOT_FOUND if the option is not recognized.
2010
+ ADBC_EXPORT
2011
+ AdbcStatusCode AdbcStatementGetOption(struct AdbcStatement *statement, const char *key, char *value, size_t *length,
2012
+ struct AdbcError *error);
2013
+
2014
+ /// \brief Get a bytestring option of the statement.
2015
+ ///
2016
+ /// This must always be thread-safe (other operations are not), though
2017
+ /// given the semantics here, it is not recommended to call
2018
+ /// GetOptionBytes concurrently with itself.
2019
+ ///
2020
+ /// length must be provided and must be the size of the buffer pointed
2021
+ /// to by value. If there is sufficient space, the driver will copy
2022
+ /// the option value to buffer and set length to the size of the
2023
+ /// actual value. If the buffer is too small, no data will be written
2024
+ /// and length will be set to the required length.
2025
+ ///
2026
+ /// In other words:
2027
+ ///
2028
+ /// - If output length <= input length, value will contain a value
2029
+ /// with length bytes.
2030
+ /// - If output length > input length, nothing has been written to
2031
+ /// value.
2032
+ ///
2033
+ /// For standard options, drivers must always support getting the
2034
+ /// option value (if they support getting option values at all) via
2035
+ /// the type specified in the option. (For example, an option set via
2036
+ /// SetOptionDouble must be retrievable via GetOptionDouble.) Drivers
2037
+ /// may also support getting a converted option value via other
2038
+ /// getters if needed. (For example, getting the string
2039
+ /// representation of a double option.)
2040
+ ///
2041
+ /// \since ADBC API revision 1.1.0
2042
+ /// \param[in] statement The statement.
2043
+ /// \param[in] key The option to get.
2044
+ /// \param[out] value The option value.
2045
+ /// \param[in,out] length The option value length.
2046
+ /// \param[out] error An optional location to return an error
2047
+ /// message if necessary.
2048
+ /// \return ADBC_STATUS_NOT_FOUND if the option is not recognized.
2049
+ ADBC_EXPORT
2050
+ AdbcStatusCode AdbcStatementGetOptionBytes(struct AdbcStatement *statement, const char *key, uint8_t *value,
2051
+ size_t *length, struct AdbcError *error);
2052
+
2053
+ /// \brief Get an integer option of the statement.
2054
+ ///
2055
+ /// This must always be thread-safe (other operations are not).
2056
+ ///
2057
+ /// For standard options, drivers must always support getting the
2058
+ /// option value (if they support getting option values at all) via
2059
+ /// the type specified in the option. (For example, an option set via
2060
+ /// SetOptionDouble must be retrievable via GetOptionDouble.) Drivers
2061
+ /// may also support getting a converted option value via other
2062
+ /// getters if needed. (For example, getting the string
2063
+ /// representation of a double option.)
2064
+ ///
2065
+ /// \since ADBC API revision 1.1.0
2066
+ /// \param[in] statement The statement.
2067
+ /// \param[in] key The option to get.
2068
+ /// \param[out] value The option value.
2069
+ /// \param[out] error An optional location to return an error
2070
+ /// message if necessary.
2071
+ /// \return ADBC_STATUS_NOT_FOUND if the option is not recognized.
2072
+ ADBC_EXPORT
2073
+ AdbcStatusCode AdbcStatementGetOptionInt(struct AdbcStatement *statement, const char *key, int64_t *value,
2074
+ struct AdbcError *error);
2075
+
2076
+ /// \brief Get a double option of the statement.
2077
+ ///
2078
+ /// This must always be thread-safe (other operations are not).
2079
+ ///
2080
+ /// For standard options, drivers must always support getting the
2081
+ /// option value (if they support getting option values at all) via
2082
+ /// the type specified in the option. (For example, an option set via
2083
+ /// SetOptionDouble must be retrievable via GetOptionDouble.) Drivers
2084
+ /// may also support getting a converted option value via other
2085
+ /// getters if needed. (For example, getting the string
2086
+ /// representation of a double option.)
2087
+ ///
2088
+ /// \since ADBC API revision 1.1.0
2089
+ /// \param[in] statement The statement.
2090
+ /// \param[in] key The option to get.
2091
+ /// \param[out] value The option value.
2092
+ /// \param[out] error An optional location to return an error
2093
+ /// message if necessary.
2094
+ /// \return ADBC_STATUS_NOT_FOUND if the option is not recognized.
2095
+ ADBC_EXPORT
2096
+ AdbcStatusCode AdbcStatementGetOptionDouble(struct AdbcStatement *statement, const char *key, double *value,
2097
+ struct AdbcError *error);
2098
+
1011
2099
  /// \brief Get the schema for bound parameters.
1012
2100
  ///
1013
2101
  /// This retrieves an Arrow schema describing the number, names, and
@@ -1028,10 +2116,56 @@ AdbcStatusCode AdbcStatementGetParameterSchema(struct AdbcStatement *statement,
1028
2116
  struct AdbcError *error);
1029
2117
 
1030
2118
  /// \brief Set a string option on a statement.
2119
+ /// \param[in] statement The statement.
2120
+ /// \param[in] key The option to set.
2121
+ /// \param[in] value The option value.
2122
+ /// \param[out] error An optional location to return an error
2123
+ /// message if necessary.
2124
+ /// \return ADBC_STATUS_NOT_IMPLEMENTED if the option is not recognized.
1031
2125
  ADBC_EXPORT
1032
2126
  AdbcStatusCode AdbcStatementSetOption(struct AdbcStatement *statement, const char *key, const char *value,
1033
2127
  struct AdbcError *error);
1034
2128
 
2129
+ /// \brief Set a bytestring option on a statement.
2130
+ ///
2131
+ /// \since ADBC API revision 1.1.0
2132
+ /// \param[in] statement The statement.
2133
+ /// \param[in] key The option to set.
2134
+ /// \param[in] value The option value.
2135
+ /// \param[in] length The option value length.
2136
+ /// \param[out] error An optional location to return an error
2137
+ /// message if necessary.
2138
+ /// \return ADBC_STATUS_NOT_IMPLEMENTED if the option is not recognized
2139
+ ADBC_EXPORT
2140
+ AdbcStatusCode AdbcStatementSetOptionBytes(struct AdbcStatement *statement, const char *key, const uint8_t *value,
2141
+ size_t length, struct AdbcError *error);
2142
+
2143
+ /// \brief Set an integer option on a statement.
2144
+ ///
2145
+ /// \since ADBC API revision 1.1.0
2146
+ /// \param[in] statement The statement.
2147
+ /// \param[in] key The option to set.
2148
+ /// \param[in] value The option value.
2149
+ /// \param[out] error An optional location to return an error
2150
+ /// message if necessary.
2151
+ /// \return ADBC_STATUS_NOT_IMPLEMENTED if the option is not recognized
2152
+ ADBC_EXPORT
2153
+ AdbcStatusCode AdbcStatementSetOptionInt(struct AdbcStatement *statement, const char *key, int64_t value,
2154
+ struct AdbcError *error);
2155
+
2156
+ /// \brief Set a double option on a statement.
2157
+ ///
2158
+ /// \since ADBC API revision 1.1.0
2159
+ /// \param[in] statement The statement.
2160
+ /// \param[in] key The option to set.
2161
+ /// \param[in] value The option value.
2162
+ /// \param[out] error An optional location to return an error
2163
+ /// message if necessary.
2164
+ /// \return ADBC_STATUS_NOT_IMPLEMENTED if the option is not recognized
2165
+ ADBC_EXPORT
2166
+ AdbcStatusCode AdbcStatementSetOptionDouble(struct AdbcStatement *statement, const char *key, double value,
2167
+ struct AdbcError *error);
2168
+
1035
2169
  /// \addtogroup adbc-statement-partition
1036
2170
  /// @{
1037
2171
 
@@ -1065,7 +2199,15 @@ AdbcStatusCode AdbcStatementExecutePartitions(struct AdbcStatement *statement, s
1065
2199
  /// driver.
1066
2200
  ///
1067
2201
  /// Although drivers may choose any name for this function, the
1068
- /// recommended name is "AdbcDriverInit".
2202
+ /// recommended name is "AdbcDriverInit", or a name derived from the
2203
+ /// name of the driver's shared library as follows: remove the 'lib'
2204
+ /// prefix (on Unix systems) and all file extensions, then PascalCase
2205
+ /// the driver name, append Init, and prepend Adbc (if not already
2206
+ /// there). For example:
2207
+ ///
2208
+ /// - libadbc_driver_sqlite.so.2.0.0 -> AdbcDriverSqliteInit
2209
+ /// - adbc_driver_sqlite.dll -> AdbcDriverSqliteInit
2210
+ /// - proprietary_driver.dll -> AdbcProprietaryDriverInit
1069
2211
  ///
1070
2212
  /// \param[in] version The ADBC revision to attempt to initialize (see
1071
2213
  /// ADBC_VERSION_1_0_0).
@@ -1086,4 +2228,3 @@ typedef AdbcStatusCode (*AdbcDriverInitFunc)(int version, void *driver, struct A
1086
2228
  #ifdef __cplusplus
1087
2229
  }
1088
2230
  #endif
1089
- } // namespace duckdb_adbc