duckdb 0.8.2-dev33.0 → 0.8.2-dev3300.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 (998) hide show
  1. package/README.md +7 -0
  2. package/binding.gyp +25 -13
  3. package/binding.gyp.in +1 -1
  4. package/configure.py +8 -3
  5. package/duckdb_extension_config.cmake +10 -0
  6. package/package.json +1 -1
  7. package/src/duckdb/extension/icu/icu-dateadd.cpp +2 -2
  8. package/src/duckdb/extension/icu/icu-datefunc.cpp +10 -1
  9. package/src/duckdb/extension/icu/icu-datepart.cpp +162 -41
  10. package/src/duckdb/extension/icu/icu-datesub.cpp +3 -2
  11. package/src/duckdb/extension/icu/icu-datetrunc.cpp +2 -1
  12. package/src/duckdb/extension/icu/icu-list-range.cpp +1 -1
  13. package/src/duckdb/extension/icu/icu-makedate.cpp +19 -6
  14. package/src/duckdb/extension/icu/icu-strptime.cpp +5 -24
  15. package/src/duckdb/extension/icu/icu-table-range.cpp +5 -5
  16. package/src/duckdb/extension/icu/icu-timebucket.cpp +16 -16
  17. package/src/duckdb/extension/icu/icu-timezone.cpp +8 -8
  18. package/src/duckdb/extension/icu/icu_extension.cpp +5 -7
  19. package/src/duckdb/extension/json/buffered_json_reader.cpp +2 -0
  20. package/src/duckdb/extension/json/include/buffered_json_reader.hpp +5 -19
  21. package/src/duckdb/extension/json/include/json_common.hpp +47 -231
  22. package/src/duckdb/extension/json/include/json_deserializer.hpp +1 -1
  23. package/src/duckdb/extension/json/include/json_enums.hpp +60 -0
  24. package/src/duckdb/extension/json/include/json_executors.hpp +49 -13
  25. package/src/duckdb/extension/json/include/json_functions.hpp +2 -1
  26. package/src/duckdb/extension/json/include/json_scan.hpp +14 -10
  27. package/src/duckdb/extension/json/include/json_serializer.hpp +1 -1
  28. package/src/duckdb/extension/json/include/json_transform.hpp +3 -0
  29. package/src/duckdb/extension/json/json_common.cpp +272 -40
  30. package/src/duckdb/extension/json/json_deserializer.cpp +16 -14
  31. package/src/duckdb/extension/json/json_enums.cpp +105 -0
  32. package/src/duckdb/extension/json/json_functions/json_create.cpp +21 -2
  33. package/src/duckdb/extension/json/json_functions/json_structure.cpp +1 -1
  34. package/src/duckdb/extension/json/json_functions/json_transform.cpp +93 -38
  35. package/src/duckdb/extension/json/json_functions/json_type.cpp +1 -1
  36. package/src/duckdb/extension/json/json_functions.cpp +26 -25
  37. package/src/duckdb/extension/json/json_scan.cpp +47 -6
  38. package/src/duckdb/extension/json/json_serializer.cpp +11 -11
  39. package/src/duckdb/extension/json/serialize_json.cpp +92 -0
  40. package/src/duckdb/extension/parquet/column_reader.cpp +37 -25
  41. package/src/duckdb/extension/parquet/column_writer.cpp +77 -61
  42. package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +2 -2
  43. package/src/duckdb/extension/parquet/include/column_reader.hpp +14 -16
  44. package/src/duckdb/extension/parquet/include/column_writer.hpp +9 -7
  45. package/src/duckdb/extension/parquet/include/list_column_reader.hpp +2 -2
  46. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +3 -3
  47. package/src/duckdb/extension/parquet/include/parquet_decimal_utils.hpp +3 -3
  48. package/src/duckdb/extension/parquet/include/parquet_file_metadata_cache.hpp +2 -2
  49. package/src/duckdb/extension/parquet/include/parquet_reader.hpp +4 -0
  50. package/src/duckdb/extension/parquet/include/parquet_statistics.hpp +2 -2
  51. package/src/duckdb/extension/parquet/include/parquet_support.hpp +9 -11
  52. package/src/duckdb/extension/parquet/include/parquet_timestamp.hpp +1 -0
  53. package/src/duckdb/extension/parquet/include/parquet_writer.hpp +28 -5
  54. package/src/duckdb/extension/parquet/include/string_column_reader.hpp +1 -1
  55. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +2 -3
  56. package/src/duckdb/extension/parquet/include/zstd_file_system.hpp +2 -2
  57. package/src/duckdb/extension/parquet/parquet_extension.cpp +258 -40
  58. package/src/duckdb/extension/parquet/parquet_reader.cpp +10 -10
  59. package/src/duckdb/extension/parquet/parquet_statistics.cpp +25 -8
  60. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +6 -0
  61. package/src/duckdb/extension/parquet/parquet_writer.cpp +149 -31
  62. package/src/duckdb/extension/parquet/serialize_parquet.cpp +26 -0
  63. package/src/duckdb/extension/parquet/zstd_file_system.cpp +2 -2
  64. package/src/duckdb/src/catalog/catalog.cpp +3 -7
  65. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +8 -11
  66. package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +17 -41
  67. package/src/duckdb/src/catalog/catalog_entry/macro_catalog_entry.cpp +2 -10
  68. package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +4 -14
  69. package/src/duckdb/src/catalog/catalog_entry/sequence_catalog_entry.cpp +11 -28
  70. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +11 -42
  71. package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +7 -26
  72. package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +11 -27
  73. package/src/duckdb/src/catalog/catalog_entry.cpp +25 -1
  74. package/src/duckdb/src/catalog/catalog_search_path.cpp +5 -4
  75. package/src/duckdb/src/catalog/catalog_set.cpp +0 -63
  76. package/src/duckdb/src/catalog/default/default_functions.cpp +21 -0
  77. package/src/duckdb/src/catalog/dependency_manager.cpp +0 -36
  78. package/src/duckdb/src/common/adbc/adbc.cpp +541 -171
  79. package/src/duckdb/src/common/adbc/driver_manager.cpp +92 -39
  80. package/src/duckdb/src/common/adbc/nanoarrow/allocator.cpp +57 -0
  81. package/src/duckdb/src/common/adbc/nanoarrow/metadata.cpp +121 -0
  82. package/src/duckdb/src/common/adbc/nanoarrow/schema.cpp +474 -0
  83. package/src/duckdb/src/common/adbc/nanoarrow/single_batch_array_stream.cpp +84 -0
  84. package/src/duckdb/src/common/allocator.cpp +14 -2
  85. package/src/duckdb/src/common/arrow/appender/bool_data.cpp +44 -0
  86. package/src/duckdb/src/common/arrow/appender/list_data.cpp +78 -0
  87. package/src/duckdb/src/common/arrow/appender/map_data.cpp +86 -0
  88. package/src/duckdb/src/common/arrow/appender/struct_data.cpp +45 -0
  89. package/src/duckdb/src/common/arrow/appender/union_data.cpp +70 -0
  90. package/src/duckdb/src/common/arrow/arrow_appender.cpp +95 -666
  91. package/src/duckdb/src/common/arrow/arrow_converter.cpp +65 -37
  92. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +37 -42
  93. package/src/duckdb/src/common/assert.cpp +3 -0
  94. package/src/duckdb/src/common/constants.cpp +2 -1
  95. package/src/duckdb/src/common/enum_util.cpp +4838 -4429
  96. package/src/duckdb/src/common/enums/date_part_specifier.cpp +2 -0
  97. package/src/duckdb/src/common/enums/logical_operator_type.cpp +4 -0
  98. package/src/duckdb/src/common/enums/optimizer_type.cpp +2 -0
  99. package/src/duckdb/src/common/enums/physical_operator_type.cpp +4 -0
  100. package/src/duckdb/src/common/exception.cpp +2 -2
  101. package/src/duckdb/src/common/extra_type_info.cpp +483 -0
  102. package/src/duckdb/src/common/field_writer.cpp +1 -1
  103. package/src/duckdb/src/common/file_system.cpp +25 -6
  104. package/src/duckdb/src/common/filename_pattern.cpp +1 -1
  105. package/src/duckdb/src/common/gzip_file_system.cpp +7 -12
  106. package/src/duckdb/src/common/hive_partitioning.cpp +10 -6
  107. package/src/duckdb/src/common/http_state.cpp +78 -0
  108. package/src/duckdb/src/common/local_file_system.cpp +36 -28
  109. package/src/duckdb/src/common/multi_file_reader.cpp +193 -20
  110. package/src/duckdb/src/common/operator/cast_operators.cpp +92 -1
  111. package/src/duckdb/src/common/operator/string_cast.cpp +45 -8
  112. package/src/duckdb/src/common/radix_partitioning.cpp +26 -8
  113. package/src/duckdb/src/common/re2_regex.cpp +1 -1
  114. package/src/duckdb/src/common/row_operations/row_external.cpp +1 -1
  115. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +8 -3
  116. package/src/duckdb/src/common/serializer/binary_serializer.cpp +14 -9
  117. package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +0 -9
  118. package/src/duckdb/src/common/serializer/format_serializer.cpp +15 -0
  119. package/src/duckdb/src/common/sort/merge_sorter.cpp +9 -16
  120. package/src/duckdb/src/common/sort/partition_state.cpp +70 -50
  121. package/src/duckdb/src/common/sort/sort_state.cpp +1 -1
  122. package/src/duckdb/src/common/sort/sorted_block.cpp +1 -1
  123. package/src/duckdb/src/common/types/batched_data_collection.cpp +7 -2
  124. package/src/duckdb/src/common/types/bit.cpp +51 -0
  125. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +9 -6
  126. package/src/duckdb/src/common/types/column/column_data_collection.cpp +68 -2
  127. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +20 -6
  128. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  129. package/src/duckdb/src/common/types/data_chunk.cpp +2 -2
  130. package/src/duckdb/src/common/types/date.cpp +15 -0
  131. package/src/duckdb/src/common/types/hugeint.cpp +40 -0
  132. package/src/duckdb/src/common/types/interval.cpp +3 -0
  133. package/src/duckdb/src/common/types/list_segment.cpp +56 -198
  134. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +3 -9
  135. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +35 -5
  136. package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +2 -0
  137. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +2 -2
  138. package/src/duckdb/src/common/types/string_heap.cpp +4 -0
  139. package/src/duckdb/src/common/types/time.cpp +105 -0
  140. package/src/duckdb/src/common/types/timestamp.cpp +7 -0
  141. package/src/duckdb/src/common/types/uuid.cpp +2 -2
  142. package/src/duckdb/src/common/types/validity_mask.cpp +33 -0
  143. package/src/duckdb/src/common/types/value.cpp +65 -47
  144. package/src/duckdb/src/common/types/vector.cpp +52 -25
  145. package/src/duckdb/src/common/types.cpp +38 -724
  146. package/src/duckdb/src/common/virtual_file_system.cpp +142 -1
  147. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +26 -0
  148. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +5 -7
  149. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +64 -19
  150. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +30 -0
  151. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +1 -0
  152. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +83 -59
  153. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +4 -4
  154. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +4 -4
  155. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +5 -4
  156. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +8 -8
  157. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +4 -3
  158. package/src/duckdb/src/core_functions/function_list.cpp +10 -4
  159. package/src/duckdb/src/core_functions/scalar/date/date_diff.cpp +2 -0
  160. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +380 -89
  161. package/src/duckdb/src/core_functions/scalar/date/date_sub.cpp +2 -0
  162. package/src/duckdb/src/core_functions/scalar/date/date_trunc.cpp +4 -0
  163. package/src/duckdb/src/core_functions/scalar/date/epoch.cpp +10 -24
  164. package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +19 -4
  165. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +10 -0
  166. package/src/duckdb/src/core_functions/scalar/debug/vector_type.cpp +23 -0
  167. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +314 -82
  168. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +4 -2
  169. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +22 -3
  170. package/src/duckdb/src/core_functions/scalar/map/map_entries.cpp +2 -2
  171. package/src/duckdb/src/core_functions/scalar/string/to_base.cpp +66 -0
  172. package/src/duckdb/src/core_functions/scalar/union/union_tag.cpp +1 -1
  173. package/src/duckdb/src/execution/aggregate_hashtable.cpp +40 -18
  174. package/src/duckdb/src/execution/column_binding_resolver.cpp +10 -7
  175. package/src/duckdb/src/execution/expression_executor/execute_parameter.cpp +2 -2
  176. package/src/duckdb/src/execution/expression_executor.cpp +1 -1
  177. package/src/duckdb/src/execution/index/art/art.cpp +219 -259
  178. package/src/duckdb/src/execution/index/art/art_key.cpp +0 -11
  179. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +11 -15
  180. package/src/duckdb/src/execution/index/art/iterator.cpp +130 -214
  181. package/src/duckdb/src/execution/index/art/leaf.cpp +300 -266
  182. package/src/duckdb/src/execution/index/art/node.cpp +211 -205
  183. package/src/duckdb/src/execution/index/art/node16.cpp +10 -19
  184. package/src/duckdb/src/execution/index/art/node256.cpp +10 -18
  185. package/src/duckdb/src/execution/index/art/node4.cpp +21 -23
  186. package/src/duckdb/src/execution/index/art/node48.cpp +10 -20
  187. package/src/duckdb/src/execution/index/art/prefix.cpp +308 -338
  188. package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
  189. package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +1 -0
  190. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +14 -11
  191. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +6 -4
  192. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +8 -3
  193. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +46 -34
  194. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +332 -1067
  195. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
  196. package/src/duckdb/src/execution/operator/helper/physical_batch_collector.cpp +12 -9
  197. package/src/duckdb/src/execution/operator/helper/physical_explain_analyze.cpp +2 -2
  198. package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +10 -8
  199. package/src/duckdb/src/execution/operator/helper/physical_materialized_collector.cpp +7 -5
  200. package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +7 -5
  201. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +449 -288
  202. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +2 -2
  203. package/src/duckdb/src/execution/operator/join/physical_comparison_join.cpp +1 -2
  204. package/src/duckdb/src/execution/operator/join/physical_delim_join.cpp +13 -6
  205. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +28 -15
  206. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +35 -17
  207. package/src/duckdb/src/execution/operator/join/physical_join.cpp +1 -1
  208. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +7 -4
  209. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +31 -10
  210. package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +41 -5
  211. package/src/duckdb/src/execution/operator/order/physical_order.cpp +7 -5
  212. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +7 -5
  213. package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +100 -13
  214. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +1 -1
  215. package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +20 -0
  216. package/src/duckdb/src/execution/operator/persistent/csv_rejects_table.cpp +48 -0
  217. package/src/duckdb/src/execution/operator/persistent/parallel_csv_reader.cpp +2 -3
  218. package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +14 -10
  219. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +11 -9
  220. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +9 -7
  221. package/src/duckdb/src/execution/operator/persistent/physical_fixed_batch_copy.cpp +14 -12
  222. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +11 -11
  223. package/src/duckdb/src/execution/operator/persistent/physical_update.cpp +4 -2
  224. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -1
  225. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +24 -27
  226. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +19 -0
  227. package/src/duckdb/src/execution/operator/scan/physical_table_scan.cpp +7 -12
  228. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +2 -1
  229. package/src/duckdb/src/execution/operator/schema/physical_create_art_index.cpp +198 -0
  230. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +2 -6
  231. package/src/duckdb/src/execution/operator/set/physical_cte.cpp +160 -0
  232. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +15 -5
  233. package/src/duckdb/src/execution/partitionable_hashtable.cpp +41 -6
  234. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +37 -6
  235. package/src/duckdb/src/execution/physical_operator.cpp +20 -16
  236. package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +43 -10
  237. package/src/duckdb/src/execution/physical_plan/plan_asof_join.cpp +57 -35
  238. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +32 -15
  239. package/src/duckdb/src/execution/physical_plan/plan_create_index.cpp +45 -34
  240. package/src/duckdb/src/execution/physical_plan/plan_cte.cpp +33 -0
  241. package/src/duckdb/src/execution/physical_plan/plan_delim_join.cpp +2 -5
  242. package/src/duckdb/src/execution/physical_plan/plan_get.cpp +2 -2
  243. package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +25 -4
  244. package/src/duckdb/src/execution/physical_plan_generator.cpp +6 -11
  245. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +290 -43
  246. package/src/duckdb/src/execution/window_executor.cpp +1284 -0
  247. package/src/duckdb/src/execution/window_segment_tree.cpp +408 -144
  248. package/src/duckdb/src/function/aggregate/distributive/count.cpp +2 -13
  249. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +6 -12
  250. package/src/duckdb/src/function/cast/bit_cast.cpp +34 -2
  251. package/src/duckdb/src/function/cast/blob_cast.cpp +3 -0
  252. package/src/duckdb/src/function/cast/numeric_casts.cpp +2 -0
  253. package/src/duckdb/src/function/cast/string_cast.cpp +2 -2
  254. package/src/duckdb/src/function/cast/time_casts.cpp +7 -6
  255. package/src/duckdb/src/function/function.cpp +3 -1
  256. package/src/duckdb/src/function/pragma/pragma_queries.cpp +5 -0
  257. package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +212 -0
  258. package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +249 -0
  259. package/src/duckdb/src/function/scalar/compressed_materialization_functions.cpp +29 -0
  260. package/src/duckdb/src/function/scalar/list/list_resize.cpp +162 -0
  261. package/src/duckdb/src/function/scalar/nested_functions.cpp +1 -0
  262. package/src/duckdb/src/function/scalar/operators/add.cpp +9 -0
  263. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +6 -3
  264. package/src/duckdb/src/function/scalar/string/like.cpp +12 -4
  265. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +39 -5
  266. package/src/duckdb/src/function/scalar_function.cpp +5 -20
  267. package/src/duckdb/src/function/table/arrow/arrow_duck_schema.cpp +57 -0
  268. package/src/duckdb/src/function/table/arrow.cpp +110 -88
  269. package/src/duckdb/src/function/table/arrow_conversion.cpp +86 -73
  270. package/src/duckdb/src/function/table/copy_csv.cpp +8 -1
  271. package/src/duckdb/src/function/table/read_csv.cpp +124 -21
  272. package/src/duckdb/src/function/table/system/test_all_types.cpp +48 -21
  273. package/src/duckdb/src/function/table/system_functions.cpp +1 -0
  274. package/src/duckdb/src/function/table/table_scan.cpp +44 -0
  275. package/src/duckdb/src/function/table/version/pragma_version.cpp +49 -2
  276. package/src/duckdb/src/function/table_function.cpp +4 -3
  277. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/index_catalog_entry.hpp +3 -3
  278. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/macro_catalog_entry.hpp +1 -4
  279. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +2 -5
  280. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +1 -6
  281. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +2 -13
  282. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +1 -4
  283. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/view_catalog_entry.hpp +2 -5
  284. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +14 -0
  285. package/src/duckdb/src/include/duckdb/catalog/catalog_set.hpp +0 -6
  286. package/src/duckdb/src/include/duckdb/common/adbc/adbc.h +1 -0
  287. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +4 -1
  288. package/src/duckdb/src/include/duckdb/common/adbc/single_batch_array_stream.hpp +16 -0
  289. package/src/duckdb/src/include/duckdb/common/allocator.hpp +2 -0
  290. package/src/duckdb/src/include/duckdb/common/arrow/appender/append_data.hpp +109 -0
  291. package/src/duckdb/src/include/duckdb/common/arrow/appender/bool_data.hpp +15 -0
  292. package/src/duckdb/src/include/duckdb/common/arrow/appender/enum_data.hpp +69 -0
  293. package/src/duckdb/src/include/duckdb/common/arrow/appender/list.hpp +8 -0
  294. package/src/duckdb/src/include/duckdb/common/arrow/appender/list_data.hpp +18 -0
  295. package/src/duckdb/src/include/duckdb/common/arrow/appender/map_data.hpp +18 -0
  296. package/src/duckdb/src/include/duckdb/common/arrow/appender/scalar_data.hpp +88 -0
  297. package/src/duckdb/src/include/duckdb/common/arrow/appender/struct_data.hpp +18 -0
  298. package/src/duckdb/src/include/duckdb/common/arrow/appender/union_data.hpp +21 -0
  299. package/src/duckdb/src/include/duckdb/common/arrow/appender/varchar_data.hpp +105 -0
  300. package/src/duckdb/src/include/duckdb/common/arrow/arrow_appender.hpp +9 -4
  301. package/src/duckdb/src/include/duckdb/common/arrow/arrow_converter.hpp +3 -5
  302. package/src/duckdb/src/include/duckdb/common/arrow/arrow_wrapper.hpp +5 -3
  303. package/src/duckdb/src/include/duckdb/common/arrow/nanoarrow/nanoarrow.h +462 -0
  304. package/src/duckdb/src/include/duckdb/common/arrow/nanoarrow/nanoarrow.hpp +14 -0
  305. package/src/duckdb/src/include/duckdb/common/arrow/result_arrow_wrapper.hpp +4 -0
  306. package/src/duckdb/src/include/duckdb/common/assert.hpp +1 -1
  307. package/src/duckdb/src/include/duckdb/common/bitpacking.hpp +70 -55
  308. package/src/duckdb/src/include/duckdb/common/bswap.hpp +42 -0
  309. package/src/duckdb/src/include/duckdb/common/case_insensitive_map.hpp +1 -0
  310. package/src/duckdb/src/include/duckdb/common/constants.hpp +4 -0
  311. package/src/duckdb/src/include/duckdb/common/dl.hpp +3 -1
  312. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +660 -580
  313. package/src/duckdb/src/include/duckdb/common/enums/cte_materialize.hpp +21 -0
  314. package/src/duckdb/src/include/duckdb/common/enums/date_part_specifier.hpp +9 -1
  315. package/src/duckdb/src/include/duckdb/common/enums/index_type.hpp +4 -3
  316. package/src/duckdb/src/include/duckdb/common/enums/joinref_type.hpp +2 -1
  317. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +2 -0
  318. package/src/duckdb/src/include/duckdb/common/enums/operator_result_type.hpp +5 -1
  319. package/src/duckdb/src/include/duckdb/common/enums/optimizer_type.hpp +2 -0
  320. package/src/duckdb/src/include/duckdb/common/enums/pending_execution_result.hpp +1 -1
  321. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +2 -0
  322. package/src/duckdb/src/include/duckdb/common/extra_operator_info.hpp +27 -0
  323. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +215 -0
  324. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +0 -4
  325. package/src/duckdb/src/include/duckdb/common/file_system.hpp +10 -8
  326. package/src/duckdb/src/include/duckdb/common/filename_pattern.hpp +1 -1
  327. package/src/duckdb/src/include/duckdb/common/helper.hpp +8 -3
  328. package/src/duckdb/src/include/duckdb/common/hive_partitioning.hpp +1 -1
  329. package/src/duckdb/src/include/duckdb/common/http_state.hpp +61 -28
  330. package/src/duckdb/src/include/duckdb/common/hugeint.hpp +15 -0
  331. package/src/duckdb/src/include/duckdb/common/index_vector.hpp +12 -0
  332. package/src/duckdb/src/include/duckdb/common/limits.hpp +52 -149
  333. package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +11 -5
  334. package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +12 -42
  335. package/src/duckdb/src/include/duckdb/common/mutex.hpp +3 -0
  336. package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +48 -0
  337. package/src/duckdb/src/include/duckdb/common/opener_file_system.hpp +6 -2
  338. package/src/duckdb/src/include/duckdb/common/operator/add.hpp +5 -2
  339. package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +65 -4
  340. package/src/duckdb/src/include/duckdb/common/operator/multiply.hpp +3 -2
  341. package/src/duckdb/src/include/duckdb/common/operator/numeric_cast.hpp +10 -0
  342. package/src/duckdb/src/include/duckdb/common/operator/string_cast.hpp +1 -1
  343. package/src/duckdb/src/include/duckdb/common/operator/subtract.hpp +3 -2
  344. package/src/duckdb/src/include/duckdb/common/radix.hpp +9 -20
  345. package/src/duckdb/src/include/duckdb/common/radix_partitioning.hpp +6 -21
  346. package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +3 -3
  347. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +35 -7
  348. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +14 -6
  349. package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_reader.hpp +0 -4
  350. package/src/duckdb/src/include/duckdb/common/serializer/deserialization_data.hpp +110 -0
  351. package/src/duckdb/src/include/duckdb/common/serializer/format_deserializer.hpp +94 -16
  352. package/src/duckdb/src/include/duckdb/common/serializer/format_serializer.hpp +73 -40
  353. package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +26 -4
  354. package/src/duckdb/src/include/duckdb/common/serializer.hpp +0 -7
  355. package/src/duckdb/src/include/duckdb/common/sort/partition_state.hpp +23 -8
  356. package/src/duckdb/src/include/duckdb/common/stack_checker.hpp +34 -0
  357. package/src/duckdb/src/include/duckdb/common/string_util.hpp +11 -0
  358. package/src/duckdb/src/include/duckdb/common/type_util.hpp +8 -0
  359. package/src/duckdb/src/include/duckdb/common/typedefs.hpp +8 -0
  360. package/src/duckdb/src/include/duckdb/common/types/batched_data_collection.hpp +3 -1
  361. package/src/duckdb/src/include/duckdb/common/types/bit.hpp +81 -0
  362. package/src/duckdb/src/include/duckdb/common/types/column/column_data_allocator.hpp +11 -1
  363. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection.hpp +12 -1
  364. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection_segment.hpp +3 -1
  365. package/src/duckdb/src/include/duckdb/common/types/column/column_data_scan_states.hpp +3 -1
  366. package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +1 -3
  367. package/src/duckdb/src/include/duckdb/common/types/date.hpp +9 -5
  368. package/src/duckdb/src/include/duckdb/common/types/datetime.hpp +46 -3
  369. package/src/duckdb/src/include/duckdb/common/types/list_segment.hpp +11 -15
  370. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +5 -2
  371. package/src/duckdb/src/include/duckdb/common/types/row/row_data_collection_scanner.hpp +5 -1
  372. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_collection.hpp +1 -0
  373. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +3 -0
  374. package/src/duckdb/src/include/duckdb/common/types/string_heap.hpp +3 -0
  375. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +9 -0
  376. package/src/duckdb/src/include/duckdb/common/types/time.hpp +5 -0
  377. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +16 -10
  378. package/src/duckdb/src/include/duckdb/common/types/value.hpp +7 -2
  379. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +7 -0
  380. package/src/duckdb/src/include/duckdb/common/types.hpp +6 -25
  381. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +7 -2
  382. package/src/duckdb/src/include/duckdb/common/virtual_file_system.hpp +40 -97
  383. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +4 -4
  384. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +3 -1
  385. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic_functions.hpp +3 -1
  386. package/src/duckdb/src/include/duckdb/core_functions/aggregate/distributive_functions.hpp +4 -2
  387. package/src/duckdb/src/include/duckdb/core_functions/aggregate/holistic_functions.hpp +3 -1
  388. package/src/duckdb/src/include/duckdb/core_functions/aggregate/nested_functions.hpp +3 -1
  389. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +1 -0
  390. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +3 -3
  391. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression_functions.hpp +3 -1
  392. package/src/duckdb/src/include/duckdb/core_functions/scalar/bit_functions.hpp +3 -1
  393. package/src/duckdb/src/include/duckdb/core_functions/scalar/blob_functions.hpp +3 -1
  394. package/src/duckdb/src/include/duckdb/core_functions/scalar/date_functions.hpp +40 -11
  395. package/src/duckdb/src/include/duckdb/core_functions/scalar/debug_functions.hpp +27 -0
  396. package/src/duckdb/src/include/duckdb/core_functions/scalar/enum_functions.hpp +3 -1
  397. package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +3 -1
  398. package/src/duckdb/src/include/duckdb/core_functions/scalar/list_functions.hpp +7 -5
  399. package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +3 -1
  400. package/src/duckdb/src/include/duckdb/core_functions/scalar/math_functions.hpp +6 -4
  401. package/src/duckdb/src/include/duckdb/core_functions/scalar/operators_functions.hpp +4 -2
  402. package/src/duckdb/src/include/duckdb/core_functions/scalar/random_functions.hpp +3 -1
  403. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +12 -1
  404. package/src/duckdb/src/include/duckdb/core_functions/scalar/struct_functions.hpp +3 -1
  405. package/src/duckdb/src/include/duckdb/core_functions/scalar/union_functions.hpp +3 -1
  406. package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +21 -3
  407. package/src/duckdb/src/include/duckdb/execution/executor.hpp +3 -0
  408. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +13 -12
  409. package/src/duckdb/src/include/duckdb/execution/index/art/art_key.hpp +0 -1
  410. package/src/duckdb/src/include/duckdb/execution/index/art/fixed_size_allocator.hpp +22 -24
  411. package/src/duckdb/src/include/duckdb/execution/index/art/iterator.hpp +32 -28
  412. package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +46 -51
  413. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +134 -53
  414. package/src/duckdb/src/include/duckdb/execution/index/art/node16.hpp +5 -7
  415. package/src/duckdb/src/include/duckdb/execution/index/art/node256.hpp +5 -7
  416. package/src/duckdb/src/include/duckdb/execution/index/art/node4.hpp +7 -9
  417. package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +5 -7
  418. package/src/duckdb/src/include/duckdb/execution/index/art/prefix.hpp +63 -52
  419. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_hash_aggregate.hpp +3 -3
  420. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_perfecthash_aggregate.hpp +1 -1
  421. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_ungrouped_aggregate.hpp +3 -3
  422. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_window.hpp +2 -2
  423. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_batch_collector.hpp +2 -2
  424. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_explain_analyze.hpp +1 -1
  425. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit.hpp +1 -1
  426. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_materialized_collector.hpp +1 -1
  427. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_vacuum.hpp +2 -2
  428. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_asof_join.hpp +5 -12
  429. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_blockwise_nl_join.hpp +1 -1
  430. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_delim_join.hpp +2 -2
  431. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_hash_join.hpp +2 -2
  432. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_iejoin.hpp +3 -3
  433. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_nested_loop_join.hpp +2 -2
  434. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp +3 -3
  435. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_range_join.hpp +12 -1
  436. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_order.hpp +2 -2
  437. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_top_n.hpp +2 -2
  438. package/src/duckdb/src/include/duckdb/execution/operator/persistent/base_csv_reader.hpp +2 -2
  439. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_line_info.hpp +4 -3
  440. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_reader_options.hpp +10 -1
  441. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_rejects_table.hpp +36 -0
  442. package/src/duckdb/src/include/duckdb/execution/operator/persistent/parallel_csv_reader.hpp +1 -1
  443. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_copy_to_file.hpp +2 -2
  444. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +2 -2
  445. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +2 -2
  446. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_fixed_batch_copy.hpp +2 -2
  447. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_insert.hpp +2 -2
  448. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_update.hpp +1 -1
  449. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +10 -0
  450. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_table_scan.hpp +5 -5
  451. package/src/duckdb/src/include/duckdb/execution/operator/schema/{physical_create_index.hpp → physical_create_art_index.hpp} +14 -7
  452. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +62 -0
  453. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +8 -2
  454. package/src/duckdb/src/include/duckdb/execution/partitionable_hashtable.hpp +5 -1
  455. package/src/duckdb/src/include/duckdb/execution/perfect_aggregate_hashtable.hpp +4 -2
  456. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +6 -5
  457. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +11 -0
  458. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +6 -2
  459. package/src/duckdb/src/include/duckdb/execution/radix_partitioned_hashtable.hpp +10 -3
  460. package/src/duckdb/src/include/duckdb/execution/window_executor.hpp +313 -0
  461. package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +79 -63
  462. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +12 -4
  463. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +2 -2
  464. package/src/duckdb/src/include/duckdb/function/built_in_functions.hpp +1 -0
  465. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -1
  466. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +81 -0
  467. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +3 -0
  468. package/src/duckdb/src/include/duckdb/function/scalar/compressed_materialization_functions.hpp +49 -0
  469. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +1 -1
  470. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +5 -0
  471. package/src/duckdb/src/include/duckdb/function/scalar/strftime_format.hpp +8 -0
  472. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +2 -0
  473. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +8 -3
  474. package/src/duckdb/src/include/duckdb/function/scalar_macro_function.hpp +3 -0
  475. package/src/duckdb/src/include/duckdb/function/table/arrow/arrow_duck_schema.hpp +99 -0
  476. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +6 -36
  477. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +7 -0
  478. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +5 -1
  479. package/src/duckdb/src/include/duckdb/function/table_function.hpp +8 -0
  480. package/src/duckdb/src/include/duckdb/function/table_macro_function.hpp +3 -0
  481. package/src/duckdb/src/include/duckdb/function/udf_function.hpp +2 -1
  482. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +1 -1
  483. package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +4 -3
  484. package/src/duckdb/src/include/duckdb/main/chunk_scan_state/query_result.hpp +29 -0
  485. package/src/duckdb/src/include/duckdb/main/chunk_scan_state.hpp +43 -0
  486. package/src/duckdb/src/include/duckdb/main/client_config.hpp +5 -2
  487. package/src/duckdb/src/include/duckdb/main/client_context.hpp +16 -14
  488. package/src/duckdb/src/include/duckdb/main/client_properties.hpp +25 -0
  489. package/src/duckdb/src/include/duckdb/main/config.hpp +3 -1
  490. package/src/duckdb/src/include/duckdb/main/connection.hpp +1 -2
  491. package/src/duckdb/src/include/duckdb/main/extension/generated_extension_loader.hpp +22 -0
  492. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +8 -0
  493. package/src/duckdb/src/include/duckdb/main/extension_util.hpp +4 -0
  494. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +5 -0
  495. package/src/duckdb/src/include/duckdb/main/prepared_statement.hpp +73 -5
  496. package/src/duckdb/src/include/duckdb/main/prepared_statement_data.hpp +6 -6
  497. package/src/duckdb/src/include/duckdb/main/query_result.hpp +2 -27
  498. package/src/duckdb/src/include/duckdb/main/relation/aggregate_relation.hpp +4 -1
  499. package/src/duckdb/src/include/duckdb/main/relation/cross_product_relation.hpp +4 -1
  500. package/src/duckdb/src/include/duckdb/main/relation/join_relation.hpp +5 -2
  501. package/src/duckdb/src/include/duckdb/main/relation.hpp +4 -2
  502. package/src/duckdb/src/include/duckdb/main/settings.hpp +41 -11
  503. package/src/duckdb/src/include/duckdb/optimizer/column_binding_replacer.hpp +47 -0
  504. package/src/duckdb/src/include/duckdb/optimizer/compressed_materialization.hpp +132 -0
  505. package/src/duckdb/src/include/duckdb/optimizer/deliminator.hpp +13 -16
  506. package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +7 -0
  507. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +38 -64
  508. package/src/duckdb/src/include/duckdb/optimizer/join_order/cost_model.hpp +37 -0
  509. package/src/duckdb/src/include/duckdb/optimizer/join_order/estimated_properties.hpp +10 -1
  510. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_node.hpp +14 -29
  511. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_order_optimizer.hpp +8 -22
  512. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_relation.hpp +1 -12
  513. package/src/duckdb/src/include/duckdb/optimizer/join_order/plan_enumerator.hpp +89 -0
  514. package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph.hpp +19 -30
  515. package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph_manager.hpp +113 -0
  516. package/src/duckdb/src/include/duckdb/optimizer/join_order/relation_manager.hpp +73 -0
  517. package/src/duckdb/src/include/duckdb/optimizer/join_order/relation_statistics_helper.hpp +73 -0
  518. package/src/duckdb/src/include/duckdb/optimizer/matcher/set_matcher.hpp +13 -0
  519. package/src/duckdb/src/include/duckdb/optimizer/optimizer.hpp +3 -0
  520. package/src/duckdb/src/include/duckdb/optimizer/remove_duplicate_groups.hpp +40 -0
  521. package/src/duckdb/src/include/duckdb/optimizer/statistics_propagator.hpp +11 -3
  522. package/src/duckdb/src/include/duckdb/optimizer/topn_optimizer.hpp +2 -0
  523. package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +2 -3
  524. package/src/duckdb/src/include/duckdb/parallel/pipeline_executor.hpp +3 -2
  525. package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +9 -1
  526. package/src/duckdb/src/include/duckdb/parser/column_definition.hpp +6 -5
  527. package/src/duckdb/src/include/duckdb/parser/column_list.hpp +4 -0
  528. package/src/duckdb/src/include/duckdb/parser/common_table_expression_info.hpp +2 -0
  529. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +5 -0
  530. package/src/duckdb/src/include/duckdb/parser/constraints/check_constraint.hpp +3 -0
  531. package/src/duckdb/src/include/duckdb/parser/constraints/foreign_key_constraint.hpp +6 -0
  532. package/src/duckdb/src/include/duckdb/parser/constraints/not_null_constraint.hpp +3 -0
  533. package/src/duckdb/src/include/duckdb/parser/constraints/unique_constraint.hpp +6 -0
  534. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +4 -1
  535. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  536. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +4 -1
  537. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +4 -1
  538. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +4 -1
  539. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +4 -1
  540. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  541. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +4 -1
  542. package/src/duckdb/src/include/duckdb/parser/expression/default_expression.hpp +1 -0
  543. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +4 -1
  544. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +4 -1
  545. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +21 -4
  546. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +18 -2
  547. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +4 -1
  548. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  549. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  550. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +4 -1
  551. package/src/duckdb/src/include/duckdb/parser/group_by_node.hpp +11 -0
  552. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +12 -1
  553. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +66 -2
  554. package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +8 -1
  555. package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_info.hpp +8 -1
  556. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_index_info.hpp +9 -1
  557. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +9 -2
  558. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_macro_info.hpp +3 -0
  559. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_schema_info.hpp +3 -0
  560. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_sequence_info.hpp +3 -0
  561. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_info.hpp +3 -0
  562. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_type_info.hpp +3 -0
  563. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +3 -0
  564. package/src/duckdb/src/include/duckdb/parser/parsed_data/detach_info.hpp +7 -0
  565. package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +7 -0
  566. package/src/duckdb/src/include/duckdb/parser/parsed_data/exported_table_data.hpp +7 -0
  567. package/src/duckdb/src/include/duckdb/parser/parsed_data/load_info.hpp +13 -3
  568. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +22 -0
  569. package/src/duckdb/src/include/duckdb/parser/parsed_data/pragma_info.hpp +10 -0
  570. package/src/duckdb/src/include/duckdb/parser/parsed_data/show_select_info.hpp +7 -0
  571. package/src/duckdb/src/include/duckdb/parser/parsed_data/transaction_info.hpp +10 -0
  572. package/src/duckdb/src/include/duckdb/parser/parsed_data/vacuum_info.hpp +10 -0
  573. package/src/duckdb/src/include/duckdb/parser/parser.hpp +4 -0
  574. package/src/duckdb/src/include/duckdb/parser/query_node/cte_node.hpp +54 -0
  575. package/src/duckdb/src/include/duckdb/parser/query_node/list.hpp +1 -0
  576. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -1
  577. package/src/duckdb/src/include/duckdb/parser/statement/execute_statement.hpp +1 -1
  578. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +1 -0
  579. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  580. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +3 -0
  581. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +1 -0
  582. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +23 -26
  583. package/src/duckdb/src/include/duckdb/planner/binder.hpp +12 -5
  584. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +0 -8
  585. package/src/duckdb/src/include/duckdb/planner/bound_parameter_map.hpp +2 -1
  586. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +6 -0
  587. package/src/duckdb/src/include/duckdb/planner/bound_tokens.hpp +1 -0
  588. package/src/duckdb/src/include/duckdb/planner/column_binding.hpp +9 -0
  589. package/src/duckdb/src/include/duckdb/planner/constraints/bound_unique_constraint.hpp +3 -3
  590. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +3 -0
  591. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +6 -0
  592. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +6 -0
  593. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +6 -0
  594. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +3 -0
  595. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +3 -0
  596. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +3 -0
  597. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +3 -0
  598. package/src/duckdb/src/include/duckdb/planner/expression/bound_default_expression.hpp +3 -0
  599. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +4 -0
  600. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +3 -1
  601. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +3 -0
  602. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +3 -0
  603. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_data.hpp +24 -6
  604. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +9 -2
  605. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +3 -0
  606. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +3 -0
  607. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +3 -0
  608. package/src/duckdb/src/include/duckdb/planner/expression/list.hpp +1 -0
  609. package/src/duckdb/src/include/duckdb/planner/expression.hpp +3 -0
  610. package/src/duckdb/src/include/duckdb/planner/expression_binder/lateral_binder.hpp +0 -2
  611. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +13 -1
  612. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +4 -0
  613. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +2 -0
  614. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +4 -0
  615. package/src/duckdb/src/include/duckdb/planner/joinside.hpp +3 -0
  616. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +3 -2
  617. package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +1 -2
  618. package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +3 -3
  619. package/src/duckdb/src/include/duckdb/planner/operator/logical_aggregate.hpp +3 -0
  620. package/src/duckdb/src/include/duckdb/planner/operator/logical_any_join.hpp +3 -0
  621. package/src/duckdb/src/include/duckdb/planner/operator/logical_column_data_get.hpp +4 -0
  622. package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +12 -7
  623. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +2 -0
  624. package/src/duckdb/src/include/duckdb/planner/operator/logical_create.hpp +9 -6
  625. package/src/duckdb/src/include/duckdb/planner/operator/logical_create_index.hpp +12 -23
  626. package/src/duckdb/src/include/duckdb/planner/operator/logical_create_table.hpp +10 -6
  627. package/src/duckdb/src/include/duckdb/planner/operator/logical_cross_product.hpp +3 -0
  628. package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +9 -2
  629. package/src/duckdb/src/include/duckdb/planner/operator/logical_delete.hpp +7 -0
  630. package/src/duckdb/src/include/duckdb/planner/operator/logical_delim_get.hpp +3 -0
  631. package/src/duckdb/src/include/duckdb/planner/operator/logical_dependent_join.hpp +43 -0
  632. package/src/duckdb/src/include/duckdb/planner/operator/logical_distinct.hpp +6 -10
  633. package/src/duckdb/src/include/duckdb/planner/operator/logical_dummy_scan.hpp +2 -0
  634. package/src/duckdb/src/include/duckdb/planner/operator/logical_empty_result.hpp +2 -0
  635. package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +4 -0
  636. package/src/duckdb/src/include/duckdb/planner/operator/logical_expression_get.hpp +3 -0
  637. package/src/duckdb/src/include/duckdb/planner/operator/logical_extension_operator.hpp +8 -0
  638. package/src/duckdb/src/include/duckdb/planner/operator/logical_filter.hpp +3 -0
  639. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +11 -1
  640. package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +6 -0
  641. package/src/duckdb/src/include/duckdb/planner/operator/logical_limit.hpp +3 -0
  642. package/src/duckdb/src/include/duckdb/planner/operator/logical_limit_percent.hpp +3 -0
  643. package/src/duckdb/src/include/duckdb/planner/operator/logical_materialized_cte.hpp +52 -0
  644. package/src/duckdb/src/include/duckdb/planner/operator/logical_order.hpp +7 -35
  645. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +6 -0
  646. package/src/duckdb/src/include/duckdb/planner/operator/logical_positional_join.hpp +3 -0
  647. package/src/duckdb/src/include/duckdb/planner/operator/logical_projection.hpp +3 -0
  648. package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +10 -7
  649. package/src/duckdb/src/include/duckdb/planner/operator/logical_reset.hpp +4 -0
  650. package/src/duckdb/src/include/duckdb/planner/operator/logical_sample.hpp +6 -0
  651. package/src/duckdb/src/include/duckdb/planner/operator/logical_set.hpp +4 -0
  652. package/src/duckdb/src/include/duckdb/planner/operator/logical_set_operation.hpp +4 -0
  653. package/src/duckdb/src/include/duckdb/planner/operator/logical_show.hpp +3 -0
  654. package/src/duckdb/src/include/duckdb/planner/operator/logical_simple.hpp +3 -0
  655. package/src/duckdb/src/include/duckdb/planner/operator/logical_top_n.hpp +4 -0
  656. package/src/duckdb/src/include/duckdb/planner/operator/logical_unnest.hpp +2 -0
  657. package/src/duckdb/src/include/duckdb/planner/operator/logical_update.hpp +6 -0
  658. package/src/duckdb/src/include/duckdb/planner/operator/logical_window.hpp +3 -0
  659. package/src/duckdb/src/include/duckdb/planner/operator_extension.hpp +1 -0
  660. package/src/duckdb/src/include/duckdb/planner/planner.hpp +4 -3
  661. package/src/duckdb/src/include/duckdb/planner/query_node/bound_cte_node.hpp +44 -0
  662. package/src/duckdb/src/include/duckdb/planner/query_node/list.hpp +1 -0
  663. package/src/duckdb/src/include/duckdb/planner/subquery/flatten_dependent_join.hpp +2 -2
  664. package/src/duckdb/src/include/duckdb/planner/subquery/has_correlated_expressions.hpp +4 -1
  665. package/src/duckdb/src/include/duckdb/planner/subquery/recursive_dependent_join_planner.hpp +31 -0
  666. package/src/duckdb/src/include/duckdb/planner/subquery/rewrite_correlated_expressions.hpp +8 -2
  667. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +7 -1
  668. package/src/duckdb/src/include/duckdb/planner/tableref/bound_cteref.hpp +5 -2
  669. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  670. package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +2 -1
  671. package/src/duckdb/src/include/duckdb/storage/block.hpp +27 -4
  672. package/src/duckdb/src/include/duckdb/storage/block_manager.hpp +11 -11
  673. package/src/duckdb/src/include/duckdb/storage/checkpoint/row_group_writer.hpp +5 -5
  674. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_reader.hpp +2 -2
  675. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +3 -3
  676. package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +19 -16
  677. package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +1 -1
  678. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +2 -2
  679. package/src/duckdb/src/include/duckdb/storage/in_memory_block_manager.hpp +2 -2
  680. package/src/duckdb/src/include/duckdb/storage/index.hpp +2 -2
  681. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_manager.hpp +88 -0
  682. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_reader.hpp +54 -0
  683. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_writer.hpp +45 -0
  684. package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +22 -0
  685. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +2 -2
  686. package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +8 -5
  687. package/src/duckdb/src/include/duckdb/storage/statistics/string_stats.hpp +4 -0
  688. package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +2 -2
  689. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +2 -2
  690. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +3 -0
  691. package/src/duckdb/src/include/duckdb/storage/table/persistent_table_data.hpp +2 -2
  692. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +4 -3
  693. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +3 -3
  694. package/src/duckdb/src/include/duckdb/storage/table/row_group_segment_tree.hpp +2 -2
  695. package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +1 -1
  696. package/src/duckdb/src/include/duckdb/storage/table_io_manager.hpp +3 -0
  697. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +3 -4
  698. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +2 -3
  699. package/src/duckdb/src/include/duckdb/verification/prepared_statement_verifier.hpp +1 -1
  700. package/src/duckdb/src/include/duckdb.h +86 -1
  701. package/src/duckdb/src/main/appender.cpp +3 -1
  702. package/src/duckdb/src/main/attached_database.cpp +2 -2
  703. package/src/duckdb/src/main/capi/arrow-c.cpp +196 -8
  704. package/src/duckdb/src/main/capi/duckdb-c.cpp +16 -0
  705. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +1 -1
  706. package/src/duckdb/src/main/capi/pending-c.cpp +23 -0
  707. package/src/duckdb/src/main/capi/prepared-c.cpp +106 -28
  708. package/src/duckdb/src/main/capi/result-c.cpp +3 -1
  709. package/src/duckdb/src/main/chunk_scan_state/query_result.cpp +53 -0
  710. package/src/duckdb/src/main/chunk_scan_state.cpp +48 -0
  711. package/src/duckdb/src/main/client_context.cpp +42 -19
  712. package/src/duckdb/src/main/client_verify.cpp +17 -0
  713. package/src/duckdb/src/main/config.cpp +4 -1
  714. package/src/duckdb/src/main/database.cpp +2 -11
  715. package/src/duckdb/src/main/db_instance_cache.cpp +14 -6
  716. package/src/duckdb/src/main/extension/extension_helper.cpp +107 -88
  717. package/src/duckdb/src/main/extension/extension_install.cpp +10 -1
  718. package/src/duckdb/src/main/extension/extension_load.cpp +26 -6
  719. package/src/duckdb/src/main/extension/extension_util.cpp +16 -0
  720. package/src/duckdb/src/main/pending_query_result.cpp +9 -1
  721. package/src/duckdb/src/main/prepared_statement.cpp +38 -11
  722. package/src/duckdb/src/main/prepared_statement_data.cpp +23 -18
  723. package/src/duckdb/src/main/query_result.cpp +0 -21
  724. package/src/duckdb/src/main/relation/aggregate_relation.cpp +20 -10
  725. package/src/duckdb/src/main/relation/cross_product_relation.cpp +4 -3
  726. package/src/duckdb/src/main/relation/join_relation.cpp +6 -6
  727. package/src/duckdb/src/main/relation.cpp +10 -9
  728. package/src/duckdb/src/main/settings/settings.cpp +79 -33
  729. package/src/duckdb/src/optimizer/column_binding_replacer.cpp +43 -0
  730. package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +2 -4
  731. package/src/duckdb/src/optimizer/compressed_materialization/compress_aggregate.cpp +140 -0
  732. package/src/duckdb/src/optimizer/compressed_materialization/compress_distinct.cpp +42 -0
  733. package/src/duckdb/src/optimizer/compressed_materialization/compress_order.cpp +65 -0
  734. package/src/duckdb/src/optimizer/compressed_materialization.cpp +477 -0
  735. package/src/duckdb/src/optimizer/deliminator.cpp +180 -323
  736. package/src/duckdb/src/optimizer/filter_pushdown.cpp +23 -6
  737. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +79 -325
  738. package/src/duckdb/src/optimizer/join_order/cost_model.cpp +19 -0
  739. package/src/duckdb/src/optimizer/join_order/estimated_properties.cpp +7 -0
  740. package/src/duckdb/src/optimizer/join_order/join_node.cpp +5 -37
  741. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +48 -1047
  742. package/src/duckdb/src/optimizer/join_order/join_relation_set.cpp +2 -6
  743. package/src/duckdb/src/optimizer/join_order/plan_enumerator.cpp +552 -0
  744. package/src/duckdb/src/optimizer/join_order/query_graph.cpp +52 -41
  745. package/src/duckdb/src/optimizer/join_order/query_graph_manager.cpp +409 -0
  746. package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +356 -0
  747. package/src/duckdb/src/optimizer/join_order/relation_statistics_helper.cpp +351 -0
  748. package/src/duckdb/src/optimizer/optimizer.cpp +49 -14
  749. package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +5 -5
  750. package/src/duckdb/src/optimizer/pushdown/pushdown_get.cpp +0 -1
  751. package/src/duckdb/src/optimizer/pushdown/pushdown_projection.cpp +34 -7
  752. package/src/duckdb/src/optimizer/remove_duplicate_groups.cpp +127 -0
  753. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +4 -0
  754. package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +154 -15
  755. package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +65 -8
  756. package/src/duckdb/src/optimizer/statistics/operator/propagate_order.cpp +1 -1
  757. package/src/duckdb/src/optimizer/statistics_propagator.cpp +7 -5
  758. package/src/duckdb/src/optimizer/topn_optimizer.cpp +27 -10
  759. package/src/duckdb/src/optimizer/unnest_rewriter.cpp +3 -5
  760. package/src/duckdb/src/parallel/executor.cpp +25 -1
  761. package/src/duckdb/src/parallel/pipeline.cpp +0 -17
  762. package/src/duckdb/src/parallel/pipeline_executor.cpp +33 -13
  763. package/src/duckdb/src/parallel/pipeline_finish_event.cpp +55 -1
  764. package/src/duckdb/src/parallel/task_scheduler.cpp +18 -2
  765. package/src/duckdb/src/parser/column_definition.cpp +20 -32
  766. package/src/duckdb/src/parser/column_list.cpp +8 -0
  767. package/src/duckdb/src/parser/constraints/foreign_key_constraint.cpp +3 -0
  768. package/src/duckdb/src/parser/constraints/unique_constraint.cpp +3 -0
  769. package/src/duckdb/src/parser/expression/between_expression.cpp +3 -15
  770. package/src/duckdb/src/parser/expression/case_expression.cpp +0 -25
  771. package/src/duckdb/src/parser/expression/cast_expression.cpp +3 -14
  772. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -13
  773. package/src/duckdb/src/parser/expression/columnref_expression.cpp +3 -12
  774. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -13
  775. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +0 -12
  776. package/src/duckdb/src/parser/expression/constant_expression.cpp +3 -11
  777. package/src/duckdb/src/parser/expression/default_expression.cpp +0 -4
  778. package/src/duckdb/src/parser/expression/function_expression.cpp +3 -32
  779. package/src/duckdb/src/parser/expression/lambda_expression.cpp +4 -14
  780. package/src/duckdb/src/parser/expression/operator_expression.cpp +0 -12
  781. package/src/duckdb/src/parser/expression/parameter_expression.cpp +7 -19
  782. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +4 -11
  783. package/src/duckdb/src/parser/expression/star_expression.cpp +0 -19
  784. package/src/duckdb/src/parser/expression/subquery_expression.cpp +0 -18
  785. package/src/duckdb/src/parser/expression/window_expression.cpp +3 -39
  786. package/src/duckdb/src/parser/parsed_data/alter_info.cpp +5 -2
  787. package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +38 -0
  788. package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +17 -1
  789. package/src/duckdb/src/parser/parsed_data/create_sequence_info.cpp +2 -0
  790. package/src/duckdb/src/parser/parsed_data/detach_info.cpp +1 -1
  791. package/src/duckdb/src/parser/parsed_data/drop_info.cpp +1 -1
  792. package/src/duckdb/src/parser/parsed_data/sample_options.cpp +0 -18
  793. package/src/duckdb/src/parser/parsed_data/transaction_info.cpp +4 -1
  794. package/src/duckdb/src/parser/parsed_data/vacuum_info.cpp +1 -1
  795. package/src/duckdb/src/parser/parsed_expression.cpp +0 -70
  796. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +7 -0
  797. package/src/duckdb/src/parser/parser.cpp +62 -36
  798. package/src/duckdb/src/parser/query_node/cte_node.cpp +58 -0
  799. package/src/duckdb/src/parser/query_node/recursive_cte_node.cpp +0 -19
  800. package/src/duckdb/src/parser/query_node/select_node.cpp +0 -29
  801. package/src/duckdb/src/parser/query_node/set_operation_node.cpp +0 -15
  802. package/src/duckdb/src/parser/query_node.cpp +15 -47
  803. package/src/duckdb/src/parser/result_modifier.cpp +0 -87
  804. package/src/duckdb/src/parser/statement/execute_statement.cpp +2 -2
  805. package/src/duckdb/src/parser/statement/select_statement.cpp +0 -10
  806. package/src/duckdb/src/parser/tableref/basetableref.cpp +0 -19
  807. package/src/duckdb/src/parser/tableref/emptytableref.cpp +0 -4
  808. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +0 -15
  809. package/src/duckdb/src/parser/tableref/joinref.cpp +3 -23
  810. package/src/duckdb/src/parser/tableref/pivotref.cpp +6 -45
  811. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -13
  812. package/src/duckdb/src/parser/tableref/table_function.cpp +0 -15
  813. package/src/duckdb/src/parser/tableref.cpp +0 -44
  814. package/src/duckdb/src/parser/transform/constraint/transform_constraint.cpp +55 -38
  815. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +13 -4
  816. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +55 -3
  817. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +2 -0
  818. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +3 -0
  819. package/src/duckdb/src/parser/transform/expression/transform_multi_assign_reference.cpp +44 -0
  820. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +45 -26
  821. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +19 -1
  822. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +16 -1
  823. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +13 -0
  824. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +32 -17
  825. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +1 -1
  826. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +6 -1
  827. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +6 -1
  828. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -2
  829. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +14 -11
  830. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +28 -6
  831. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +11 -2
  832. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +6 -1
  833. package/src/duckdb/src/parser/transformer.cpp +44 -25
  834. package/src/duckdb/src/planner/binder/expression/bind_macro_expression.cpp +5 -3
  835. package/src/duckdb/src/planner/binder/expression/bind_parameter_expression.cpp +10 -10
  836. package/src/duckdb/src/planner/binder/query_node/bind_cte_node.cpp +64 -0
  837. package/src/duckdb/src/planner/binder/query_node/plan_cte_node.cpp +26 -0
  838. package/src/duckdb/src/planner/binder/query_node/plan_recursive_cte_node.cpp +5 -5
  839. package/src/duckdb/src/planner/binder/query_node/plan_setop.cpp +4 -4
  840. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +36 -33
  841. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +14 -52
  842. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +0 -23
  843. package/src/duckdb/src/planner/binder/statement/bind_execute.cpp +13 -7
  844. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +29 -4
  845. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +24 -5
  846. package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +32 -5
  847. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +116 -50
  848. package/src/duckdb/src/planner/binder/tableref/plan_cteref.cpp +1 -1
  849. package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +67 -31
  850. package/src/duckdb/src/planner/binder/tableref/plan_subqueryref.cpp +3 -3
  851. package/src/duckdb/src/planner/binder.cpp +44 -31
  852. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +24 -1
  853. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +4 -0
  854. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +13 -8
  855. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +22 -0
  856. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +28 -20
  857. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +48 -4
  858. package/src/duckdb/src/planner/expression_binder/lateral_binder.cpp +4 -31
  859. package/src/duckdb/src/planner/expression_binder.cpp +23 -0
  860. package/src/duckdb/src/planner/expression_iterator.cpp +6 -0
  861. package/src/duckdb/src/planner/logical_operator.cpp +19 -7
  862. package/src/duckdb/src/planner/logical_operator_visitor.cpp +5 -6
  863. package/src/duckdb/src/planner/operator/logical_comparison_join.cpp +4 -2
  864. package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +8 -0
  865. package/src/duckdb/src/planner/operator/logical_create.cpp +14 -0
  866. package/src/duckdb/src/planner/operator/logical_create_index.cpp +36 -7
  867. package/src/duckdb/src/planner/operator/logical_create_table.cpp +16 -0
  868. package/src/duckdb/src/planner/operator/logical_cteref.cpp +3 -1
  869. package/src/duckdb/src/planner/operator/logical_delete.cpp +9 -2
  870. package/src/duckdb/src/planner/operator/logical_dependent_join.cpp +26 -0
  871. package/src/duckdb/src/planner/operator/logical_distinct.cpp +13 -0
  872. package/src/duckdb/src/planner/operator/logical_explain.cpp +1 -1
  873. package/src/duckdb/src/planner/operator/logical_extension_operator.cpp +39 -0
  874. package/src/duckdb/src/planner/operator/logical_get.cpp +82 -4
  875. package/src/duckdb/src/planner/operator/logical_insert.cpp +8 -2
  876. package/src/duckdb/src/planner/operator/logical_materialized_cte.cpp +22 -0
  877. package/src/duckdb/src/planner/operator/logical_order.cpp +39 -0
  878. package/src/duckdb/src/planner/operator/logical_pivot.cpp +3 -0
  879. package/src/duckdb/src/planner/operator/logical_recursive_cte.cpp +5 -5
  880. package/src/duckdb/src/planner/operator/logical_sample.cpp +3 -0
  881. package/src/duckdb/src/planner/operator/logical_update.cpp +8 -2
  882. package/src/duckdb/src/planner/parsed_data/bound_create_table_info.cpp +4 -2
  883. package/src/duckdb/src/planner/planner.cpp +18 -7
  884. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +90 -38
  885. package/src/duckdb/src/planner/subquery/has_correlated_expressions.cpp +22 -7
  886. package/src/duckdb/src/planner/subquery/rewrite_correlated_expressions.cpp +65 -7
  887. package/src/duckdb/src/storage/arena_allocator.cpp +13 -2
  888. package/src/duckdb/src/storage/buffer/block_manager.cpp +13 -9
  889. package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +1 -1
  890. package/src/duckdb/src/storage/checkpoint/table_data_reader.cpp +3 -4
  891. package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +7 -7
  892. package/src/duckdb/src/storage/checkpoint_manager.cpp +74 -69
  893. package/src/duckdb/src/storage/compression/bitpacking.cpp +87 -63
  894. package/src/duckdb/src/storage/compression/bitpacking_hugeint.cpp +295 -0
  895. package/src/duckdb/src/storage/compression/fsst.cpp +1 -1
  896. package/src/duckdb/src/storage/compression/rle.cpp +52 -13
  897. package/src/duckdb/src/storage/data_table.cpp +36 -25
  898. package/src/duckdb/src/storage/index.cpp +4 -26
  899. package/src/duckdb/src/storage/local_storage.cpp +3 -4
  900. package/src/duckdb/src/storage/metadata/metadata_manager.cpp +267 -0
  901. package/src/duckdb/src/storage/metadata/metadata_reader.cpp +80 -0
  902. package/src/duckdb/src/storage/metadata/metadata_writer.cpp +86 -0
  903. package/src/duckdb/src/storage/serialization/serialize_constraint.cpp +98 -0
  904. package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +194 -0
  905. package/src/duckdb/src/storage/serialization/serialize_expression.cpp +283 -0
  906. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +762 -0
  907. package/src/duckdb/src/storage/serialization/serialize_macro_function.cpp +62 -0
  908. package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +432 -0
  909. package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +419 -0
  910. package/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp +342 -0
  911. package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +122 -0
  912. package/src/duckdb/src/storage/serialization/serialize_result_modifier.cpp +97 -0
  913. package/src/duckdb/src/storage/serialization/serialize_statement.cpp +22 -0
  914. package/src/duckdb/src/storage/serialization/serialize_table_filter.cpp +97 -0
  915. package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +164 -0
  916. package/src/duckdb/src/storage/serialization/serialize_types.cpp +127 -0
  917. package/src/duckdb/src/storage/single_file_block_manager.cpp +69 -51
  918. package/src/duckdb/src/storage/statistics/string_stats.cpp +21 -2
  919. package/src/duckdb/src/storage/storage_info.cpp +3 -2
  920. package/src/duckdb/src/storage/storage_manager.cpp +11 -5
  921. package/src/duckdb/src/storage/table/chunk_info.cpp +17 -0
  922. package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +3 -3
  923. package/src/duckdb/src/storage/table/list_column_data.cpp +6 -3
  924. package/src/duckdb/src/storage/table/persistent_table_data.cpp +1 -2
  925. package/src/duckdb/src/storage/table/row_group.cpp +34 -19
  926. package/src/duckdb/src/storage/table/row_group_collection.cpp +23 -19
  927. package/src/duckdb/src/storage/table/update_segment.cpp +1 -1
  928. package/src/duckdb/src/storage/table_index_list.cpp +1 -1
  929. package/src/duckdb/src/storage/wal_replay.cpp +24 -24
  930. package/src/duckdb/src/storage/write_ahead_log.cpp +3 -2
  931. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +16 -11
  932. package/src/duckdb/third_party/concurrentqueue/concurrentqueue.h +2 -2
  933. package/src/duckdb/third_party/concurrentqueue/lightweightsemaphore.h +5 -2
  934. package/src/duckdb/third_party/fast_float/fast_float/fast_float.h +2 -0
  935. package/src/duckdb/third_party/httplib/httplib.hpp +10 -1
  936. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +10 -0
  937. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +2 -1
  938. package/src/duckdb/third_party/libpg_query/pg_functions.cpp +13 -0
  939. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +11057 -10328
  940. package/src/duckdb/third_party/libpg_query/src_backend_parser_scansup.cpp +9 -0
  941. package/src/duckdb/third_party/mbedtls/include/mbedtls_wrapper.hpp +10 -0
  942. package/src/duckdb/third_party/mbedtls/mbedtls_wrapper.cpp +31 -1
  943. package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +4 -4
  944. package/src/duckdb/ub_src_common.cpp +4 -0
  945. package/src/duckdb/ub_src_common_adbc_nanoarrow.cpp +8 -0
  946. package/src/duckdb/ub_src_common_arrow_appender.cpp +10 -0
  947. package/src/duckdb/ub_src_common_serializer.cpp +2 -0
  948. package/src/duckdb/ub_src_core_functions_scalar_debug.cpp +2 -0
  949. package/src/duckdb/ub_src_core_functions_scalar_string.cpp +2 -0
  950. package/src/duckdb/ub_src_execution.cpp +2 -0
  951. package/src/duckdb/ub_src_execution_index_art.cpp +0 -6
  952. package/src/duckdb/ub_src_execution_operator_persistent.cpp +2 -0
  953. package/src/duckdb/ub_src_execution_operator_schema.cpp +1 -1
  954. package/src/duckdb/ub_src_execution_operator_set.cpp +2 -0
  955. package/src/duckdb/ub_src_execution_physical_plan.cpp +2 -0
  956. package/src/duckdb/ub_src_function_scalar.cpp +2 -0
  957. package/src/duckdb/ub_src_function_scalar_compressed_materialization.cpp +4 -0
  958. package/src/duckdb/ub_src_function_scalar_list.cpp +2 -0
  959. package/src/duckdb/ub_src_function_table_arrow.cpp +2 -0
  960. package/src/duckdb/ub_src_main.cpp +2 -0
  961. package/src/duckdb/ub_src_main_chunk_scan_state.cpp +2 -0
  962. package/src/duckdb/ub_src_optimizer.cpp +6 -0
  963. package/src/duckdb/ub_src_optimizer_compressed_materialization.cpp +6 -0
  964. package/src/duckdb/ub_src_optimizer_join_order.cpp +10 -0
  965. package/src/duckdb/ub_src_optimizer_statistics_expression.cpp +0 -2
  966. package/src/duckdb/ub_src_parser.cpp +0 -2
  967. package/src/duckdb/ub_src_parser_query_node.cpp +2 -0
  968. package/src/duckdb/ub_src_parser_transform_expression.cpp +2 -0
  969. package/src/duckdb/ub_src_planner_binder_query_node.cpp +4 -0
  970. package/src/duckdb/ub_src_planner_operator.cpp +3 -3
  971. package/src/duckdb/ub_src_storage.cpp +0 -4
  972. package/src/duckdb/ub_src_storage_compression.cpp +2 -0
  973. package/src/duckdb/ub_src_storage_metadata.cpp +6 -0
  974. package/src/duckdb/ub_src_storage_serialization.cpp +28 -0
  975. package/src/duckdb_node.hpp +1 -0
  976. package/src/statement.cpp +10 -5
  977. package/test/columns.test.ts +25 -3
  978. package/test/extension.test.ts +1 -1
  979. package/test/test_all_types.test.ts +234 -0
  980. package/tsconfig.json +1 -0
  981. package/src/duckdb/src/execution/index/art/leaf_segment.cpp +0 -52
  982. package/src/duckdb/src/execution/index/art/prefix_segment.cpp +0 -42
  983. package/src/duckdb/src/execution/index/art/swizzleable_pointer.cpp +0 -22
  984. package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +0 -193
  985. package/src/duckdb/src/include/duckdb/common/arrow/arrow_options.hpp +0 -25
  986. package/src/duckdb/src/include/duckdb/execution/index/art/leaf_segment.hpp +0 -38
  987. package/src/duckdb/src/include/duckdb/execution/index/art/prefix_segment.hpp +0 -40
  988. package/src/duckdb/src/include/duckdb/execution/index/art/swizzleable_pointer.hpp +0 -58
  989. package/src/duckdb/src/include/duckdb/planner/operator/logical_asof_join.hpp +0 -27
  990. package/src/duckdb/src/include/duckdb/planner/operator/logical_delim_join.hpp +0 -32
  991. package/src/duckdb/src/include/duckdb/storage/meta_block_reader.hpp +0 -49
  992. package/src/duckdb/src/include/duckdb/storage/meta_block_writer.hpp +0 -50
  993. package/src/duckdb/src/optimizer/statistics/expression/propagate_and_compress.cpp +0 -118
  994. package/src/duckdb/src/parser/common_table_expression_info.cpp +0 -19
  995. package/src/duckdb/src/planner/operator/logical_asof_join.cpp +0 -14
  996. package/src/duckdb/src/planner/operator/logical_delim_join.cpp +0 -27
  997. package/src/duckdb/src/storage/meta_block_reader.cpp +0 -78
  998. package/src/duckdb/src/storage/meta_block_writer.cpp +0 -80
