duckdb 0.8.2-dev37.0 → 0.8.2-dev3949.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 (1085) hide show
  1. package/README.md +7 -0
  2. package/binding.gyp +29 -13
  3. package/binding.gyp.in +1 -1
  4. package/configure.py +11 -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 +10 -12
  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 +7 -16
  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 +9 -15
  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 +37 -73
  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 +29 -72
  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 +147 -70
  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 +4979 -4458
  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 +15 -2
  101. package/src/duckdb/src/common/extra_type_info.cpp +487 -0
  102. package/src/duckdb/src/common/field_writer.cpp +1 -1
  103. package/src/duckdb/src/common/file_system.cpp +46 -12
  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 +34 -39
  113. package/src/duckdb/src/common/re2_regex.cpp +1 -1
  114. package/src/duckdb/src/common/row_operations/row_aggregate.cpp +18 -3
  115. package/src/duckdb/src/common/row_operations/row_external.cpp +1 -1
  116. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +63 -73
  117. package/src/duckdb/src/common/serializer/binary_serializer.cpp +85 -80
  118. package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +0 -9
  119. package/src/duckdb/src/common/serializer/format_serializer.cpp +15 -0
  120. package/src/duckdb/src/common/sort/merge_sorter.cpp +9 -16
  121. package/src/duckdb/src/common/sort/partition_state.cpp +102 -74
  122. package/src/duckdb/src/common/sort/sort_state.cpp +1 -1
  123. package/src/duckdb/src/common/sort/sorted_block.cpp +1 -1
  124. package/src/duckdb/src/common/types/batched_data_collection.cpp +7 -2
  125. package/src/duckdb/src/common/types/bit.cpp +51 -0
  126. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +9 -6
  127. package/src/duckdb/src/common/types/column/column_data_collection.cpp +68 -2
  128. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +20 -6
  129. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  130. package/src/duckdb/src/common/types/data_chunk.cpp +46 -10
  131. package/src/duckdb/src/common/types/date.cpp +15 -0
  132. package/src/duckdb/src/common/types/hugeint.cpp +40 -0
  133. package/src/duckdb/src/common/types/hyperloglog.cpp +21 -0
  134. package/src/duckdb/src/common/types/interval.cpp +6 -0
  135. package/src/duckdb/src/common/types/list_segment.cpp +56 -198
  136. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +251 -131
  137. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +35 -5
  138. package/src/duckdb/src/common/types/row/row_layout.cpp +3 -31
  139. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +40 -32
  140. package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +41 -26
  141. package/src/duckdb/src/common/types/row/tuple_data_layout.cpp +11 -1
  142. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +2 -2
  143. package/src/duckdb/src/common/types/row/tuple_data_segment.cpp +21 -16
  144. package/src/duckdb/src/common/types/string_heap.cpp +4 -0
  145. package/src/duckdb/src/common/types/time.cpp +105 -0
  146. package/src/duckdb/src/common/types/timestamp.cpp +7 -0
  147. package/src/duckdb/src/common/types/uuid.cpp +2 -2
  148. package/src/duckdb/src/common/types/validity_mask.cpp +33 -0
  149. package/src/duckdb/src/common/types/value.cpp +99 -60
  150. package/src/duckdb/src/common/types/vector.cpp +73 -80
  151. package/src/duckdb/src/common/types.cpp +38 -724
  152. package/src/duckdb/src/common/virtual_file_system.cpp +142 -1
  153. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +26 -0
  154. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +5 -7
  155. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +64 -19
  156. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +30 -0
  157. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +1 -0
  158. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +83 -59
  159. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +4 -4
  160. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +4 -4
  161. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +5 -4
  162. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +8 -8
  163. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +4 -3
  164. package/src/duckdb/src/core_functions/function_list.cpp +10 -4
  165. package/src/duckdb/src/core_functions/scalar/date/date_diff.cpp +2 -0
  166. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +380 -89
  167. package/src/duckdb/src/core_functions/scalar/date/date_sub.cpp +2 -0
  168. package/src/duckdb/src/core_functions/scalar/date/date_trunc.cpp +4 -0
  169. package/src/duckdb/src/core_functions/scalar/date/epoch.cpp +10 -24
  170. package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +19 -4
  171. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +10 -0
  172. package/src/duckdb/src/core_functions/scalar/debug/vector_type.cpp +23 -0
  173. package/src/duckdb/src/core_functions/scalar/enum/enum_functions.cpp +16 -12
  174. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +3 -1
  175. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +314 -82
  176. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +4 -2
  177. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +23 -3
  178. package/src/duckdb/src/core_functions/scalar/map/map_entries.cpp +2 -2
  179. package/src/duckdb/src/core_functions/scalar/string/to_base.cpp +66 -0
  180. package/src/duckdb/src/core_functions/scalar/union/union_tag.cpp +1 -1
  181. package/src/duckdb/src/execution/aggregate_hashtable.cpp +226 -346
  182. package/src/duckdb/src/execution/column_binding_resolver.cpp +10 -7
  183. package/src/duckdb/src/execution/expression_executor/execute_parameter.cpp +2 -2
  184. package/src/duckdb/src/execution/expression_executor.cpp +1 -1
  185. package/src/duckdb/src/execution/index/art/art.cpp +219 -259
  186. package/src/duckdb/src/execution/index/art/art_key.cpp +0 -11
  187. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +11 -15
  188. package/src/duckdb/src/execution/index/art/iterator.cpp +130 -214
  189. package/src/duckdb/src/execution/index/art/leaf.cpp +300 -266
  190. package/src/duckdb/src/execution/index/art/node.cpp +211 -205
  191. package/src/duckdb/src/execution/index/art/node16.cpp +10 -19
  192. package/src/duckdb/src/execution/index/art/node256.cpp +10 -18
  193. package/src/duckdb/src/execution/index/art/node4.cpp +21 -23
  194. package/src/duckdb/src/execution/index/art/node48.cpp +10 -20
  195. package/src/duckdb/src/execution/index/art/prefix.cpp +308 -338
  196. package/src/duckdb/src/execution/join_hashtable.cpp +9 -10
  197. package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +1 -0
  198. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +250 -317
  199. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +6 -4
  200. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +8 -3
  201. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +231 -190
  202. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +367 -1068
  203. package/src/duckdb/src/execution/operator/{persistent → csv_scanner}/base_csv_reader.cpp +157 -174
  204. package/src/duckdb/src/execution/operator/csv_scanner/buffered_csv_reader.cpp +434 -0
  205. package/src/duckdb/src/execution/operator/csv_scanner/csv_buffer.cpp +80 -0
  206. package/src/duckdb/src/execution/operator/csv_scanner/csv_buffer_manager.cpp +90 -0
  207. package/src/duckdb/src/execution/operator/csv_scanner/csv_file_handle.cpp +95 -0
  208. package/src/duckdb/src/execution/operator/{persistent → csv_scanner}/csv_reader_options.cpp +67 -28
  209. package/src/duckdb/src/execution/operator/csv_scanner/csv_state_machine.cpp +35 -0
  210. package/src/duckdb/src/execution/operator/csv_scanner/csv_state_machine_cache.cpp +107 -0
  211. package/src/duckdb/src/execution/operator/{persistent → csv_scanner}/parallel_csv_reader.cpp +46 -47
  212. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/csv_sniffer.cpp +52 -0
  213. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +336 -0
  214. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +165 -0
  215. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +398 -0
  216. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_refinement.cpp +175 -0
  217. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_replacement.cpp +39 -0
  218. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
  219. package/src/duckdb/src/execution/operator/helper/physical_batch_collector.cpp +12 -9
  220. package/src/duckdb/src/execution/operator/helper/physical_explain_analyze.cpp +2 -2
  221. package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +10 -8
  222. package/src/duckdb/src/execution/operator/helper/physical_load.cpp +2 -1
  223. package/src/duckdb/src/execution/operator/helper/physical_materialized_collector.cpp +7 -5
  224. package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +3 -1
  225. package/src/duckdb/src/execution/operator/helper/physical_set.cpp +3 -1
  226. package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +7 -5
  227. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +449 -288
  228. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +2 -2
  229. package/src/duckdb/src/execution/operator/join/physical_comparison_join.cpp +1 -2
  230. package/src/duckdb/src/execution/operator/join/physical_delim_join.cpp +13 -6
  231. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +28 -15
  232. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +35 -17
  233. package/src/duckdb/src/execution/operator/join/physical_join.cpp +1 -1
  234. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +7 -4
  235. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +31 -10
  236. package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +41 -5
  237. package/src/duckdb/src/execution/operator/order/physical_order.cpp +7 -5
  238. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +7 -5
  239. package/src/duckdb/src/execution/operator/persistent/csv_rejects_table.cpp +48 -0
  240. package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +14 -10
  241. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +11 -9
  242. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +9 -7
  243. package/src/duckdb/src/execution/operator/persistent/physical_fixed_batch_copy.cpp +14 -12
  244. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +11 -11
  245. package/src/duckdb/src/execution/operator/persistent/physical_update.cpp +4 -2
  246. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -1
  247. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +24 -27
  248. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +19 -0
  249. package/src/duckdb/src/execution/operator/scan/physical_table_scan.cpp +7 -12
  250. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +2 -1
  251. package/src/duckdb/src/execution/operator/schema/physical_create_art_index.cpp +198 -0
  252. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +2 -6
  253. package/src/duckdb/src/execution/operator/set/physical_cte.cpp +160 -0
  254. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +16 -7
  255. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +37 -6
  256. package/src/duckdb/src/execution/physical_operator.cpp +20 -16
  257. package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +43 -10
  258. package/src/duckdb/src/execution/physical_plan/plan_asof_join.cpp +57 -35
  259. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +32 -15
  260. package/src/duckdb/src/execution/physical_plan/plan_create_index.cpp +45 -34
  261. package/src/duckdb/src/execution/physical_plan/plan_cte.cpp +33 -0
  262. package/src/duckdb/src/execution/physical_plan/plan_delim_join.cpp +2 -5
  263. package/src/duckdb/src/execution/physical_plan/plan_get.cpp +2 -2
  264. package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +25 -4
  265. package/src/duckdb/src/execution/physical_plan_generator.cpp +6 -11
  266. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +636 -349
  267. package/src/duckdb/src/execution/window_executor.cpp +1285 -0
  268. package/src/duckdb/src/execution/window_segment_tree.cpp +408 -144
  269. package/src/duckdb/src/function/aggregate/distributive/count.cpp +2 -13
  270. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +6 -12
  271. package/src/duckdb/src/function/cast/bit_cast.cpp +34 -2
  272. package/src/duckdb/src/function/cast/blob_cast.cpp +3 -0
  273. package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -0
  274. package/src/duckdb/src/function/cast/numeric_casts.cpp +2 -0
  275. package/src/duckdb/src/function/cast/string_cast.cpp +2 -2
  276. package/src/duckdb/src/function/cast/time_casts.cpp +7 -6
  277. package/src/duckdb/src/function/function.cpp +3 -1
  278. package/src/duckdb/src/function/pragma/pragma_queries.cpp +7 -1
  279. package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +212 -0
  280. package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +249 -0
  281. package/src/duckdb/src/function/scalar/compressed_materialization_functions.cpp +29 -0
  282. package/src/duckdb/src/function/scalar/list/list_resize.cpp +162 -0
  283. package/src/duckdb/src/function/scalar/nested_functions.cpp +1 -0
  284. package/src/duckdb/src/function/scalar/operators/add.cpp +9 -0
  285. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +6 -3
  286. package/src/duckdb/src/function/scalar/strftime_format.cpp +4 -4
  287. package/src/duckdb/src/function/scalar/string/like.cpp +12 -4
  288. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +39 -5
  289. package/src/duckdb/src/function/scalar_function.cpp +5 -20
  290. package/src/duckdb/src/function/table/arrow/arrow_duck_schema.cpp +57 -0
  291. package/src/duckdb/src/function/table/arrow.cpp +110 -88
  292. package/src/duckdb/src/function/table/arrow_conversion.cpp +86 -73
  293. package/src/duckdb/src/function/table/copy_csv.cpp +102 -97
  294. package/src/duckdb/src/function/table/read_csv.cpp +263 -141
  295. package/src/duckdb/src/function/table/system/test_all_types.cpp +48 -21
  296. package/src/duckdb/src/function/table/system_functions.cpp +1 -0
  297. package/src/duckdb/src/function/table/table_scan.cpp +42 -0
  298. package/src/duckdb/src/function/table/version/pragma_version.cpp +49 -2
  299. package/src/duckdb/src/function/table_function.cpp +4 -3
  300. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +20 -5
  301. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/index_catalog_entry.hpp +3 -3
  302. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/macro_catalog_entry.hpp +1 -4
  303. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +2 -5
  304. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +1 -6
  305. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +2 -13
  306. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +1 -4
  307. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/view_catalog_entry.hpp +2 -5
  308. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +14 -0
  309. package/src/duckdb/src/include/duckdb/catalog/catalog_set.hpp +0 -6
  310. package/src/duckdb/src/include/duckdb/common/adbc/adbc.h +1 -0
  311. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +4 -1
  312. package/src/duckdb/src/include/duckdb/common/adbc/single_batch_array_stream.hpp +16 -0
  313. package/src/duckdb/src/include/duckdb/common/allocator.hpp +2 -0
  314. package/src/duckdb/src/include/duckdb/common/arrow/appender/append_data.hpp +109 -0
  315. package/src/duckdb/src/include/duckdb/common/arrow/appender/bool_data.hpp +15 -0
  316. package/src/duckdb/src/include/duckdb/common/arrow/appender/enum_data.hpp +69 -0
  317. package/src/duckdb/src/include/duckdb/common/arrow/appender/list.hpp +8 -0
  318. package/src/duckdb/src/include/duckdb/common/arrow/appender/list_data.hpp +18 -0
  319. package/src/duckdb/src/include/duckdb/common/arrow/appender/map_data.hpp +18 -0
  320. package/src/duckdb/src/include/duckdb/common/arrow/appender/scalar_data.hpp +88 -0
  321. package/src/duckdb/src/include/duckdb/common/arrow/appender/struct_data.hpp +18 -0
  322. package/src/duckdb/src/include/duckdb/common/arrow/appender/union_data.hpp +21 -0
  323. package/src/duckdb/src/include/duckdb/common/arrow/appender/varchar_data.hpp +105 -0
  324. package/src/duckdb/src/include/duckdb/common/arrow/arrow_appender.hpp +9 -4
  325. package/src/duckdb/src/include/duckdb/common/arrow/arrow_converter.hpp +3 -5
  326. package/src/duckdb/src/include/duckdb/common/arrow/arrow_wrapper.hpp +5 -3
  327. package/src/duckdb/src/include/duckdb/common/arrow/nanoarrow/nanoarrow.h +462 -0
  328. package/src/duckdb/src/include/duckdb/common/arrow/nanoarrow/nanoarrow.hpp +14 -0
  329. package/src/duckdb/src/include/duckdb/common/arrow/result_arrow_wrapper.hpp +4 -0
  330. package/src/duckdb/src/include/duckdb/common/assert.hpp +1 -1
  331. package/src/duckdb/src/include/duckdb/common/bitpacking.hpp +70 -55
  332. package/src/duckdb/src/include/duckdb/common/bswap.hpp +42 -0
  333. package/src/duckdb/src/include/duckdb/common/case_insensitive_map.hpp +1 -0
  334. package/src/duckdb/src/include/duckdb/common/constants.hpp +4 -0
  335. package/src/duckdb/src/include/duckdb/common/dl.hpp +3 -1
  336. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +681 -577
  337. package/src/duckdb/src/include/duckdb/common/enums/cte_materialize.hpp +21 -0
  338. package/src/duckdb/src/include/duckdb/common/enums/date_part_specifier.hpp +9 -1
  339. package/src/duckdb/src/include/duckdb/common/enums/index_type.hpp +4 -3
  340. package/src/duckdb/src/include/duckdb/common/enums/joinref_type.hpp +2 -1
  341. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +2 -0
  342. package/src/duckdb/src/include/duckdb/common/enums/operator_result_type.hpp +5 -1
  343. package/src/duckdb/src/include/duckdb/common/enums/optimizer_type.hpp +2 -0
  344. package/src/duckdb/src/include/duckdb/common/enums/pending_execution_result.hpp +1 -1
  345. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +2 -0
  346. package/src/duckdb/src/include/duckdb/common/exception.hpp +15 -1
  347. package/src/duckdb/src/include/duckdb/common/extra_operator_info.hpp +27 -0
  348. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +215 -0
  349. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +0 -4
  350. package/src/duckdb/src/include/duckdb/common/file_opener.hpp +9 -0
  351. package/src/duckdb/src/include/duckdb/common/file_system.hpp +10 -8
  352. package/src/duckdb/src/include/duckdb/common/filename_pattern.hpp +1 -1
  353. package/src/duckdb/src/include/duckdb/common/fixed_size_map.hpp +208 -0
  354. package/src/duckdb/src/include/duckdb/common/helper.hpp +8 -3
  355. package/src/duckdb/src/include/duckdb/common/hive_partitioning.hpp +1 -1
  356. package/src/duckdb/src/include/duckdb/common/http_state.hpp +61 -28
  357. package/src/duckdb/src/include/duckdb/common/hugeint.hpp +15 -0
  358. package/src/duckdb/src/include/duckdb/common/index_vector.hpp +12 -0
  359. package/src/duckdb/src/include/duckdb/common/limits.hpp +52 -149
  360. package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +11 -5
  361. package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +12 -42
  362. package/src/duckdb/src/include/duckdb/common/mutex.hpp +3 -0
  363. package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +48 -0
  364. package/src/duckdb/src/include/duckdb/common/opener_file_system.hpp +6 -2
  365. package/src/duckdb/src/include/duckdb/common/operator/add.hpp +5 -2
  366. package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +65 -4
  367. package/src/duckdb/src/include/duckdb/common/operator/multiply.hpp +3 -2
  368. package/src/duckdb/src/include/duckdb/common/operator/numeric_cast.hpp +10 -0
  369. package/src/duckdb/src/include/duckdb/common/operator/string_cast.hpp +1 -1
  370. package/src/duckdb/src/include/duckdb/common/operator/subtract.hpp +3 -2
  371. package/src/duckdb/src/include/duckdb/common/optional_idx.hpp +3 -0
  372. package/src/duckdb/src/include/duckdb/common/perfect_map_set.hpp +2 -1
  373. package/src/duckdb/src/include/duckdb/common/printer.hpp +11 -0
  374. package/src/duckdb/src/include/duckdb/common/radix.hpp +9 -20
  375. package/src/duckdb/src/include/duckdb/common/radix_partitioning.hpp +6 -21
  376. package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +3 -3
  377. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +71 -30
  378. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +48 -39
  379. package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_reader.hpp +0 -4
  380. package/src/duckdb/src/include/duckdb/common/serializer/deserialization_data.hpp +128 -0
  381. package/src/duckdb/src/include/duckdb/common/serializer/encoding_util.hpp +132 -0
  382. package/src/duckdb/src/include/duckdb/common/serializer/format_deserializer.hpp +186 -133
  383. package/src/duckdb/src/include/duckdb/common/serializer/format_serializer.hpp +166 -121
  384. package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +27 -4
  385. package/src/duckdb/src/include/duckdb/common/serializer.hpp +0 -7
  386. package/src/duckdb/src/include/duckdb/common/shared_ptr.hpp +8 -0
  387. package/src/duckdb/src/include/duckdb/common/sort/partition_state.hpp +34 -13
  388. package/src/duckdb/src/include/duckdb/common/stack_checker.hpp +34 -0
  389. package/src/duckdb/src/include/duckdb/common/string_util.hpp +11 -0
  390. package/src/duckdb/src/include/duckdb/common/type_util.hpp +8 -0
  391. package/src/duckdb/src/include/duckdb/common/typedefs.hpp +8 -0
  392. package/src/duckdb/src/include/duckdb/common/types/batched_data_collection.hpp +3 -1
  393. package/src/duckdb/src/include/duckdb/common/types/bit.hpp +81 -0
  394. package/src/duckdb/src/include/duckdb/common/types/column/column_data_allocator.hpp +11 -1
  395. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection.hpp +12 -1
  396. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection_segment.hpp +3 -1
  397. package/src/duckdb/src/include/duckdb/common/types/column/column_data_scan_states.hpp +3 -1
  398. package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +6 -3
  399. package/src/duckdb/src/include/duckdb/common/types/date.hpp +9 -5
  400. package/src/duckdb/src/include/duckdb/common/types/datetime.hpp +46 -3
  401. package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +7 -1
  402. package/src/duckdb/src/include/duckdb/common/types/interval.hpp +7 -0
  403. package/src/duckdb/src/include/duckdb/common/types/list_segment.hpp +11 -15
  404. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +46 -11
  405. package/src/duckdb/src/include/duckdb/common/types/row/row_data_collection_scanner.hpp +10 -1
  406. package/src/duckdb/src/include/duckdb/common/types/row/row_layout.hpp +1 -23
  407. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_allocator.hpp +14 -8
  408. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_collection.hpp +7 -3
  409. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_layout.hpp +7 -0
  410. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_segment.hpp +13 -8
  411. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +6 -2
  412. package/src/duckdb/src/include/duckdb/common/types/string_heap.hpp +3 -0
  413. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +9 -0
  414. package/src/duckdb/src/include/duckdb/common/types/time.hpp +5 -0
  415. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +16 -10
  416. package/src/duckdb/src/include/duckdb/common/types/value.hpp +7 -2
  417. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +10 -3
  418. package/src/duckdb/src/include/duckdb/common/types.hpp +6 -25
  419. package/src/duckdb/src/include/duckdb/common/vector.hpp +2 -2
  420. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +7 -2
  421. package/src/duckdb/src/include/duckdb/common/virtual_file_system.hpp +40 -97
  422. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +4 -4
  423. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +3 -1
  424. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic_functions.hpp +3 -1
  425. package/src/duckdb/src/include/duckdb/core_functions/aggregate/distributive_functions.hpp +4 -2
  426. package/src/duckdb/src/include/duckdb/core_functions/aggregate/holistic_functions.hpp +3 -1
  427. package/src/duckdb/src/include/duckdb/core_functions/aggregate/nested_functions.hpp +3 -1
  428. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +1 -0
  429. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +3 -3
  430. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression_functions.hpp +3 -1
  431. package/src/duckdb/src/include/duckdb/core_functions/scalar/bit_functions.hpp +3 -1
  432. package/src/duckdb/src/include/duckdb/core_functions/scalar/blob_functions.hpp +3 -1
  433. package/src/duckdb/src/include/duckdb/core_functions/scalar/date_functions.hpp +40 -11
  434. package/src/duckdb/src/include/duckdb/core_functions/scalar/debug_functions.hpp +27 -0
  435. package/src/duckdb/src/include/duckdb/core_functions/scalar/enum_functions.hpp +3 -1
  436. package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +3 -1
  437. package/src/duckdb/src/include/duckdb/core_functions/scalar/list_functions.hpp +7 -5
  438. package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +3 -1
  439. package/src/duckdb/src/include/duckdb/core_functions/scalar/math_functions.hpp +6 -4
  440. package/src/duckdb/src/include/duckdb/core_functions/scalar/operators_functions.hpp +4 -2
  441. package/src/duckdb/src/include/duckdb/core_functions/scalar/random_functions.hpp +3 -1
  442. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +12 -1
  443. package/src/duckdb/src/include/duckdb/core_functions/scalar/struct_functions.hpp +3 -1
  444. package/src/duckdb/src/include/duckdb/core_functions/scalar/union_functions.hpp +3 -1
  445. package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +128 -131
  446. package/src/duckdb/src/include/duckdb/execution/executor.hpp +3 -0
  447. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +13 -12
  448. package/src/duckdb/src/include/duckdb/execution/index/art/art_key.hpp +0 -1
  449. package/src/duckdb/src/include/duckdb/execution/index/art/fixed_size_allocator.hpp +22 -24
  450. package/src/duckdb/src/include/duckdb/execution/index/art/iterator.hpp +32 -28
  451. package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +46 -51
  452. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +134 -53
  453. package/src/duckdb/src/include/duckdb/execution/index/art/node16.hpp +5 -7
  454. package/src/duckdb/src/include/duckdb/execution/index/art/node256.hpp +5 -7
  455. package/src/duckdb/src/include/duckdb/execution/index/art/node4.hpp +7 -9
  456. package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +5 -7
  457. package/src/duckdb/src/include/duckdb/execution/index/art/prefix.hpp +63 -52
  458. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_hash_aggregate.hpp +8 -7
  459. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_perfecthash_aggregate.hpp +1 -1
  460. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_ungrouped_aggregate.hpp +3 -3
  461. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_window.hpp +6 -5
  462. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_batch_collector.hpp +2 -2
  463. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_explain_analyze.hpp +1 -1
  464. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit.hpp +1 -1
  465. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_materialized_collector.hpp +1 -1
  466. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_vacuum.hpp +2 -2
  467. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_asof_join.hpp +5 -12
  468. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_blockwise_nl_join.hpp +1 -1
  469. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_delim_join.hpp +2 -2
  470. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_hash_join.hpp +2 -2
  471. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_iejoin.hpp +3 -3
  472. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_nested_loop_join.hpp +2 -2
  473. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp +3 -3
  474. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_range_join.hpp +12 -1
  475. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_order.hpp +2 -2
  476. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_top_n.hpp +2 -2
  477. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_rejects_table.hpp +36 -0
  478. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_copy_to_file.hpp +2 -2
  479. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +2 -2
  480. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +2 -2
  481. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_fixed_batch_copy.hpp +2 -2
  482. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_insert.hpp +2 -2
  483. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_update.hpp +1 -1
  484. package/src/duckdb/src/include/duckdb/execution/operator/{persistent → scan/csv}/base_csv_reader.hpp +19 -19
  485. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/buffered_csv_reader.hpp +72 -0
  486. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_buffer.hpp +110 -0
  487. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_buffer_manager.hpp +103 -0
  488. package/src/duckdb/src/include/duckdb/execution/operator/{persistent → scan/csv}/csv_file_handle.hpp +8 -15
  489. package/src/duckdb/src/include/duckdb/execution/operator/{persistent → scan/csv}/csv_line_info.hpp +5 -4
  490. package/src/duckdb/src/include/duckdb/execution/operator/{persistent → scan/csv}/csv_reader_options.hpp +61 -28
  491. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_sniffer.hpp +127 -0
  492. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_state_machine.hpp +75 -0
  493. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_state_machine_cache.hpp +51 -0
  494. package/src/duckdb/src/include/duckdb/execution/operator/{persistent → scan/csv}/parallel_csv_reader.hpp +22 -28
  495. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/quote_rules.hpp +21 -0
  496. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +10 -0
  497. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_table_scan.hpp +5 -5
  498. package/src/duckdb/src/include/duckdb/execution/operator/schema/{physical_create_index.hpp → physical_create_art_index.hpp} +14 -7
  499. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +62 -0
  500. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +8 -2
  501. package/src/duckdb/src/include/duckdb/execution/perfect_aggregate_hashtable.hpp +4 -2
  502. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +6 -5
  503. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +11 -0
  504. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +6 -2
  505. package/src/duckdb/src/include/duckdb/execution/radix_partitioned_hashtable.hpp +19 -21
  506. package/src/duckdb/src/include/duckdb/execution/window_executor.hpp +313 -0
  507. package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +79 -63
  508. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +12 -4
  509. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +2 -2
  510. package/src/duckdb/src/include/duckdb/function/built_in_functions.hpp +1 -0
  511. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -1
  512. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +80 -0
  513. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +3 -0
  514. package/src/duckdb/src/include/duckdb/function/scalar/compressed_materialization_functions.hpp +49 -0
  515. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +1 -1
  516. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +5 -0
  517. package/src/duckdb/src/include/duckdb/function/scalar/strftime_format.hpp +12 -4
  518. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +2 -0
  519. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +8 -3
  520. package/src/duckdb/src/include/duckdb/function/scalar_macro_function.hpp +3 -0
  521. package/src/duckdb/src/include/duckdb/function/table/arrow/arrow_duck_schema.hpp +99 -0
  522. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +6 -36
  523. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +24 -12
  524. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +5 -1
  525. package/src/duckdb/src/include/duckdb/function/table_function.hpp +8 -0
  526. package/src/duckdb/src/include/duckdb/function/table_macro_function.hpp +3 -0
  527. package/src/duckdb/src/include/duckdb/function/udf_function.hpp +2 -1
  528. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +1 -1
  529. package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +4 -3
  530. package/src/duckdb/src/include/duckdb/main/chunk_scan_state/query_result.hpp +29 -0
  531. package/src/duckdb/src/include/duckdb/main/chunk_scan_state.hpp +43 -0
  532. package/src/duckdb/src/include/duckdb/main/client_config.hpp +7 -2
  533. package/src/duckdb/src/include/duckdb/main/client_context.hpp +16 -14
  534. package/src/duckdb/src/include/duckdb/main/client_context_file_opener.hpp +1 -0
  535. package/src/duckdb/src/include/duckdb/main/client_data.hpp +2 -1
  536. package/src/duckdb/src/include/duckdb/main/client_properties.hpp +25 -0
  537. package/src/duckdb/src/include/duckdb/main/config.hpp +16 -1
  538. package/src/duckdb/src/include/duckdb/main/connection.hpp +3 -4
  539. package/src/duckdb/src/include/duckdb/main/extension/generated_extension_loader.hpp +27 -0
  540. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +210 -144
  541. package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +34 -3
  542. package/src/duckdb/src/include/duckdb/main/extension_util.hpp +4 -0
  543. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +5 -0
  544. package/src/duckdb/src/include/duckdb/main/prepared_statement.hpp +73 -5
  545. package/src/duckdb/src/include/duckdb/main/prepared_statement_data.hpp +6 -6
  546. package/src/duckdb/src/include/duckdb/main/query_result.hpp +2 -27
  547. package/src/duckdb/src/include/duckdb/main/relation/aggregate_relation.hpp +4 -1
  548. package/src/duckdb/src/include/duckdb/main/relation/cross_product_relation.hpp +4 -1
  549. package/src/duckdb/src/include/duckdb/main/relation/join_relation.hpp +5 -2
  550. package/src/duckdb/src/include/duckdb/main/relation/read_csv_relation.hpp +6 -6
  551. package/src/duckdb/src/include/duckdb/main/relation.hpp +4 -2
  552. package/src/duckdb/src/include/duckdb/main/settings.hpp +71 -11
  553. package/src/duckdb/src/include/duckdb/optimizer/column_binding_replacer.hpp +47 -0
  554. package/src/duckdb/src/include/duckdb/optimizer/compressed_materialization.hpp +132 -0
  555. package/src/duckdb/src/include/duckdb/optimizer/deliminator.hpp +13 -16
  556. package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +7 -0
  557. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +38 -64
  558. package/src/duckdb/src/include/duckdb/optimizer/join_order/cost_model.hpp +37 -0
  559. package/src/duckdb/src/include/duckdb/optimizer/join_order/estimated_properties.hpp +10 -1
  560. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_node.hpp +14 -29
  561. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_order_optimizer.hpp +8 -22
  562. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_relation.hpp +1 -12
  563. package/src/duckdb/src/include/duckdb/optimizer/join_order/plan_enumerator.hpp +89 -0
  564. package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph.hpp +19 -30
  565. package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph_manager.hpp +113 -0
  566. package/src/duckdb/src/include/duckdb/optimizer/join_order/relation_manager.hpp +73 -0
  567. package/src/duckdb/src/include/duckdb/optimizer/join_order/relation_statistics_helper.hpp +73 -0
  568. package/src/duckdb/src/include/duckdb/optimizer/matcher/set_matcher.hpp +13 -0
  569. package/src/duckdb/src/include/duckdb/optimizer/optimizer.hpp +3 -0
  570. package/src/duckdb/src/include/duckdb/optimizer/remove_duplicate_groups.hpp +40 -0
  571. package/src/duckdb/src/include/duckdb/optimizer/statistics_propagator.hpp +11 -3
  572. package/src/duckdb/src/include/duckdb/optimizer/topn_optimizer.hpp +2 -0
  573. package/src/duckdb/src/include/duckdb/parallel/event.hpp +12 -1
  574. package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +2 -3
  575. package/src/duckdb/src/include/duckdb/parallel/pipeline_executor.hpp +3 -2
  576. package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +9 -1
  577. package/src/duckdb/src/include/duckdb/parser/column_definition.hpp +6 -5
  578. package/src/duckdb/src/include/duckdb/parser/column_list.hpp +4 -0
  579. package/src/duckdb/src/include/duckdb/parser/common_table_expression_info.hpp +2 -0
  580. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +5 -0
  581. package/src/duckdb/src/include/duckdb/parser/constraints/check_constraint.hpp +3 -0
  582. package/src/duckdb/src/include/duckdb/parser/constraints/foreign_key_constraint.hpp +6 -0
  583. package/src/duckdb/src/include/duckdb/parser/constraints/not_null_constraint.hpp +3 -0
  584. package/src/duckdb/src/include/duckdb/parser/constraints/unique_constraint.hpp +6 -0
  585. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +4 -1
  586. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  587. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +4 -1
  588. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +4 -1
  589. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +4 -1
  590. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +4 -1
  591. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  592. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +4 -1
  593. package/src/duckdb/src/include/duckdb/parser/expression/default_expression.hpp +1 -0
  594. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +4 -1
  595. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +4 -1
  596. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +21 -4
  597. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +18 -2
  598. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +4 -1
  599. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  600. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  601. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +4 -1
  602. package/src/duckdb/src/include/duckdb/parser/group_by_node.hpp +11 -0
  603. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +12 -1
  604. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +66 -2
  605. package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +8 -1
  606. package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_info.hpp +8 -1
  607. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_index_info.hpp +9 -1
  608. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +9 -2
  609. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_macro_info.hpp +3 -0
  610. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_schema_info.hpp +3 -0
  611. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_sequence_info.hpp +3 -0
  612. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_info.hpp +3 -0
  613. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_type_info.hpp +3 -0
  614. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +3 -0
  615. package/src/duckdb/src/include/duckdb/parser/parsed_data/detach_info.hpp +7 -0
  616. package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +7 -0
  617. package/src/duckdb/src/include/duckdb/parser/parsed_data/exported_table_data.hpp +7 -0
  618. package/src/duckdb/src/include/duckdb/parser/parsed_data/load_info.hpp +17 -3
  619. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +22 -0
  620. package/src/duckdb/src/include/duckdb/parser/parsed_data/pragma_info.hpp +10 -0
  621. package/src/duckdb/src/include/duckdb/parser/parsed_data/show_select_info.hpp +7 -0
  622. package/src/duckdb/src/include/duckdb/parser/parsed_data/transaction_info.hpp +10 -0
  623. package/src/duckdb/src/include/duckdb/parser/parsed_data/vacuum_info.hpp +10 -0
  624. package/src/duckdb/src/include/duckdb/parser/parser.hpp +4 -0
  625. package/src/duckdb/src/include/duckdb/parser/query_node/cte_node.hpp +54 -0
  626. package/src/duckdb/src/include/duckdb/parser/query_node/list.hpp +1 -0
  627. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -1
  628. package/src/duckdb/src/include/duckdb/parser/statement/execute_statement.hpp +1 -1
  629. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +1 -0
  630. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  631. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +3 -0
  632. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +1 -0
  633. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +23 -26
  634. package/src/duckdb/src/include/duckdb/planner/binder.hpp +16 -5
  635. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +0 -8
  636. package/src/duckdb/src/include/duckdb/planner/bound_parameter_map.hpp +2 -1
  637. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +6 -0
  638. package/src/duckdb/src/include/duckdb/planner/bound_tokens.hpp +1 -0
  639. package/src/duckdb/src/include/duckdb/planner/column_binding.hpp +9 -0
  640. package/src/duckdb/src/include/duckdb/planner/constraints/bound_unique_constraint.hpp +3 -3
  641. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +3 -0
  642. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +6 -0
  643. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +6 -0
  644. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +6 -0
  645. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +3 -0
  646. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +3 -0
  647. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +3 -0
  648. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +3 -0
  649. package/src/duckdb/src/include/duckdb/planner/expression/bound_default_expression.hpp +3 -0
  650. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +4 -0
  651. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +3 -1
  652. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +3 -0
  653. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +3 -0
  654. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_data.hpp +24 -6
  655. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +9 -2
  656. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +3 -0
  657. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +3 -0
  658. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +3 -0
  659. package/src/duckdb/src/include/duckdb/planner/expression/list.hpp +1 -0
  660. package/src/duckdb/src/include/duckdb/planner/expression.hpp +3 -0
  661. package/src/duckdb/src/include/duckdb/planner/expression_binder/lateral_binder.hpp +0 -2
  662. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +13 -1
  663. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +4 -0
  664. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +2 -0
  665. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +4 -0
  666. package/src/duckdb/src/include/duckdb/planner/joinside.hpp +3 -0
  667. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +3 -2
  668. package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +1 -2
  669. package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +3 -3
  670. package/src/duckdb/src/include/duckdb/planner/operator/logical_aggregate.hpp +3 -0
  671. package/src/duckdb/src/include/duckdb/planner/operator/logical_any_join.hpp +3 -0
  672. package/src/duckdb/src/include/duckdb/planner/operator/logical_column_data_get.hpp +4 -0
  673. package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +12 -7
  674. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +2 -0
  675. package/src/duckdb/src/include/duckdb/planner/operator/logical_create.hpp +9 -6
  676. package/src/duckdb/src/include/duckdb/planner/operator/logical_create_index.hpp +12 -23
  677. package/src/duckdb/src/include/duckdb/planner/operator/logical_create_table.hpp +10 -6
  678. package/src/duckdb/src/include/duckdb/planner/operator/logical_cross_product.hpp +3 -0
  679. package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +9 -2
  680. package/src/duckdb/src/include/duckdb/planner/operator/logical_delete.hpp +7 -0
  681. package/src/duckdb/src/include/duckdb/planner/operator/logical_delim_get.hpp +3 -0
  682. package/src/duckdb/src/include/duckdb/planner/operator/logical_dependent_join.hpp +43 -0
  683. package/src/duckdb/src/include/duckdb/planner/operator/logical_distinct.hpp +6 -10
  684. package/src/duckdb/src/include/duckdb/planner/operator/logical_dummy_scan.hpp +2 -0
  685. package/src/duckdb/src/include/duckdb/planner/operator/logical_empty_result.hpp +2 -0
  686. package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +4 -0
  687. package/src/duckdb/src/include/duckdb/planner/operator/logical_expression_get.hpp +3 -0
  688. package/src/duckdb/src/include/duckdb/planner/operator/logical_extension_operator.hpp +8 -0
  689. package/src/duckdb/src/include/duckdb/planner/operator/logical_filter.hpp +3 -0
  690. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +11 -1
  691. package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +6 -0
  692. package/src/duckdb/src/include/duckdb/planner/operator/logical_limit.hpp +3 -0
  693. package/src/duckdb/src/include/duckdb/planner/operator/logical_limit_percent.hpp +3 -0
  694. package/src/duckdb/src/include/duckdb/planner/operator/logical_materialized_cte.hpp +52 -0
  695. package/src/duckdb/src/include/duckdb/planner/operator/logical_order.hpp +7 -35
  696. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +6 -0
  697. package/src/duckdb/src/include/duckdb/planner/operator/logical_positional_join.hpp +3 -0
  698. package/src/duckdb/src/include/duckdb/planner/operator/logical_projection.hpp +3 -0
  699. package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +10 -7
  700. package/src/duckdb/src/include/duckdb/planner/operator/logical_reset.hpp +4 -0
  701. package/src/duckdb/src/include/duckdb/planner/operator/logical_sample.hpp +6 -0
  702. package/src/duckdb/src/include/duckdb/planner/operator/logical_set.hpp +4 -0
  703. package/src/duckdb/src/include/duckdb/planner/operator/logical_set_operation.hpp +4 -0
  704. package/src/duckdb/src/include/duckdb/planner/operator/logical_show.hpp +3 -0
  705. package/src/duckdb/src/include/duckdb/planner/operator/logical_simple.hpp +3 -0
  706. package/src/duckdb/src/include/duckdb/planner/operator/logical_top_n.hpp +4 -0
  707. package/src/duckdb/src/include/duckdb/planner/operator/logical_unnest.hpp +2 -0
  708. package/src/duckdb/src/include/duckdb/planner/operator/logical_update.hpp +6 -0
  709. package/src/duckdb/src/include/duckdb/planner/operator/logical_window.hpp +3 -0
  710. package/src/duckdb/src/include/duckdb/planner/operator_extension.hpp +1 -0
  711. package/src/duckdb/src/include/duckdb/planner/planner.hpp +4 -3
  712. package/src/duckdb/src/include/duckdb/planner/query_node/bound_cte_node.hpp +44 -0
  713. package/src/duckdb/src/include/duckdb/planner/query_node/list.hpp +1 -0
  714. package/src/duckdb/src/include/duckdb/planner/subquery/flatten_dependent_join.hpp +2 -2
  715. package/src/duckdb/src/include/duckdb/planner/subquery/has_correlated_expressions.hpp +4 -1
  716. package/src/duckdb/src/include/duckdb/planner/subquery/recursive_dependent_join_planner.hpp +31 -0
  717. package/src/duckdb/src/include/duckdb/planner/subquery/rewrite_correlated_expressions.hpp +8 -2
  718. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +7 -1
  719. package/src/duckdb/src/include/duckdb/planner/tableref/bound_cteref.hpp +5 -2
  720. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  721. package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +2 -1
  722. package/src/duckdb/src/include/duckdb/storage/block.hpp +33 -4
  723. package/src/duckdb/src/include/duckdb/storage/block_manager.hpp +11 -11
  724. package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +3 -0
  725. package/src/duckdb/src/include/duckdb/storage/checkpoint/row_group_writer.hpp +5 -5
  726. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_reader.hpp +2 -2
  727. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +3 -3
  728. package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +19 -16
  729. package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +1 -1
  730. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +2 -2
  731. package/src/duckdb/src/include/duckdb/storage/in_memory_block_manager.hpp +2 -2
  732. package/src/duckdb/src/include/duckdb/storage/index.hpp +2 -2
  733. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_manager.hpp +88 -0
  734. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_reader.hpp +54 -0
  735. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_writer.hpp +45 -0
  736. package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +22 -0
  737. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +2 -2
  738. package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +8 -5
  739. package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +7 -3
  740. package/src/duckdb/src/include/duckdb/storage/statistics/column_statistics.hpp +4 -0
  741. package/src/duckdb/src/include/duckdb/storage/statistics/distinct_statistics.hpp +5 -0
  742. package/src/duckdb/src/include/duckdb/storage/statistics/list_stats.hpp +3 -0
  743. package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats.hpp +3 -0
  744. package/src/duckdb/src/include/duckdb/storage/statistics/string_stats.hpp +7 -0
  745. package/src/duckdb/src/include/duckdb/storage/statistics/struct_stats.hpp +3 -0
  746. package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +2 -2
  747. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +2 -2
  748. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +18 -3
  749. package/src/duckdb/src/include/duckdb/storage/table/persistent_table_data.hpp +2 -2
  750. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +8 -3
  751. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +3 -3
  752. package/src/duckdb/src/include/duckdb/storage/table/row_group_segment_tree.hpp +2 -2
  753. package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +1 -1
  754. package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +5 -0
  755. package/src/duckdb/src/include/duckdb/storage/table_io_manager.hpp +3 -0
  756. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +3 -4
  757. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +2 -3
  758. package/src/duckdb/src/include/duckdb/verification/deserialized_statement_verifier_v2.hpp +6 -0
  759. package/src/duckdb/src/include/duckdb/verification/prepared_statement_verifier.hpp +1 -1
  760. package/src/duckdb/src/include/duckdb/verification/statement_verifier.hpp +1 -0
  761. package/src/duckdb/src/include/duckdb.h +98 -1
  762. package/src/duckdb/src/main/appender.cpp +3 -1
  763. package/src/duckdb/src/main/attached_database.cpp +2 -2
  764. package/src/duckdb/src/main/capi/arrow-c.cpp +196 -8
  765. package/src/duckdb/src/main/capi/duckdb-c.cpp +16 -0
  766. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +1 -1
  767. package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -0
  768. package/src/duckdb/src/main/capi/pending-c.cpp +23 -0
  769. package/src/duckdb/src/main/capi/prepared-c.cpp +106 -28
  770. package/src/duckdb/src/main/capi/result-c.cpp +3 -1
  771. package/src/duckdb/src/main/chunk_scan_state/query_result.cpp +53 -0
  772. package/src/duckdb/src/main/chunk_scan_state.cpp +48 -0
  773. package/src/duckdb/src/main/client_context.cpp +42 -19
  774. package/src/duckdb/src/main/client_context_file_opener.cpp +17 -0
  775. package/src/duckdb/src/main/client_verify.cpp +18 -0
  776. package/src/duckdb/src/main/config.cpp +9 -3
  777. package/src/duckdb/src/main/connection.cpp +3 -3
  778. package/src/duckdb/src/main/database.cpp +2 -11
  779. package/src/duckdb/src/main/db_instance_cache.cpp +14 -6
  780. package/src/duckdb/src/main/extension/extension_helper.cpp +164 -88
  781. package/src/duckdb/src/main/extension/extension_install.cpp +56 -8
  782. package/src/duckdb/src/main/extension/extension_load.cpp +26 -6
  783. package/src/duckdb/src/main/extension/extension_util.cpp +16 -0
  784. package/src/duckdb/src/main/pending_query_result.cpp +9 -1
  785. package/src/duckdb/src/main/prepared_statement.cpp +38 -11
  786. package/src/duckdb/src/main/prepared_statement_data.cpp +23 -18
  787. package/src/duckdb/src/main/query_result.cpp +0 -21
  788. package/src/duckdb/src/main/relation/aggregate_relation.cpp +20 -10
  789. package/src/duckdb/src/main/relation/cross_product_relation.cpp +4 -3
  790. package/src/duckdb/src/main/relation/join_relation.cpp +6 -6
  791. package/src/duckdb/src/main/relation/read_csv_relation.cpp +19 -13
  792. package/src/duckdb/src/main/relation.cpp +10 -9
  793. package/src/duckdb/src/main/settings/settings.cpp +125 -33
  794. package/src/duckdb/src/optimizer/column_binding_replacer.cpp +43 -0
  795. package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +2 -4
  796. package/src/duckdb/src/optimizer/compressed_materialization/compress_aggregate.cpp +140 -0
  797. package/src/duckdb/src/optimizer/compressed_materialization/compress_distinct.cpp +42 -0
  798. package/src/duckdb/src/optimizer/compressed_materialization/compress_order.cpp +65 -0
  799. package/src/duckdb/src/optimizer/compressed_materialization.cpp +477 -0
  800. package/src/duckdb/src/optimizer/deliminator.cpp +180 -323
  801. package/src/duckdb/src/optimizer/filter_pushdown.cpp +23 -6
  802. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +79 -325
  803. package/src/duckdb/src/optimizer/join_order/cost_model.cpp +19 -0
  804. package/src/duckdb/src/optimizer/join_order/estimated_properties.cpp +7 -0
  805. package/src/duckdb/src/optimizer/join_order/join_node.cpp +5 -37
  806. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +48 -1047
  807. package/src/duckdb/src/optimizer/join_order/join_relation_set.cpp +2 -6
  808. package/src/duckdb/src/optimizer/join_order/plan_enumerator.cpp +552 -0
  809. package/src/duckdb/src/optimizer/join_order/query_graph.cpp +52 -41
  810. package/src/duckdb/src/optimizer/join_order/query_graph_manager.cpp +409 -0
  811. package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +356 -0
  812. package/src/duckdb/src/optimizer/join_order/relation_statistics_helper.cpp +351 -0
  813. package/src/duckdb/src/optimizer/optimizer.cpp +49 -14
  814. package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +5 -5
  815. package/src/duckdb/src/optimizer/pushdown/pushdown_get.cpp +0 -1
  816. package/src/duckdb/src/optimizer/pushdown/pushdown_projection.cpp +34 -7
  817. package/src/duckdb/src/optimizer/remove_duplicate_groups.cpp +127 -0
  818. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +4 -0
  819. package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +154 -15
  820. package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +65 -8
  821. package/src/duckdb/src/optimizer/statistics/operator/propagate_order.cpp +1 -1
  822. package/src/duckdb/src/optimizer/statistics_propagator.cpp +7 -5
  823. package/src/duckdb/src/optimizer/topn_optimizer.cpp +27 -10
  824. package/src/duckdb/src/optimizer/unnest_rewriter.cpp +3 -5
  825. package/src/duckdb/src/parallel/executor.cpp +25 -1
  826. package/src/duckdb/src/parallel/pipeline.cpp +0 -17
  827. package/src/duckdb/src/parallel/pipeline_executor.cpp +33 -13
  828. package/src/duckdb/src/parallel/pipeline_finish_event.cpp +55 -1
  829. package/src/duckdb/src/parallel/task_scheduler.cpp +18 -2
  830. package/src/duckdb/src/parser/column_definition.cpp +20 -32
  831. package/src/duckdb/src/parser/column_list.cpp +8 -0
  832. package/src/duckdb/src/parser/constraints/foreign_key_constraint.cpp +3 -0
  833. package/src/duckdb/src/parser/constraints/unique_constraint.cpp +3 -0
  834. package/src/duckdb/src/parser/expression/between_expression.cpp +3 -15
  835. package/src/duckdb/src/parser/expression/case_expression.cpp +0 -25
  836. package/src/duckdb/src/parser/expression/cast_expression.cpp +3 -14
  837. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -13
  838. package/src/duckdb/src/parser/expression/columnref_expression.cpp +3 -12
  839. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -13
  840. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +0 -12
  841. package/src/duckdb/src/parser/expression/constant_expression.cpp +3 -11
  842. package/src/duckdb/src/parser/expression/default_expression.cpp +0 -4
  843. package/src/duckdb/src/parser/expression/function_expression.cpp +3 -32
  844. package/src/duckdb/src/parser/expression/lambda_expression.cpp +4 -14
  845. package/src/duckdb/src/parser/expression/operator_expression.cpp +0 -12
  846. package/src/duckdb/src/parser/expression/parameter_expression.cpp +7 -19
  847. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +4 -11
  848. package/src/duckdb/src/parser/expression/star_expression.cpp +0 -19
  849. package/src/duckdb/src/parser/expression/subquery_expression.cpp +0 -18
  850. package/src/duckdb/src/parser/expression/window_expression.cpp +3 -39
  851. package/src/duckdb/src/parser/parsed_data/alter_info.cpp +5 -2
  852. package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +38 -0
  853. package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +17 -1
  854. package/src/duckdb/src/parser/parsed_data/create_sequence_info.cpp +2 -0
  855. package/src/duckdb/src/parser/parsed_data/detach_info.cpp +1 -1
  856. package/src/duckdb/src/parser/parsed_data/drop_info.cpp +1 -1
  857. package/src/duckdb/src/parser/parsed_data/sample_options.cpp +0 -18
  858. package/src/duckdb/src/parser/parsed_data/transaction_info.cpp +4 -1
  859. package/src/duckdb/src/parser/parsed_data/vacuum_info.cpp +1 -1
  860. package/src/duckdb/src/parser/parsed_expression.cpp +0 -70
  861. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +7 -0
  862. package/src/duckdb/src/parser/parser.cpp +62 -36
  863. package/src/duckdb/src/parser/query_node/cte_node.cpp +58 -0
  864. package/src/duckdb/src/parser/query_node/recursive_cte_node.cpp +0 -19
  865. package/src/duckdb/src/parser/query_node/select_node.cpp +0 -29
  866. package/src/duckdb/src/parser/query_node/set_operation_node.cpp +0 -15
  867. package/src/duckdb/src/parser/query_node.cpp +15 -47
  868. package/src/duckdb/src/parser/result_modifier.cpp +0 -87
  869. package/src/duckdb/src/parser/statement/execute_statement.cpp +2 -2
  870. package/src/duckdb/src/parser/statement/select_statement.cpp +0 -10
  871. package/src/duckdb/src/parser/tableref/basetableref.cpp +0 -19
  872. package/src/duckdb/src/parser/tableref/emptytableref.cpp +0 -4
  873. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +0 -15
  874. package/src/duckdb/src/parser/tableref/joinref.cpp +3 -23
  875. package/src/duckdb/src/parser/tableref/pivotref.cpp +0 -55
  876. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -13
  877. package/src/duckdb/src/parser/tableref/table_function.cpp +0 -15
  878. package/src/duckdb/src/parser/tableref.cpp +0 -44
  879. package/src/duckdb/src/parser/transform/constraint/transform_constraint.cpp +55 -38
  880. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +13 -4
  881. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +55 -3
  882. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +2 -0
  883. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +3 -0
  884. package/src/duckdb/src/parser/transform/expression/transform_multi_assign_reference.cpp +44 -0
  885. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +45 -26
  886. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +19 -1
  887. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +16 -1
  888. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +13 -0
  889. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +32 -17
  890. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +1 -1
  891. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +6 -1
  892. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +6 -1
  893. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +1 -0
  894. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -2
  895. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +14 -11
  896. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +28 -6
  897. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +11 -2
  898. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +6 -1
  899. package/src/duckdb/src/parser/transformer.cpp +44 -25
  900. package/src/duckdb/src/planner/binder/expression/bind_macro_expression.cpp +5 -3
  901. package/src/duckdb/src/planner/binder/expression/bind_parameter_expression.cpp +10 -10
  902. package/src/duckdb/src/planner/binder/query_node/bind_cte_node.cpp +64 -0
  903. package/src/duckdb/src/planner/binder/query_node/plan_cte_node.cpp +26 -0
  904. package/src/duckdb/src/planner/binder/query_node/plan_recursive_cte_node.cpp +5 -5
  905. package/src/duckdb/src/planner/binder/query_node/plan_setop.cpp +4 -4
  906. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +36 -33
  907. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +1 -1
  908. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +14 -52
  909. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +0 -23
  910. package/src/duckdb/src/planner/binder/statement/bind_execute.cpp +13 -7
  911. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +70 -29
  912. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +93 -28
  913. package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +32 -5
  914. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +116 -50
  915. package/src/duckdb/src/planner/binder/tableref/plan_cteref.cpp +1 -1
  916. package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +67 -31
  917. package/src/duckdb/src/planner/binder/tableref/plan_subqueryref.cpp +3 -3
  918. package/src/duckdb/src/planner/binder.cpp +44 -31
  919. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +24 -1
  920. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +4 -0
  921. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +13 -8
  922. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +22 -0
  923. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +28 -20
  924. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +48 -4
  925. package/src/duckdb/src/planner/expression_binder/lateral_binder.cpp +4 -31
  926. package/src/duckdb/src/planner/expression_binder/order_binder.cpp +5 -4
  927. package/src/duckdb/src/planner/expression_binder.cpp +23 -0
  928. package/src/duckdb/src/planner/expression_iterator.cpp +6 -0
  929. package/src/duckdb/src/planner/logical_operator.cpp +19 -7
  930. package/src/duckdb/src/planner/logical_operator_visitor.cpp +5 -6
  931. package/src/duckdb/src/planner/operator/logical_comparison_join.cpp +4 -2
  932. package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +8 -0
  933. package/src/duckdb/src/planner/operator/logical_create.cpp +14 -0
  934. package/src/duckdb/src/planner/operator/logical_create_index.cpp +36 -7
  935. package/src/duckdb/src/planner/operator/logical_create_table.cpp +16 -0
  936. package/src/duckdb/src/planner/operator/logical_cteref.cpp +3 -1
  937. package/src/duckdb/src/planner/operator/logical_delete.cpp +9 -2
  938. package/src/duckdb/src/planner/operator/logical_dependent_join.cpp +26 -0
  939. package/src/duckdb/src/planner/operator/logical_distinct.cpp +13 -0
  940. package/src/duckdb/src/planner/operator/logical_explain.cpp +1 -1
  941. package/src/duckdb/src/planner/operator/logical_extension_operator.cpp +39 -0
  942. package/src/duckdb/src/planner/operator/logical_get.cpp +82 -4
  943. package/src/duckdb/src/planner/operator/logical_insert.cpp +8 -2
  944. package/src/duckdb/src/planner/operator/logical_materialized_cte.cpp +22 -0
  945. package/src/duckdb/src/planner/operator/logical_order.cpp +39 -0
  946. package/src/duckdb/src/planner/operator/logical_pivot.cpp +3 -0
  947. package/src/duckdb/src/planner/operator/logical_recursive_cte.cpp +5 -5
  948. package/src/duckdb/src/planner/operator/logical_sample.cpp +3 -0
  949. package/src/duckdb/src/planner/operator/logical_update.cpp +8 -2
  950. package/src/duckdb/src/planner/parsed_data/bound_create_table_info.cpp +4 -2
  951. package/src/duckdb/src/planner/planner.cpp +18 -7
  952. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +90 -38
  953. package/src/duckdb/src/planner/subquery/has_correlated_expressions.cpp +22 -7
  954. package/src/duckdb/src/planner/subquery/rewrite_correlated_expressions.cpp +65 -7
  955. package/src/duckdb/src/storage/arena_allocator.cpp +13 -2
  956. package/src/duckdb/src/storage/buffer/block_manager.cpp +13 -9
  957. package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +1 -1
  958. package/src/duckdb/src/storage/checkpoint/table_data_reader.cpp +3 -4
  959. package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +7 -7
  960. package/src/duckdb/src/storage/checkpoint_manager.cpp +78 -72
  961. package/src/duckdb/src/storage/compression/bitpacking.cpp +87 -63
  962. package/src/duckdb/src/storage/compression/bitpacking_hugeint.cpp +295 -0
  963. package/src/duckdb/src/storage/compression/fsst.cpp +1 -1
  964. package/src/duckdb/src/storage/compression/rle.cpp +52 -13
  965. package/src/duckdb/src/storage/data_table.cpp +36 -25
  966. package/src/duckdb/src/storage/index.cpp +4 -26
  967. package/src/duckdb/src/storage/local_storage.cpp +3 -4
  968. package/src/duckdb/src/storage/metadata/metadata_manager.cpp +267 -0
  969. package/src/duckdb/src/storage/metadata/metadata_reader.cpp +80 -0
  970. package/src/duckdb/src/storage/metadata/metadata_writer.cpp +86 -0
  971. package/src/duckdb/src/storage/serialization/serialize_constraint.cpp +98 -0
  972. package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +194 -0
  973. package/src/duckdb/src/storage/serialization/serialize_expression.cpp +283 -0
  974. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +762 -0
  975. package/src/duckdb/src/storage/serialization/serialize_macro_function.cpp +62 -0
  976. package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +461 -0
  977. package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +421 -0
  978. package/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp +342 -0
  979. package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +122 -0
  980. package/src/duckdb/src/storage/serialization/serialize_result_modifier.cpp +97 -0
  981. package/src/duckdb/src/storage/serialization/serialize_statement.cpp +22 -0
  982. package/src/duckdb/src/storage/serialization/serialize_storage.cpp +39 -0
  983. package/src/duckdb/src/storage/serialization/serialize_table_filter.cpp +97 -0
  984. package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +164 -0
  985. package/src/duckdb/src/storage/serialization/serialize_types.cpp +127 -0
  986. package/src/duckdb/src/storage/single_file_block_manager.cpp +69 -51
  987. package/src/duckdb/src/storage/statistics/base_statistics.cpp +67 -4
  988. package/src/duckdb/src/storage/statistics/column_statistics.cpp +16 -0
  989. package/src/duckdb/src/storage/statistics/list_stats.cpp +21 -0
  990. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +126 -1
  991. package/src/duckdb/src/storage/statistics/string_stats.cpp +44 -2
  992. package/src/duckdb/src/storage/statistics/struct_stats.cpp +27 -0
  993. package/src/duckdb/src/storage/storage_info.cpp +3 -2
  994. package/src/duckdb/src/storage/storage_manager.cpp +11 -5
  995. package/src/duckdb/src/storage/table/chunk_info.cpp +99 -3
  996. package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +3 -3
  997. package/src/duckdb/src/storage/table/list_column_data.cpp +6 -3
  998. package/src/duckdb/src/storage/table/persistent_table_data.cpp +1 -2
  999. package/src/duckdb/src/storage/table/row_group.cpp +102 -20
  1000. package/src/duckdb/src/storage/table/row_group_collection.cpp +23 -19
  1001. package/src/duckdb/src/storage/table/table_statistics.cpp +21 -0
  1002. package/src/duckdb/src/storage/table/update_segment.cpp +1 -1
  1003. package/src/duckdb/src/storage/table_index_list.cpp +1 -1
  1004. package/src/duckdb/src/storage/wal_replay.cpp +26 -26
  1005. package/src/duckdb/src/storage/write_ahead_log.cpp +3 -2
  1006. package/src/duckdb/src/verification/deserialized_statement_verifier_v2.cpp +15 -1
  1007. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +16 -11
  1008. package/src/duckdb/src/verification/statement_verifier.cpp +2 -0
  1009. package/src/duckdb/third_party/concurrentqueue/concurrentqueue.h +2 -2
  1010. package/src/duckdb/third_party/concurrentqueue/lightweightsemaphore.h +5 -2
  1011. package/src/duckdb/third_party/fast_float/fast_float/fast_float.h +2 -0
  1012. package/src/duckdb/third_party/httplib/httplib.hpp +10 -1
  1013. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +11 -0
  1014. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +2 -1
  1015. package/src/duckdb/third_party/libpg_query/pg_functions.cpp +13 -0
  1016. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +11019 -10364
  1017. package/src/duckdb/third_party/libpg_query/src_backend_parser_scansup.cpp +9 -0
  1018. package/src/duckdb/third_party/mbedtls/include/mbedtls_wrapper.hpp +10 -0
  1019. package/src/duckdb/third_party/mbedtls/mbedtls_wrapper.cpp +31 -1
  1020. package/src/duckdb/third_party/utf8proc/include/utf8proc_wrapper.hpp +8 -0
  1021. package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +4 -4
  1022. package/src/duckdb/ub_src_common.cpp +4 -0
  1023. package/src/duckdb/ub_src_common_adbc_nanoarrow.cpp +8 -0
  1024. package/src/duckdb/ub_src_common_arrow_appender.cpp +10 -0
  1025. package/src/duckdb/ub_src_common_serializer.cpp +2 -0
  1026. package/src/duckdb/ub_src_core_functions_scalar_debug.cpp +2 -0
  1027. package/src/duckdb/ub_src_core_functions_scalar_string.cpp +2 -0
  1028. package/src/duckdb/ub_src_execution.cpp +2 -2
  1029. package/src/duckdb/ub_src_execution_index_art.cpp +0 -6
  1030. package/src/duckdb/ub_src_execution_operator_csv_scanner.cpp +18 -0
  1031. package/src/duckdb/ub_src_execution_operator_csv_scanner_sniffer.cpp +12 -0
  1032. package/src/duckdb/ub_src_execution_operator_persistent.cpp +1 -11
  1033. package/src/duckdb/ub_src_execution_operator_schema.cpp +1 -1
  1034. package/src/duckdb/ub_src_execution_operator_set.cpp +2 -0
  1035. package/src/duckdb/ub_src_execution_physical_plan.cpp +2 -0
  1036. package/src/duckdb/ub_src_function_scalar.cpp +2 -0
  1037. package/src/duckdb/ub_src_function_scalar_compressed_materialization.cpp +4 -0
  1038. package/src/duckdb/ub_src_function_scalar_list.cpp +2 -0
  1039. package/src/duckdb/ub_src_function_table_arrow.cpp +2 -0
  1040. package/src/duckdb/ub_src_main.cpp +2 -0
  1041. package/src/duckdb/ub_src_main_chunk_scan_state.cpp +2 -0
  1042. package/src/duckdb/ub_src_optimizer.cpp +6 -0
  1043. package/src/duckdb/ub_src_optimizer_compressed_materialization.cpp +6 -0
  1044. package/src/duckdb/ub_src_optimizer_join_order.cpp +10 -0
  1045. package/src/duckdb/ub_src_optimizer_statistics_expression.cpp +0 -2
  1046. package/src/duckdb/ub_src_parser.cpp +0 -2
  1047. package/src/duckdb/ub_src_parser_query_node.cpp +2 -0
  1048. package/src/duckdb/ub_src_parser_transform_expression.cpp +2 -0
  1049. package/src/duckdb/ub_src_planner_binder_query_node.cpp +4 -0
  1050. package/src/duckdb/ub_src_planner_operator.cpp +3 -3
  1051. package/src/duckdb/ub_src_storage.cpp +0 -4
  1052. package/src/duckdb/ub_src_storage_compression.cpp +2 -0
  1053. package/src/duckdb/ub_src_storage_metadata.cpp +6 -0
  1054. package/src/duckdb/ub_src_storage_serialization.cpp +30 -0
  1055. package/src/duckdb_node.hpp +1 -0
  1056. package/src/statement.cpp +10 -5
  1057. package/test/columns.test.ts +25 -3
  1058. package/test/extension.test.ts +1 -1
  1059. package/test/test_all_types.test.ts +234 -0
  1060. package/tsconfig.json +1 -0
  1061. package/src/duckdb/src/execution/index/art/leaf_segment.cpp +0 -52
  1062. package/src/duckdb/src/execution/index/art/prefix_segment.cpp +0 -42
  1063. package/src/duckdb/src/execution/index/art/swizzleable_pointer.cpp +0 -22
  1064. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +0 -1487
  1065. package/src/duckdb/src/execution/operator/persistent/csv_buffer.cpp +0 -72
  1066. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +0 -158
  1067. package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +0 -193
  1068. package/src/duckdb/src/execution/partitionable_hashtable.cpp +0 -172
  1069. package/src/duckdb/src/include/duckdb/common/arrow/arrow_options.hpp +0 -25
  1070. package/src/duckdb/src/include/duckdb/execution/index/art/leaf_segment.hpp +0 -38
  1071. package/src/duckdb/src/include/duckdb/execution/index/art/prefix_segment.hpp +0 -40
  1072. package/src/duckdb/src/include/duckdb/execution/index/art/swizzleable_pointer.hpp +0 -58
  1073. package/src/duckdb/src/include/duckdb/execution/operator/persistent/buffered_csv_reader.hpp +0 -133
  1074. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +0 -74
  1075. package/src/duckdb/src/include/duckdb/execution/partitionable_hashtable.hpp +0 -69
  1076. package/src/duckdb/src/include/duckdb/planner/operator/logical_asof_join.hpp +0 -27
  1077. package/src/duckdb/src/include/duckdb/planner/operator/logical_delim_join.hpp +0 -32
  1078. package/src/duckdb/src/include/duckdb/storage/meta_block_reader.hpp +0 -49
  1079. package/src/duckdb/src/include/duckdb/storage/meta_block_writer.hpp +0 -50
  1080. package/src/duckdb/src/optimizer/statistics/expression/propagate_and_compress.cpp +0 -118
  1081. package/src/duckdb/src/parser/common_table_expression_info.cpp +0 -19
  1082. package/src/duckdb/src/planner/operator/logical_asof_join.cpp +0 -14
  1083. package/src/duckdb/src/planner/operator/logical_delim_join.cpp +0 -27
  1084. package/src/duckdb/src/storage/meta_block_reader.cpp +0 -78
  1085. package/src/duckdb/src/storage/meta_block_writer.cpp +0 -80
