duckdb 0.8.2-dev33.0 → 0.8.2-dev3334.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 (999) hide show
  1. package/README.md +7 -0
  2. package/binding.gyp +25 -13
  3. package/binding.gyp.in +1 -1
  4. package/configure.py +8 -3
  5. package/duckdb_extension_config.cmake +10 -0
  6. package/package.json +1 -1
  7. package/src/duckdb/extension/icu/icu-dateadd.cpp +2 -2
  8. package/src/duckdb/extension/icu/icu-datefunc.cpp +10 -1
  9. package/src/duckdb/extension/icu/icu-datepart.cpp +162 -41
  10. package/src/duckdb/extension/icu/icu-datesub.cpp +3 -2
  11. package/src/duckdb/extension/icu/icu-datetrunc.cpp +2 -1
  12. package/src/duckdb/extension/icu/icu-list-range.cpp +1 -1
  13. package/src/duckdb/extension/icu/icu-makedate.cpp +19 -6
  14. package/src/duckdb/extension/icu/icu-strptime.cpp +5 -24
  15. package/src/duckdb/extension/icu/icu-table-range.cpp +5 -5
  16. package/src/duckdb/extension/icu/icu-timebucket.cpp +16 -16
  17. package/src/duckdb/extension/icu/icu-timezone.cpp +8 -8
  18. package/src/duckdb/extension/icu/icu_extension.cpp +5 -7
  19. package/src/duckdb/extension/json/buffered_json_reader.cpp +2 -0
  20. package/src/duckdb/extension/json/include/buffered_json_reader.hpp +5 -19
  21. package/src/duckdb/extension/json/include/json_common.hpp +47 -231
  22. package/src/duckdb/extension/json/include/json_deserializer.hpp +1 -1
  23. package/src/duckdb/extension/json/include/json_enums.hpp +60 -0
  24. package/src/duckdb/extension/json/include/json_executors.hpp +49 -13
  25. package/src/duckdb/extension/json/include/json_functions.hpp +2 -1
  26. package/src/duckdb/extension/json/include/json_scan.hpp +14 -10
  27. package/src/duckdb/extension/json/include/json_serializer.hpp +1 -1
  28. package/src/duckdb/extension/json/include/json_transform.hpp +3 -0
  29. package/src/duckdb/extension/json/json_common.cpp +272 -40
  30. package/src/duckdb/extension/json/json_deserializer.cpp +16 -14
  31. package/src/duckdb/extension/json/json_enums.cpp +105 -0
  32. package/src/duckdb/extension/json/json_functions/json_create.cpp +21 -2
  33. package/src/duckdb/extension/json/json_functions/json_structure.cpp +1 -1
  34. package/src/duckdb/extension/json/json_functions/json_transform.cpp +93 -38
  35. package/src/duckdb/extension/json/json_functions/json_type.cpp +1 -1
  36. package/src/duckdb/extension/json/json_functions.cpp +26 -25
  37. package/src/duckdb/extension/json/json_scan.cpp +47 -6
  38. package/src/duckdb/extension/json/json_serializer.cpp +11 -11
  39. package/src/duckdb/extension/json/serialize_json.cpp +92 -0
  40. package/src/duckdb/extension/parquet/column_reader.cpp +37 -25
  41. package/src/duckdb/extension/parquet/column_writer.cpp +77 -61
  42. package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +2 -2
  43. package/src/duckdb/extension/parquet/include/column_reader.hpp +14 -16
  44. package/src/duckdb/extension/parquet/include/column_writer.hpp +9 -7
  45. package/src/duckdb/extension/parquet/include/list_column_reader.hpp +2 -2
  46. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +3 -3
  47. package/src/duckdb/extension/parquet/include/parquet_decimal_utils.hpp +3 -3
  48. package/src/duckdb/extension/parquet/include/parquet_file_metadata_cache.hpp +2 -2
  49. package/src/duckdb/extension/parquet/include/parquet_reader.hpp +4 -0
  50. package/src/duckdb/extension/parquet/include/parquet_statistics.hpp +2 -2
  51. package/src/duckdb/extension/parquet/include/parquet_support.hpp +9 -11
  52. package/src/duckdb/extension/parquet/include/parquet_timestamp.hpp +1 -0
  53. package/src/duckdb/extension/parquet/include/parquet_writer.hpp +28 -5
  54. package/src/duckdb/extension/parquet/include/string_column_reader.hpp +1 -1
  55. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +2 -3
  56. package/src/duckdb/extension/parquet/include/zstd_file_system.hpp +2 -2
  57. package/src/duckdb/extension/parquet/parquet_extension.cpp +258 -40
  58. package/src/duckdb/extension/parquet/parquet_reader.cpp +10 -10
  59. package/src/duckdb/extension/parquet/parquet_statistics.cpp +25 -8
  60. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +6 -0
  61. package/src/duckdb/extension/parquet/parquet_writer.cpp +149 -31
  62. package/src/duckdb/extension/parquet/serialize_parquet.cpp +26 -0
  63. package/src/duckdb/extension/parquet/zstd_file_system.cpp +2 -2
  64. package/src/duckdb/src/catalog/catalog.cpp +3 -7
  65. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +8 -11
  66. package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +17 -41
  67. package/src/duckdb/src/catalog/catalog_entry/macro_catalog_entry.cpp +2 -10
  68. package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +4 -14
  69. package/src/duckdb/src/catalog/catalog_entry/sequence_catalog_entry.cpp +11 -28
  70. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +11 -42
  71. package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +7 -26
  72. package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +11 -27
  73. package/src/duckdb/src/catalog/catalog_entry.cpp +25 -1
  74. package/src/duckdb/src/catalog/catalog_search_path.cpp +5 -4
  75. package/src/duckdb/src/catalog/catalog_set.cpp +0 -63
  76. package/src/duckdb/src/catalog/default/default_functions.cpp +21 -0
  77. package/src/duckdb/src/catalog/dependency_manager.cpp +0 -36
  78. package/src/duckdb/src/common/adbc/adbc.cpp +541 -171
  79. package/src/duckdb/src/common/adbc/driver_manager.cpp +92 -39
  80. package/src/duckdb/src/common/adbc/nanoarrow/allocator.cpp +57 -0
  81. package/src/duckdb/src/common/adbc/nanoarrow/metadata.cpp +121 -0
  82. package/src/duckdb/src/common/adbc/nanoarrow/schema.cpp +474 -0
  83. package/src/duckdb/src/common/adbc/nanoarrow/single_batch_array_stream.cpp +84 -0
  84. package/src/duckdb/src/common/allocator.cpp +14 -2
  85. package/src/duckdb/src/common/arrow/appender/bool_data.cpp +44 -0
  86. package/src/duckdb/src/common/arrow/appender/list_data.cpp +78 -0
  87. package/src/duckdb/src/common/arrow/appender/map_data.cpp +86 -0
  88. package/src/duckdb/src/common/arrow/appender/struct_data.cpp +45 -0
  89. package/src/duckdb/src/common/arrow/appender/union_data.cpp +70 -0
  90. package/src/duckdb/src/common/arrow/arrow_appender.cpp +95 -666
  91. package/src/duckdb/src/common/arrow/arrow_converter.cpp +65 -37
  92. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +37 -42
  93. package/src/duckdb/src/common/assert.cpp +3 -0
  94. package/src/duckdb/src/common/constants.cpp +2 -1
  95. package/src/duckdb/src/common/enum_util.cpp +4838 -4429
  96. package/src/duckdb/src/common/enums/date_part_specifier.cpp +2 -0
  97. package/src/duckdb/src/common/enums/logical_operator_type.cpp +4 -0
  98. package/src/duckdb/src/common/enums/optimizer_type.cpp +2 -0
  99. package/src/duckdb/src/common/enums/physical_operator_type.cpp +4 -0
  100. package/src/duckdb/src/common/exception.cpp +2 -2
  101. package/src/duckdb/src/common/extra_type_info.cpp +483 -0
  102. package/src/duckdb/src/common/field_writer.cpp +1 -1
  103. package/src/duckdb/src/common/file_system.cpp +25 -6
  104. package/src/duckdb/src/common/filename_pattern.cpp +1 -1
  105. package/src/duckdb/src/common/gzip_file_system.cpp +7 -12
  106. package/src/duckdb/src/common/hive_partitioning.cpp +10 -6
  107. package/src/duckdb/src/common/http_state.cpp +78 -0
  108. package/src/duckdb/src/common/local_file_system.cpp +36 -28
  109. package/src/duckdb/src/common/multi_file_reader.cpp +193 -20
  110. package/src/duckdb/src/common/operator/cast_operators.cpp +92 -1
  111. package/src/duckdb/src/common/operator/string_cast.cpp +45 -8
  112. package/src/duckdb/src/common/radix_partitioning.cpp +26 -8
  113. package/src/duckdb/src/common/re2_regex.cpp +1 -1
  114. package/src/duckdb/src/common/row_operations/row_external.cpp +1 -1
  115. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +8 -3
  116. package/src/duckdb/src/common/serializer/binary_serializer.cpp +14 -9
  117. package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +0 -9
  118. package/src/duckdb/src/common/serializer/format_serializer.cpp +15 -0
  119. package/src/duckdb/src/common/sort/merge_sorter.cpp +9 -16
  120. package/src/duckdb/src/common/sort/partition_state.cpp +70 -50
  121. package/src/duckdb/src/common/sort/sort_state.cpp +1 -1
  122. package/src/duckdb/src/common/sort/sorted_block.cpp +1 -1
  123. package/src/duckdb/src/common/types/batched_data_collection.cpp +7 -2
  124. package/src/duckdb/src/common/types/bit.cpp +51 -0
  125. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +9 -6
  126. package/src/duckdb/src/common/types/column/column_data_collection.cpp +68 -2
  127. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +20 -6
  128. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  129. package/src/duckdb/src/common/types/data_chunk.cpp +2 -2
  130. package/src/duckdb/src/common/types/date.cpp +15 -0
  131. package/src/duckdb/src/common/types/hugeint.cpp +40 -0
  132. package/src/duckdb/src/common/types/interval.cpp +3 -0
  133. package/src/duckdb/src/common/types/list_segment.cpp +56 -198
  134. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +3 -9
  135. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +35 -5
  136. package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +2 -0
  137. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +2 -2
  138. package/src/duckdb/src/common/types/string_heap.cpp +4 -0
  139. package/src/duckdb/src/common/types/time.cpp +105 -0
  140. package/src/duckdb/src/common/types/timestamp.cpp +7 -0
  141. package/src/duckdb/src/common/types/uuid.cpp +2 -2
  142. package/src/duckdb/src/common/types/validity_mask.cpp +33 -0
  143. package/src/duckdb/src/common/types/value.cpp +65 -47
  144. package/src/duckdb/src/common/types/vector.cpp +52 -25
  145. package/src/duckdb/src/common/types.cpp +38 -724
  146. package/src/duckdb/src/common/virtual_file_system.cpp +142 -1
  147. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +26 -0
  148. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +5 -7
  149. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +64 -19
  150. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +30 -0
  151. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +1 -0
  152. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +83 -59
  153. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +4 -4
  154. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +4 -4
  155. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +5 -4
  156. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +8 -8
  157. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +4 -3
  158. package/src/duckdb/src/core_functions/function_list.cpp +10 -4
  159. package/src/duckdb/src/core_functions/scalar/date/date_diff.cpp +2 -0
  160. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +380 -89
  161. package/src/duckdb/src/core_functions/scalar/date/date_sub.cpp +2 -0
  162. package/src/duckdb/src/core_functions/scalar/date/date_trunc.cpp +4 -0
  163. package/src/duckdb/src/core_functions/scalar/date/epoch.cpp +10 -24
  164. package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +19 -4
  165. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +10 -0
  166. package/src/duckdb/src/core_functions/scalar/debug/vector_type.cpp +23 -0
  167. package/src/duckdb/src/core_functions/scalar/enum/enum_functions.cpp +16 -12
  168. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +314 -82
  169. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +4 -2
  170. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +22 -3
  171. package/src/duckdb/src/core_functions/scalar/map/map_entries.cpp +2 -2
  172. package/src/duckdb/src/core_functions/scalar/string/to_base.cpp +66 -0
  173. package/src/duckdb/src/core_functions/scalar/union/union_tag.cpp +1 -1
  174. package/src/duckdb/src/execution/aggregate_hashtable.cpp +40 -18
  175. package/src/duckdb/src/execution/column_binding_resolver.cpp +10 -7
  176. package/src/duckdb/src/execution/expression_executor/execute_parameter.cpp +2 -2
  177. package/src/duckdb/src/execution/expression_executor.cpp +1 -1
  178. package/src/duckdb/src/execution/index/art/art.cpp +219 -259
  179. package/src/duckdb/src/execution/index/art/art_key.cpp +0 -11
  180. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +11 -15
  181. package/src/duckdb/src/execution/index/art/iterator.cpp +130 -214
  182. package/src/duckdb/src/execution/index/art/leaf.cpp +300 -266
  183. package/src/duckdb/src/execution/index/art/node.cpp +211 -205
  184. package/src/duckdb/src/execution/index/art/node16.cpp +10 -19
  185. package/src/duckdb/src/execution/index/art/node256.cpp +10 -18
  186. package/src/duckdb/src/execution/index/art/node4.cpp +21 -23
  187. package/src/duckdb/src/execution/index/art/node48.cpp +10 -20
  188. package/src/duckdb/src/execution/index/art/prefix.cpp +308 -338
  189. package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
  190. package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +1 -0
  191. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +14 -11
  192. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +6 -4
  193. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +8 -3
  194. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +46 -34
  195. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +332 -1067
  196. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
  197. package/src/duckdb/src/execution/operator/helper/physical_batch_collector.cpp +12 -9
  198. package/src/duckdb/src/execution/operator/helper/physical_explain_analyze.cpp +2 -2
  199. package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +10 -8
  200. package/src/duckdb/src/execution/operator/helper/physical_materialized_collector.cpp +7 -5
  201. package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +7 -5
  202. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +449 -288
  203. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +2 -2
  204. package/src/duckdb/src/execution/operator/join/physical_comparison_join.cpp +1 -2
  205. package/src/duckdb/src/execution/operator/join/physical_delim_join.cpp +13 -6
  206. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +28 -15
  207. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +35 -17
  208. package/src/duckdb/src/execution/operator/join/physical_join.cpp +1 -1
  209. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +7 -4
  210. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +31 -10
  211. package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +41 -5
  212. package/src/duckdb/src/execution/operator/order/physical_order.cpp +7 -5
  213. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +7 -5
  214. package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +100 -13
  215. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +1 -1
  216. package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +20 -0
  217. package/src/duckdb/src/execution/operator/persistent/csv_rejects_table.cpp +48 -0
  218. package/src/duckdb/src/execution/operator/persistent/parallel_csv_reader.cpp +2 -3
  219. package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +14 -10
  220. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +11 -9
  221. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +9 -7
  222. package/src/duckdb/src/execution/operator/persistent/physical_fixed_batch_copy.cpp +14 -12
  223. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +11 -11
  224. package/src/duckdb/src/execution/operator/persistent/physical_update.cpp +4 -2
  225. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -1
  226. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +24 -27
  227. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +19 -0
  228. package/src/duckdb/src/execution/operator/scan/physical_table_scan.cpp +7 -12
  229. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +2 -1
  230. package/src/duckdb/src/execution/operator/schema/physical_create_art_index.cpp +198 -0
  231. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +2 -6
  232. package/src/duckdb/src/execution/operator/set/physical_cte.cpp +160 -0
  233. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +15 -5
  234. package/src/duckdb/src/execution/partitionable_hashtable.cpp +41 -6
  235. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +37 -6
  236. package/src/duckdb/src/execution/physical_operator.cpp +20 -16
  237. package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +43 -10
  238. package/src/duckdb/src/execution/physical_plan/plan_asof_join.cpp +57 -35
  239. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +32 -15
  240. package/src/duckdb/src/execution/physical_plan/plan_create_index.cpp +45 -34
  241. package/src/duckdb/src/execution/physical_plan/plan_cte.cpp +33 -0
  242. package/src/duckdb/src/execution/physical_plan/plan_delim_join.cpp +2 -5
  243. package/src/duckdb/src/execution/physical_plan/plan_get.cpp +2 -2
  244. package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +25 -4
  245. package/src/duckdb/src/execution/physical_plan_generator.cpp +6 -11
  246. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +290 -43
  247. package/src/duckdb/src/execution/window_executor.cpp +1284 -0
  248. package/src/duckdb/src/execution/window_segment_tree.cpp +408 -144
  249. package/src/duckdb/src/function/aggregate/distributive/count.cpp +2 -13
  250. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +6 -12
  251. package/src/duckdb/src/function/cast/bit_cast.cpp +34 -2
  252. package/src/duckdb/src/function/cast/blob_cast.cpp +3 -0
  253. package/src/duckdb/src/function/cast/numeric_casts.cpp +2 -0
  254. package/src/duckdb/src/function/cast/string_cast.cpp +2 -2
  255. package/src/duckdb/src/function/cast/time_casts.cpp +7 -6
  256. package/src/duckdb/src/function/function.cpp +3 -1
  257. package/src/duckdb/src/function/pragma/pragma_queries.cpp +5 -0
  258. package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +212 -0
  259. package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +249 -0
  260. package/src/duckdb/src/function/scalar/compressed_materialization_functions.cpp +29 -0
  261. package/src/duckdb/src/function/scalar/list/list_resize.cpp +162 -0
  262. package/src/duckdb/src/function/scalar/nested_functions.cpp +1 -0
  263. package/src/duckdb/src/function/scalar/operators/add.cpp +9 -0
  264. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +6 -3
  265. package/src/duckdb/src/function/scalar/string/like.cpp +12 -4
  266. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +39 -5
  267. package/src/duckdb/src/function/scalar_function.cpp +5 -20
  268. package/src/duckdb/src/function/table/arrow/arrow_duck_schema.cpp +57 -0
  269. package/src/duckdb/src/function/table/arrow.cpp +110 -88
  270. package/src/duckdb/src/function/table/arrow_conversion.cpp +86 -73
  271. package/src/duckdb/src/function/table/copy_csv.cpp +8 -1
  272. package/src/duckdb/src/function/table/read_csv.cpp +124 -21
  273. package/src/duckdb/src/function/table/system/test_all_types.cpp +48 -21
  274. package/src/duckdb/src/function/table/system_functions.cpp +1 -0
  275. package/src/duckdb/src/function/table/table_scan.cpp +44 -0
  276. package/src/duckdb/src/function/table/version/pragma_version.cpp +49 -2
  277. package/src/duckdb/src/function/table_function.cpp +4 -3
  278. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/index_catalog_entry.hpp +3 -3
  279. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/macro_catalog_entry.hpp +1 -4
  280. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +2 -5
  281. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +1 -6
  282. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +2 -13
  283. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +1 -4
  284. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/view_catalog_entry.hpp +2 -5
  285. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +14 -0
  286. package/src/duckdb/src/include/duckdb/catalog/catalog_set.hpp +0 -6
  287. package/src/duckdb/src/include/duckdb/common/adbc/adbc.h +1 -0
  288. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +4 -1
  289. package/src/duckdb/src/include/duckdb/common/adbc/single_batch_array_stream.hpp +16 -0
  290. package/src/duckdb/src/include/duckdb/common/allocator.hpp +2 -0
  291. package/src/duckdb/src/include/duckdb/common/arrow/appender/append_data.hpp +109 -0
  292. package/src/duckdb/src/include/duckdb/common/arrow/appender/bool_data.hpp +15 -0
  293. package/src/duckdb/src/include/duckdb/common/arrow/appender/enum_data.hpp +69 -0
  294. package/src/duckdb/src/include/duckdb/common/arrow/appender/list.hpp +8 -0
  295. package/src/duckdb/src/include/duckdb/common/arrow/appender/list_data.hpp +18 -0
  296. package/src/duckdb/src/include/duckdb/common/arrow/appender/map_data.hpp +18 -0
  297. package/src/duckdb/src/include/duckdb/common/arrow/appender/scalar_data.hpp +88 -0
  298. package/src/duckdb/src/include/duckdb/common/arrow/appender/struct_data.hpp +18 -0
  299. package/src/duckdb/src/include/duckdb/common/arrow/appender/union_data.hpp +21 -0
  300. package/src/duckdb/src/include/duckdb/common/arrow/appender/varchar_data.hpp +105 -0
  301. package/src/duckdb/src/include/duckdb/common/arrow/arrow_appender.hpp +9 -4
  302. package/src/duckdb/src/include/duckdb/common/arrow/arrow_converter.hpp +3 -5
  303. package/src/duckdb/src/include/duckdb/common/arrow/arrow_wrapper.hpp +5 -3
  304. package/src/duckdb/src/include/duckdb/common/arrow/nanoarrow/nanoarrow.h +462 -0
  305. package/src/duckdb/src/include/duckdb/common/arrow/nanoarrow/nanoarrow.hpp +14 -0
  306. package/src/duckdb/src/include/duckdb/common/arrow/result_arrow_wrapper.hpp +4 -0
  307. package/src/duckdb/src/include/duckdb/common/assert.hpp +1 -1
  308. package/src/duckdb/src/include/duckdb/common/bitpacking.hpp +70 -55
  309. package/src/duckdb/src/include/duckdb/common/bswap.hpp +42 -0
  310. package/src/duckdb/src/include/duckdb/common/case_insensitive_map.hpp +1 -0
  311. package/src/duckdb/src/include/duckdb/common/constants.hpp +4 -0
  312. package/src/duckdb/src/include/duckdb/common/dl.hpp +3 -1
  313. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +660 -580
  314. package/src/duckdb/src/include/duckdb/common/enums/cte_materialize.hpp +21 -0
  315. package/src/duckdb/src/include/duckdb/common/enums/date_part_specifier.hpp +9 -1
  316. package/src/duckdb/src/include/duckdb/common/enums/index_type.hpp +4 -3
  317. package/src/duckdb/src/include/duckdb/common/enums/joinref_type.hpp +2 -1
  318. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +2 -0
  319. package/src/duckdb/src/include/duckdb/common/enums/operator_result_type.hpp +5 -1
  320. package/src/duckdb/src/include/duckdb/common/enums/optimizer_type.hpp +2 -0
  321. package/src/duckdb/src/include/duckdb/common/enums/pending_execution_result.hpp +1 -1
  322. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +2 -0
  323. package/src/duckdb/src/include/duckdb/common/extra_operator_info.hpp +27 -0
  324. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +215 -0
  325. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +0 -4
  326. package/src/duckdb/src/include/duckdb/common/file_system.hpp +10 -8
  327. package/src/duckdb/src/include/duckdb/common/filename_pattern.hpp +1 -1
  328. package/src/duckdb/src/include/duckdb/common/helper.hpp +8 -3
  329. package/src/duckdb/src/include/duckdb/common/hive_partitioning.hpp +1 -1
  330. package/src/duckdb/src/include/duckdb/common/http_state.hpp +61 -28
  331. package/src/duckdb/src/include/duckdb/common/hugeint.hpp +15 -0
  332. package/src/duckdb/src/include/duckdb/common/index_vector.hpp +12 -0
  333. package/src/duckdb/src/include/duckdb/common/limits.hpp +52 -149
  334. package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +11 -5
  335. package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +12 -42
  336. package/src/duckdb/src/include/duckdb/common/mutex.hpp +3 -0
  337. package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +48 -0
  338. package/src/duckdb/src/include/duckdb/common/opener_file_system.hpp +6 -2
  339. package/src/duckdb/src/include/duckdb/common/operator/add.hpp +5 -2
  340. package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +65 -4
  341. package/src/duckdb/src/include/duckdb/common/operator/multiply.hpp +3 -2
  342. package/src/duckdb/src/include/duckdb/common/operator/numeric_cast.hpp +10 -0
  343. package/src/duckdb/src/include/duckdb/common/operator/string_cast.hpp +1 -1
  344. package/src/duckdb/src/include/duckdb/common/operator/subtract.hpp +3 -2
  345. package/src/duckdb/src/include/duckdb/common/radix.hpp +9 -20
  346. package/src/duckdb/src/include/duckdb/common/radix_partitioning.hpp +6 -21
  347. package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +3 -3
  348. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +35 -7
  349. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +14 -6
  350. package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_reader.hpp +0 -4
  351. package/src/duckdb/src/include/duckdb/common/serializer/deserialization_data.hpp +110 -0
  352. package/src/duckdb/src/include/duckdb/common/serializer/format_deserializer.hpp +94 -16
  353. package/src/duckdb/src/include/duckdb/common/serializer/format_serializer.hpp +73 -40
  354. package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +26 -4
  355. package/src/duckdb/src/include/duckdb/common/serializer.hpp +0 -7
  356. package/src/duckdb/src/include/duckdb/common/sort/partition_state.hpp +23 -8
  357. package/src/duckdb/src/include/duckdb/common/stack_checker.hpp +34 -0
  358. package/src/duckdb/src/include/duckdb/common/string_util.hpp +11 -0
  359. package/src/duckdb/src/include/duckdb/common/type_util.hpp +8 -0
  360. package/src/duckdb/src/include/duckdb/common/typedefs.hpp +8 -0
  361. package/src/duckdb/src/include/duckdb/common/types/batched_data_collection.hpp +3 -1
  362. package/src/duckdb/src/include/duckdb/common/types/bit.hpp +81 -0
  363. package/src/duckdb/src/include/duckdb/common/types/column/column_data_allocator.hpp +11 -1
  364. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection.hpp +12 -1
  365. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection_segment.hpp +3 -1
  366. package/src/duckdb/src/include/duckdb/common/types/column/column_data_scan_states.hpp +3 -1
  367. package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +1 -3
  368. package/src/duckdb/src/include/duckdb/common/types/date.hpp +9 -5
  369. package/src/duckdb/src/include/duckdb/common/types/datetime.hpp +46 -3
  370. package/src/duckdb/src/include/duckdb/common/types/list_segment.hpp +11 -15
  371. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +5 -2
  372. package/src/duckdb/src/include/duckdb/common/types/row/row_data_collection_scanner.hpp +5 -1
  373. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_collection.hpp +1 -0
  374. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +3 -0
  375. package/src/duckdb/src/include/duckdb/common/types/string_heap.hpp +3 -0
  376. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +9 -0
  377. package/src/duckdb/src/include/duckdb/common/types/time.hpp +5 -0
  378. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +16 -10
  379. package/src/duckdb/src/include/duckdb/common/types/value.hpp +7 -2
  380. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +7 -0
  381. package/src/duckdb/src/include/duckdb/common/types.hpp +6 -25
  382. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +7 -2
  383. package/src/duckdb/src/include/duckdb/common/virtual_file_system.hpp +40 -97
  384. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +4 -4
  385. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +3 -1
  386. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic_functions.hpp +3 -1
  387. package/src/duckdb/src/include/duckdb/core_functions/aggregate/distributive_functions.hpp +4 -2
  388. package/src/duckdb/src/include/duckdb/core_functions/aggregate/holistic_functions.hpp +3 -1
  389. package/src/duckdb/src/include/duckdb/core_functions/aggregate/nested_functions.hpp +3 -1
  390. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +1 -0
  391. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +3 -3
  392. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression_functions.hpp +3 -1
  393. package/src/duckdb/src/include/duckdb/core_functions/scalar/bit_functions.hpp +3 -1
  394. package/src/duckdb/src/include/duckdb/core_functions/scalar/blob_functions.hpp +3 -1
  395. package/src/duckdb/src/include/duckdb/core_functions/scalar/date_functions.hpp +40 -11
  396. package/src/duckdb/src/include/duckdb/core_functions/scalar/debug_functions.hpp +27 -0
  397. package/src/duckdb/src/include/duckdb/core_functions/scalar/enum_functions.hpp +3 -1
  398. package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +3 -1
  399. package/src/duckdb/src/include/duckdb/core_functions/scalar/list_functions.hpp +7 -5
  400. package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +3 -1
  401. package/src/duckdb/src/include/duckdb/core_functions/scalar/math_functions.hpp +6 -4
  402. package/src/duckdb/src/include/duckdb/core_functions/scalar/operators_functions.hpp +4 -2
  403. package/src/duckdb/src/include/duckdb/core_functions/scalar/random_functions.hpp +3 -1
  404. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +12 -1
  405. package/src/duckdb/src/include/duckdb/core_functions/scalar/struct_functions.hpp +3 -1
  406. package/src/duckdb/src/include/duckdb/core_functions/scalar/union_functions.hpp +3 -1
  407. package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +21 -3
  408. package/src/duckdb/src/include/duckdb/execution/executor.hpp +3 -0
  409. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +13 -12
  410. package/src/duckdb/src/include/duckdb/execution/index/art/art_key.hpp +0 -1
  411. package/src/duckdb/src/include/duckdb/execution/index/art/fixed_size_allocator.hpp +22 -24
  412. package/src/duckdb/src/include/duckdb/execution/index/art/iterator.hpp +32 -28
  413. package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +46 -51
  414. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +134 -53
  415. package/src/duckdb/src/include/duckdb/execution/index/art/node16.hpp +5 -7
  416. package/src/duckdb/src/include/duckdb/execution/index/art/node256.hpp +5 -7
  417. package/src/duckdb/src/include/duckdb/execution/index/art/node4.hpp +7 -9
  418. package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +5 -7
  419. package/src/duckdb/src/include/duckdb/execution/index/art/prefix.hpp +63 -52
  420. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_hash_aggregate.hpp +3 -3
  421. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_perfecthash_aggregate.hpp +1 -1
  422. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_ungrouped_aggregate.hpp +3 -3
  423. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_window.hpp +2 -2
  424. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_batch_collector.hpp +2 -2
  425. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_explain_analyze.hpp +1 -1
  426. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit.hpp +1 -1
  427. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_materialized_collector.hpp +1 -1
  428. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_vacuum.hpp +2 -2
  429. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_asof_join.hpp +5 -12
  430. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_blockwise_nl_join.hpp +1 -1
  431. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_delim_join.hpp +2 -2
  432. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_hash_join.hpp +2 -2
  433. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_iejoin.hpp +3 -3
  434. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_nested_loop_join.hpp +2 -2
  435. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp +3 -3
  436. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_range_join.hpp +12 -1
  437. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_order.hpp +2 -2
  438. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_top_n.hpp +2 -2
  439. package/src/duckdb/src/include/duckdb/execution/operator/persistent/base_csv_reader.hpp +2 -2
  440. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_line_info.hpp +4 -3
  441. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_reader_options.hpp +10 -1
  442. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_rejects_table.hpp +36 -0
  443. package/src/duckdb/src/include/duckdb/execution/operator/persistent/parallel_csv_reader.hpp +1 -1
  444. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_copy_to_file.hpp +2 -2
  445. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +2 -2
  446. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +2 -2
  447. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_fixed_batch_copy.hpp +2 -2
  448. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_insert.hpp +2 -2
  449. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_update.hpp +1 -1
  450. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +10 -0
  451. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_table_scan.hpp +5 -5
  452. package/src/duckdb/src/include/duckdb/execution/operator/schema/{physical_create_index.hpp → physical_create_art_index.hpp} +14 -7
  453. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +62 -0
  454. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +8 -2
  455. package/src/duckdb/src/include/duckdb/execution/partitionable_hashtable.hpp +5 -1
  456. package/src/duckdb/src/include/duckdb/execution/perfect_aggregate_hashtable.hpp +4 -2
  457. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +6 -5
  458. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +11 -0
  459. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +6 -2
  460. package/src/duckdb/src/include/duckdb/execution/radix_partitioned_hashtable.hpp +10 -3
  461. package/src/duckdb/src/include/duckdb/execution/window_executor.hpp +313 -0
  462. package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +79 -63
  463. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +12 -4
  464. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +2 -2
  465. package/src/duckdb/src/include/duckdb/function/built_in_functions.hpp +1 -0
  466. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -1
  467. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +81 -0
  468. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +3 -0
  469. package/src/duckdb/src/include/duckdb/function/scalar/compressed_materialization_functions.hpp +49 -0
  470. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +1 -1
  471. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +5 -0
  472. package/src/duckdb/src/include/duckdb/function/scalar/strftime_format.hpp +8 -0
  473. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +2 -0
  474. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +8 -3
  475. package/src/duckdb/src/include/duckdb/function/scalar_macro_function.hpp +3 -0
  476. package/src/duckdb/src/include/duckdb/function/table/arrow/arrow_duck_schema.hpp +99 -0
  477. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +6 -36
  478. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +7 -0
  479. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +5 -1
  480. package/src/duckdb/src/include/duckdb/function/table_function.hpp +8 -0
  481. package/src/duckdb/src/include/duckdb/function/table_macro_function.hpp +3 -0
  482. package/src/duckdb/src/include/duckdb/function/udf_function.hpp +2 -1
  483. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +1 -1
  484. package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +4 -3
  485. package/src/duckdb/src/include/duckdb/main/chunk_scan_state/query_result.hpp +29 -0
  486. package/src/duckdb/src/include/duckdb/main/chunk_scan_state.hpp +43 -0
  487. package/src/duckdb/src/include/duckdb/main/client_config.hpp +5 -2
  488. package/src/duckdb/src/include/duckdb/main/client_context.hpp +16 -14
  489. package/src/duckdb/src/include/duckdb/main/client_properties.hpp +25 -0
  490. package/src/duckdb/src/include/duckdb/main/config.hpp +3 -1
  491. package/src/duckdb/src/include/duckdb/main/connection.hpp +1 -2
  492. package/src/duckdb/src/include/duckdb/main/extension/generated_extension_loader.hpp +22 -0
  493. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +8 -0
  494. package/src/duckdb/src/include/duckdb/main/extension_util.hpp +4 -0
  495. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +5 -0
  496. package/src/duckdb/src/include/duckdb/main/prepared_statement.hpp +73 -5
  497. package/src/duckdb/src/include/duckdb/main/prepared_statement_data.hpp +6 -6
  498. package/src/duckdb/src/include/duckdb/main/query_result.hpp +2 -27
  499. package/src/duckdb/src/include/duckdb/main/relation/aggregate_relation.hpp +4 -1
  500. package/src/duckdb/src/include/duckdb/main/relation/cross_product_relation.hpp +4 -1
  501. package/src/duckdb/src/include/duckdb/main/relation/join_relation.hpp +5 -2
  502. package/src/duckdb/src/include/duckdb/main/relation.hpp +4 -2
  503. package/src/duckdb/src/include/duckdb/main/settings.hpp +41 -11
  504. package/src/duckdb/src/include/duckdb/optimizer/column_binding_replacer.hpp +47 -0
  505. package/src/duckdb/src/include/duckdb/optimizer/compressed_materialization.hpp +132 -0
  506. package/src/duckdb/src/include/duckdb/optimizer/deliminator.hpp +13 -16
  507. package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +7 -0
  508. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +38 -64
  509. package/src/duckdb/src/include/duckdb/optimizer/join_order/cost_model.hpp +37 -0
  510. package/src/duckdb/src/include/duckdb/optimizer/join_order/estimated_properties.hpp +10 -1
  511. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_node.hpp +14 -29
  512. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_order_optimizer.hpp +8 -22
  513. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_relation.hpp +1 -12
  514. package/src/duckdb/src/include/duckdb/optimizer/join_order/plan_enumerator.hpp +89 -0
  515. package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph.hpp +19 -30
  516. package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph_manager.hpp +113 -0
  517. package/src/duckdb/src/include/duckdb/optimizer/join_order/relation_manager.hpp +73 -0
  518. package/src/duckdb/src/include/duckdb/optimizer/join_order/relation_statistics_helper.hpp +73 -0
  519. package/src/duckdb/src/include/duckdb/optimizer/matcher/set_matcher.hpp +13 -0
  520. package/src/duckdb/src/include/duckdb/optimizer/optimizer.hpp +3 -0
  521. package/src/duckdb/src/include/duckdb/optimizer/remove_duplicate_groups.hpp +40 -0
  522. package/src/duckdb/src/include/duckdb/optimizer/statistics_propagator.hpp +11 -3
  523. package/src/duckdb/src/include/duckdb/optimizer/topn_optimizer.hpp +2 -0
  524. package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +2 -3
  525. package/src/duckdb/src/include/duckdb/parallel/pipeline_executor.hpp +3 -2
  526. package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +9 -1
  527. package/src/duckdb/src/include/duckdb/parser/column_definition.hpp +6 -5
  528. package/src/duckdb/src/include/duckdb/parser/column_list.hpp +4 -0
  529. package/src/duckdb/src/include/duckdb/parser/common_table_expression_info.hpp +2 -0
  530. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +5 -0
  531. package/src/duckdb/src/include/duckdb/parser/constraints/check_constraint.hpp +3 -0
  532. package/src/duckdb/src/include/duckdb/parser/constraints/foreign_key_constraint.hpp +6 -0
  533. package/src/duckdb/src/include/duckdb/parser/constraints/not_null_constraint.hpp +3 -0
  534. package/src/duckdb/src/include/duckdb/parser/constraints/unique_constraint.hpp +6 -0
  535. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +4 -1
  536. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  537. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +4 -1
  538. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +4 -1
  539. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +4 -1
  540. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +4 -1
  541. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  542. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +4 -1
  543. package/src/duckdb/src/include/duckdb/parser/expression/default_expression.hpp +1 -0
  544. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +4 -1
  545. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +4 -1
  546. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +21 -4
  547. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +18 -2
  548. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +4 -1
  549. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  550. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  551. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +4 -1
  552. package/src/duckdb/src/include/duckdb/parser/group_by_node.hpp +11 -0
  553. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +12 -1
  554. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +66 -2
  555. package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +8 -1
  556. package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_info.hpp +8 -1
  557. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_index_info.hpp +9 -1
  558. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +9 -2
  559. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_macro_info.hpp +3 -0
  560. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_schema_info.hpp +3 -0
  561. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_sequence_info.hpp +3 -0
  562. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_info.hpp +3 -0
  563. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_type_info.hpp +3 -0
  564. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +3 -0
  565. package/src/duckdb/src/include/duckdb/parser/parsed_data/detach_info.hpp +7 -0
  566. package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +7 -0
  567. package/src/duckdb/src/include/duckdb/parser/parsed_data/exported_table_data.hpp +7 -0
  568. package/src/duckdb/src/include/duckdb/parser/parsed_data/load_info.hpp +13 -3
  569. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +22 -0
  570. package/src/duckdb/src/include/duckdb/parser/parsed_data/pragma_info.hpp +10 -0
  571. package/src/duckdb/src/include/duckdb/parser/parsed_data/show_select_info.hpp +7 -0
  572. package/src/duckdb/src/include/duckdb/parser/parsed_data/transaction_info.hpp +10 -0
  573. package/src/duckdb/src/include/duckdb/parser/parsed_data/vacuum_info.hpp +10 -0
  574. package/src/duckdb/src/include/duckdb/parser/parser.hpp +4 -0
  575. package/src/duckdb/src/include/duckdb/parser/query_node/cte_node.hpp +54 -0
  576. package/src/duckdb/src/include/duckdb/parser/query_node/list.hpp +1 -0
  577. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -1
  578. package/src/duckdb/src/include/duckdb/parser/statement/execute_statement.hpp +1 -1
  579. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +1 -0
  580. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  581. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +3 -0
  582. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +1 -0
  583. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +23 -26
  584. package/src/duckdb/src/include/duckdb/planner/binder.hpp +12 -5
  585. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +0 -8
  586. package/src/duckdb/src/include/duckdb/planner/bound_parameter_map.hpp +2 -1
  587. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +6 -0
  588. package/src/duckdb/src/include/duckdb/planner/bound_tokens.hpp +1 -0
  589. package/src/duckdb/src/include/duckdb/planner/column_binding.hpp +9 -0
  590. package/src/duckdb/src/include/duckdb/planner/constraints/bound_unique_constraint.hpp +3 -3
  591. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +3 -0
  592. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +6 -0
  593. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +6 -0
  594. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +6 -0
  595. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +3 -0
  596. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +3 -0
  597. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +3 -0
  598. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +3 -0
  599. package/src/duckdb/src/include/duckdb/planner/expression/bound_default_expression.hpp +3 -0
  600. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +4 -0
  601. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +3 -1
  602. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +3 -0
  603. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +3 -0
  604. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_data.hpp +24 -6
  605. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +9 -2
  606. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +3 -0
  607. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +3 -0
  608. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +3 -0
  609. package/src/duckdb/src/include/duckdb/planner/expression/list.hpp +1 -0
  610. package/src/duckdb/src/include/duckdb/planner/expression.hpp +3 -0
  611. package/src/duckdb/src/include/duckdb/planner/expression_binder/lateral_binder.hpp +0 -2
  612. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +13 -1
  613. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +4 -0
  614. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +2 -0
  615. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +4 -0
  616. package/src/duckdb/src/include/duckdb/planner/joinside.hpp +3 -0
  617. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +3 -2
  618. package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +1 -2
  619. package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +3 -3
  620. package/src/duckdb/src/include/duckdb/planner/operator/logical_aggregate.hpp +3 -0
  621. package/src/duckdb/src/include/duckdb/planner/operator/logical_any_join.hpp +3 -0
  622. package/src/duckdb/src/include/duckdb/planner/operator/logical_column_data_get.hpp +4 -0
  623. package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +12 -7
  624. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +2 -0
  625. package/src/duckdb/src/include/duckdb/planner/operator/logical_create.hpp +9 -6
  626. package/src/duckdb/src/include/duckdb/planner/operator/logical_create_index.hpp +12 -23
  627. package/src/duckdb/src/include/duckdb/planner/operator/logical_create_table.hpp +10 -6
  628. package/src/duckdb/src/include/duckdb/planner/operator/logical_cross_product.hpp +3 -0
  629. package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +9 -2
  630. package/src/duckdb/src/include/duckdb/planner/operator/logical_delete.hpp +7 -0
  631. package/src/duckdb/src/include/duckdb/planner/operator/logical_delim_get.hpp +3 -0
  632. package/src/duckdb/src/include/duckdb/planner/operator/logical_dependent_join.hpp +43 -0
  633. package/src/duckdb/src/include/duckdb/planner/operator/logical_distinct.hpp +6 -10
  634. package/src/duckdb/src/include/duckdb/planner/operator/logical_dummy_scan.hpp +2 -0
  635. package/src/duckdb/src/include/duckdb/planner/operator/logical_empty_result.hpp +2 -0
  636. package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +4 -0
  637. package/src/duckdb/src/include/duckdb/planner/operator/logical_expression_get.hpp +3 -0
  638. package/src/duckdb/src/include/duckdb/planner/operator/logical_extension_operator.hpp +8 -0
  639. package/src/duckdb/src/include/duckdb/planner/operator/logical_filter.hpp +3 -0
  640. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +11 -1
  641. package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +6 -0
  642. package/src/duckdb/src/include/duckdb/planner/operator/logical_limit.hpp +3 -0
  643. package/src/duckdb/src/include/duckdb/planner/operator/logical_limit_percent.hpp +3 -0
  644. package/src/duckdb/src/include/duckdb/planner/operator/logical_materialized_cte.hpp +52 -0
  645. package/src/duckdb/src/include/duckdb/planner/operator/logical_order.hpp +7 -35
  646. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +6 -0
  647. package/src/duckdb/src/include/duckdb/planner/operator/logical_positional_join.hpp +3 -0
  648. package/src/duckdb/src/include/duckdb/planner/operator/logical_projection.hpp +3 -0
  649. package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +10 -7
  650. package/src/duckdb/src/include/duckdb/planner/operator/logical_reset.hpp +4 -0
  651. package/src/duckdb/src/include/duckdb/planner/operator/logical_sample.hpp +6 -0
  652. package/src/duckdb/src/include/duckdb/planner/operator/logical_set.hpp +4 -0
  653. package/src/duckdb/src/include/duckdb/planner/operator/logical_set_operation.hpp +4 -0
  654. package/src/duckdb/src/include/duckdb/planner/operator/logical_show.hpp +3 -0
  655. package/src/duckdb/src/include/duckdb/planner/operator/logical_simple.hpp +3 -0
  656. package/src/duckdb/src/include/duckdb/planner/operator/logical_top_n.hpp +4 -0
  657. package/src/duckdb/src/include/duckdb/planner/operator/logical_unnest.hpp +2 -0
  658. package/src/duckdb/src/include/duckdb/planner/operator/logical_update.hpp +6 -0
  659. package/src/duckdb/src/include/duckdb/planner/operator/logical_window.hpp +3 -0
  660. package/src/duckdb/src/include/duckdb/planner/operator_extension.hpp +1 -0
  661. package/src/duckdb/src/include/duckdb/planner/planner.hpp +4 -3
  662. package/src/duckdb/src/include/duckdb/planner/query_node/bound_cte_node.hpp +44 -0
  663. package/src/duckdb/src/include/duckdb/planner/query_node/list.hpp +1 -0
  664. package/src/duckdb/src/include/duckdb/planner/subquery/flatten_dependent_join.hpp +2 -2
  665. package/src/duckdb/src/include/duckdb/planner/subquery/has_correlated_expressions.hpp +4 -1
  666. package/src/duckdb/src/include/duckdb/planner/subquery/recursive_dependent_join_planner.hpp +31 -0
  667. package/src/duckdb/src/include/duckdb/planner/subquery/rewrite_correlated_expressions.hpp +8 -2
  668. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +7 -1
  669. package/src/duckdb/src/include/duckdb/planner/tableref/bound_cteref.hpp +5 -2
  670. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  671. package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +2 -1
  672. package/src/duckdb/src/include/duckdb/storage/block.hpp +27 -4
  673. package/src/duckdb/src/include/duckdb/storage/block_manager.hpp +11 -11
  674. package/src/duckdb/src/include/duckdb/storage/checkpoint/row_group_writer.hpp +5 -5
  675. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_reader.hpp +2 -2
  676. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +3 -3
  677. package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +19 -16
  678. package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +1 -1
  679. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +2 -2
  680. package/src/duckdb/src/include/duckdb/storage/in_memory_block_manager.hpp +2 -2
  681. package/src/duckdb/src/include/duckdb/storage/index.hpp +2 -2
  682. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_manager.hpp +88 -0
  683. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_reader.hpp +54 -0
  684. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_writer.hpp +45 -0
  685. package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +22 -0
  686. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +2 -2
  687. package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +8 -5
  688. package/src/duckdb/src/include/duckdb/storage/statistics/string_stats.hpp +4 -0
  689. package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +2 -2
  690. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +2 -2
  691. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +3 -0
  692. package/src/duckdb/src/include/duckdb/storage/table/persistent_table_data.hpp +2 -2
  693. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +4 -3
  694. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +3 -3
  695. package/src/duckdb/src/include/duckdb/storage/table/row_group_segment_tree.hpp +2 -2
  696. package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +1 -1
  697. package/src/duckdb/src/include/duckdb/storage/table_io_manager.hpp +3 -0
  698. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +3 -4
  699. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +2 -3
  700. package/src/duckdb/src/include/duckdb/verification/prepared_statement_verifier.hpp +1 -1
  701. package/src/duckdb/src/include/duckdb.h +86 -1
  702. package/src/duckdb/src/main/appender.cpp +3 -1
  703. package/src/duckdb/src/main/attached_database.cpp +2 -2
  704. package/src/duckdb/src/main/capi/arrow-c.cpp +196 -8
  705. package/src/duckdb/src/main/capi/duckdb-c.cpp +16 -0
  706. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +1 -1
  707. package/src/duckdb/src/main/capi/pending-c.cpp +23 -0
  708. package/src/duckdb/src/main/capi/prepared-c.cpp +106 -28
  709. package/src/duckdb/src/main/capi/result-c.cpp +3 -1
  710. package/src/duckdb/src/main/chunk_scan_state/query_result.cpp +53 -0
  711. package/src/duckdb/src/main/chunk_scan_state.cpp +48 -0
  712. package/src/duckdb/src/main/client_context.cpp +42 -19
  713. package/src/duckdb/src/main/client_verify.cpp +17 -0
  714. package/src/duckdb/src/main/config.cpp +4 -1
  715. package/src/duckdb/src/main/database.cpp +2 -11
  716. package/src/duckdb/src/main/db_instance_cache.cpp +14 -6
  717. package/src/duckdb/src/main/extension/extension_helper.cpp +107 -88
  718. package/src/duckdb/src/main/extension/extension_install.cpp +10 -1
  719. package/src/duckdb/src/main/extension/extension_load.cpp +26 -6
  720. package/src/duckdb/src/main/extension/extension_util.cpp +16 -0
  721. package/src/duckdb/src/main/pending_query_result.cpp +9 -1
  722. package/src/duckdb/src/main/prepared_statement.cpp +38 -11
  723. package/src/duckdb/src/main/prepared_statement_data.cpp +23 -18
  724. package/src/duckdb/src/main/query_result.cpp +0 -21
  725. package/src/duckdb/src/main/relation/aggregate_relation.cpp +20 -10
  726. package/src/duckdb/src/main/relation/cross_product_relation.cpp +4 -3
  727. package/src/duckdb/src/main/relation/join_relation.cpp +6 -6
  728. package/src/duckdb/src/main/relation.cpp +10 -9
  729. package/src/duckdb/src/main/settings/settings.cpp +79 -33
  730. package/src/duckdb/src/optimizer/column_binding_replacer.cpp +43 -0
  731. package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +2 -4
  732. package/src/duckdb/src/optimizer/compressed_materialization/compress_aggregate.cpp +140 -0
  733. package/src/duckdb/src/optimizer/compressed_materialization/compress_distinct.cpp +42 -0
  734. package/src/duckdb/src/optimizer/compressed_materialization/compress_order.cpp +65 -0
  735. package/src/duckdb/src/optimizer/compressed_materialization.cpp +477 -0
  736. package/src/duckdb/src/optimizer/deliminator.cpp +180 -323
  737. package/src/duckdb/src/optimizer/filter_pushdown.cpp +23 -6
  738. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +79 -325
  739. package/src/duckdb/src/optimizer/join_order/cost_model.cpp +19 -0
  740. package/src/duckdb/src/optimizer/join_order/estimated_properties.cpp +7 -0
  741. package/src/duckdb/src/optimizer/join_order/join_node.cpp +5 -37
  742. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +48 -1047
  743. package/src/duckdb/src/optimizer/join_order/join_relation_set.cpp +2 -6
  744. package/src/duckdb/src/optimizer/join_order/plan_enumerator.cpp +552 -0
  745. package/src/duckdb/src/optimizer/join_order/query_graph.cpp +52 -41
  746. package/src/duckdb/src/optimizer/join_order/query_graph_manager.cpp +409 -0
  747. package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +356 -0
  748. package/src/duckdb/src/optimizer/join_order/relation_statistics_helper.cpp +351 -0
  749. package/src/duckdb/src/optimizer/optimizer.cpp +49 -14
  750. package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +5 -5
  751. package/src/duckdb/src/optimizer/pushdown/pushdown_get.cpp +0 -1
  752. package/src/duckdb/src/optimizer/pushdown/pushdown_projection.cpp +34 -7
  753. package/src/duckdb/src/optimizer/remove_duplicate_groups.cpp +127 -0
  754. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +4 -0
  755. package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +154 -15
  756. package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +65 -8
  757. package/src/duckdb/src/optimizer/statistics/operator/propagate_order.cpp +1 -1
  758. package/src/duckdb/src/optimizer/statistics_propagator.cpp +7 -5
  759. package/src/duckdb/src/optimizer/topn_optimizer.cpp +27 -10
  760. package/src/duckdb/src/optimizer/unnest_rewriter.cpp +3 -5
  761. package/src/duckdb/src/parallel/executor.cpp +25 -1
  762. package/src/duckdb/src/parallel/pipeline.cpp +0 -17
  763. package/src/duckdb/src/parallel/pipeline_executor.cpp +33 -13
  764. package/src/duckdb/src/parallel/pipeline_finish_event.cpp +55 -1
  765. package/src/duckdb/src/parallel/task_scheduler.cpp +18 -2
  766. package/src/duckdb/src/parser/column_definition.cpp +20 -32
  767. package/src/duckdb/src/parser/column_list.cpp +8 -0
  768. package/src/duckdb/src/parser/constraints/foreign_key_constraint.cpp +3 -0
  769. package/src/duckdb/src/parser/constraints/unique_constraint.cpp +3 -0
  770. package/src/duckdb/src/parser/expression/between_expression.cpp +3 -15
  771. package/src/duckdb/src/parser/expression/case_expression.cpp +0 -25
  772. package/src/duckdb/src/parser/expression/cast_expression.cpp +3 -14
  773. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -13
  774. package/src/duckdb/src/parser/expression/columnref_expression.cpp +3 -12
  775. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -13
  776. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +0 -12
  777. package/src/duckdb/src/parser/expression/constant_expression.cpp +3 -11
  778. package/src/duckdb/src/parser/expression/default_expression.cpp +0 -4
  779. package/src/duckdb/src/parser/expression/function_expression.cpp +3 -32
  780. package/src/duckdb/src/parser/expression/lambda_expression.cpp +4 -14
  781. package/src/duckdb/src/parser/expression/operator_expression.cpp +0 -12
  782. package/src/duckdb/src/parser/expression/parameter_expression.cpp +7 -19
  783. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +4 -11
  784. package/src/duckdb/src/parser/expression/star_expression.cpp +0 -19
  785. package/src/duckdb/src/parser/expression/subquery_expression.cpp +0 -18
  786. package/src/duckdb/src/parser/expression/window_expression.cpp +3 -39
  787. package/src/duckdb/src/parser/parsed_data/alter_info.cpp +5 -2
  788. package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +38 -0
  789. package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +17 -1
  790. package/src/duckdb/src/parser/parsed_data/create_sequence_info.cpp +2 -0
  791. package/src/duckdb/src/parser/parsed_data/detach_info.cpp +1 -1
  792. package/src/duckdb/src/parser/parsed_data/drop_info.cpp +1 -1
  793. package/src/duckdb/src/parser/parsed_data/sample_options.cpp +0 -18
  794. package/src/duckdb/src/parser/parsed_data/transaction_info.cpp +4 -1
  795. package/src/duckdb/src/parser/parsed_data/vacuum_info.cpp +1 -1
  796. package/src/duckdb/src/parser/parsed_expression.cpp +0 -70
  797. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +7 -0
  798. package/src/duckdb/src/parser/parser.cpp +62 -36
  799. package/src/duckdb/src/parser/query_node/cte_node.cpp +58 -0
  800. package/src/duckdb/src/parser/query_node/recursive_cte_node.cpp +0 -19
  801. package/src/duckdb/src/parser/query_node/select_node.cpp +0 -29
  802. package/src/duckdb/src/parser/query_node/set_operation_node.cpp +0 -15
  803. package/src/duckdb/src/parser/query_node.cpp +15 -47
  804. package/src/duckdb/src/parser/result_modifier.cpp +0 -87
  805. package/src/duckdb/src/parser/statement/execute_statement.cpp +2 -2
  806. package/src/duckdb/src/parser/statement/select_statement.cpp +0 -10
  807. package/src/duckdb/src/parser/tableref/basetableref.cpp +0 -19
  808. package/src/duckdb/src/parser/tableref/emptytableref.cpp +0 -4
  809. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +0 -15
  810. package/src/duckdb/src/parser/tableref/joinref.cpp +3 -23
  811. package/src/duckdb/src/parser/tableref/pivotref.cpp +6 -45
  812. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -13
  813. package/src/duckdb/src/parser/tableref/table_function.cpp +0 -15
  814. package/src/duckdb/src/parser/tableref.cpp +0 -44
  815. package/src/duckdb/src/parser/transform/constraint/transform_constraint.cpp +55 -38
  816. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +13 -4
  817. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +55 -3
  818. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +2 -0
  819. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +3 -0
  820. package/src/duckdb/src/parser/transform/expression/transform_multi_assign_reference.cpp +44 -0
  821. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +45 -26
  822. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +19 -1
  823. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +16 -1
  824. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +13 -0
  825. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +32 -17
  826. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +1 -1
  827. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +6 -1
  828. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +6 -1
  829. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -2
  830. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +14 -11
  831. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +28 -6
  832. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +11 -2
  833. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +6 -1
  834. package/src/duckdb/src/parser/transformer.cpp +44 -25
  835. package/src/duckdb/src/planner/binder/expression/bind_macro_expression.cpp +5 -3
  836. package/src/duckdb/src/planner/binder/expression/bind_parameter_expression.cpp +10 -10
  837. package/src/duckdb/src/planner/binder/query_node/bind_cte_node.cpp +64 -0
  838. package/src/duckdb/src/planner/binder/query_node/plan_cte_node.cpp +26 -0
  839. package/src/duckdb/src/planner/binder/query_node/plan_recursive_cte_node.cpp +5 -5
  840. package/src/duckdb/src/planner/binder/query_node/plan_setop.cpp +4 -4
  841. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +36 -33
  842. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +14 -52
  843. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +0 -23
  844. package/src/duckdb/src/planner/binder/statement/bind_execute.cpp +13 -7
  845. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +29 -4
  846. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +24 -5
  847. package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +32 -5
  848. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +116 -50
  849. package/src/duckdb/src/planner/binder/tableref/plan_cteref.cpp +1 -1
  850. package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +67 -31
  851. package/src/duckdb/src/planner/binder/tableref/plan_subqueryref.cpp +3 -3
  852. package/src/duckdb/src/planner/binder.cpp +44 -31
  853. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +24 -1
  854. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +4 -0
  855. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +13 -8
  856. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +22 -0
  857. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +28 -20
  858. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +48 -4
  859. package/src/duckdb/src/planner/expression_binder/lateral_binder.cpp +4 -31
  860. package/src/duckdb/src/planner/expression_binder.cpp +23 -0
  861. package/src/duckdb/src/planner/expression_iterator.cpp +6 -0
  862. package/src/duckdb/src/planner/logical_operator.cpp +19 -7
  863. package/src/duckdb/src/planner/logical_operator_visitor.cpp +5 -6
  864. package/src/duckdb/src/planner/operator/logical_comparison_join.cpp +4 -2
  865. package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +8 -0
  866. package/src/duckdb/src/planner/operator/logical_create.cpp +14 -0
  867. package/src/duckdb/src/planner/operator/logical_create_index.cpp +36 -7
  868. package/src/duckdb/src/planner/operator/logical_create_table.cpp +16 -0
  869. package/src/duckdb/src/planner/operator/logical_cteref.cpp +3 -1
  870. package/src/duckdb/src/planner/operator/logical_delete.cpp +9 -2
  871. package/src/duckdb/src/planner/operator/logical_dependent_join.cpp +26 -0
  872. package/src/duckdb/src/planner/operator/logical_distinct.cpp +13 -0
  873. package/src/duckdb/src/planner/operator/logical_explain.cpp +1 -1
  874. package/src/duckdb/src/planner/operator/logical_extension_operator.cpp +39 -0
  875. package/src/duckdb/src/planner/operator/logical_get.cpp +82 -4
  876. package/src/duckdb/src/planner/operator/logical_insert.cpp +8 -2
  877. package/src/duckdb/src/planner/operator/logical_materialized_cte.cpp +22 -0
  878. package/src/duckdb/src/planner/operator/logical_order.cpp +39 -0
  879. package/src/duckdb/src/planner/operator/logical_pivot.cpp +3 -0
  880. package/src/duckdb/src/planner/operator/logical_recursive_cte.cpp +5 -5
  881. package/src/duckdb/src/planner/operator/logical_sample.cpp +3 -0
  882. package/src/duckdb/src/planner/operator/logical_update.cpp +8 -2
  883. package/src/duckdb/src/planner/parsed_data/bound_create_table_info.cpp +4 -2
  884. package/src/duckdb/src/planner/planner.cpp +18 -7
  885. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +90 -38
  886. package/src/duckdb/src/planner/subquery/has_correlated_expressions.cpp +22 -7
  887. package/src/duckdb/src/planner/subquery/rewrite_correlated_expressions.cpp +65 -7
  888. package/src/duckdb/src/storage/arena_allocator.cpp +13 -2
  889. package/src/duckdb/src/storage/buffer/block_manager.cpp +13 -9
  890. package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +1 -1
  891. package/src/duckdb/src/storage/checkpoint/table_data_reader.cpp +3 -4
  892. package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +7 -7
  893. package/src/duckdb/src/storage/checkpoint_manager.cpp +74 -69
  894. package/src/duckdb/src/storage/compression/bitpacking.cpp +87 -63
  895. package/src/duckdb/src/storage/compression/bitpacking_hugeint.cpp +295 -0
  896. package/src/duckdb/src/storage/compression/fsst.cpp +1 -1
  897. package/src/duckdb/src/storage/compression/rle.cpp +52 -13
  898. package/src/duckdb/src/storage/data_table.cpp +36 -25
  899. package/src/duckdb/src/storage/index.cpp +4 -26
  900. package/src/duckdb/src/storage/local_storage.cpp +3 -4
  901. package/src/duckdb/src/storage/metadata/metadata_manager.cpp +267 -0
  902. package/src/duckdb/src/storage/metadata/metadata_reader.cpp +80 -0
  903. package/src/duckdb/src/storage/metadata/metadata_writer.cpp +86 -0
  904. package/src/duckdb/src/storage/serialization/serialize_constraint.cpp +98 -0
  905. package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +194 -0
  906. package/src/duckdb/src/storage/serialization/serialize_expression.cpp +283 -0
  907. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +762 -0
  908. package/src/duckdb/src/storage/serialization/serialize_macro_function.cpp +62 -0
  909. package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +432 -0
  910. package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +419 -0
  911. package/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp +342 -0
  912. package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +122 -0
  913. package/src/duckdb/src/storage/serialization/serialize_result_modifier.cpp +97 -0
  914. package/src/duckdb/src/storage/serialization/serialize_statement.cpp +22 -0
  915. package/src/duckdb/src/storage/serialization/serialize_table_filter.cpp +97 -0
  916. package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +164 -0
  917. package/src/duckdb/src/storage/serialization/serialize_types.cpp +127 -0
  918. package/src/duckdb/src/storage/single_file_block_manager.cpp +69 -51
  919. package/src/duckdb/src/storage/statistics/string_stats.cpp +21 -2
  920. package/src/duckdb/src/storage/storage_info.cpp +3 -2
  921. package/src/duckdb/src/storage/storage_manager.cpp +11 -5
  922. package/src/duckdb/src/storage/table/chunk_info.cpp +17 -0
  923. package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +3 -3
  924. package/src/duckdb/src/storage/table/list_column_data.cpp +6 -3
  925. package/src/duckdb/src/storage/table/persistent_table_data.cpp +1 -2
  926. package/src/duckdb/src/storage/table/row_group.cpp +34 -19
  927. package/src/duckdb/src/storage/table/row_group_collection.cpp +23 -19
  928. package/src/duckdb/src/storage/table/update_segment.cpp +1 -1
  929. package/src/duckdb/src/storage/table_index_list.cpp +1 -1
  930. package/src/duckdb/src/storage/wal_replay.cpp +24 -24
  931. package/src/duckdb/src/storage/write_ahead_log.cpp +3 -2
  932. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +16 -11
  933. package/src/duckdb/third_party/concurrentqueue/concurrentqueue.h +2 -2
  934. package/src/duckdb/third_party/concurrentqueue/lightweightsemaphore.h +5 -2
  935. package/src/duckdb/third_party/fast_float/fast_float/fast_float.h +2 -0
  936. package/src/duckdb/third_party/httplib/httplib.hpp +10 -1
  937. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +10 -0
  938. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +2 -1
  939. package/src/duckdb/third_party/libpg_query/pg_functions.cpp +13 -0
  940. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +11057 -10328
  941. package/src/duckdb/third_party/libpg_query/src_backend_parser_scansup.cpp +9 -0
  942. package/src/duckdb/third_party/mbedtls/include/mbedtls_wrapper.hpp +10 -0
  943. package/src/duckdb/third_party/mbedtls/mbedtls_wrapper.cpp +31 -1
  944. package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +4 -4
  945. package/src/duckdb/ub_src_common.cpp +4 -0
  946. package/src/duckdb/ub_src_common_adbc_nanoarrow.cpp +8 -0
  947. package/src/duckdb/ub_src_common_arrow_appender.cpp +10 -0
  948. package/src/duckdb/ub_src_common_serializer.cpp +2 -0
  949. package/src/duckdb/ub_src_core_functions_scalar_debug.cpp +2 -0
  950. package/src/duckdb/ub_src_core_functions_scalar_string.cpp +2 -0
  951. package/src/duckdb/ub_src_execution.cpp +2 -0
  952. package/src/duckdb/ub_src_execution_index_art.cpp +0 -6
  953. package/src/duckdb/ub_src_execution_operator_persistent.cpp +2 -0
  954. package/src/duckdb/ub_src_execution_operator_schema.cpp +1 -1
  955. package/src/duckdb/ub_src_execution_operator_set.cpp +2 -0
  956. package/src/duckdb/ub_src_execution_physical_plan.cpp +2 -0
  957. package/src/duckdb/ub_src_function_scalar.cpp +2 -0
  958. package/src/duckdb/ub_src_function_scalar_compressed_materialization.cpp +4 -0
  959. package/src/duckdb/ub_src_function_scalar_list.cpp +2 -0
  960. package/src/duckdb/ub_src_function_table_arrow.cpp +2 -0
  961. package/src/duckdb/ub_src_main.cpp +2 -0
  962. package/src/duckdb/ub_src_main_chunk_scan_state.cpp +2 -0
  963. package/src/duckdb/ub_src_optimizer.cpp +6 -0
  964. package/src/duckdb/ub_src_optimizer_compressed_materialization.cpp +6 -0
  965. package/src/duckdb/ub_src_optimizer_join_order.cpp +10 -0
  966. package/src/duckdb/ub_src_optimizer_statistics_expression.cpp +0 -2
  967. package/src/duckdb/ub_src_parser.cpp +0 -2
  968. package/src/duckdb/ub_src_parser_query_node.cpp +2 -0
  969. package/src/duckdb/ub_src_parser_transform_expression.cpp +2 -0
  970. package/src/duckdb/ub_src_planner_binder_query_node.cpp +4 -0
  971. package/src/duckdb/ub_src_planner_operator.cpp +3 -3
  972. package/src/duckdb/ub_src_storage.cpp +0 -4
  973. package/src/duckdb/ub_src_storage_compression.cpp +2 -0
  974. package/src/duckdb/ub_src_storage_metadata.cpp +6 -0
  975. package/src/duckdb/ub_src_storage_serialization.cpp +28 -0
  976. package/src/duckdb_node.hpp +1 -0
  977. package/src/statement.cpp +10 -5
  978. package/test/columns.test.ts +25 -3
  979. package/test/extension.test.ts +1 -1
  980. package/test/test_all_types.test.ts +234 -0
  981. package/tsconfig.json +1 -0
  982. package/src/duckdb/src/execution/index/art/leaf_segment.cpp +0 -52
  983. package/src/duckdb/src/execution/index/art/prefix_segment.cpp +0 -42
  984. package/src/duckdb/src/execution/index/art/swizzleable_pointer.cpp +0 -22
  985. package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +0 -193
  986. package/src/duckdb/src/include/duckdb/common/arrow/arrow_options.hpp +0 -25
  987. package/src/duckdb/src/include/duckdb/execution/index/art/leaf_segment.hpp +0 -38
  988. package/src/duckdb/src/include/duckdb/execution/index/art/prefix_segment.hpp +0 -40
  989. package/src/duckdb/src/include/duckdb/execution/index/art/swizzleable_pointer.hpp +0 -58
  990. package/src/duckdb/src/include/duckdb/planner/operator/logical_asof_join.hpp +0 -27
  991. package/src/duckdb/src/include/duckdb/planner/operator/logical_delim_join.hpp +0 -32
  992. package/src/duckdb/src/include/duckdb/storage/meta_block_reader.hpp +0 -49
  993. package/src/duckdb/src/include/duckdb/storage/meta_block_writer.hpp +0 -50
  994. package/src/duckdb/src/optimizer/statistics/expression/propagate_and_compress.cpp +0 -118
  995. package/src/duckdb/src/parser/common_table_expression_info.cpp +0 -19
  996. package/src/duckdb/src/planner/operator/logical_asof_join.cpp +0 -14
  997. package/src/duckdb/src/planner/operator/logical_delim_join.cpp +0 -27
  998. package/src/duckdb/src/storage/meta_block_reader.cpp +0 -78
  999. package/src/duckdb/src/storage/meta_block_writer.cpp +0 -80