@@ -2,7 +2,10 @@
2
2
  #include "duckdb/main/query_result.hpp"
3
3
  #include "duckdb/main/prepared_statement_data.hpp"
4
4
  #include "duckdb/common/types/decimal.hpp"
5
+ #include "duckdb/common/optional_ptr.hpp"
6
+ #include "duckdb/common/case_insensitive_map.hpp"
5
7
 
8
+ using duckdb::case_insensitive_map_t;
6
9
  using duckdb::Connection;
7
10
  using duckdb::date_t;
8
11
  using duckdb::dtime_t;
@@ -10,8 +13,10 @@ using duckdb::ExtractStatementsWrapper;
10
13
  using duckdb::hugeint_t;
11
14
  using duckdb::LogicalType;
12
15
  using duckdb::MaterializedQueryResult;
16
+ using duckdb::optional_ptr;
13
17
  using duckdb::PreparedStatementWrapper;
14
18
  using duckdb::QueryResultType;
19
+ using duckdb::StringUtil;
15
20
  using duckdb::timestamp_t;
16
21
  using duckdb::Value;
17
22
 
@@ -84,13 +89,42 @@ idx_t duckdb_nparams(duckdb_prepared_statement prepared_statement) {
84
89
  return wrapper->statement->n_param;
85
90
  }