@@ -59,21 +59,25 @@ static ConfigurationOption internal_options[] = {DUCKDB_GLOBAL(AccessModeSetting
59
59
  DUCKDB_LOCAL(DebugForceExternal),
60
60
  DUCKDB_LOCAL(DebugForceNoCrossProduct),
61
61
  DUCKDB_LOCAL(DebugAsOfIEJoin),
62
+ DUCKDB_LOCAL(PreferRangeJoins),
62
63
  DUCKDB_GLOBAL(DebugWindowMode),
63
64
  DUCKDB_GLOBAL_LOCAL(DefaultCollationSetting),
64
65
  DUCKDB_GLOBAL(DefaultOrderSetting),
65
66
  DUCKDB_GLOBAL(DefaultNullOrderSetting),
67
+ DUCKDB_GLOBAL(DisabledFileSystemsSetting),
66
68
  DUCKDB_GLOBAL(DisabledOptimizersSetting),
67
69
  DUCKDB_GLOBAL(EnableExternalAccessSetting),
68
70
  DUCKDB_GLOBAL(EnableFSSTVectors),
69
71
  DUCKDB_GLOBAL(AllowUnsignedExtensionsSetting),
70
72
  DUCKDB_LOCAL(CustomExtensionRepository),
73
+ DUCKDB_LOCAL(AutoloadExtensionRepository),
74
+ DUCKDB_GLOBAL(AutoinstallKnownExtensions),
75
+ DUCKDB_GLOBAL(AutoloadKnownExtensions),
71
76
  DUCKDB_GLOBAL(EnableObjectCacheSetting),
72
77
  DUCKDB_GLOBAL(EnableHTTPMetadataCacheSetting),
73
78
  DUCKDB_LOCAL(EnableProfilingSetting),
74
79
  DUCKDB_LOCAL(EnableProgressBarSetting),
75
80
  DUCKDB_LOCAL(EnableProgressBarPrintSetting),
76
- DUCKDB_GLOBAL(ExperimentalParallelCSVSetting),
77
81
  DUCKDB_LOCAL(ExplainOutputSetting),
78
82
  DUCKDB_GLOBAL(ExtensionDirectorySetting),
79
83
  DUCKDB_GLOBAL(ExternalThreadsSetting),
@@ -92,6 +96,7 @@ static ConfigurationOption internal_options[] = {DUCKDB_GLOBAL(AccessModeSetting
92
96
  DUCKDB_LOCAL(OrderedAggregateThreshold),
93
97
  DUCKDB_GLOBAL(PasswordSetting),
94
98
  DUCKDB_LOCAL(PerfectHashThresholdSetting),
99
+ DUCKDB_LOCAL(PivotFilterThreshold),
95
100
  DUCKDB_LOCAL(PivotLimitSetting),
96
101
  DUCKDB_LOCAL(PreserveIdentifierCase),
97
102
  DUCKDB_GLOBAL(PreserveInsertionOrder),
@@ -109,6 +114,7 @@ static ConfigurationOption internal_options[] = {DUCKDB_GLOBAL(AccessModeSetting
109
114
  DUCKDB_GLOBAL_ALIAS("user", UsernameSetting),
110
115
  DUCKDB_GLOBAL_ALIAS("wal_autocheckpoint", CheckpointThresholdSetting),
111
116
  DUCKDB_GLOBAL_ALIAS("worker_threads", ThreadsSetting),
117
+ DUCKDB_GLOBAL(FlushAllocatorSetting),
112
118
  FINAL_SETTING};
113
119
 
114
120
  vector<ConfigurationOption> DBConfig::GetOptions() {
@@ -279,7 +285,7 @@ idx_t CGroupBandwidthQuota(idx_t physical_cores, FileSystem &fs) {
279
285
  }
280
286
  }
281
287
 
282
- idx_t GetSystemMaxThreadsInternal(FileSystem &fs) {
288
+ idx_t DBConfig::GetSystemMaxThreads(FileSystem &fs) {
283
289
  #ifndef DUCKDB_NO_THREADS
284
290
  idx_t physical_cores = std::thread::hardware_concurrency();
285
291
  #ifdef __linux__
@@ -295,7 +301,7 @@ idx_t GetSystemMaxThreadsInternal(FileSystem &fs) {
295
301
 
296
302
  void DBConfig::SetDefaultMaxThreads() {
297
303
  #ifndef DUCKDB_NO_THREADS
298
- options.maximum_threads = GetSystemMaxThreadsInternal(*file_system);
304
+ options.maximum_threads = GetSystemMaxThreads(*file_system);
299
305
  #else
300
306
  options.maximum_threads = 1;
301
307
  #endif
@@ -1,7 +1,7 @@
1
1
  #include "duckdb/main/connection.hpp"
2
2
 
3
3
  #include "duckdb/common/types/column/column_data_collection.hpp"
4
- #include "duckdb/execution/operator/persistent/parallel_csv_reader.hpp"
4
+ #include "duckdb/execution/operator/scan/csv/parallel_csv_reader.hpp"
5
5
  #include "duckdb/function/table/read_csv.hpp"
6
6
  #include "duckdb/main/appender.hpp"
7
7
  #include "duckdb/main/client_context.hpp"
@@ -219,11 +219,11 @@ shared_ptr<Relation> Connection::Values(const string &values, const vector<strin
219
219
  }
220
220
 
221
221
  shared_ptr<Relation> Connection::ReadCSV(const string &csv_file) {
222
- BufferedCSVReaderOptions options;
222
+ CSVReaderOptions options;
223
223
  return ReadCSV(csv_file, options);
224
224
  }
225
225
 
226
- shared_ptr<Relation> Connection::ReadCSV(const string &csv_file, BufferedCSVReaderOptions &options) {
226
+ shared_ptr<Relation> Connection::ReadCSV(const string &csv_file, CSVReaderOptions &options) {
227
227
  options.file_path = csv_file;
228
228
  options.auto_detect = true;
229
229
  return make_shared<ReadCSVRelation>(context, csv_file, options);
@@ -158,7 +158,7 @@ duckdb::unique_ptr<AttachedDatabase> DatabaseInstance::CreateAttachedDatabase(At
158
158
 
159
159
  void DatabaseInstance::CreateMainDatabase() {
160
160
  AttachInfo info;
161
- info.name = AttachedDatabase::ExtractDatabaseName(config.options.database_path);
161
+ info.name = AttachedDatabase::ExtractDatabaseName(config.options.database_path, GetFileSystem());
162
162
  info.path = config.options.database_path;
163
163
 
164
164
  auto attached_database = CreateAttachedDatabase(info, config.options.database_type, config.options.access_mode);
@@ -178,7 +178,7 @@ void DatabaseInstance::CreateMainDatabase() {
178
178
  void ThrowExtensionSetUnrecognizedOptions(const unordered_map<string, Value> &unrecognized_options) {
179
179
  auto unrecognized_options_iter = unrecognized_options.begin();
180
180
  string unrecognized_option_keys = unrecognized_options_iter->first;
181
- for (; unrecognized_options_iter == unrecognized_options.end(); ++unrecognized_options_iter) {
181
+ while (++unrecognized_options_iter != unrecognized_options.end()) {
182
182
  unrecognized_option_keys = "," + unrecognized_options_iter->first;
183
183
  }
184
184
  throw InvalidInputException("Unrecognized configuration property \"%s\"", unrecognized_option_keys);
@@ -397,15 +397,6 @@ bool DatabaseInstance::TryGetCurrentSetting(const std::string &key, Value &resul
397
397
  return true;
398
398
  }
399
399
 
400
- string ClientConfig::ExtractTimezone() const {
401
- auto entry = set_variables.find("TimeZone");
402
- if (entry == set_variables.end()) {
403
- return "UTC";
404
- } else {
405
- return entry->second.GetValue<std::string>();
406
- }
407
- }
408
-
409
400
  ValidChecker &DatabaseInstance::GetValidChecker() {
410
401
  return db_validity;
411
402
  }
@@ -3,7 +3,7 @@
3
3
 
4
4
  namespace duckdb {
5
5
 
6
- string GetDBAbsolutePath(const string &database_p) {
6
+ string GetDBAbsolutePath(const string &database_p, FileSystem &fs) {
7
7
  auto database = FileSystem::ExpandPath(database_p, nullptr);
8
8
  if (database.empty()) {
9
9
  return ":memory:";
@@ -16,15 +16,17 @@ string GetDBAbsolutePath(const string &database_p) {
16
16
  // this database path is handled by a replacement open and is not a file path
17
17
  return database;
18
18
  }
19
- if (FileSystem::IsPathAbsolute(database)) {
20
- return FileSystem::NormalizeAbsolutePath(database);
19
+ if (fs.IsPathAbsolute(database)) {
20
+ return fs.NormalizeAbsolutePath(database);
21
21
  }
22
- return FileSystem::NormalizeAbsolutePath(FileSystem::JoinPath(FileSystem::GetWorkingDirectory(), database));
22
+ return fs.NormalizeAbsolutePath(fs.JoinPath(FileSystem::GetWorkingDirectory(), database));
23
23
  }
24
24
 
25
25
  shared_ptr<DuckDB> DBInstanceCache::GetInstanceInternal(const string &database, const DBConfig &config) {
26
26
  shared_ptr<DuckDB> db_instance;
27
- auto abs_database_path = GetDBAbsolutePath(database);
27
+
28
+ auto local_fs = FileSystem::CreateLocal();
29
+ auto abs_database_path = GetDBAbsolutePath(database, *local_fs);
28
30
  if (db_instances.find(abs_database_path) != db_instances.end()) {
29
31
  db_instance = db_instances[abs_database_path].lock();
30
32
  if (db_instance) {
@@ -48,7 +50,13 @@ shared_ptr<DuckDB> DBInstanceCache::GetInstance(const string &database, const DB
48
50
 
49
51
  shared_ptr<DuckDB> DBInstanceCache::CreateInstanceInternal(const string &database, DBConfig &config,
50
52
  bool cache_instance) {
51
- auto abs_database_path = GetDBAbsolutePath(database);
53
+ string abs_database_path;
54
+ if (config.file_system) {
55
+ abs_database_path = GetDBAbsolutePath(database, *config.file_system);
56
+ } else {
57
+ auto tmp_fs = FileSystem::CreateLocal();
58
+ abs_database_path = GetDBAbsolutePath(database, *tmp_fs);
59
+ }
52
60
  if (db_instances.find(abs_database_path) != db_instances.end()) {
53
61
  throw duckdb::Exception(ExceptionType::CONNECTION,
54
62
  "Instance with path: " + abs_database_path + " already exists.");
@@ -6,88 +6,85 @@
6
6
  #include "duckdb/main/client_context.hpp"
7
7
  #include "duckdb/main/database.hpp"
8
8
 
9
- #if defined(BUILD_ICU_EXTENSION) && !defined(DISABLE_BUILTIN_EXTENSIONS)
10
- #define ICU_STATICALLY_LOADED true
11
- #include "icu_extension.hpp"
12
- #else
13
- #define ICU_STATICALLY_LOADED false
9
+ // Note that c++ preprocessor doesn't have a nice way to clean this up so we need to set the defines we use to false
10
+ // explicitly when they are undefined
11
+ #ifndef DUCKDB_EXTENSION_ICU_LINKED
12
+ #define DUCKDB_EXTENSION_ICU_LINKED false
14
13
  #endif
15
14
 
16
- #if defined(BUILD_PARQUET_EXTENSION) && !defined(DISABLE_BUILTIN_EXTENSIONS)
17
- #define PARQUET_STATICALLY_LOADED true
18
- #include "parquet_extension.hpp"
19
- #else
20
- #define PARQUET_STATICALLY_LOADED false
15
+ #ifndef DUCKDB_EXTENSION_PARQUET_LINKED
16
+ #define DUCKDB_EXTENSION_PARQUET_LINKED false
21
17
  #endif
22
18
 
23
- #if defined(BUILD_TPCH_EXTENSION) && !defined(DISABLE_BUILTIN_EXTENSIONS)
24
- #define TPCH_STATICALLY_LOADED true
25
- #include "tpch_extension.hpp"
26
- #else
27
- #define TPCH_STATICALLY_LOADED false
19
+ #ifndef DUCKDB_EXTENSION_TPCH_LINKED
20
+ #define DUCKDB_EXTENSION_TPCH_LINKED false
28
21
  #endif
29
22
 
30
- #if defined(BUILD_TPCDS_EXTENSION) && !defined(DISABLE_BUILTIN_EXTENSIONS)
31
- #define TPCDS_STATICALLY_LOADED true
32
- #include "tpcds_extension.hpp"
33
- #else
34
- #define TPCDS_STATICALLY_LOADED false
23
+ #ifndef DUCKDB_EXTENSION_TPCDS_LINKED
24
+ #define DUCKDB_EXTENSION_TPCDS_LINKED false
35
25
  #endif
36
26
 
37
- #if defined(BUILD_FTS_EXTENSION) && !defined(DISABLE_BUILTIN_EXTENSIONS)
38
- #define FTS_STATICALLY_LOADED true
39
- #include "fts_extension.hpp"
40
- #else
41
- #define FTS_STATICALLY_LOADED false
27
+ #ifndef DUCKDB_EXTENSION_FTS_LINKED
28
+ #define DUCKDB_EXTENSION_FTS_LINKED false
42
29
  #endif
43
30
 
44
- #if defined(BUILD_HTTPFS_EXTENSION) && !defined(DISABLE_BUILTIN_EXTENSIONS)
45
- #define HTTPFS_STATICALLY_LOADED true
46
- #include "httpfs_extension.hpp"
47
- #else
48
- #define HTTPFS_STATICALLY_LOADED false
31
+ #ifndef DUCKDB_EXTENSION_HTTPFS_LINKED
32
+ #define DUCKDB_EXTENSION_HTTPFS_LINKED false
49
33
  #endif
50
34
 
51
- #if defined(BUILD_VISUALIZER_EXTENSION) && !defined(DISABLE_BUILTIN_EXTENSIONS)
52
- #include "visualizer_extension.hpp"
35
+ #ifndef DUCKDB_EXTENSION_JSON_LINKED
36
+ #define DUCKDB_EXTENSION_JSON_LINKED false
53
37
  #endif
54
38
 
55
- #if defined(BUILD_JSON_EXTENSION) && !defined(DISABLE_BUILTIN_EXTENSIONS)
56
- #define JSON_STATICALLY_LOADED true
57
- #include "json_extension.hpp"
58
- #else
59
- #define JSON_STATICALLY_LOADED false
39
+ #ifndef DUCKDB_EXTENSION_JEMALLOC_LINKED
40
+ #define DUCKDB_EXTENSION_JEMALLOC_LINKED false
60
41
  #endif
61
42
 
62
- #if defined(BUILD_JEMALLOC_EXTENSION) && !defined(DISABLE_BUILTIN_EXTENSIONS)
63
- #define JEMALLOC_STATICALLY_LOADED true
64
- #include "jemalloc_extension.hpp"
43
+ #ifndef DUCKDB_EXTENSION_AUTOCOMPLETE_LINKED
44
+ #define DUCKDB_EXTENSION_AUTOCOMPLETE_LINKED false
45
+ #endif
46
+
47
+ // Load the generated header file containing our list of extension headers
48
+ #if defined(GENERATED_EXTENSION_HEADERS) && GENERATED_EXTENSION_HEADERS && !defined(DUCKDB_AMALGAMATION)
49
+ #include "duckdb/main/extension/generated_extension_loader.hpp"
65
50
  #else
66
- #define JEMALLOC_STATICALLY_LOADED false
51
+ // TODO: rewrite package_build.py to allow also loading out-of-tree extensions in non-cmake builds, after that
52
+ // these can be removed
53
+ #if DUCKDB_EXTENSION_ICU_LINKED
54
+ #include "icu_extension.hpp"
55
+ #endif
56
+
57
+ #if DUCKDB_EXTENSION_PARQUET_LINKED
58
+ #include "parquet_extension.hpp"
67
59
  #endif
68
60
 
69
- #if defined(BUILD_EXCEL_EXTENSION) && !defined(DISABLE_BUILTIN_EXTENSIONS)
70
- #include "excel_extension.hpp"
61
+ #if DUCKDB_EXTENSION_TPCH_LINKED
62
+ #include "tpch_extension.hpp"
71
63
  #endif
72
64
 
73
- #if defined(BUILD_SQLSMITH_EXTENSION) && !defined(DISABLE_BUILTIN_EXTENSIONS)
74
- #include "sqlsmith_extension.hpp"
65
+ #if DUCKDB_EXTENSION_TPCDS_LINKED
66
+ #include "tpcds_extension.hpp"
75
67
  #endif
76
68
 
77
- #if defined(BUILD_INET_EXTENSION) && !defined(DISABLE_BUILTIN_EXTENSIONS)
78
- #include "inet_extension.hpp"
69
+ #if DUCKDB_EXTENSION_FTS_LINKED
70
+ #include "fts_extension.hpp"
79
71
  #endif
80
72
 
81
- #if defined(BUILD_AUTOCOMPLETE_EXTENSION) && !defined(DISABLE_BUILTIN_EXTENSIONS)
82
- #define AUTOCOMPLETE_STATICALLY_LOADED true
83
- #include "autocomplete_extension.hpp"
84
- #else
85
- #define AUTOCOMPLETE_STATICALLY_LOADED false
73
+ #if DUCKDB_EXTENSION_HTTPFS_LINKED
74
+ #include "httpfs_extension.hpp"
86
75
  #endif
87
76
 
88
- // Load the generated header file containing our list of extension headers
89
- #if defined(OOTE_HEADERS_AVAILABLE) && OOTE_HEADERS_AVAILABLE
90
- #include "extension_oote_loader.hpp"
77
+ #if DUCKDB_EXTENSION_JSON_LINKED
78
+ #include "json_extension.hpp"
79
+ #endif
80
+
81
+ #if DUCKDB_EXTENSION_JEMALLOC_LINKED
82
+ #include "jemalloc_extension.hpp"
83
+ #endif
84
+
85
+ #if DUCKDB_EXTENSION_AUTOCOMPLETE_LINKED
86
+ #include "autocomplete_extension.hpp"
87
+ #endif
91
88
  #endif
92
89
 
93
90
  namespace duckdb {
@@ -96,15 +93,15 @@ namespace duckdb {
96
93
  // Default Extensions
97
94
  //===--------------------------------------------------------------------===//
98
95
  static DefaultExtension internal_extensions[] = {
99
- {"icu", "Adds support for time zones and collations using the ICU library", ICU_STATICALLY_LOADED},
100
- {"parquet", "Adds support for reading and writing parquet files", PARQUET_STATICALLY_LOADED},
101
- {"tpch", "Adds TPC-H data generation and query support", TPCH_STATICALLY_LOADED},
102
- {"tpcds", "Adds TPC-DS data generation and query support", TPCDS_STATICALLY_LOADED},
103
- {"fts", "Adds support for Full-Text Search Indexes", FTS_STATICALLY_LOADED},
104
- {"httpfs", "Adds support for reading and writing files over a HTTP(S) connection", HTTPFS_STATICALLY_LOADED},
105
- {"json", "Adds support for JSON operations", JSON_STATICALLY_LOADED},
106
- {"jemalloc", "Overwrites system allocator with JEMalloc", JEMALLOC_STATICALLY_LOADED},
107
- {"autocomplete", "Add supports for autocomplete in the shell", AUTOCOMPLETE_STATICALLY_LOADED},
96
+ {"icu", "Adds support for time zones and collations using the ICU library", DUCKDB_EXTENSION_ICU_LINKED},
97
+ {"parquet", "Adds support for reading and writing parquet files", DUCKDB_EXTENSION_PARQUET_LINKED},
98
+ {"tpch", "Adds TPC-H data generation and query support", DUCKDB_EXTENSION_TPCH_LINKED},
99
+ {"tpcds", "Adds TPC-DS data generation and query support", DUCKDB_EXTENSION_TPCDS_LINKED},
100
+ {"fts", "Adds support for Full-Text Search Indexes", DUCKDB_EXTENSION_FTS_LINKED},
101
+ {"httpfs", "Adds support for reading and writing files over a HTTP(S) connection", DUCKDB_EXTENSION_HTTPFS_LINKED},
102
+ {"json", "Adds support for JSON operations", DUCKDB_EXTENSION_JSON_LINKED},
103
+ {"jemalloc", "Overwrites system allocator with JEMalloc", DUCKDB_EXTENSION_JEMALLOC_LINKED},
104
+ {"autocomplete", "Add supports for autocomplete in the shell", DUCKDB_EXTENSION_AUTOCOMPLETE_LINKED},
108
105
  {"motherduck", "Enables motherduck integration with the system", false},
109
106
  {"sqlite_scanner", "Adds support for reading SQLite database files", false},
110
107
  {"postgres_scanner", "Adds support for reading from a Postgres database", false},
@@ -129,6 +126,7 @@ DefaultExtension ExtensionHelper::GetDefaultExtension(idx_t index) {
129
126
  //===--------------------------------------------------------------------===//
130
127
  static const char *auto_install[] = {"motherduck", "postgres_scanner", "sqlite_scanner", nullptr};
131
128
 
129
+ // TODO: unify with new autoload mechanism
132
130
  bool ExtensionHelper::AllowAutoInstall(const string &extension) {
133
131
  auto lcase = StringUtil::Lower(extension);
134
132
  for (idx_t i = 0; auto_install[i]; i++) {
@@ -139,18 +137,77 @@ bool ExtensionHelper::AllowAutoInstall(const string &extension) {
139
137
  return false;
140
138
  }
141
139
 
140
+ bool ExtensionHelper::CanAutoloadExtension(const string &ext_name) {
141
+ #ifdef DUCKDB_DISABLE_EXTENSION_LOAD
142
+ return false;
143
+ #endif
144
+
145
+ if (ext_name.empty()) {
146
+ return false;
147
+ }
148
+ for (const auto &ext : AUTOLOADABLE_EXTENSIONS) {
149
+ if (ext_name == ext) {
150
+ return true;
151
+ }
152
+ }
153
+ return false;
154
+ }
155
+
156
+ string ExtensionHelper::AddExtensionInstallHintToErrorMsg(ClientContext &context, const string &base_error,
157
+ const string &extension_name) {
158
+ auto &dbconfig = DBConfig::GetConfig(context);
159
+ string install_hint;
160
+
161
+ if (!ExtensionHelper::CanAutoloadExtension(extension_name)) {
162
+ install_hint = "Please try installing and loading the " + extension_name + " extension:\nINSTALL " +
163
+ extension_name + ";\nLOAD " + extension_name + ";\n\n";
164
+ } else if (!dbconfig.options.autoload_known_extensions) {
165
+ install_hint =
166
+ "Please try installing and loading the " + extension_name + " extension by running:\nINSTALL " +
167
+ extension_name + ";\nLOAD " + extension_name +
168
+ ";\n\nAlternatively, consider enabling auto-install "
169
+ "and auto-load by running:\nSET autoinstall_known_extensions=1;\nSET autoload_known_extensions=1;";
170
+ } else if (!dbconfig.options.autoinstall_known_extensions) {
171
+ install_hint =
172
+ "Please try installing the " + extension_name + " extension by running:\nINSTALL " + extension_name +
173
+ ";\n\nAlternatively, consider enabling autoinstall by running:\nSET autoinstall_known_extensions=1;";
174
+ }
175
+
176
+ if (!install_hint.empty()) {
177
+ return base_error + "\n\n" + install_hint;
178
+ }
179
+
180
+ return base_error;
181
+ }
182
+
183
+ void ExtensionHelper::AutoLoadExtension(ClientContext &context, const string &extension_name) {
184
+ auto &dbconfig = DBConfig::GetConfig(context);
185
+ try {
186
+ if (dbconfig.options.autoinstall_known_extensions) {
187
+ ExtensionHelper::InstallExtension(context, extension_name, false,
188
+ context.config.autoinstall_extension_repo);
189
+ }
190
+ ExtensionHelper::LoadExternalExtension(context, extension_name);
191
+ } catch (Exception &e) {
192
+ throw AutoloadException(extension_name, e);
193
+ }
194
+ }
195
+
142
196
  //===--------------------------------------------------------------------===//
143
197
  // Load Statically Compiled Extension
144
198
  //===--------------------------------------------------------------------===//
145
199
  void ExtensionHelper::LoadAllExtensions(DuckDB &db) {
200
+ // The in-tree extensions that we check. Non-cmake builds are currently limited to these for static linking
201
+ // TODO: rewrite package_build.py to allow also loading out-of-tree extensions in non-cmake builds, after that
202
+ // these can be removed
146
203
  unordered_set<string> extensions {"parquet", "icu", "tpch", "tpcds", "fts", "httpfs", "visualizer",
147
204
  "json", "excel", "sqlsmith", "inet", "jemalloc", "autocomplete"};
148
205
  for (auto &ext : extensions) {
149
206
  LoadExtensionInternal(db, ext, true);
150
207
  }
151
208
 
152
- #if defined(OOTE_HEADERS_AVAILABLE) && OOTE_HEADERS_AVAILABLE
153
- for (auto &ext : OOT_EXTENSIONS) {
209
+ #if defined(GENERATED_EXTENSION_HEADERS) && GENERATED_EXTENSION_HEADERS
210
+ for (auto &ext : linked_extensions) {
154
211
  LoadExtensionInternal(db, ext, true);
155
212
  }
156
213
  #endif
@@ -178,105 +235,124 @@ ExtensionLoadResult ExtensionHelper::LoadExtensionInternal(DuckDB &db, const std
178
235
  return ExtensionLoadResult::LOADED_EXTENSION;
179
236
  }
180
237
  #endif
238
+
239
+ #ifdef DUCKDB_EXTENSIONS_TEST_WITH_LOADABLE
240
+ // Note: weird comma's are on purpose to do easy string contains on a list of extension names
241
+ if (!initial_load && StringUtil::Contains(DUCKDB_EXTENSIONS_TEST_WITH_LOADABLE, "," + extension + ",")) {
242
+ Connection con(db);
243
+ auto result = con.Query((string) "LOAD '" + DUCKDB_EXTENSIONS_BUILD_PATH + "/" + extension + "/" + extension +
244
+ ".duckdb_extension'");
245
+ if (result->HasError()) {
246
+ result->Print();
247
+ return ExtensionLoadResult::EXTENSION_UNKNOWN;
248
+ }
249
+ return ExtensionLoadResult::LOADED_EXTENSION;
250
+ }
251
+ #endif
252
+
253
+ // This is the main extension loading mechanism that loads the extension that are statically linked.
254
+ #if defined(GENERATED_EXTENSION_HEADERS) && GENERATED_EXTENSION_HEADERS
255
+ if (TryLoadLinkedExtension(db, extension)) {
256
+ return ExtensionLoadResult::LOADED_EXTENSION;
257
+ } else {
258
+ return ExtensionLoadResult::NOT_LOADED;
259
+ }
260
+ #endif
261
+
262
+ // This is the fallback to the "old" extension loading mechanism for non-cmake builds
263
+ // TODO: rewrite package_build.py to allow also loading out-of-tree extensions in non-cmake builds
181
264
  if (extension == "parquet") {
182
- #if PARQUET_STATICALLY_LOADED
265
+ #if DUCKDB_EXTENSION_PARQUET_LINKED
183
266
  db.LoadExtension<ParquetExtension>();
184
267
  #else
185
268
  // parquet extension required but not build: skip this test
186
269
  return ExtensionLoadResult::NOT_LOADED;
187
270
  #endif
188
271
  } else if (extension == "icu") {
189
- #if ICU_STATICALLY_LOADED
272
+ #if DUCKDB_EXTENSION_ICU_LINKED
190
273
  db.LoadExtension<IcuExtension>();
191
274
  #else
192
275
  // icu extension required but not build: skip this test
193
276
  return ExtensionLoadResult::NOT_LOADED;
194
277
  #endif
195
278
  } else if (extension == "tpch") {
196
- #if TPCH_STATICALLY_LOADED
279
+ #if DUCKDB_EXTENSION_TPCH_LINKED
197
280
  db.LoadExtension<TpchExtension>();
198
281
  #else
199
282
  // icu extension required but not build: skip this test
200
283
  return ExtensionLoadResult::NOT_LOADED;
201
284
  #endif
202
285
  } else if (extension == "tpcds") {
203
- #if TPCDS_STATICALLY_LOADED
286
+ #if DUCKDB_EXTENSION_TPCDS_LINKED
204
287
  db.LoadExtension<TpcdsExtension>();
205
288
  #else
206
289
  // icu extension required but not build: skip this test
207
290
  return ExtensionLoadResult::NOT_LOADED;
208
291
  #endif
209
292
  } else if (extension == "fts") {
210
- #if FTS_STATICALLY_LOADED
211
- db.LoadExtension<FtsExtension>();
293
+ #if DUCKDB_EXTENSION_FTS_LINKED
294
+ // db.LoadExtension<FtsExtension>();
212
295
  #else
213
296
  // fts extension required but not build: skip this test
214
297
  return ExtensionLoadResult::NOT_LOADED;
215
298
  #endif
216
299
  } else if (extension == "httpfs") {
217
- #if HTTPFS_STATICALLY_LOADED
300
+ #if DUCKDB_EXTENSION_HTTPFS_LINKED
218
301
  db.LoadExtension<HttpfsExtension>();
219
302
  #else
220
303
  return ExtensionLoadResult::NOT_LOADED;
221
304
  #endif
222
305
  } else if (extension == "visualizer") {
223
- #if defined(BUILD_VISUALIZER_EXTENSION) && !defined(DISABLE_BUILTIN_EXTENSIONS)
306
+ #if DUCKDB_EXTENSION_VISUALIZER_LINKED
224
307
  db.LoadExtension<VisualizerExtension>();
225
308
  #else
226
309
  // visualizer extension required but not build: skip this test
227
310
  return ExtensionLoadResult::NOT_LOADED;
228
311
  #endif
229
312
  } else if (extension == "json") {
230
- #if JSON_STATICALLY_LOADED
313
+ #if DUCKDB_EXTENSION_JSON_LINKED
231
314
  db.LoadExtension<JsonExtension>();
232
315
  #else
233
316
  // json extension required but not build: skip this test
234
317
  return ExtensionLoadResult::NOT_LOADED;
235
318
  #endif
236
319
  } else if (extension == "excel") {
237
- #if defined(BUILD_EXCEL_EXTENSION) && !defined(DISABLE_BUILTIN_EXTENSIONS)
320
+ #if DUCKDB_EXTENSION_EXCEL_LINKED
238
321
  db.LoadExtension<ExcelExtension>();
239
322
  #else
240
323
  // excel extension required but not build: skip this test
241
324
  return ExtensionLoadResult::NOT_LOADED;
242
325
  #endif
243
326
  } else if (extension == "sqlsmith") {
244
- #if defined(BUILD_SQLSMITH_EXTENSION) && !defined(DISABLE_BUILTIN_EXTENSIONS)
327
+ #if DUCKDB_EXTENSION_SQLSMITH_LINKED
245
328
  db.LoadExtension<SqlsmithExtension>();
246
329
  #else
247
330
  // excel extension required but not build: skip this test
248
331
  return ExtensionLoadResult::NOT_LOADED;
249
332
  #endif
250
333
  } else if (extension == "jemalloc") {
251
- #if defined(BUILD_JEMALLOC_EXTENSION) && !defined(DISABLE_BUILTIN_EXTENSIONS)
334
+ #if DUCKDB_EXTENSION_JEMALLOC_LINKED
252
335
  db.LoadExtension<JemallocExtension>();
253
336
  #else
254
337
  // jemalloc extension required but not build: skip this test
255
338
  return ExtensionLoadResult::NOT_LOADED;
256
339
  #endif
257
340
  } else if (extension == "autocomplete") {
258
- #if defined(BUILD_AUTOCOMPLETE_EXTENSION) && !defined(DISABLE_BUILTIN_EXTENSIONS)
341
+ #if DUCKDB_EXTENSION_AUTOCOMPLETE_LINKED
259
342
  db.LoadExtension<AutocompleteExtension>();
260
343
  #else
261
344
  // autocomplete extension required but not build: skip this test
262
345
  return ExtensionLoadResult::NOT_LOADED;
263
346
  #endif
264
347
  } else if (extension == "inet") {
265
- #if defined(BUILD_INET_EXTENSION) && !defined(DISABLE_BUILTIN_EXTENSIONS)
348
+ #if DUCKDB_EXTENSION_INET_LINKED
266
349
  db.LoadExtension<InetExtension>();
267
350
  #else
268
351
  // inet extension required but not build: skip this test
269
352
  return ExtensionLoadResult::NOT_LOADED;
270
353
  #endif
271
- } else {
272
-
273
- #if defined(OOTE_HEADERS_AVAILABLE) && OOTE_HEADERS_AVAILABLE
274
- if (TryLoadLinkedExtension(db, extension)) {
275
- return ExtensionLoadResult::LOADED_EXTENSION;
276
- }
277
- #endif
278
- return ExtensionLoadResult::EXTENSION_UNKNOWN;
279
354
  }
355
+
280
356
  return ExtensionLoadResult::LOADED_EXTENSION;
281
357
  }
282
358