@@ -57,6 +57,15 @@ void GetWinError(std::string *buffer) {
57
57
 
58
58
  #endif // defined(_WIN32)
59
59
 
60
+ // Temporary state while the database is being configured.
61
+ struct TempDatabase {
62
+ std::unordered_map<std::string, std::string> options;
63
+ std::string driver;
64
+ // Default name (see adbc.h)
65
+ std::string entrypoint = "AdbcDriverInit";
66
+ AdbcDriverInitFunc init_func = nullptr;
67
+ };
68
+
60
69
  // Error handling
61
70
 
62
71
  void ReleaseError(struct AdbcError *error) {
@@ -92,6 +101,14 @@ void SetError(struct AdbcError *error, const std::string &message) {
92
101
  error->release = ReleaseError;
93
102
  }
94
103
 
104
+ void SetError(struct AdbcError *error, const char *message_p) {
105
+ if (!message_p) {
106
+ message_p = "";
107
+ }
108
+ std::string message(message_p);
109
+ SetError(error, message);
110
+ }
111
+
95
112
  // Driver state
96
113
 
97
114
  /// Hold the driver DLL and the driver release callback in the driver struct.
@@ -109,8 +126,9 @@ struct ManagerDriverState {
109
126
  static AdbcStatusCode ReleaseDriver(struct AdbcDriver *driver, struct AdbcError *error) {
110
127
  AdbcStatusCode status = ADBC_STATUS_OK;
111
128
 
112
- if (!driver->private_manager)
129
+ if (!driver->private_manager) {
113
130
  return status;
131
+ }
114
132
  ManagerDriverState *state = reinterpret_cast<ManagerDriverState *>(driver->private_manager);
115
133
 
116
134
  if (state->driver_release) {
@@ -131,40 +149,6 @@ static AdbcStatusCode ReleaseDriver(struct AdbcDriver *driver, struct AdbcError
131
149
  return status;
132
150
  }
133
151
 
134
- // Default stubs
135
-
136
- AdbcStatusCode ConnectionGetInfo(struct AdbcConnection *connection, uint32_t *info_codes, size_t info_codes_length,
137
- struct ArrowArrayStream *out, struct AdbcError *error) {
138
- return ADBC_STATUS_NOT_IMPLEMENTED;
139
- }
140
-
141
- AdbcStatusCode ConnectionGetTableSchema(struct AdbcConnection *, const char *, const char *, const char *,
142
- struct ArrowSchema *, struct AdbcError *error) {
143
- return ADBC_STATUS_NOT_IMPLEMENTED;
144
- }
145
-
146
- AdbcStatusCode StatementBind(struct AdbcStatement *, struct ArrowArray *, struct ArrowSchema *,
147
- struct AdbcError *error) {
148
- return ADBC_STATUS_NOT_IMPLEMENTED;
149
- }
150
-
151
- AdbcStatusCode StatementGetParameterSchema(struct AdbcStatement *statement, struct ArrowSchema *schema,
152
- struct AdbcError *error) {
153
- return ADBC_STATUS_NOT_IMPLEMENTED;
154
- }
155
- AdbcStatusCode StatementSetSubstraitPlan(struct AdbcStatement *, const uint8_t *, size_t, struct AdbcError *error) {
156
- return ADBC_STATUS_NOT_IMPLEMENTED;
157
- }
158
-
159
- /// Temporary state while the database is being configured.
160
- struct TempDatabase {
161
- std::unordered_map<std::string, std::string> options;
162
- std::string driver;
163
- // Default name (see adbc.h)
164
- std::string entrypoint = "AdbcDriverInit";
165
- AdbcDriverInitFunc init_func = nullptr;
166
- };
167
-
168
152
  /// Temporary state while the database is being configured.
169
153
  struct TempConnection {
170
154
  std::unordered_map<std::string, std::string> options;
@@ -181,6 +165,9 @@ AdbcStatusCode AdbcDatabaseNew(struct AdbcDatabase *database, struct AdbcError *
181
165
 
182
166
  AdbcStatusCode AdbcDatabaseSetOption(struct AdbcDatabase *database, const char *key, const char *value,
183
167
  struct AdbcError *error) {
168
+ if (!database) {
169
+ return ADBC_STATUS_INVALID_ARGUMENT;
170
+ }
184
171
  if (database->private_driver) {
185
172
  return database->private_driver->DatabaseSetOption(database, key, value, error);
186
173
  }
@@ -198,6 +185,9 @@ AdbcStatusCode AdbcDatabaseSetOption(struct AdbcDatabase *database, const char *
198
185
 
199
186
  AdbcStatusCode AdbcDriverManagerDatabaseSetInitFunc(struct AdbcDatabase *database, AdbcDriverInitFunc init_func,
200
187
  struct AdbcError *error) {
188
+ if (!database) {
189
+ return ADBC_STATUS_INVALID_ARGUMENT;
190
+ }
201
191
  if (database->private_driver) {
202
192
  return ADBC_STATUS_INVALID_STATE;
203
193
  }
@@ -293,6 +283,9 @@ AdbcStatusCode AdbcDatabaseRelease(struct AdbcDatabase *database, struct AdbcErr
293
283
  }
294
284
 
295
285
  AdbcStatusCode AdbcConnectionCommit(struct AdbcConnection *connection, struct AdbcError *error) {
286
+ if (!connection) {
287
+ return ADBC_STATUS_INVALID_ARGUMENT;
288
+ }
296
289
  if (!connection->private_driver) {
297
290
  return ADBC_STATUS_INVALID_STATE;
298
291
  }
@@ -301,6 +294,9 @@ AdbcStatusCode AdbcConnectionCommit(struct AdbcConnection *connection, struct Ad
301
294
 
302
295
  AdbcStatusCode AdbcConnectionGetInfo(struct AdbcConnection *connection, uint32_t *info_codes, size_t info_codes_length,
303
296
  struct ArrowArrayStream *out, struct AdbcError *error) {
297
+ if (!connection) {
298
+ return ADBC_STATUS_INVALID_ARGUMENT;
299
+ }
304
300
  if (!connection->private_driver) {
305
301
  return ADBC_STATUS_INVALID_STATE;
306
302
  }
@@ -311,7 +307,12 @@ AdbcStatusCode AdbcConnectionGetObjects(struct AdbcConnection *connection, int d
311
307
  const char *db_schema, const char *table_name, const char **table_types,
312
308
  const char *column_name, struct ArrowArrayStream *stream,
313
309
  struct AdbcError *error) {
314
- if (!connection->private_driver) {
310
+ if (!connection) {
311
+ SetError(error, "connection can't be null");
312
+ return ADBC_STATUS_INVALID_STATE;
313
+ }
314
+ if (!connection->private_data) {
315
+ SetError(error, "connection must be initialized");
315
316
  return ADBC_STATUS_INVALID_STATE;
316
317
  }
317
318
  return connection->private_driver->ConnectionGetObjects(connection, depth, catalog, db_schema, table_name,
@@ -321,6 +322,9 @@ AdbcStatusCode AdbcConnectionGetObjects(struct AdbcConnection *connection, int d
321
322
  AdbcStatusCode AdbcConnectionGetTableSchema(struct AdbcConnection *connection, const char *catalog,
322
323
  const char *db_schema, const char *table_name, struct ArrowSchema *schema,
323
324
  struct AdbcError *error) {
325
+ if (!connection) {
326
+ return ADBC_STATUS_INVALID_ARGUMENT;
327
+ }
324
328
  if (!connection->private_driver) {
325
329
  return ADBC_STATUS_INVALID_STATE;
326
330
  }
@@ -330,6 +334,9 @@ AdbcStatusCode AdbcConnectionGetTableSchema(struct AdbcConnection *connection, c
330
334
 
331
335
  AdbcStatusCode AdbcConnectionGetTableTypes(struct AdbcConnection *connection, struct ArrowArrayStream *stream,
332
336
  struct AdbcError *error) {
337
+ if (!connection) {
338
+ return ADBC_STATUS_INVALID_ARGUMENT;
339
+ }
333
340
  if (!connection->private_driver) {
334
341
  return ADBC_STATUS_INVALID_STATE;
335
342
  }
@@ -338,6 +345,9 @@ AdbcStatusCode AdbcConnectionGetTableTypes(struct AdbcConnection *connection, st
338
345
 
339
346
  AdbcStatusCode AdbcConnectionInit(struct AdbcConnection *connection, struct AdbcDatabase *database,
340
347
  struct AdbcError *error) {
348
+ if (!connection) {
349
+ return ADBC_STATUS_INVALID_ARGUMENT;
350
+ }
341
351
  if (!connection->private_data) {
342
352
  SetError(error, "Must call AdbcConnectionNew first");
343
353
  return ADBC_STATUS_INVALID_STATE;
@@ -351,15 +361,17 @@ AdbcStatusCode AdbcConnectionInit(struct AdbcConnection *connection, struct Adbc
351
361
  delete args;
352
362
 
353
363
  auto status = database->private_driver->ConnectionNew(connection, error);
354
- if (status != ADBC_STATUS_OK)
364
+ if (status != ADBC_STATUS_OK) {
355
365
  return status;
366
+ }
356
367
  connection->private_driver = database->private_driver;
357
368
 
358
369
  for (const auto &option : options) {
359
370
  status = database->private_driver->ConnectionSetOption(connection, option.first.c_str(), option.second.c_str(),
360
371
  error);
361
- if (status != ADBC_STATUS_OK)
372
+ if (status != ADBC_STATUS_OK) {
362
373
  return status;
374
+ }
363
375
  }
364
376
  return connection->private_driver->ConnectionInit(connection, database, error);
365
377
  }
@@ -376,6 +388,9 @@ AdbcStatusCode AdbcConnectionNew(struct AdbcConnection *connection, struct AdbcE
376
388
  AdbcStatusCode AdbcConnectionReadPartition(struct AdbcConnection *connection, const uint8_t *serialized_partition,
377
389
  size_t serialized_length, struct ArrowArrayStream *out,
378
390
  struct AdbcError *error) {
391
+ if (!connection) {
392
+ return ADBC_STATUS_INVALID_ARGUMENT;
393
+ }
379
394
  if (!connection->private_driver) {
380
395
  return ADBC_STATUS_INVALID_STATE;
381
396
  }
@@ -384,6 +399,9 @@ AdbcStatusCode AdbcConnectionReadPartition(struct AdbcConnection *connection, co
384
399
  }
385
400
 
386
401
  AdbcStatusCode AdbcConnectionRelease(struct AdbcConnection *connection, struct AdbcError *error) {
402
+ if (!connection) {
403
+ return ADBC_STATUS_INVALID_ARGUMENT;
404
+ }
387
405
  if (!connection->private_driver) {
388
406
  if (connection->private_data) {
389
407
  TempConnection *args = reinterpret_cast<TempConnection *>(connection->private_data);
@@ -399,6 +417,9 @@ AdbcStatusCode AdbcConnectionRelease(struct AdbcConnection *connection, struct A
399
417
  }
400
418
 
401
419
  AdbcStatusCode AdbcConnectionRollback(struct AdbcConnection *connection, struct AdbcError *error) {
420
+ if (!connection) {
421
+ return ADBC_STATUS_INVALID_ARGUMENT;
422
+ }
402
423
  if (!connection->private_driver) {
403
424
  return ADBC_STATUS_INVALID_STATE;
404
425
  }
@@ -407,6 +428,9 @@ AdbcStatusCode AdbcConnectionRollback(struct AdbcConnection *connection, struct
407
428
 
408
429
  AdbcStatusCode AdbcConnectionSetOption(struct AdbcConnection *connection, const char *key, const char *value,
409
430
  struct AdbcError *error) {
431
+ if (!connection) {
432
+ return ADBC_STATUS_INVALID_ARGUMENT;
433
+ }
410
434
  if (!connection->private_data) {
411
435
  SetError(error, "AdbcConnectionSetOption: must AdbcConnectionNew first");
412
436
  return ADBC_STATUS_INVALID_STATE;
@@ -422,6 +446,9 @@ AdbcStatusCode AdbcConnectionSetOption(struct AdbcConnection *connection, const
422
446
 
423
447
  AdbcStatusCode AdbcStatementBind(struct AdbcStatement *statement, struct ArrowArray *values, struct ArrowSchema *schema,
424
448
  struct AdbcError *error) {
449
+ if (!statement) {
450
+ return ADBC_STATUS_INVALID_ARGUMENT;
451
+ }
425
452
  if (!statement->private_driver) {
426
453
  return ADBC_STATUS_INVALID_STATE;
427
454
  }
@@ -430,6 +457,9 @@ AdbcStatusCode AdbcStatementBind(struct AdbcStatement *statement, struct ArrowAr
430
457
 
431
458
  AdbcStatusCode AdbcStatementBindStream(struct AdbcStatement *statement, struct ArrowArrayStream *stream,
432
459
  struct AdbcError *error) {
460
+ if (!statement) {
461
+ return ADBC_STATUS_INVALID_ARGUMENT;
462
+ }
433
463
  if (!statement->private_driver) {
434
464
  return ADBC_STATUS_INVALID_STATE;
435
465
  }
@@ -440,6 +470,9 @@ AdbcStatusCode AdbcStatementBindStream(struct AdbcStatement *statement, struct A
440
470
  AdbcStatusCode AdbcStatementExecutePartitions(struct AdbcStatement *statement, ArrowSchema *schema,
441
471
  struct AdbcPartitions *partitions, int64_t *rows_affected,
442
472
  struct AdbcError *error) {
473
+ if (!statement) {
474
+ return ADBC_STATUS_INVALID_ARGUMENT;
475
+ }
443
476
  if (!statement->private_driver) {
444
477
  return ADBC_STATUS_INVALID_STATE;
445
478
  }
@@ -459,6 +492,9 @@ AdbcStatusCode AdbcStatementExecuteQuery(struct AdbcStatement *statement, struct
459
492
 
460
493
  AdbcStatusCode AdbcStatementGetParameterSchema(struct AdbcStatement *statement, struct ArrowSchema *schema,
461
494
  struct AdbcError *error) {
495
+ if (!statement) {
496
+ return ADBC_STATUS_INVALID_ARGUMENT;
497
+ }
462
498
  if (!statement->private_driver) {
463
499
  return ADBC_STATUS_INVALID_STATE;
464
500
  }
@@ -479,13 +515,21 @@ AdbcStatusCode AdbcStatementNew(struct AdbcConnection *connection, struct AdbcSt
479
515
  }
480
516
 
481
517
  AdbcStatusCode AdbcStatementPrepare(struct AdbcStatement *statement, struct AdbcError *error) {
482
- if (!statement->private_driver) {
518
+ if (!statement) {
519
+ SetError(error, "Missing statement object");
520
+ return ADBC_STATUS_INVALID_ARGUMENT;
521
+ }
522
+ if (!statement->private_data) {
523
+ SetError(error, "Invalid statement object");
483
524
  return ADBC_STATUS_INVALID_STATE;
484
525
  }
485
526
  return statement->private_driver->StatementPrepare(statement, error);
486
527
  }
487
528
 
488
529
  AdbcStatusCode AdbcStatementRelease(struct AdbcStatement *statement, struct AdbcError *error) {
530
+ if (!statement) {
531
+ return ADBC_STATUS_INVALID_ARGUMENT;
532
+ }
489
533
  if (!statement->private_driver) {
490
534
  return ADBC_STATUS_INVALID_STATE;
491
535
  }
@@ -496,6 +540,9 @@ AdbcStatusCode AdbcStatementRelease(struct AdbcStatement *statement, struct Adbc
496
540
 
497
541
  AdbcStatusCode AdbcStatementSetOption(struct AdbcStatement *statement, const char *key, const char *value,
498
542
  struct AdbcError *error) {
543
+ if (!statement) {
544
+ return ADBC_STATUS_INVALID_ARGUMENT;
545
+ }
499
546
  if (!statement->private_driver) {
500
547
  return ADBC_STATUS_INVALID_STATE;
501
548
  }
@@ -503,6 +550,9 @@ AdbcStatusCode AdbcStatementSetOption(struct AdbcStatement *statement, const cha
503
550
  }
504
551
 
505
552
  AdbcStatusCode AdbcStatementSetSqlQuery(struct AdbcStatement *statement, const char *query, struct AdbcError *error) {
553
+ if (!statement) {
554
+ return ADBC_STATUS_INVALID_ARGUMENT;
555
+ }
506
556
  if (!statement->private_driver) {
507
557
  return ADBC_STATUS_INVALID_STATE;
508
558
  }
@@ -511,6 +561,9 @@ AdbcStatusCode AdbcStatementSetSqlQuery(struct AdbcStatement *statement, const c
511
561
 
512
562
  AdbcStatusCode AdbcStatementSetSubstraitPlan(struct AdbcStatement *statement, const uint8_t *plan, size_t length,
513
563
  struct AdbcError *error) {
564
+ if (!statement) {
565
+ return ADBC_STATUS_INVALID_ARGUMENT;
566
+ }
514
567
  if (!statement->private_driver) {
515
568
  return ADBC_STATUS_INVALID_STATE;
516
569
  }
@@ -0,0 +1,57 @@
1
+ // Licensed to the Apache Software Foundation (ASF) under one
2
+ // or more contributor license agreements. See the NOTICE file
3
+ // distributed with this work for additional information
4
+ // regarding copyright ownership. The ASF licenses this file
5
+ // to you under the Apache License, Version 2.0 (the
6
+ // "License"); you may not use this file except in compliance
7
+ // with the License. You may obtain a copy of the License at
8
+ //
9
+ // http://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing,
12
+ // software distributed under the License is distributed on an
13
+ // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ // KIND, either express or implied. See the License for the
15
+ // specific language governing permissions and limitations
16
+ // under the License.
17
+
18
+ #include <stddef.h>
19
+ #include <stdlib.h>
20
+
21
+ #include "duckdb/common/arrow/nanoarrow/nanoarrow.hpp"
22
+
23
+ namespace duckdb_nanoarrow {
24
+
25
+ void *ArrowMalloc(int64_t size) {
26
+ return malloc(size);
27
+ }
28
+
29
+ void *ArrowRealloc(void *ptr, int64_t size) {
30
+ return realloc(ptr, size);
31
+ }
32
+
33
+ void ArrowFree(void *ptr) {
34
+ free(ptr);
35
+ }
36
+
37
+ static uint8_t *ArrowBufferAllocatorMallocAllocate(struct ArrowBufferAllocator *allocator, int64_t size) {
38
+ return (uint8_t *)ArrowMalloc(size);
39
+ }
40
+
41
+ static uint8_t *ArrowBufferAllocatorMallocReallocate(struct ArrowBufferAllocator *allocator, uint8_t *ptr,
42
+ int64_t old_size, int64_t new_size) {
43
+ return (uint8_t *)ArrowRealloc(ptr, new_size);
44
+ }
45
+
46
+ static void ArrowBufferAllocatorMallocFree(struct ArrowBufferAllocator *allocator, uint8_t *ptr, int64_t size) {
47
+ ArrowFree(ptr);
48
+ }
49
+
50
+ static struct ArrowBufferAllocator ArrowBufferAllocatorMalloc = {
51
+ &ArrowBufferAllocatorMallocAllocate, &ArrowBufferAllocatorMallocReallocate, &ArrowBufferAllocatorMallocFree, NULL};
52
+
53
+ struct ArrowBufferAllocator *ArrowBufferAllocatorDefault() {
54
+ return &ArrowBufferAllocatorMalloc;
55
+ }
56
+
57
+ } // namespace duckdb_nanoarrow
@@ -0,0 +1,121 @@
1
+ // Licensed to the Apache Software Foundation (ASF) under one
2
+ // or more contributor license agreements. See the NOTICE file
3
+ // distributed with this work for additional information
4
+ // regarding copyright ownership. The ASF licenses this file
5
+ // to you under the Apache License, Version 2.0 (the
6
+ // "License"); you may not use this file except in compliance
7
+ // with the License. You may obtain a copy of the License at
8
+ //
9
+ // http://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing,
12
+ // software distributed under the License is distributed on an
13
+ // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ // KIND, either express or implied. See the License for the
15
+ // specific language governing permissions and limitations
16
+ // under the License.
17
+
18
+ #include <errno.h>
19
+ #include <stdlib.h>
20
+ #include <string.h>
21
+
22
+ #include "duckdb/common/arrow/nanoarrow/nanoarrow.hpp"
23
+
24
+ namespace duckdb_nanoarrow {
25
+
26
+ ArrowErrorCode ArrowMetadataReaderInit(struct ArrowMetadataReader *reader, const char *metadata) {
27
+ reader->metadata = metadata;
28
+
29
+ if (reader->metadata == NULL) {
30
+ reader->offset = 0;
31
+ reader->remaining_keys = 0;
32
+ } else {
33
+ memcpy(&reader->remaining_keys, reader->metadata, sizeof(int32_t));
34
+ reader->offset = sizeof(int32_t);
35
+ }
36
+
37
+ return NANOARROW_OK;
38
+ }
39
+
40
+ ArrowErrorCode ArrowMetadataReaderRead(struct ArrowMetadataReader *reader, struct ArrowStringView *key_out,
41
+ struct ArrowStringView *value_out) {
42
+ if (reader->remaining_keys <= 0) {
43
+ return EINVAL;
44
+ }
45
+
46
+ int64_t pos = 0;
47
+
48
+ int32_t key_size;
49
+ memcpy(&key_size, reader->metadata + reader->offset + pos, sizeof(int32_t));
50
+ pos += sizeof(int32_t);
51
+
52
+ key_out->data = reader->metadata + reader->offset + pos;
53
+ key_out->n_bytes = key_size;
54
+ pos += key_size;
55
+
56
+ int32_t value_size;
57
+ memcpy(&value_size, reader->metadata + reader->offset + pos, sizeof(int32_t));
58
+ pos += sizeof(int32_t);
59
+
60
+ value_out->data = reader->metadata + reader->offset + pos;
61
+ value_out->n_bytes = value_size;
62
+ pos += value_size;
63
+
64
+ reader->offset += pos;
65
+ reader->remaining_keys--;
66
+ return NANOARROW_OK;
67
+ }
68
+
69
+ int64_t ArrowMetadataSizeOf(const char *metadata) {
70
+ if (metadata == NULL) {
71
+ return 0;
72
+ }
73
+
74
+ struct ArrowMetadataReader reader;
75
+ struct ArrowStringView key;
76
+ struct ArrowStringView value;
77
+ ArrowMetadataReaderInit(&reader, metadata);
78
+
79
+ int64_t size = sizeof(int32_t);
80
+ while (ArrowMetadataReaderRead(&reader, &key, &value) == NANOARROW_OK) {
81
+ size += sizeof(int32_t) + key.n_bytes + sizeof(int32_t) + value.n_bytes;
82
+ }
83
+
84
+ return size;
85
+ }
86
+
87
+ ArrowErrorCode ArrowMetadataGetValue(const char *metadata, const char *key, const char *default_value,
88
+ struct ArrowStringView *value_out) {
89
+ struct ArrowStringView target_key_view = {key, static_cast<int64_t>(strlen(key))};
90
+ value_out->data = default_value;
91
+ if (default_value != NULL) {
92
+ value_out->n_bytes = strlen(default_value);
93
+ } else {
94
+ value_out->n_bytes = 0;
95
+ }
96
+
97
+ struct ArrowMetadataReader reader;
98
+ struct ArrowStringView key_view;
99
+ struct ArrowStringView value;
100
+ ArrowMetadataReaderInit(&reader, metadata);
101
+
102
+ while (ArrowMetadataReaderRead(&reader, &key_view, &value) == NANOARROW_OK) {
103
+ int key_equal = target_key_view.n_bytes == key_view.n_bytes &&
104
+ strncmp(target_key_view.data, key_view.data, key_view.n_bytes) == 0;
105
+ if (key_equal) {
106
+ value_out->data = value.data;
107
+ value_out->n_bytes = value.n_bytes;
108
+ break;
109
+ }
110
+ }
111
+
112
+ return NANOARROW_OK;
113
+ }
114
+
115
+ char ArrowMetadataHasKey(const char *metadata, const char *key) {
116
+ struct ArrowStringView value;
117
+ ArrowMetadataGetValue(metadata, key, NULL, &value);
118
+ return value.data != NULL;
119
+ }
120
+
121
+ } // namespace duckdb_nanoarrow