86
91
 
92
+ static duckdb::string duckdb_parameter_name_internal(duckdb_prepared_statement prepared_statement, idx_t index) {
93
+ auto wrapper = (PreparedStatementWrapper *)prepared_statement;
94
+ if (!wrapper || !wrapper->statement || wrapper->statement->HasError()) {
95
+ return duckdb::string();
96
+ }
97
+ if (index > wrapper->statement->n_param) {
98
+ return duckdb::string();
99
+ }
100
+ for (auto &item : wrapper->statement->named_param_map) {
101
+ auto &identifier = item.first;
102
+ auto &param_idx = item.second;
103
+ if (param_idx == index) {
104
+ // Found the matching parameter
105
+ return identifier;
106
+ }
107
+ }
108
+ // No parameter was found with this index
109
+ return duckdb::string();
110
+ }
111
+
112
+ const char *duckdb_parameter_name(duckdb_prepared_statement prepared_statement, idx_t index) {
113
+ auto identifier = duckdb_parameter_name_internal(prepared_statement, index);
114
+ if (identifier == duckdb::string()) {
115
+ return NULL;
116
+ }
117
+ return strdup(identifier.c_str());
118
+ }
119
+
87
120
  duckdb_type duckdb_param_type(duckdb_prepared_statement prepared_statement, idx_t param_idx) {
88
121
  auto wrapper = reinterpret_cast<PreparedStatementWrapper *>(prepared_statement);
89
122
  if (!wrapper || !wrapper->statement || wrapper->statement->HasError()) {
90
123
  return DUCKDB_TYPE_INVALID;
91
124
  }
92
125
  LogicalType param_type;
93
- if (!wrapper->statement->data->TryGetType(param_idx, param_type)) {
126
+ auto identifier = std::to_string(param_idx);
127
+ if (!wrapper->statement->data->TryGetType(identifier, param_type)) {
94
128
  return DUCKDB_TYPE_INVALID;
95
129
  }
96
130
  return ConvertCPPTypeToC(param_type);
@@ -105,39 +139,65 @@ duckdb_state duckdb_clear_bindings(duckdb_prepared_statement prepared_statement)
105
139
  return DuckDBSuccess;
106
140
  }
107
141
 
108
- static duckdb_state duckdb_bind_value(duckdb_prepared_statement prepared_statement, idx_t param_idx, Value val) {
142
+ duckdb_state duckdb_bind_value(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_value val) {
143
+ auto value = reinterpret_cast<Value *>(val);
109
144
  auto wrapper = reinterpret_cast<PreparedStatementWrapper *>(prepared_statement);
110
145
  if (!wrapper || !wrapper->statement || wrapper->statement->HasError()) {
111
146
  return DuckDBError;
112
147
  }
113
148
  if (param_idx <= 0 || param_idx > wrapper->statement->n_param) {
149
+ wrapper->statement->error =
150
+ duckdb::InvalidInputException("Can not bind to parameter number %d, statement only has %d parameter(s)",
151
+ param_idx, wrapper->statement->n_param);
114
152
  return DuckDBError;
115
153
  }
116
- if (param_idx > wrapper->values.size()) {
117
- wrapper->values.resize(param_idx);
118
- }
119
- wrapper->values[param_idx - 1] = val;
154
+ auto identifier = duckdb_parameter_name_internal(prepared_statement, param_idx);
155
+ wrapper->values[identifier] = *value;
120
156
  return DuckDBSuccess;
121
157
  }
122
158
 
159
+ duckdb_state duckdb_bind_parameter_index(duckdb_prepared_statement prepared_statement, idx_t *param_idx_out,
160
+ const char *name_p) {
161
+ auto wrapper = (PreparedStatementWrapper *)prepared_statement;
162
+ if (!wrapper || !wrapper->statement || wrapper->statement->HasError()) {
163
+ return DuckDBError;
164
+ }
165
+ if (!name_p || !param_idx_out) {
166
+ return DuckDBError;
167
+ }
168
+ auto name = std::string(name_p);
169
+ for (auto &pair : wrapper->statement->named_param_map) {
170
+ if (duckdb::StringUtil::CIEquals(pair.first, name)) {
171
+ *param_idx_out = pair.second;
172
+ return DuckDBSuccess;
173
+ }
174
+ }
175
+ return DuckDBError;
176
+ }
177
+
123
178
  duckdb_state duckdb_bind_boolean(duckdb_prepared_statement prepared_statement, idx_t param_idx, bool val) {
124
- return duckdb_bind_value(prepared_statement, param_idx, Value::BOOLEAN(val));
179
+ auto value = Value::BOOLEAN(val);
180
+ return duckdb_bind_value(prepared_statement, param_idx, (duckdb_value)&value);
125
181
  }
126
182
 
127
183
  duckdb_state duckdb_bind_int8(duckdb_prepared_statement prepared_statement, idx_t param_idx, int8_t val) {
128
- return duckdb_bind_value(prepared_statement, param_idx, Value::TINYINT(val));
184
+ auto value = Value::TINYINT(val);
185
+ return duckdb_bind_value(prepared_statement, param_idx, (duckdb_value)&value);
129
186
  }
130
187
 
131
188
  duckdb_state duckdb_bind_int16(duckdb_prepared_statement prepared_statement, idx_t param_idx, int16_t val) {
132
- return duckdb_bind_value(prepared_statement, param_idx, Value::SMALLINT(val));
189
+ auto value = Value::SMALLINT(val);
190
+ return duckdb_bind_value(prepared_statement, param_idx, (duckdb_value)&value);
133
191
  }
134
192
 
135
193
  duckdb_state duckdb_bind_int32(duckdb_prepared_statement prepared_statement, idx_t param_idx, int32_t val) {
136
- return duckdb_bind_value(prepared_statement, param_idx, Value::INTEGER(val));
194
+ auto value = Value::INTEGER(val);
195
+ return duckdb_bind_value(prepared_statement, param_idx, (duckdb_value)&value);
137
196
  }
138
197
 
139
198
  duckdb_state duckdb_bind_int64(duckdb_prepared_statement prepared_statement, idx_t param_idx, int64_t val) {
140
- return duckdb_bind_value(prepared_statement, param_idx, Value::BIGINT(val));
199
+ auto value = Value::BIGINT(val);
200
+ return duckdb_bind_value(prepared_statement, param_idx, (duckdb_value)&value);
141
201
  }
142
202
 
143
203
  static hugeint_t duckdb_internal_hugeint(duckdb_hugeint val) {
@@ -148,53 +208,65 @@ static hugeint_t duckdb_internal_hugeint(duckdb_hugeint val) {
148
208
  }
149
209
 
150
210
  duckdb_state duckdb_bind_hugeint(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_hugeint val) {
151
- return duckdb_bind_value(prepared_statement, param_idx, Value::HUGEINT(duckdb_internal_hugeint(val)));
211
+ auto value = Value::HUGEINT(duckdb_internal_hugeint(val));
212
+ return duckdb_bind_value(prepared_statement, param_idx, (duckdb_value)&value);
152
213
  }
153
214
 
154
215
  duckdb_state duckdb_bind_uint8(duckdb_prepared_statement prepared_statement, idx_t param_idx, uint8_t val) {
155
- return duckdb_bind_value(prepared_statement, param_idx, Value::UTINYINT(val));
216
+ auto value = Value::UTINYINT(val);
217
+ return duckdb_bind_value(prepared_statement, param_idx, (duckdb_value)&value);
156
218
  }
157
219
 
158
220
  duckdb_state duckdb_bind_uint16(duckdb_prepared_statement prepared_statement, idx_t param_idx, uint16_t val) {
159
- return duckdb_bind_value(prepared_statement, param_idx, Value::USMALLINT(val));
221
+ auto value = Value::USMALLINT(val);
222
+ return duckdb_bind_value(prepared_statement, param_idx, (duckdb_value)&value);
160
223
  }
161
224
 
162
225
  duckdb_state duckdb_bind_uint32(duckdb_prepared_statement prepared_statement, idx_t param_idx, uint32_t val) {
163
- return duckdb_bind_value(prepared_statement, param_idx, Value::UINTEGER(val));
226
+ auto value = Value::UINTEGER(val);
227
+ return duckdb_bind_value(prepared_statement, param_idx, (duckdb_value)&value);
164
228
  }
165
229
 
166
230
  duckdb_state duckdb_bind_uint64(duckdb_prepared_statement prepared_statement, idx_t param_idx, uint64_t val) {
167
- return duckdb_bind_value(prepared_statement, param_idx, Value::UBIGINT(val));
231
+ auto value = Value::UBIGINT(val);
232
+ return duckdb_bind_value(prepared_statement, param_idx, (duckdb_value)&value);
168
233
  }
169
234
 
170
235
  duckdb_state duckdb_bind_float(duckdb_prepared_statement prepared_statement, idx_t param_idx, float val) {
171
- return duckdb_bind_value(prepared_statement, param_idx, Value::FLOAT(val));
236
+ auto value = Value::FLOAT(val);
237
+ return duckdb_bind_value(prepared_statement, param_idx, (duckdb_value)&value);
172
238
  }
173
239
 
174
240
  duckdb_state duckdb_bind_double(duckdb_prepared_statement prepared_statement, idx_t param_idx, double val) {
175
- return duckdb_bind_value(prepared_statement, param_idx, Value::DOUBLE(val));
241
+ auto value = Value::DOUBLE(val);
242
+ return duckdb_bind_value(prepared_statement, param_idx, (duckdb_value)&value);
176
243
  }
177
244
 
178
245
  duckdb_state duckdb_bind_date(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_date val) {
179
- return duckdb_bind_value(prepared_statement, param_idx, Value::DATE(date_t(val.days)));
246
+ auto value = Value::DATE(date_t(val.days));
247
+ return duckdb_bind_value(prepared_statement, param_idx, (duckdb_value)&value);
180
248
  }
181
249
 
182
250
  duckdb_state duckdb_bind_time(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_time val) {
183
- return duckdb_bind_value(prepared_statement, param_idx, Value::TIME(dtime_t(val.micros)));
251
+ auto value = Value::TIME(dtime_t(val.micros));
252
+ return duckdb_bind_value(prepared_statement, param_idx, (duckdb_value)&value);
184
253
  }
185
254
 
186
255
  duckdb_state duckdb_bind_timestamp(duckdb_prepared_statement prepared_statement, idx_t param_idx,
187
256
  duckdb_timestamp val) {
188
- return duckdb_bind_value(prepared_statement, param_idx, Value::TIMESTAMP(timestamp_t(val.micros)));
257
+ auto value = Value::TIMESTAMP(timestamp_t(val.micros));
258
+ return duckdb_bind_value(prepared_statement, param_idx, (duckdb_value)&value);
189
259
  }
190
260
 
191
261
  duckdb_state duckdb_bind_interval(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_interval val) {
192
- return duckdb_bind_value(prepared_statement, param_idx, Value::INTERVAL(val.months, val.days, val.micros));
262
+ auto value = Value::INTERVAL(val.months, val.days, val.micros);
263
+ return duckdb_bind_value(prepared_statement, param_idx, (duckdb_value)&value);
193
264
  }
194
265
 
195
266
  duckdb_state duckdb_bind_varchar(duckdb_prepared_statement prepared_statement, idx_t param_idx, const char *val) {
196
267
  try {
197
- return duckdb_bind_value(prepared_statement, param_idx, Value(val));
268
+ auto value = Value(val);
269
+ return duckdb_bind_value(prepared_statement, param_idx, (duckdb_value)&value);
198
270
  } catch (...) {
199
271
  return DuckDBError;
200
272
  }
@@ -203,7 +275,8 @@ duckdb_state duckdb_bind_varchar(duckdb_prepared_statement prepared_statement, i
203
275
  duckdb_state duckdb_bind_varchar_length(duckdb_prepared_statement prepared_statement, idx_t param_idx, const char *val,
204
276
  idx_t length) {
205
277
  try {
206
- return duckdb_bind_value(prepared_statement, param_idx, Value(std::string(val, length)));
278
+ auto value = Value(std::string(val, length));
279
+ return duckdb_bind_value(prepared_statement, param_idx, (duckdb_value)&value);
207
280
  } catch (...) {
208
281
  return DuckDBError;
209
282
  }
@@ -212,19 +285,23 @@ duckdb_state duckdb_bind_varchar_length(duckdb_prepared_statement prepared_state
212
285
  duckdb_state duckdb_bind_decimal(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_decimal val) {
213
286
  auto hugeint_val = duckdb_internal_hugeint(val.value);
214
287
  if (val.width > duckdb::Decimal::MAX_WIDTH_INT64) {
215
- return duckdb_bind_value(prepared_statement, param_idx, Value::DECIMAL(hugeint_val, val.width, val.scale));
288
+ auto value = Value::DECIMAL(hugeint_val, val.width, val.scale);
289
+ return duckdb_bind_value(prepared_statement, param_idx, (duckdb_value)&value);
216
290
  }
217
291
  auto value = hugeint_val.lower;
218
- return duckdb_bind_value(prepared_statement, param_idx, Value::DECIMAL((int64_t)value, val.width, val.scale));
292
+ auto duck_val = Value::DECIMAL((int64_t)value, val.width, val.scale);
293
+ return duckdb_bind_value(prepared_statement, param_idx, (duckdb_value)&duck_val);
219
294
  }
220
295
 
221
296
  duckdb_state duckdb_bind_blob(duckdb_prepared_statement prepared_statement, idx_t param_idx, const void *data,
222
297
  idx_t length) {
223
- return duckdb_bind_value(prepared_statement, param_idx, Value::BLOB(duckdb::const_data_ptr_cast(data), length));
298
+ auto value = Value::BLOB(duckdb::const_data_ptr_cast(data), length);
299
+ return duckdb_bind_value(prepared_statement, param_idx, (duckdb_value)&value);
224
300
  }
225
301
 
226
302
  duckdb_state duckdb_bind_null(duckdb_prepared_statement prepared_statement, idx_t param_idx) {
227
- return duckdb_bind_value(prepared_statement, param_idx, Value());
303
+ auto value = Value();
304
+ return duckdb_bind_value(prepared_statement, param_idx, (duckdb_value)&value);
228
305
  }
229
306
 
230
307
  duckdb_state duckdb_execute_prepared(duckdb_prepared_statement prepared_statement, duckdb_result *out_result) {
@@ -232,6 +309,7 @@ duckdb_state duckdb_execute_prepared(duckdb_prepared_statement prepared_statemen
232
309
  if (!wrapper || !wrapper->statement || wrapper->statement->HasError()) {
233
310
  return DuckDBError;
234
311
  }
312
+
235
313
  auto result = wrapper->statement->Execute(wrapper->values, false);
236
314
  return duckdb_translate_result(std::move(result), out_result);
237
315
  }
@@ -182,9 +182,11 @@ duckdb_state deprecated_duckdb_translate_column(MaterializedQueryResult &result,
182
182
  WriteData<date_t>(column, collection, column_ids);
183
183
  break;
184
184
  case LogicalTypeId::TIME:
185
- case LogicalTypeId::TIME_TZ:
186
185
  WriteData<dtime_t>(column, collection, column_ids);
187
186
  break;
187
+ case LogicalTypeId::TIME_TZ:
188
+ WriteData<dtime_tz_t>(column, collection, column_ids);
189
+ break;
188
190
  case LogicalTypeId::TIMESTAMP:
189
191
  case LogicalTypeId::TIMESTAMP_TZ:
190
192
  WriteData<timestamp_t>(column, collection, column_ids);
@@ -0,0 +1,53 @@
1
+ #include "duckdb/main/query_result.hpp"
2
+ #include "duckdb/main/stream_query_result.hpp"
3
+ #include "duckdb/main/chunk_scan_state/query_result.hpp"
4
+
5
+ namespace duckdb {
6
+
7
+ QueryResultChunkScanState::QueryResultChunkScanState(QueryResult &result) : ChunkScanState(), result(result) {
8
+ }
9
+
10
+ QueryResultChunkScanState::~QueryResultChunkScanState() {
11
+ }
12
+
13
+ bool QueryResultChunkScanState::InternalLoad(PreservedError &error) {
14
+ D_ASSERT(!finished);
15
+ if (result.type == QueryResultType::STREAM_RESULT) {
16
+ auto &stream_result = result.Cast<StreamQueryResult>();
17
+ if (!stream_result.IsOpen()) {
18
+ return true;
19
+ }
20
+ }
21
+ return result.TryFetch(current_chunk, error);
22
+ }
23
+
24
+ bool QueryResultChunkScanState::HasError() const {
25
+ return result.HasError();
26
+ }
27
+
28
+ PreservedError &QueryResultChunkScanState::GetError() {
29
+ D_ASSERT(result.HasError());
30
+ return result.GetErrorObject();
31
+ }
32
+
33
+ const vector<LogicalType> &QueryResultChunkScanState::Types() const {
34
+ return result.types;
35
+ }
36
+
37
+ const vector<string> &QueryResultChunkScanState::Names() const {
38
+ return result.names;
39
+ }
40
+
41
+ bool QueryResultChunkScanState::LoadNextChunk(PreservedError &error) {
42
+ if (finished) {
43
+ return !finished;
44
+ }
45
+ auto load_result = InternalLoad(error);
46
+ if (!load_result) {
47
+ finished = true;
48
+ }
49
+ offset = 0;
50
+ return !finished;
51
+ }
52
+
53
+ } // namespace duckdb
@@ -0,0 +1,48 @@
1
+ #include "duckdb/common/types/data_chunk.hpp"
2
+ #include "duckdb/main/chunk_scan_state.hpp"
3
+
4
+ namespace duckdb {
5
+
6
+ ChunkScanState::ChunkScanState() {
7
+ }
8
+
9
+ ChunkScanState::~ChunkScanState() {
10
+ }
11
+
12
+ idx_t ChunkScanState::CurrentOffset() const {
13
+ return offset;
14
+ }
15
+
16
+ void ChunkScanState::IncreaseOffset(idx_t increment, bool unsafe) {
17
+ D_ASSERT(unsafe || increment <= RemainingInChunk());
18
+ offset += increment;
19
+ }
20
+
21
+ bool ChunkScanState::ChunkIsEmpty() const {
22
+ return !current_chunk || current_chunk->size() == 0;
23
+ }
24
+
25
+ bool ChunkScanState::Finished() const {
26
+ return finished;
27
+ }
28
+
29
+ bool ChunkScanState::ScanStarted() const {
30
+ return !ChunkIsEmpty();
31
+ }
32
+
33
+ DataChunk &ChunkScanState::CurrentChunk() {
34
+ // Scan must already be started
35
+ D_ASSERT(current_chunk);
36
+ return *current_chunk;
37
+ }
38
+
39
+ idx_t ChunkScanState::RemainingInChunk() const {
40
+ if (ChunkIsEmpty()) {
41
+ return 0;
42
+ }
43
+ D_ASSERT(current_chunk);
44
+ D_ASSERT(offset <= current_chunk->size());
45
+ return current_chunk->size() - offset;
46
+ }
47
+
48
+ } // namespace duckdb
@@ -304,9 +304,9 @@ static bool IsExplainAnalyze(SQLStatement *statement) {
304
304
  return explain.explain_type == ExplainType::EXPLAIN_ANALYZE;
305
305
  }
306
306
 
307
- shared_ptr<PreparedStatementData> ClientContext::CreatePreparedStatement(ClientContextLock &lock, const string &query,
308
- unique_ptr<SQLStatement> statement,
309
- vector<Value> *values) {
307
+ shared_ptr<PreparedStatementData>
308
+ ClientContext::CreatePreparedStatement(ClientContextLock &lock, const string &query, unique_ptr<SQLStatement> statement,
309
+ optional_ptr<case_insensitive_map_t<Value>> values) {
310
310
  StatementType statement_type = statement->type;
311
311
  auto result = make_shared<PreparedStatementData>(statement_type);
312
312
 
@@ -315,8 +315,9 @@ shared_ptr<PreparedStatementData> ClientContext::CreatePreparedStatement(ClientC
315
315
  profiler.StartPhase("planner");
316
316
  Planner planner(*this);
317
317
  if (values) {
318
- for (auto &value : *values) {
319
- planner.parameter_data.emplace_back(value);
318
+ auto &parameter_values = *values;
319
+ for (auto &value : parameter_values) {
320
+ planner.parameter_data.emplace(value.first, BoundParameterData(value.second));
320
321
  }
321
322
  }
322
323
 
@@ -370,7 +371,7 @@ double ClientContext::GetProgress() {
370
371
 
371
372
  unique_ptr<PendingQueryResult> ClientContext::PendingPreparedStatement(ClientContextLock &lock,
372
373
  shared_ptr<PreparedStatementData> statement_p,
373
- PendingQueryParameters parameters) {
374
+ const PendingQueryParameters &parameters) {
374
375
  D_ASSERT(active_query);
375
376
  auto &statement = *statement_p;
376
377
  if (ValidChecker::IsInvalidated(ActiveTransaction()) && statement.properties.requires_valid_transaction) {
@@ -392,7 +393,14 @@ unique_ptr<PendingQueryResult> ClientContext::PendingPreparedStatement(ClientCon
392
393
  }
393
394
 
394
395
  // bind the bound values before execution
395
- statement.Bind(parameters.parameters ? *parameters.parameters : vector<Value>());
396
+ case_insensitive_map_t<Value> owned_values;
397
+ if (parameters.parameters) {
398
+ auto &params = *parameters.parameters;
399
+ for (auto &val : params) {
400
+ owned_values.emplace(val);
401
+ }
402
+ }
403
+ statement.Bind(std::move(owned_values));
396
404
 
397
405
  active_query->executor = make_uniq<Executor>(*this);
398
406
  auto &executor = *active_query->executor;
@@ -566,7 +574,7 @@ unique_ptr<PreparedStatement> ClientContext::Prepare(const string &query) {
566
574
 
567
575
  unique_ptr<PendingQueryResult> ClientContext::PendingQueryPreparedInternal(ClientContextLock &lock, const string &query,
568
576
  shared_ptr<PreparedStatementData> &prepared,
569
- PendingQueryParameters parameters) {
577
+ const PendingQueryParameters &parameters) {
570
578
  try {
571
579
  InitialCleanup(lock);
572
580
  } catch (const Exception &ex) {
@@ -579,13 +587,13 @@ unique_ptr<PendingQueryResult> ClientContext::PendingQueryPreparedInternal(Clien
579
587
 
580
588
  unique_ptr<PendingQueryResult> ClientContext::PendingQuery(const string &query,
581
589
  shared_ptr<PreparedStatementData> &prepared,
582
- PendingQueryParameters parameters) {
590
+ const PendingQueryParameters &parameters) {
583
591
  auto lock = LockContext();
584
592
  return PendingQueryPreparedInternal(*lock, query, prepared, parameters);
585
593
  }
586
594
 
587
595
  unique_ptr<QueryResult> ClientContext::Execute(const string &query, shared_ptr<PreparedStatementData> &prepared,
588
- PendingQueryParameters parameters) {
596
+ const PendingQueryParameters &parameters) {
589
597
  auto lock = LockContext();
590
598
  auto pending = PendingQueryPreparedInternal(*lock, query, prepared, parameters);
591
599
  if (pending->HasError()) {
@@ -595,7 +603,7 @@ unique_ptr<QueryResult> ClientContext::Execute(const string &query, shared_ptr<P
595
603
  }
596
604
 
597
605
  unique_ptr<QueryResult> ClientContext::Execute(const string &query, shared_ptr<PreparedStatementData> &prepared,
598
- vector<Value> &values, bool allow_stream_result) {
606
+ case_insensitive_map_t<Value> &values, bool allow_stream_result) {
599
607
  PendingQueryParameters parameters;
600
608
  parameters.parameters = &values;
601
609
  parameters.allow_stream_result = allow_stream_result;
@@ -604,10 +612,11 @@ unique_ptr<QueryResult> ClientContext::Execute(const string &query, shared_ptr<P
604
612
 
605
613
  unique_ptr<PendingQueryResult> ClientContext::PendingStatementInternal(ClientContextLock &lock, const string &query,
606
614
  unique_ptr<SQLStatement> statement,
607
- PendingQueryParameters parameters) {
615
+ const PendingQueryParameters &parameters) {
608
616
  // prepare the query for execution
609
617
  auto prepared = CreatePreparedStatement(lock, query, std::move(statement), parameters.parameters);
610
- if (prepared->properties.parameter_count > 0 && !parameters.parameters) {
618
+ idx_t parameter_count = !parameters.parameters ? 0 : parameters.parameters->size();
619
+ if (prepared->properties.parameter_count > 0 && parameter_count == 0) {
611
620
  string error_message = StringUtil::Format("Expected %lld parameters, but none were supplied",
612
621
  prepared->properties.parameter_count);
613
622
  return make_uniq<PendingQueryResult>(PreservedError(error_message));
@@ -640,7 +649,7 @@ bool ClientContext::IsActiveResult(ClientContextLock &lock, BaseQueryResult *res
640
649
 
641
650
  unique_ptr<PendingQueryResult> ClientContext::PendingStatementOrPreparedStatementInternal(
642
651
  ClientContextLock &lock, const string &query, unique_ptr<SQLStatement> statement,
643
- shared_ptr<PreparedStatementData> &prepared, PendingQueryParameters parameters) {
652
+ shared_ptr<PreparedStatementData> &prepared, const PendingQueryParameters &parameters) {
644
653
  // check if we are on AutoCommit. In this case we should start a transaction.
645
654
  if (statement && config.AnyVerification()) {
646
655
  // query verification is enabled
@@ -697,7 +706,7 @@ unique_ptr<PendingQueryResult> ClientContext::PendingStatementOrPreparedStatemen
697
706
 
698
707
  unique_ptr<PendingQueryResult> ClientContext::PendingStatementOrPreparedStatement(
699
708
  ClientContextLock &lock, const string &query, unique_ptr<SQLStatement> statement,
700
- shared_ptr<PreparedStatementData> &prepared, PendingQueryParameters parameters) {
709
+ shared_ptr<PreparedStatementData> &prepared, const PendingQueryParameters &parameters) {
701
710
  unique_ptr<PendingQueryResult> result;
702
711
 
703
712
  try {
@@ -722,7 +731,7 @@ unique_ptr<PendingQueryResult> ClientContext::PendingStatementOrPreparedStatemen
722
731
  if (statement) {
723
732
  result = PendingStatementInternal(lock, query, std::move(statement), parameters);
724
733
  } else {
725
- if (prepared->RequireRebind(*this, *parameters.parameters)) {
734
+ if (prepared->RequireRebind(*this, parameters.parameters)) {
726
735
  // catalog was modified: rebind the statement before execution
727
736
  auto new_prepared =
728
737
  CreatePreparedStatement(lock, query, prepared->unbound_statement->Copy(), parameters.parameters);
@@ -884,7 +893,8 @@ unique_ptr<PendingQueryResult> ClientContext::PendingQuery(unique_ptr<SQLStateme
884
893
 
885
894
  unique_ptr<PendingQueryResult> ClientContext::PendingQueryInternal(ClientContextLock &lock,
886
895
  unique_ptr<SQLStatement> statement,
887
- PendingQueryParameters parameters, bool verify) {
896
+ const PendingQueryParameters &parameters,
897
+ bool verify) {
888
898
  auto query = statement->query;
889
899
  shared_ptr<PreparedStatementData> prepared;
890
900
  if (verify) {
@@ -1155,8 +1165,21 @@ ParserOptions ClientContext::GetParserOptions() const {
1155
1165
  }
1156
1166
 
1157
1167
  ClientProperties ClientContext::GetClientProperties() const {
1158
- auto client_context = ClientConfig::GetConfig(*this);
1159
- return {client_context.ExtractTimezone(), db->config.options.arrow_offset_size};
1168
+ string timezone = "UTC";
1169
+ Value result;
1170
+ // 1) Check Set Variable
1171
+ auto &client_config = ClientConfig::GetConfig(*this);
1172
+ auto tz_config = client_config.set_variables.find("timezone");
1173
+ if (tz_config == client_config.set_variables.end()) {
1174
+ // 2) Check for Default Value
1175
+ auto default_value = db->config.extension_parameters.find("timezone");
1176
+ if (default_value != db->config.extension_parameters.end()) {
1177
+ timezone = default_value->second.default_value.GetValue<string>();
1178
+ }
1179
+ } else {
1180
+ timezone = tz_config->second.GetValue<string>();
1181
+ }
1182
+ return {timezone, db->config.options.arrow_offset_size};
1160
1183
  }
1161
1184
 
1162
1185
  bool ClientContext::ExecutionIsFinished() {
@@ -7,6 +7,20 @@
7
7
 
8
8
  namespace duckdb {
9
9
 
10
+ static void ThrowIfExceptionIsInternal(StatementVerifier &verifier) {
11
+ if (!verifier.materialized_result) {
12
+ return;
13
+ }
14
+ auto &result = *verifier.materialized_result;
15
+ if (!result.HasError()) {
16
+ return;
17
+ }
18
+ auto &error = result.GetErrorObject();
19
+ if (error.Type() == ExceptionType::INTERNAL) {
20
+ error.Throw();
21
+ }
22
+ }
23
+
10
24
  PreservedError ClientContext::VerifyQuery(ClientContextLock &lock, const string &query,
11
25
  unique_ptr<SQLStatement> statement) {
12
26
  D_ASSERT(statement->type == StatementType::SELECT_STATEMENT);
@@ -81,6 +95,9 @@ PreservedError ClientContext::VerifyQuery(ClientContextLock &lock, const string
81
95
  if (!failed) {
82
96
  // PreparedStatementVerifier fails if it runs into a ParameterNotAllowedException, which is OK
83
97
  statement_verifiers.push_back(std::move(prepared_statement_verifier));
98
+ } else {
99
+ // If it does fail, let's make sure it's not an internal exception
100
+ ThrowIfExceptionIsInternal(*prepared_statement_verifier);
84
101
  }
85
102
  } else {
86
103
  if (ValidChecker::IsInvalidated(*db)) {
@@ -59,10 +59,12 @@ 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),
@@ -73,7 +75,6 @@ static ConfigurationOption internal_options[] = {DUCKDB_GLOBAL(AccessModeSetting
73
75
  DUCKDB_LOCAL(EnableProfilingSetting),
74
76
  DUCKDB_LOCAL(EnableProgressBarSetting),
75
77
  DUCKDB_LOCAL(EnableProgressBarPrintSetting),
76
- DUCKDB_GLOBAL(ExperimentalParallelCSVSetting),
77
78
  DUCKDB_LOCAL(ExplainOutputSetting),
78
79
  DUCKDB_GLOBAL(ExtensionDirectorySetting),
79
80
  DUCKDB_GLOBAL(ExternalThreadsSetting),
@@ -92,6 +93,7 @@ static ConfigurationOption internal_options[] = {DUCKDB_GLOBAL(AccessModeSetting
92
93
  DUCKDB_LOCAL(OrderedAggregateThreshold),
93
94
  DUCKDB_GLOBAL(PasswordSetting),
94
95
  DUCKDB_LOCAL(PerfectHashThresholdSetting),
96
+ DUCKDB_LOCAL(PivotFilterThreshold),
95
97
  DUCKDB_LOCAL(PivotLimitSetting),
96
98
  DUCKDB_LOCAL(PreserveIdentifierCase),
97
99
  DUCKDB_GLOBAL(PreserveInsertionOrder),
@@ -109,6 +111,7 @@ static ConfigurationOption internal_options[] = {DUCKDB_GLOBAL(AccessModeSetting
109
111
  DUCKDB_GLOBAL_ALIAS("user", UsernameSetting),
110
112
  DUCKDB_GLOBAL_ALIAS("wal_autocheckpoint", CheckpointThresholdSetting),
111
113
  DUCKDB_GLOBAL_ALIAS("worker_threads", ThreadsSetting),
114
+ DUCKDB_GLOBAL(FlushAllocatorSetting),
112
115
  FINAL_SETTING};
113
116
 
114
117
  vector<ConfigurationOption> DBConfig::GetOptions() {
@@ -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
  }