duckdb 0.10.1-dev9.0 → 0.10.2-dev0.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 (702) hide show
  1. package/.github/workflows/NodeJS.yml +9 -16
  2. package/binding.gyp +4 -1
  3. package/package.json +1 -1
  4. package/src/database.cpp +1 -0
  5. package/src/duckdb/extension/icu/icu-strptime.cpp +46 -4
  6. package/src/duckdb/extension/icu/icu-table-range.cpp +5 -0
  7. package/src/duckdb/extension/icu/icu-timezone.cpp +28 -4
  8. package/src/duckdb/extension/json/buffered_json_reader.cpp +6 -5
  9. package/src/duckdb/extension/json/include/buffered_json_reader.hpp +3 -3
  10. package/src/duckdb/extension/json/include/json_transform.hpp +2 -0
  11. package/src/duckdb/extension/json/json_functions/json_create.cpp +6 -0
  12. package/src/duckdb/extension/json/json_functions/json_transform.cpp +8 -9
  13. package/src/duckdb/extension/json/json_functions.cpp +1 -2
  14. package/src/duckdb/extension/json/json_scan.cpp +1 -0
  15. package/src/duckdb/extension/parquet/column_reader.cpp +17 -1
  16. package/src/duckdb/extension/parquet/column_writer.cpp +151 -20
  17. package/src/duckdb/extension/parquet/include/column_writer.hpp +3 -4
  18. package/src/duckdb/extension/parquet/parquet_extension.cpp +14 -9
  19. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +10 -0
  20. package/src/duckdb/extension/parquet/parquet_writer.cpp +4 -0
  21. package/src/duckdb/src/catalog/catalog.cpp +94 -10
  22. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +9 -5
  23. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +1 -0
  24. package/src/duckdb/src/catalog/catalog_entry/ub_duckdb_catalog_entries.cpp +16 -0
  25. package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +28 -0
  26. package/src/duckdb/src/catalog/default/default_functions.cpp +3 -0
  27. package/src/duckdb/src/catalog/default/default_views.cpp +3 -3
  28. package/src/duckdb/src/catalog/default/ub_duckdb_catalog_default_entries.cpp +5 -0
  29. package/src/duckdb/src/catalog/dependency_catalog_set.cpp +1 -3
  30. package/src/duckdb/src/catalog/dependency_manager.cpp +2 -5
  31. package/src/duckdb/src/catalog/ub_duckdb_catalog.cpp +10 -0
  32. package/src/duckdb/src/common/adbc/adbc.cpp +1 -1
  33. package/src/duckdb/src/common/adbc/driver_manager.cpp +2 -1
  34. package/src/duckdb/src/common/adbc/nanoarrow/ub_duckdb_adbc_nanoarrow.cpp +5 -0
  35. package/src/duckdb/src/common/adbc/ub_duckdb_adbc.cpp +3 -0
  36. package/src/duckdb/src/common/allocator.cpp +34 -8
  37. package/src/duckdb/src/common/arrow/appender/fixed_size_list_data.cpp +39 -0
  38. package/src/duckdb/src/common/arrow/appender/ub_duckdb_common_arrow_appender.cpp +6 -0
  39. package/src/duckdb/src/common/arrow/appender/union_data.cpp +2 -1
  40. package/src/duckdb/src/common/arrow/arrow_appender.cpp +5 -5
  41. package/src/duckdb/src/common/arrow/arrow_converter.cpp +17 -0
  42. package/src/duckdb/src/common/arrow/ub_duckdb_common_arrow.cpp +4 -0
  43. package/src/duckdb/src/common/compressed_file_system.cpp +1 -0
  44. package/src/duckdb/src/common/crypto/ub_duckdb_common_crypto.cpp +2 -0
  45. package/src/duckdb/src/common/enum_util.cpp +153 -13
  46. package/src/duckdb/src/common/enums/logical_operator_type.cpp +0 -2
  47. package/src/duckdb/src/common/enums/physical_operator_type.cpp +2 -2
  48. package/src/duckdb/src/common/enums/ub_duckdb_common_enums.cpp +12 -0
  49. package/src/duckdb/src/common/exception/conversion_exception.cpp +23 -0
  50. package/src/duckdb/src/common/exception.cpp +7 -14
  51. package/src/duckdb/src/common/extra_type_info.cpp +6 -5
  52. package/src/duckdb/src/common/gzip_file_system.cpp +5 -4
  53. package/src/duckdb/src/common/local_file_system.cpp +85 -10
  54. package/src/duckdb/src/common/operator/cast_operators.cpp +413 -305
  55. package/src/duckdb/src/common/operator/ub_duckdb_common_operators.cpp +4 -0
  56. package/src/duckdb/src/common/progress_bar/ub_duckdb_progress_bar.cpp +3 -0
  57. package/src/duckdb/src/common/re2_regex.cpp +2 -1
  58. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +2 -2
  59. package/src/duckdb/src/common/row_operations/row_matcher.cpp +1 -0
  60. package/src/duckdb/src/common/row_operations/row_scatter.cpp +2 -2
  61. package/src/duckdb/src/common/row_operations/ub_duckdb_row_operations.cpp +9 -0
  62. package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
  63. package/src/duckdb/src/common/serializer/ub_duckdb_common_serializer.cpp +7 -0
  64. package/src/duckdb/src/common/sort/partition_state.cpp +2 -3
  65. package/src/duckdb/src/common/sort/ub_duckdb_sort.cpp +7 -0
  66. package/src/duckdb/src/common/string_util.cpp +3 -3
  67. package/src/duckdb/src/common/types/bit.cpp +7 -6
  68. package/src/duckdb/src/common/types/blob.cpp +20 -9
  69. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +8 -6
  70. package/src/duckdb/src/common/types/column/column_data_collection.cpp +11 -1
  71. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +5 -0
  72. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +1 -1
  73. package/src/duckdb/src/common/types/column/ub_duckdb_common_types_column.cpp +6 -0
  74. package/src/duckdb/src/common/types/data_chunk.cpp +1 -1
  75. package/src/duckdb/src/common/types/date.cpp +1 -1
  76. package/src/duckdb/src/common/types/hugeint.cpp +3 -2
  77. package/src/duckdb/src/common/types/interval.cpp +1 -1
  78. package/src/duckdb/src/common/types/list_segment.cpp +2 -1
  79. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +3 -9
  80. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +7 -7
  81. package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +10 -27
  82. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +168 -88
  83. package/src/duckdb/src/common/types/row/ub_duckdb_common_types_row.cpp +11 -0
  84. package/src/duckdb/src/common/types/selection_vector.cpp +1 -1
  85. package/src/duckdb/src/common/types/string_heap.cpp +5 -1
  86. package/src/duckdb/src/common/types/string_type.cpp +18 -4
  87. package/src/duckdb/src/common/types/time.cpp +4 -2
  88. package/src/duckdb/src/common/types/timestamp.cpp +32 -6
  89. package/src/duckdb/src/common/types/ub_duckdb_common_types.cpp +28 -0
  90. package/src/duckdb/src/common/types/uhugeint.cpp +3 -2
  91. package/src/duckdb/src/common/types/uuid.cpp +11 -0
  92. package/src/duckdb/src/common/types/validity_mask.cpp +4 -3
  93. package/src/duckdb/src/common/types/value.cpp +17 -6
  94. package/src/duckdb/src/common/types/vector.cpp +243 -68
  95. package/src/duckdb/src/common/types.cpp +7 -5
  96. package/src/duckdb/src/common/ub_duckdb_common.cpp +34 -0
  97. package/src/duckdb/src/common/value_operations/ub_duckdb_value_operations.cpp +2 -0
  98. package/src/duckdb/src/common/vector_operations/generators.cpp +2 -1
  99. package/src/duckdb/src/common/vector_operations/vector_cast.cpp +4 -4
  100. package/src/duckdb/src/common/vector_operations/vector_copy.cpp +2 -2
  101. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +17 -6
  102. package/src/duckdb/src/core_functions/aggregate/algebraic/ub_duckdb_aggr_algebraic.cpp +5 -0
  103. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +30 -6
  104. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +1 -1
  105. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +12 -5
  106. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +2 -2
  107. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +2 -1
  108. package/src/duckdb/src/core_functions/aggregate/distributive/ub_duckdb_aggr_distributive.cpp +13 -0
  109. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +2 -1
  110. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +2 -9
  111. package/src/duckdb/src/core_functions/aggregate/holistic/ub_duckdb_aggr_holistic.cpp +5 -0
  112. package/src/duckdb/src/core_functions/aggregate/nested/ub_duckdb_aggr_nested.cpp +3 -0
  113. package/src/duckdb/src/core_functions/aggregate/regression/ub_duckdb_aggr_regr.cpp +8 -0
  114. package/src/duckdb/src/core_functions/function_list.cpp +1 -0
  115. package/src/duckdb/src/core_functions/scalar/bit/bitstring.cpp +2 -2
  116. package/src/duckdb/src/core_functions/scalar/bit/ub_duckdb_func_bit.cpp +2 -0
  117. package/src/duckdb/src/core_functions/scalar/blob/ub_duckdb_func_blob.cpp +3 -0
  118. package/src/duckdb/src/core_functions/scalar/date/date_diff.cpp +8 -0
  119. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +22 -3
  120. package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +29 -7
  121. package/src/duckdb/src/core_functions/scalar/date/to_interval.cpp +3 -1
  122. package/src/duckdb/src/core_functions/scalar/date/ub_duckdb_func_date.cpp +12 -0
  123. package/src/duckdb/src/core_functions/scalar/debug/ub_duckdb_func_debug.cpp +2 -0
  124. package/src/duckdb/src/core_functions/scalar/enum/ub_duckdb_func_enum.cpp +2 -0
  125. package/src/duckdb/src/core_functions/scalar/generic/ub_duckdb_func_generic.cpp +9 -0
  126. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +12 -8
  127. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +2 -1
  128. package/src/duckdb/src/core_functions/scalar/list/list_reduce.cpp +6 -5
  129. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +5 -3
  130. package/src/duckdb/src/core_functions/scalar/list/list_value.cpp +28 -12
  131. package/src/duckdb/src/core_functions/scalar/list/ub_duckdb_func_list.cpp +11 -0
  132. package/src/duckdb/src/core_functions/scalar/map/map.cpp +129 -160
  133. package/src/duckdb/src/core_functions/scalar/map/ub_duckdb_func_map_nested.cpp +8 -0
  134. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +19 -16
  135. package/src/duckdb/src/core_functions/scalar/math/ub_duckdb_func_math.cpp +1 -0
  136. package/src/duckdb/src/core_functions/scalar/operators/bitwise.cpp +4 -4
  137. package/src/duckdb/src/core_functions/scalar/operators/ub_duckdb_func_ops.cpp +1 -0
  138. package/src/duckdb/src/core_functions/scalar/random/ub_duckdb_func_random.cpp +3 -0
  139. package/src/duckdb/src/core_functions/scalar/string/hex.cpp +2 -1
  140. package/src/duckdb/src/core_functions/scalar/string/pad.cpp +2 -2
  141. package/src/duckdb/src/core_functions/scalar/string/repeat.cpp +1 -1
  142. package/src/duckdb/src/core_functions/scalar/string/replace.cpp +1 -1
  143. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +2 -1
  144. package/src/duckdb/src/core_functions/scalar/string/translate.cpp +1 -1
  145. package/src/duckdb/src/core_functions/scalar/string/ub_duckdb_func_string.cpp +26 -0
  146. package/src/duckdb/src/core_functions/scalar/struct/ub_duckdb_func_struct.cpp +3 -0
  147. package/src/duckdb/src/core_functions/scalar/union/ub_duckdb_func_union.cpp +4 -0
  148. package/src/duckdb/src/core_functions/ub_duckdb_core_functions.cpp +3 -0
  149. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  150. package/src/duckdb/src/execution/aggregate_hashtable.cpp +1 -1
  151. package/src/duckdb/src/execution/column_binding_resolver.cpp +7 -1
  152. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +2 -2
  153. package/src/duckdb/src/execution/expression_executor/execute_cast.cpp +2 -0
  154. package/src/duckdb/src/execution/expression_executor/execute_function.cpp +2 -2
  155. package/src/duckdb/src/execution/expression_executor/execute_operator.cpp +1 -1
  156. package/src/duckdb/src/execution/expression_executor/ub_duckdb_expression_executor.cpp +11 -0
  157. package/src/duckdb/src/execution/expression_executor.cpp +5 -2
  158. package/src/duckdb/src/execution/index/art/art.cpp +12 -6
  159. package/src/duckdb/src/execution/index/art/art_key.cpp +3 -3
  160. package/src/duckdb/src/execution/index/art/leaf.cpp +2 -2
  161. package/src/duckdb/src/execution/index/art/node16.cpp +2 -2
  162. package/src/duckdb/src/execution/index/art/node256.cpp +3 -3
  163. package/src/duckdb/src/execution/index/art/node48.cpp +5 -5
  164. package/src/duckdb/src/execution/index/art/prefix.cpp +1 -1
  165. package/src/duckdb/src/execution/index/art/ub_duckdb_art_index_execution.cpp +12 -0
  166. package/src/duckdb/src/execution/index/art/ub_duckdb_execution_index_art.cpp +11 -0
  167. package/src/duckdb/src/execution/index/fixed_size_buffer.cpp +6 -5
  168. package/src/duckdb/src/execution/index/ub_duckdb_execution_index.cpp +3 -0
  169. package/src/duckdb/src/execution/nested_loop_join/ub_duckdb_nested_loop_join.cpp +3 -0
  170. package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +1 -1
  171. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +3 -4
  172. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +0 -1
  173. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +3 -4
  174. package/src/duckdb/src/execution/operator/aggregate/ub_duckdb_operator_aggregate.cpp +9 -0
  175. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer.cpp +1 -1
  176. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.cpp +8 -3
  177. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_file_handle.cpp +1 -1
  178. package/src/duckdb/src/execution/operator/csv_scanner/scanner/base_scanner.cpp +5 -5
  179. package/src/duckdb/src/execution/operator/csv_scanner/scanner/column_count_scanner.cpp +2 -3
  180. package/src/duckdb/src/execution/operator/csv_scanner/scanner/scanner_boundary.cpp +5 -1
  181. package/src/duckdb/src/execution/operator/csv_scanner/scanner/skip_scanner.cpp +2 -2
  182. package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +151 -79
  183. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/csv_sniffer.cpp +11 -6
  184. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +27 -6
  185. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +71 -18
  186. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +22 -11
  187. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_refinement.cpp +6 -4
  188. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_replacement.cpp +5 -3
  189. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/ub_duckdb_operator_csv_sniffer.cpp +7 -0
  190. package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine.cpp +3 -3
  191. package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine_cache.cpp +30 -5
  192. package/src/duckdb/src/execution/operator/csv_scanner/table_function/csv_file_scanner.cpp +6 -2
  193. package/src/duckdb/src/execution/operator/csv_scanner/table_function/global_csv_state.cpp +47 -46
  194. package/src/duckdb/src/execution/operator/csv_scanner/ub_duckdb_operator_csv_scanner.cpp +10 -0
  195. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +102 -54
  196. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +8 -1
  197. package/src/duckdb/src/execution/operator/filter/ub_duckdb_operator_filter.cpp +2 -0
  198. package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +54 -36
  199. package/src/duckdb/src/execution/operator/helper/physical_limit_percent.cpp +56 -32
  200. package/src/duckdb/src/execution/operator/helper/physical_streaming_limit.cpp +9 -13
  201. package/src/duckdb/src/execution/operator/helper/physical_transaction.cpp +12 -0
  202. package/src/duckdb/src/execution/operator/helper/physical_verify_vector.cpp +221 -0
  203. package/src/duckdb/src/execution/operator/helper/ub_duckdb_operator_helper.cpp +18 -0
  204. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +1 -0
  205. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +23 -8
  206. package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +8 -3
  207. package/src/duckdb/src/execution/operator/join/ub_duckdb_operator_join.cpp +16 -0
  208. package/src/duckdb/src/execution/operator/order/physical_order.cpp +2 -3
  209. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +2 -7
  210. package/src/duckdb/src/execution/operator/order/ub_duckdb_operator_order.cpp +3 -0
  211. package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +451 -55
  212. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +312 -150
  213. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +200 -75
  214. package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +1 -0
  215. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +6 -5
  216. package/src/duckdb/src/execution/operator/persistent/ub_duckdb_operator_persistent.cpp +10 -0
  217. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +3 -2
  218. package/src/duckdb/src/execution/operator/projection/ub_duckdb_operator_projection.cpp +5 -0
  219. package/src/duckdb/src/execution/operator/scan/ub_duckdb_operator_scan.cpp +7 -0
  220. package/src/duckdb/src/execution/operator/schema/ub_duckdb_operator_schema.cpp +12 -0
  221. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +25 -0
  222. package/src/duckdb/src/execution/operator/set/ub_duckdb_operator_set.cpp +4 -0
  223. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +4 -4
  224. package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +2 -2
  225. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +2 -2
  226. package/src/duckdb/src/execution/physical_plan/plan_copy_to_file.cpp +7 -17
  227. package/src/duckdb/src/execution/physical_plan/plan_distinct.cpp +10 -0
  228. package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +7 -0
  229. package/src/duckdb/src/execution/physical_plan/plan_limit.cpp +45 -13
  230. package/src/duckdb/src/execution/physical_plan/ub_duckdb_physical_plan.cpp +44 -0
  231. package/src/duckdb/src/execution/physical_plan_generator.cpp +5 -3
  232. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +13 -12
  233. package/src/duckdb/src/execution/ub_duckdb_execution.cpp +15 -0
  234. package/src/duckdb/src/execution/window_executor.cpp +71 -61
  235. package/src/duckdb/src/execution/window_segment_tree.cpp +6 -6
  236. package/src/duckdb/src/extension_forward_decl/icu.cpp +59 -0
  237. package/src/duckdb/src/function/aggregate/algebraic/ub_duckdb_aggr_algebraic.cpp +5 -0
  238. package/src/duckdb/src/function/aggregate/distributive/first.cpp +2 -2
  239. package/src/duckdb/src/function/aggregate/distributive/ub_duckdb_aggr_distr.cpp +3 -0
  240. package/src/duckdb/src/function/aggregate/holistic/ub_duckdb_aggr_holistic.cpp +5 -0
  241. package/src/duckdb/src/function/aggregate/nested/ub_duckdb_aggr_nested.cpp +3 -0
  242. package/src/duckdb/src/function/aggregate/regression/ub_duckdb_aggr_regr.cpp +8 -0
  243. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +3 -2
  244. package/src/duckdb/src/function/aggregate/ub_duckdb_func_aggr.cpp +3 -0
  245. package/src/duckdb/src/function/cast/array_casts.cpp +2 -4
  246. package/src/duckdb/src/function/cast/bit_cast.cpp +13 -13
  247. package/src/duckdb/src/function/cast/cast_function_set.cpp +2 -0
  248. package/src/duckdb/src/function/cast/decimal_cast.cpp +38 -44
  249. package/src/duckdb/src/function/cast/default_casts.cpp +5 -2
  250. package/src/duckdb/src/function/cast/enum_casts.cpp +5 -5
  251. package/src/duckdb/src/function/cast/list_casts.cpp +24 -14
  252. package/src/duckdb/src/function/cast/string_cast.cpp +48 -30
  253. package/src/duckdb/src/function/cast/struct_cast.cpp +2 -2
  254. package/src/duckdb/src/function/cast/time_casts.cpp +12 -0
  255. package/src/duckdb/src/function/cast/ub_duckdb_func_cast.cpp +17 -0
  256. package/src/duckdb/src/function/cast/union/ub_duckdb_union_cast.cpp +2 -0
  257. package/src/duckdb/src/function/cast/union_casts.cpp +13 -15
  258. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +1 -1
  259. package/src/duckdb/src/function/cast_rules.cpp +2 -1
  260. package/src/duckdb/src/function/pragma/ub_duckdb_func_pragma.cpp +3 -0
  261. package/src/duckdb/src/function/scalar/bit/ub_duckdb_func_bit.cpp +2 -0
  262. package/src/duckdb/src/function/scalar/blob/ub_duckdb_func_blob.cpp +3 -0
  263. package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +7 -6
  264. package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +3 -3
  265. package/src/duckdb/src/function/scalar/compressed_materialization/ub_duckdb_func_compressed_materialization.cpp +3 -0
  266. package/src/duckdb/src/function/scalar/date/ub_duckdb_func_date.cpp +12 -0
  267. package/src/duckdb/src/function/scalar/enum/ub_duckdb_func_enum.cpp +2 -0
  268. package/src/duckdb/src/function/scalar/generic/ub_duckdb_func_generic.cpp +8 -0
  269. package/src/duckdb/src/function/scalar/generic/ub_duckdb_func_generic_main.cpp +2 -0
  270. package/src/duckdb/src/function/scalar/list/list_resize.cpp +3 -1
  271. package/src/duckdb/src/function/scalar/list/list_zip.cpp +3 -4
  272. package/src/duckdb/src/function/scalar/list/ub_duckdb_func_list.cpp +11 -0
  273. package/src/duckdb/src/function/scalar/list/ub_duckdb_func_list_nested.cpp +5 -0
  274. package/src/duckdb/src/function/scalar/map/ub_duckdb_func_map_nested.cpp +7 -0
  275. package/src/duckdb/src/function/scalar/math/ub_duckdb_func_math.cpp +4 -0
  276. package/src/duckdb/src/function/scalar/nested_functions.cpp +7 -3
  277. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +1 -1
  278. package/src/duckdb/src/function/scalar/operators/multiply.cpp +4 -2
  279. package/src/duckdb/src/function/scalar/operators/subtract.cpp +9 -3
  280. package/src/duckdb/src/function/scalar/operators/ub_duckdb_func_ops.cpp +6 -0
  281. package/src/duckdb/src/function/scalar/operators/ub_duckdb_func_ops_main.cpp +5 -0
  282. package/src/duckdb/src/function/scalar/sequence/ub_duckdb_func_seq.cpp +2 -0
  283. package/src/duckdb/src/function/scalar/strftime_format.cpp +21 -20
  284. package/src/duckdb/src/function/scalar/string/like.cpp +14 -3
  285. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -2
  286. package/src/duckdb/src/function/scalar/string/regexp/ub_duckdb_func_string_regexp.cpp +3 -0
  287. package/src/duckdb/src/function/scalar/string/regexp.cpp +6 -4
  288. package/src/duckdb/src/function/scalar/string/suffix.cpp +1 -1
  289. package/src/duckdb/src/function/scalar/string/ub_duckdb_func_string.cpp +31 -0
  290. package/src/duckdb/src/function/scalar/string/ub_duckdb_func_string_main.cpp +12 -0
  291. package/src/duckdb/src/function/scalar/struct/ub_duckdb_func_struct.cpp +4 -0
  292. package/src/duckdb/src/function/scalar/struct/ub_duckdb_func_struct_main.cpp +2 -0
  293. package/src/duckdb/src/function/scalar/system/ub_duckdb_func_system.cpp +2 -0
  294. package/src/duckdb/src/function/scalar/ub_duckdb_func_scalar.cpp +9 -0
  295. package/src/duckdb/src/function/scalar/union/ub_duckdb_func_union.cpp +4 -0
  296. package/src/duckdb/src/function/table/arrow/arrow_array_scan_state.cpp +28 -2
  297. package/src/duckdb/src/function/table/arrow/ub_duckdb_arrow_conversion.cpp +2 -0
  298. package/src/duckdb/src/function/table/arrow.cpp +23 -6
  299. package/src/duckdb/src/function/table/arrow_conversion.cpp +75 -33
  300. package/src/duckdb/src/function/table/copy_csv.cpp +8 -3
  301. package/src/duckdb/src/function/table/range.cpp +5 -0
  302. package/src/duckdb/src/function/table/read_csv.cpp +9 -8
  303. package/src/duckdb/src/function/table/read_file.cpp +1 -1
  304. package/src/duckdb/src/function/table/sniff_csv.cpp +5 -5
  305. package/src/duckdb/src/function/table/system/duckdb_columns.cpp +6 -2
  306. package/src/duckdb/src/function/table/system/duckdb_secrets.cpp +5 -1
  307. package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +3 -1
  308. package/src/duckdb/src/function/table/system/duckdb_settings.cpp +13 -1
  309. package/src/duckdb/src/function/table/system/test_all_types.cpp +64 -0
  310. package/src/duckdb/src/function/table/system/ub_duckdb_table_func_system.cpp +23 -0
  311. package/src/duckdb/src/function/table/ub_duckdb_func_table.cpp +16 -0
  312. package/src/duckdb/src/function/table/version/pragma_version.cpp +11 -2
  313. package/src/duckdb/src/function/table/version/ub_duckdb_func_table_version.cpp +2 -0
  314. package/src/duckdb/src/function/ub_duckdb_function.cpp +14 -0
  315. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +11 -1
  316. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/view_catalog_entry.hpp +2 -0
  317. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +1 -1
  318. package/src/duckdb/src/include/duckdb/common/allocator.hpp +8 -11
  319. package/src/duckdb/src/include/duckdb/common/arrow/appender/enum_data.hpp +2 -2
  320. package/src/duckdb/src/include/duckdb/common/arrow/appender/fixed_size_list_data.hpp +14 -0
  321. package/src/duckdb/src/include/duckdb/common/arrow/appender/list.hpp +1 -0
  322. package/src/duckdb/src/include/duckdb/common/arrow/appender/list_data.hpp +1 -1
  323. package/src/duckdb/src/include/duckdb/common/arrow/appender/varchar_data.hpp +2 -2
  324. package/src/duckdb/src/include/duckdb/common/bitpacking.hpp +2 -2
  325. package/src/duckdb/src/include/duckdb/common/bswap.hpp +6 -2
  326. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +32 -0
  327. package/src/duckdb/src/include/duckdb/common/enums/catalog_lookup_behavior.hpp +21 -0
  328. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +0 -1
  329. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +1 -1
  330. package/src/duckdb/src/include/duckdb/common/enums/prepared_statement_mode.hpp +20 -0
  331. package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +2 -0
  332. package/src/duckdb/src/include/duckdb/common/exception/conversion_exception.hpp +6 -0
  333. package/src/duckdb/src/include/duckdb/common/exception/parser_exception.hpp +4 -0
  334. package/src/duckdb/src/include/duckdb/common/exception.hpp +2 -0
  335. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +3 -3
  336. package/src/duckdb/src/include/duckdb/common/file_opener.hpp +6 -5
  337. package/src/duckdb/src/include/duckdb/common/file_system.hpp +4 -2
  338. package/src/duckdb/src/include/duckdb/common/helper.hpp +7 -0
  339. package/src/duckdb/src/include/duckdb/common/limits.hpp +2 -2
  340. package/src/duckdb/src/include/duckdb/common/local_file_system.hpp +3 -0
  341. package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +64 -0
  342. package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +34 -33
  343. package/src/duckdb/src/include/duckdb/common/operator/decimal_cast_operators.hpp +150 -124
  344. package/src/duckdb/src/include/duckdb/common/operator/integer_cast_operator.hpp +5 -5
  345. package/src/duckdb/src/include/duckdb/common/radix.hpp +1 -1
  346. package/src/duckdb/src/include/duckdb/common/serializer/deserializer.hpp +1 -1
  347. package/src/duckdb/src/include/duckdb/common/sort/duckdb_pdqsort.hpp +4 -4
  348. package/src/duckdb/src/include/duckdb/common/types/bit.hpp +1 -1
  349. package/src/duckdb/src/include/duckdb/common/types/blob.hpp +4 -1
  350. package/src/duckdb/src/include/duckdb/common/types/cast_helpers.hpp +15 -13
  351. package/src/duckdb/src/include/duckdb/common/types/column/column_data_allocator.hpp +5 -0
  352. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection.hpp +2 -0
  353. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection_segment.hpp +3 -0
  354. package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +1 -1
  355. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +1 -1
  356. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +4 -1
  357. package/src/duckdb/src/include/duckdb/common/types/selection_vector.hpp +2 -1
  358. package/src/duckdb/src/include/duckdb/common/types/string_heap.hpp +2 -0
  359. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +11 -4
  360. package/src/duckdb/src/include/duckdb/common/types/time.hpp +1 -1
  361. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +7 -2
  362. package/src/duckdb/src/include/duckdb/common/types/uuid.hpp +3 -0
  363. package/src/duckdb/src/include/duckdb/common/types/value.hpp +7 -0
  364. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +40 -7
  365. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +1 -1
  366. package/src/duckdb/src/include/duckdb/common/types.hpp +1 -1
  367. package/src/duckdb/src/include/duckdb/common/vector_operations/general_cast.hpp +12 -4
  368. package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +6 -6
  369. package/src/duckdb/src/include/duckdb/common/vector_operations/vector_operations.hpp +3 -2
  370. package/src/duckdb/src/include/duckdb/common/windows_undefs.hpp +4 -0
  371. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +1 -1
  372. package/src/duckdb/src/include/duckdb/core_functions/scalar/list_functions.hpp +9 -0
  373. package/src/duckdb/src/include/duckdb/execution/column_binding_resolver.hpp +2 -1
  374. package/src/duckdb/src/include/duckdb/execution/executor.hpp +10 -0
  375. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +1 -1
  376. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/base_scanner.hpp +262 -0
  377. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/column_count_scanner.hpp +70 -0
  378. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_buffer.hpp +103 -0
  379. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_buffer_manager.hpp +74 -0
  380. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_casting.hpp +154 -0
  381. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_error.hpp +130 -0
  382. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_file_handle.hpp +60 -0
  383. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_file_scanner.hpp +70 -0
  384. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_option.hpp +155 -0
  385. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_reader_options.hpp +166 -0
  386. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_sniffer.hpp +191 -0
  387. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state.hpp +30 -0
  388. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state_machine.hpp +99 -0
  389. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state_machine_cache.hpp +91 -0
  390. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/global_csv_state.hpp +80 -0
  391. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/quote_rules.hpp +21 -0
  392. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner_boundary.hpp +93 -0
  393. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/skip_scanner.hpp +60 -0
  394. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/state_machine_options.hpp +35 -0
  395. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/string_value_scanner.hpp +200 -0
  396. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit.hpp +13 -10
  397. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit_percent.hpp +5 -11
  398. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_streaming_limit.hpp +4 -6
  399. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_verify_vector.hpp +51 -0
  400. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_hash_join.hpp +3 -0
  401. package/src/duckdb/src/include/duckdb/execution/operator/persistent/batch_memory_manager.hpp +165 -0
  402. package/src/duckdb/src/include/duckdb/execution/operator/persistent/batch_task_manager.hpp +48 -0
  403. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_copy_to_file.hpp +10 -17
  404. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +4 -0
  405. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +2 -0
  406. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +10 -6
  407. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +0 -2
  408. package/src/duckdb/src/include/duckdb/execution/window_executor.hpp +2 -1
  409. package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +1 -1
  410. package/src/duckdb/src/include/duckdb/function/cast/cast_function_set.hpp +1 -0
  411. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +14 -5
  412. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +27 -43
  413. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +4 -4
  414. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +3 -3
  415. package/src/duckdb/src/include/duckdb/function/function.hpp +1 -1
  416. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +1 -0
  417. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +1 -1
  418. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +1 -1
  419. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +10 -4
  420. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +8 -6
  421. package/src/duckdb/src/include/duckdb/function/table_function.hpp +3 -3
  422. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +3 -0
  423. package/src/duckdb/src/include/duckdb/main/capi/cast/from_decimal.hpp +6 -4
  424. package/src/duckdb/src/include/duckdb/main/capi/cast/to_decimal.hpp +17 -10
  425. package/src/duckdb/src/include/duckdb/main/client_config.hpp +2 -0
  426. package/src/duckdb/src/include/duckdb/main/client_context.hpp +17 -3
  427. package/src/duckdb/src/include/duckdb/main/client_context_file_opener.hpp +2 -2
  428. package/src/duckdb/src/include/duckdb/main/client_context_state.hpp +20 -0
  429. package/src/duckdb/src/include/duckdb/main/client_data.hpp +1 -1
  430. package/src/duckdb/src/include/duckdb/main/database.hpp +3 -2
  431. package/src/duckdb/src/include/duckdb/main/database_manager.hpp +2 -1
  432. package/src/duckdb/src/include/duckdb/main/extension/generated_extension_loader.hpp +1 -1
  433. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +230 -199
  434. package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +18 -0
  435. package/src/duckdb/src/include/duckdb/main/relation/read_csv_relation.hpp +1 -1
  436. package/src/duckdb/src/include/duckdb/main/relation/table_function_relation.hpp +2 -0
  437. package/src/duckdb/src/include/duckdb/main/relation.hpp +1 -1
  438. package/src/duckdb/src/include/duckdb/main/secret/secret_manager.hpp +4 -0
  439. package/src/duckdb/src/include/duckdb/main/settings.hpp +54 -10
  440. package/src/duckdb/src/include/duckdb/optimizer/join_order/relation_manager.hpp +2 -1
  441. package/src/duckdb/src/include/duckdb/optimizer/rule/ordered_aggregate_optimizer.hpp +2 -0
  442. package/src/duckdb/src/include/duckdb/parallel/concurrentqueue.hpp +21 -5
  443. package/src/duckdb/src/include/duckdb/parallel/event.hpp +1 -1
  444. package/src/duckdb/src/include/duckdb/parallel/executor_task.hpp +37 -0
  445. package/src/duckdb/src/include/duckdb/parallel/interrupt.hpp +1 -1
  446. package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +1 -1
  447. package/src/duckdb/src/include/duckdb/parallel/task.hpp +0 -20
  448. package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +4 -2
  449. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +10 -0
  450. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +2 -1
  451. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +0 -24
  452. package/src/duckdb/src/include/duckdb/parser/parsed_data/comment_on_column_info.hpp +46 -0
  453. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +2 -0
  454. package/src/duckdb/src/include/duckdb/parser/parsed_data/extra_drop_info.hpp +1 -1
  455. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +3 -2
  456. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +3 -3
  457. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +3 -3
  458. package/src/duckdb/src/include/duckdb/planner/binder.hpp +11 -4
  459. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +59 -23
  460. package/src/duckdb/src/include/duckdb/planner/expression.hpp +1 -0
  461. package/src/duckdb/src/include/duckdb/planner/expression_binder/column_alias_binder.hpp +2 -2
  462. package/src/duckdb/src/include/duckdb/planner/expression_iterator.hpp +11 -3
  463. package/src/duckdb/src/include/duckdb/planner/extension_callback.hpp +6 -0
  464. package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +0 -1
  465. package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +1 -1
  466. package/src/duckdb/src/include/duckdb/planner/operator/logical_limit.hpp +5 -9
  467. package/src/duckdb/src/include/duckdb/planner/subquery/rewrite_correlated_expressions.hpp +0 -15
  468. package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +5 -0
  469. package/src/duckdb/src/include/duckdb/storage/buffer/buffer_pool.hpp +40 -5
  470. package/src/duckdb/src/include/duckdb/storage/compression/alp/algorithm/alp.hpp +1 -1
  471. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_analyze.hpp +5 -1
  472. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_compress.hpp +4 -4
  473. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_utils.hpp +2 -1
  474. package/src/duckdb/src/include/duckdb/storage/compression/alprd/algorithm/alprd.hpp +10 -8
  475. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_analyze.hpp +5 -1
  476. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_compress.hpp +3 -3
  477. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/bit_reader.hpp +11 -10
  478. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/bit_utils.hpp +3 -1
  479. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/chimp128.hpp +1 -1
  480. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/leading_zero_buffer.hpp +5 -3
  481. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_scan.hpp +2 -1
  482. package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +1 -1
  483. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +3 -1
  484. package/src/duckdb/src/include/duckdb/storage/index.hpp +1 -1
  485. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
  486. package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +3 -0
  487. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +1 -1
  488. package/src/duckdb/src/include/duckdb/storage/table/append_state.hpp +0 -2
  489. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +1 -1
  490. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +5 -3
  491. package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +2 -2
  492. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +5 -0
  493. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +9 -2
  494. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +2 -6
  495. package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +3 -3
  496. package/src/duckdb/src/include/duckdb/storage/temporary_file_manager.hpp +169 -0
  497. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +11 -1
  498. package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +6 -1
  499. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +1 -1
  500. package/src/duckdb/src/include/duckdb.h +119 -67
  501. package/src/duckdb/src/main/appender.cpp +2 -1
  502. package/src/duckdb/src/main/attached_database.cpp +49 -27
  503. package/src/duckdb/src/main/capi/appender-c.cpp +1 -1
  504. package/src/duckdb/src/main/capi/cast/ub_duckdb_main_capi_cast.cpp +3 -0
  505. package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
  506. package/src/duckdb/src/main/capi/data_chunk-c.cpp +9 -1
  507. package/src/duckdb/src/main/capi/datetime-c.cpp +14 -8
  508. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +29 -2
  509. package/src/duckdb/src/main/capi/helper-c.cpp +2 -0
  510. package/src/duckdb/src/main/capi/hugeint-c.cpp +2 -1
  511. package/src/duckdb/src/main/capi/logical_types-c.cpp +35 -1
  512. package/src/duckdb/src/main/capi/result-c.cpp +9 -0
  513. package/src/duckdb/src/main/capi/ub_duckdb_main_capi.cpp +19 -0
  514. package/src/duckdb/src/main/chunk_scan_state/ub_duckdb_main_chunk_scan_state.cpp +2 -0
  515. package/src/duckdb/src/main/client_context.cpp +133 -33
  516. package/src/duckdb/src/main/client_context_file_opener.cpp +8 -7
  517. package/src/duckdb/src/main/config.cpp +2 -0
  518. package/src/duckdb/src/main/connection_manager.cpp +8 -0
  519. package/src/duckdb/src/main/database.cpp +13 -4
  520. package/src/duckdb/src/main/database_manager.cpp +10 -1
  521. package/src/duckdb/src/main/extension/extension_helper.cpp +8 -5
  522. package/src/duckdb/src/main/extension/extension_install.cpp +1 -1
  523. package/src/duckdb/src/main/extension/ub_duckdb_main_extension.cpp +6 -0
  524. package/src/duckdb/src/main/prepared_statement_data.cpp +23 -6
  525. package/src/duckdb/src/main/query_profiler.cpp +9 -7
  526. package/src/duckdb/src/main/relation/read_csv_relation.cpp +17 -12
  527. package/src/duckdb/src/main/relation/ub_duckdb_main_relation.cpp +26 -0
  528. package/src/duckdb/src/main/relation/value_relation.cpp +2 -0
  529. package/src/duckdb/src/main/secret/secret.cpp +1 -1
  530. package/src/duckdb/src/main/secret/secret_manager.cpp +41 -8
  531. package/src/duckdb/src/main/secret/secret_storage.cpp +8 -2
  532. package/src/duckdb/src/main/settings/settings.cpp +42 -2
  533. package/src/duckdb/src/main/settings/ub_duckdb_main_settings.cpp +2 -0
  534. package/src/duckdb/src/main/ub_duckdb_main.cpp +25 -0
  535. package/src/duckdb/src/optimizer/compressed_materialization/ub_duckdb_optimizer_compressed_materialization.cpp +4 -0
  536. package/src/duckdb/src/optimizer/filter_combiner.cpp +20 -14
  537. package/src/duckdb/src/optimizer/in_clause_rewriter.cpp +5 -1
  538. package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +23 -11
  539. package/src/duckdb/src/optimizer/join_order/ub_duckdb_optimizer_join_order.cpp +12 -0
  540. package/src/duckdb/src/optimizer/matcher/ub_duckdb_optimizer_matcher.cpp +2 -0
  541. package/src/duckdb/src/optimizer/pullup/ub_duckdb_optimizer_pullup.cpp +6 -0
  542. package/src/duckdb/src/optimizer/pushdown/pushdown_limit.cpp +1 -1
  543. package/src/duckdb/src/optimizer/pushdown/ub_duckdb_optimizer_pushdown.cpp +12 -0
  544. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +7 -6
  545. package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +8 -6
  546. package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +1 -1
  547. package/src/duckdb/src/optimizer/rule/ub_duckdb_optimizer_rules.cpp +16 -0
  548. package/src/duckdb/src/optimizer/statistics/expression/propagate_cast.cpp +71 -1
  549. package/src/duckdb/src/optimizer/statistics/expression/ub_duckdb_optimizer_statistics_expr.cpp +11 -0
  550. package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +1 -1
  551. package/src/duckdb/src/optimizer/statistics/operator/propagate_limit.cpp +5 -1
  552. package/src/duckdb/src/optimizer/statistics/operator/ub_duckdb_optimizer_statistics_op.cpp +11 -0
  553. package/src/duckdb/src/optimizer/topn_optimizer.cpp +12 -11
  554. package/src/duckdb/src/optimizer/ub_duckdb_optimizer.cpp +20 -0
  555. package/src/duckdb/src/parallel/executor.cpp +8 -19
  556. package/src/duckdb/src/parallel/executor_task.cpp +6 -2
  557. package/src/duckdb/src/parallel/pipeline.cpp +12 -6
  558. package/src/duckdb/src/parallel/pipeline_executor.cpp +1 -1
  559. package/src/duckdb/src/parallel/pipeline_finish_event.cpp +2 -2
  560. package/src/duckdb/src/parallel/pipeline_initialize_event.cpp +1 -2
  561. package/src/duckdb/src/parallel/task_scheduler.cpp +15 -8
  562. package/src/duckdb/src/parallel/ub_duckdb_parallel.cpp +15 -0
  563. package/src/duckdb/src/parser/constraints/ub_duckdb_constraints.cpp +5 -0
  564. package/src/duckdb/src/parser/expression/ub_duckdb_expression.cpp +18 -0
  565. package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +0 -18
  566. package/src/duckdb/src/parser/parsed_data/comment_on_column_info.cpp +44 -0
  567. package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +1 -0
  568. package/src/duckdb/src/parser/parsed_data/extra_drop_info.cpp +2 -0
  569. package/src/duckdb/src/parser/parsed_data/ub_duckdb_parsed_data.cpp +24 -0
  570. package/src/duckdb/src/parser/parser.cpp +1 -1
  571. package/src/duckdb/src/parser/query_error_context.cpp +15 -1
  572. package/src/duckdb/src/parser/query_node/ub_duckdb_query_node.cpp +5 -0
  573. package/src/duckdb/src/parser/statement/export_statement.cpp +2 -1
  574. package/src/duckdb/src/parser/statement/relation_statement.cpp +2 -2
  575. package/src/duckdb/src/parser/statement/ub_duckdb_statement.cpp +25 -0
  576. package/src/duckdb/src/parser/tableref/pivotref.cpp +3 -3
  577. package/src/duckdb/src/parser/tableref/showref.cpp +2 -0
  578. package/src/duckdb/src/parser/tableref/ub_duckdb_parser_tableref.cpp +8 -0
  579. package/src/duckdb/src/parser/transform/constraint/ub_duckdb_transformer_constraint.cpp +2 -0
  580. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +1 -1
  581. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +10 -2
  582. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +7 -7
  583. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +2 -1
  584. package/src/duckdb/src/parser/transform/expression/ub_duckdb_transformer_expression.cpp +20 -0
  585. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +2 -2
  586. package/src/duckdb/src/parser/transform/helpers/ub_duckdb_transformer_helpers.cpp +8 -0
  587. package/src/duckdb/src/parser/transform/statement/transform_comment_on.cpp +3 -8
  588. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +3 -1
  589. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +2 -3
  590. package/src/duckdb/src/parser/transform/statement/ub_duckdb_transformer_statement.cpp +37 -0
  591. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +16 -0
  592. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +49 -32
  593. package/src/duckdb/src/parser/transform/tableref/ub_duckdb_transformer_tableref.cpp +8 -0
  594. package/src/duckdb/src/parser/ub_duckdb_parser.cpp +15 -0
  595. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +11 -4
  596. package/src/duckdb/src/planner/binder/expression/bind_operator_expression.cpp +4 -1
  597. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +71 -5
  598. package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +35 -1
  599. package/src/duckdb/src/planner/binder/expression/ub_duckdb_bind_expression.cpp +20 -0
  600. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +55 -51
  601. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +1 -11
  602. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +2 -2
  603. package/src/duckdb/src/planner/binder/query_node/ub_duckdb_bind_query_node.cpp +12 -0
  604. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +12 -6
  605. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +1 -1
  606. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +8 -2
  607. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +6 -3
  608. package/src/duckdb/src/planner/binder/statement/bind_simple.cpp +13 -2
  609. package/src/duckdb/src/planner/binder/statement/ub_duckdb_bind_statement.cpp +26 -0
  610. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +15 -4
  611. package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +9 -2
  612. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +93 -45
  613. package/src/duckdb/src/planner/binder/tableref/bind_subqueryref.cpp +6 -1
  614. package/src/duckdb/src/planner/binder/tableref/ub_duckdb_bind_tableref.cpp +17 -0
  615. package/src/duckdb/src/planner/binder.cpp +22 -23
  616. package/src/duckdb/src/planner/bound_result_modifier.cpp +67 -4
  617. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +5 -1
  618. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +3 -0
  619. package/src/duckdb/src/planner/expression/ub_duckdb_planner_expression.cpp +19 -0
  620. package/src/duckdb/src/planner/expression_binder/column_alias_binder.cpp +14 -9
  621. package/src/duckdb/src/planner/expression_binder/having_binder.cpp +17 -9
  622. package/src/duckdb/src/planner/expression_binder/lateral_binder.cpp +61 -37
  623. package/src/duckdb/src/planner/expression_binder/qualify_binder.cpp +8 -4
  624. package/src/duckdb/src/planner/expression_binder/ub_duckdb_expression_binders.cpp +20 -0
  625. package/src/duckdb/src/planner/expression_binder/where_binder.cpp +3 -2
  626. package/src/duckdb/src/planner/expression_iterator.cpp +73 -52
  627. package/src/duckdb/src/planner/filter/ub_duckdb_planner_filter.cpp +4 -0
  628. package/src/duckdb/src/planner/logical_operator_visitor.cpp +4 -14
  629. package/src/duckdb/src/planner/operator/logical_limit.cpp +14 -6
  630. package/src/duckdb/src/planner/operator/ub_duckdb_planner_operator.cpp +43 -0
  631. package/src/duckdb/src/planner/parsed_data/ub_duckdb_planner_parsed_data.cpp +2 -0
  632. package/src/duckdb/src/planner/planner.cpp +3 -0
  633. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +46 -18
  634. package/src/duckdb/src/planner/subquery/rewrite_correlated_expressions.cpp +39 -33
  635. package/src/duckdb/src/planner/subquery/ub_duckdb_planner_subquery.cpp +4 -0
  636. package/src/duckdb/src/planner/ub_duckdb_planner.cpp +15 -0
  637. package/src/duckdb/src/storage/arena_allocator.cpp +9 -0
  638. package/src/duckdb/src/storage/buffer/block_handle.cpp +7 -2
  639. package/src/duckdb/src/storage/buffer/block_manager.cpp +7 -3
  640. package/src/duckdb/src/storage/buffer/buffer_pool.cpp +121 -24
  641. package/src/duckdb/src/storage/buffer/ub_duckdb_storage_buffer.cpp +6 -0
  642. package/src/duckdb/src/storage/checkpoint/ub_duckdb_storage_checkpoint.cpp +5 -0
  643. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +4 -4
  644. package/src/duckdb/src/storage/compression/chimp/ub_duckdb_storage_compression_chimp.cpp +6 -0
  645. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +6 -5
  646. package/src/duckdb/src/storage/compression/fsst.cpp +3 -2
  647. package/src/duckdb/src/storage/compression/rle.cpp +1 -1
  648. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +4 -4
  649. package/src/duckdb/src/storage/compression/ub_duckdb_storage_compression.cpp +12 -0
  650. package/src/duckdb/src/storage/data_table.cpp +6 -3
  651. package/src/duckdb/src/storage/local_storage.cpp +5 -2
  652. package/src/duckdb/src/storage/metadata/metadata_manager.cpp +4 -4
  653. package/src/duckdb/src/storage/metadata/metadata_reader.cpp +1 -1
  654. package/src/duckdb/src/storage/metadata/metadata_writer.cpp +1 -1
  655. package/src/duckdb/src/storage/metadata/ub_duckdb_storage_metadata.cpp +4 -0
  656. package/src/duckdb/src/storage/partial_block_manager.cpp +1 -1
  657. package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +2 -0
  658. package/src/duckdb/src/storage/serialization/serialize_expression.cpp +3 -0
  659. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +5 -29
  660. package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +22 -4
  661. package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +12 -32
  662. package/src/duckdb/src/storage/serialization/ub_duckdb_storage_serialization.cpp +16 -0
  663. package/src/duckdb/src/storage/standard_buffer_manager.cpp +29 -397
  664. package/src/duckdb/src/storage/statistics/string_stats.cpp +1 -1
  665. package/src/duckdb/src/storage/statistics/ub_duckdb_storage_statistics.cpp +10 -0
  666. package/src/duckdb/src/storage/storage_info.cpp +1 -1
  667. package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +3 -3
  668. package/src/duckdb/src/storage/table/column_data.cpp +7 -16
  669. package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +4 -1
  670. package/src/duckdb/src/storage/table/column_segment.cpp +68 -78
  671. package/src/duckdb/src/storage/table/list_column_data.cpp +1 -0
  672. package/src/duckdb/src/storage/table/row_group.cpp +17 -7
  673. package/src/duckdb/src/storage/table/row_group_collection.cpp +28 -27
  674. package/src/duckdb/src/storage/table/ub_duckdb_storage_table.cpp +17 -0
  675. package/src/duckdb/src/storage/table/update_segment.cpp +7 -7
  676. package/src/duckdb/src/storage/temporary_file_manager.cpp +334 -0
  677. package/src/duckdb/src/storage/ub_duckdb_storage.cpp +20 -0
  678. package/src/duckdb/src/storage/write_ahead_log.cpp +3 -2
  679. package/src/duckdb/src/transaction/commit_state.cpp +4 -2
  680. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +32 -17
  681. package/src/duckdb/src/transaction/meta_transaction.cpp +24 -0
  682. package/src/duckdb/src/transaction/transaction_context.cpp +0 -9
  683. package/src/duckdb/src/transaction/ub_duckdb_transaction.cpp +11 -0
  684. package/src/duckdb/src/transaction/undo_buffer.cpp +1 -1
  685. package/src/duckdb/third_party/jaro_winkler/details/common.hpp +1 -1
  686. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +2 -0
  687. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +1032 -551
  688. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +24122 -24304
  689. package/src/duckdb/third_party/mbedtls/include/mbedtls/mbedtls_config.h +0 -3
  690. package/src/duckdb/third_party/mbedtls/library/entropy_poll.cpp +32 -4
  691. package/src/duckdb/third_party/miniz/miniz_wrapper.hpp +4 -4
  692. package/src/duckdb/third_party/tdigest/t_digest.hpp +3 -3
  693. package/src/duckdb/ub_src_common_arrow_appender.cpp +2 -0
  694. package/src/duckdb/ub_src_common_exception.cpp +2 -0
  695. package/src/duckdb/ub_src_execution_operator_helper.cpp +2 -0
  696. package/src/duckdb/ub_src_execution_operator_persistent.cpp +0 -2
  697. package/src/duckdb/ub_src_execution_physical_plan.cpp +0 -2
  698. package/src/duckdb/ub_src_parser_parsed_data.cpp +1 -1
  699. package/src/duckdb/ub_src_planner_operator.cpp +0 -2
  700. package/src/duckdb/ub_src_storage.cpp +2 -0
  701. package/test/columns.test.ts +1 -1
  702. package/test/test_all_types.test.ts +1 -1
@@ -5,12 +5,12 @@
5
5
 
6
6
  namespace duckdb {
7
7
 
8
- bool ClientContextFileOpener::TryGetCurrentSetting(const string &key, Value &result) {
8
+ SettingLookupResult ClientContextFileOpener::TryGetCurrentSetting(const string &key, Value &result) {
9
9
  return context.TryGetCurrentSetting(key, result);
10
10
  }
11
11
 
12
12
  // LCOV_EXCL_START
13
- bool ClientContextFileOpener::TryGetCurrentSetting(const string &key, Value &result, FileOpenerInfo &) {
13
+ SettingLookupResult ClientContextFileOpener::TryGetCurrentSetting(const string &key, Value &result, FileOpenerInfo &) {
14
14
  return context.TryGetCurrentSetting(key, result);
15
15
  }
16
16
 
@@ -21,21 +21,22 @@ ClientContext *FileOpener::TryGetClientContext(FileOpener *opener) {
21
21
  return opener->TryGetClientContext();
22
22
  }
23
23
 
24
- bool FileOpener::TryGetCurrentSetting(FileOpener *opener, const string &key, Value &result) {
24
+ SettingLookupResult FileOpener::TryGetCurrentSetting(FileOpener *opener, const string &key, Value &result) {
25
25
  if (!opener) {
26
- return false;
26
+ return SettingLookupResult();
27
27
  }
28
28
  return opener->TryGetCurrentSetting(key, result);
29
29
  }
30
30
 
31
- bool FileOpener::TryGetCurrentSetting(FileOpener *opener, const string &key, Value &result, FileOpenerInfo &info) {
31
+ SettingLookupResult FileOpener::TryGetCurrentSetting(FileOpener *opener, const string &key, Value &result,
32
+ FileOpenerInfo &info) {
32
33
  if (!opener) {
33
- return false;
34
+ return SettingLookupResult();
34
35
  }
35
36
  return opener->TryGetCurrentSetting(key, result, info);
36
37
  }
37
38
 
38
- bool FileOpener::TryGetCurrentSetting(const string &key, Value &result, FileOpenerInfo &info) {
39
+ SettingLookupResult FileOpener::TryGetCurrentSetting(const string &key, Value &result, FileOpenerInfo &info) {
39
40
  return this->TryGetCurrentSetting(key, result);
40
41
  }
41
42
  // LCOV_EXCL_STOP
@@ -70,6 +70,7 @@ static ConfigurationOption internal_options[] = {DUCKDB_GLOBAL(AccessModeSetting
70
70
  DUCKDB_GLOBAL(EnableExternalAccessSetting),
71
71
  DUCKDB_GLOBAL(EnableFSSTVectors),
72
72
  DUCKDB_GLOBAL(AllowUnsignedExtensionsSetting),
73
+ DUCKDB_GLOBAL(AllowUnredactedSecretsSetting),
73
74
  DUCKDB_GLOBAL(CustomExtensionRepository),
74
75
  DUCKDB_GLOBAL(AutoloadExtensionRepository),
75
76
  DUCKDB_GLOBAL(AutoinstallKnownExtensions),
@@ -121,6 +122,7 @@ static ConfigurationOption internal_options[] = {DUCKDB_GLOBAL(AccessModeSetting
121
122
  DUCKDB_GLOBAL(FlushAllocatorSetting),
122
123
  DUCKDB_GLOBAL(DuckDBApiSetting),
123
124
  DUCKDB_GLOBAL(CustomUserAgentSetting),
125
+ DUCKDB_LOCAL(PartitionedWriteFlushThreshold),
124
126
  FINAL_SETTING};
125
127
 
126
128
  vector<ConfigurationOption> DBConfig::GetOptions() {
@@ -1,5 +1,7 @@
1
1
  #include "duckdb/main/connection_manager.hpp"
2
2
  #include "duckdb/common/exception/transaction_exception.hpp"
3
+ #include "duckdb/main/config.hpp"
4
+ #include "duckdb/planner/extension_callback.hpp"
3
5
 
4
6
  namespace duckdb {
5
7
 
@@ -8,11 +10,17 @@ ConnectionManager::ConnectionManager() : is_locking(false) {
8
10
 
9
11
  void ConnectionManager::AddConnection(ClientContext &context) {
10
12
  lock_guard<mutex> lock(connections_lock);
13
+ for (auto &callback : DBConfig::GetConfig(context).extension_callbacks) {
14
+ callback->OnConnectionOpened(context);
15
+ }
11
16
  connections.insert(make_pair(&context, weak_ptr<ClientContext>(context.shared_from_this())));
12
17
  }
13
18
 
14
19
  void ConnectionManager::RemoveConnection(ClientContext &context) {
15
20
  lock_guard<mutex> lock(connections_lock);
21
+ for (auto &callback : DBConfig::GetConfig(context).extension_callbacks) {
22
+ callback->OnConnectionClosed(context);
23
+ }
16
24
  connections.erase(&context);
17
25
  }
18
26
 
@@ -54,7 +54,16 @@ DatabaseInstance::DatabaseInstance() {
54
54
  }
55
55
 
56
56
  DatabaseInstance::~DatabaseInstance() {
57
- GetDatabaseManager().ResetDatabases();
57
+ // destroy all attached databases
58
+ GetDatabaseManager().ResetDatabases(scheduler);
59
+ // destroy child elements
60
+ connection_manager.reset();
61
+ object_cache.reset();
62
+ scheduler.reset();
63
+ db_manager.reset();
64
+ buffer_manager.reset();
65
+ // finally, flush allocations
66
+ Allocator::FlushAll();
58
67
  }
59
68
 
60
69
  BufferManager &BufferManager::GetBufferManager(DatabaseInstance &db) {
@@ -395,7 +404,7 @@ void DatabaseInstance::SetExtensionLoaded(const std::string &name) {
395
404
  }
396
405
  }
397
406
 
398
- bool DatabaseInstance::TryGetCurrentSetting(const std::string &key, Value &result) {
407
+ SettingLookupResult DatabaseInstance::TryGetCurrentSetting(const std::string &key, Value &result) {
399
408
  // check the session values
400
409
  auto &db_config = DBConfig::GetConfig(*this);
401
410
  const auto &global_config_map = db_config.options.set_variables;
@@ -403,10 +412,10 @@ bool DatabaseInstance::TryGetCurrentSetting(const std::string &key, Value &resul
403
412
  auto global_value = global_config_map.find(key);
404
413
  bool found_global_value = global_value != global_config_map.end();
405
414
  if (!found_global_value) {
406
- return false;
415
+ return SettingLookupResult();
407
416
  }
408
417
  result = global_value->second;
409
- return true;
418
+ return SettingLookupResult(SettingScope::GLOBAL);
410
419
  }
411
420
 
412
421
  ValidChecker &DatabaseInstance::GetValidChecker() {
@@ -36,6 +36,9 @@ optional_ptr<AttachedDatabase> DatabaseManager::GetDatabase(ClientContext &conte
36
36
 
37
37
  optional_ptr<AttachedDatabase> DatabaseManager::AttachDatabase(ClientContext &context, const AttachInfo &info,
38
38
  const string &db_type, AccessMode access_mode) {
39
+ if (AttachedDatabase::NameIsReserved(info.name)) {
40
+ throw BinderException("Attached database name \"%s\" cannot be used because it is a reserved name", info.name);
41
+ }
39
42
  // now create the attached database
40
43
  auto &db = DatabaseInstance::GetDatabase(context);
41
44
  auto attached_db = db.CreateAttachedDatabase(context, info, db_type, access_mode);
@@ -205,7 +208,13 @@ vector<reference<AttachedDatabase>> DatabaseManager::GetDatabases(ClientContext
205
208
  return result;
206
209
  }
207
210
 
208
- void DatabaseManager::ResetDatabases() {
211
+ void DatabaseManager::ResetDatabases(unique_ptr<TaskScheduler> &scheduler) {
212
+ vector<reference<AttachedDatabase>> result;
213
+ databases->Scan([&](CatalogEntry &entry) { result.push_back(entry.Cast<AttachedDatabase>()); });
214
+ for (auto &database : result) {
215
+ database.get().Close();
216
+ }
217
+ scheduler.reset();
209
218
  databases.reset();
210
219
  }
211
220
 
@@ -122,7 +122,6 @@ static DefaultExtension internal_extensions[] = {
122
122
  {"arrow", "A zero-copy data integration between Apache Arrow and DuckDB", false},
123
123
  {"azure", "Adds a filesystem abstraction for Azure blob storage to DuckDB", false},
124
124
  {"iceberg", "Adds support for Apache Iceberg", false},
125
- {"visualizer", "Creates an HTML-based visualization of the query plan", false},
126
125
  {nullptr, nullptr, false}};
127
126
 
128
127
  idx_t ExtensionHelper::DefaultExtensionCount() {
@@ -171,19 +170,23 @@ bool ExtensionHelper::CanAutoloadExtension(const string &ext_name) {
171
170
 
172
171
  string ExtensionHelper::AddExtensionInstallHintToErrorMsg(ClientContext &context, const string &base_error,
173
172
  const string &extension_name) {
174
- auto &dbconfig = DBConfig::GetConfig(context);
173
+
174
+ return AddExtensionInstallHintToErrorMsg(DBConfig::GetConfig(context), base_error, extension_name);
175
+ }
176
+ string ExtensionHelper::AddExtensionInstallHintToErrorMsg(DBConfig &config, const string &base_error,
177
+ const string &extension_name) {
175
178
  string install_hint;
176
179
 
177
180
  if (!ExtensionHelper::CanAutoloadExtension(extension_name)) {
178
181
  install_hint = "Please try installing and loading the " + extension_name + " extension:\nINSTALL " +
179
182
  extension_name + ";\nLOAD " + extension_name + ";\n\n";
180
- } else if (!dbconfig.options.autoload_known_extensions) {
183
+ } else if (!config.options.autoload_known_extensions) {
181
184
  install_hint =
182
185
  "Please try installing and loading the " + extension_name + " extension by running:\nINSTALL " +
183
186
  extension_name + ";\nLOAD " + extension_name +
184
187
  ";\n\nAlternatively, consider enabling auto-install "
185
188
  "and auto-load by running:\nSET autoinstall_known_extensions=1;\nSET autoload_known_extensions=1;";
186
- } else if (!dbconfig.options.autoinstall_known_extensions) {
189
+ } else if (!config.options.autoinstall_known_extensions) {
187
190
  install_hint =
188
191
  "Please try installing the " + extension_name + " extension by running:\nINSTALL " + extension_name +
189
192
  ";\n\nAlternatively, consider enabling autoinstall by running:\nSET autoinstall_known_extensions=1;";
@@ -246,7 +249,7 @@ void ExtensionHelper::LoadAllExtensions(DuckDB &db) {
246
249
  // The in-tree extensions that we check. Non-cmake builds are currently limited to these for static linking
247
250
  // TODO: rewrite package_build.py to allow also loading out-of-tree extensions in non-cmake builds, after that
248
251
  // these can be removed
249
- unordered_set<string> extensions {"parquet", "icu", "tpch", "tpcds", "fts", "httpfs", "visualizer",
252
+ unordered_set<string> extensions {"parquet", "icu", "tpch", "tpcds", "fts", "httpfs",
250
253
  "json", "excel", "sqlsmith", "inet", "jemalloc", "autocomplete"};
251
254
  for (auto &ext : extensions) {
252
255
  LoadExtensionInternal(db, ext, true);
@@ -171,7 +171,7 @@ string ExtensionHelper::ExtensionUrlTemplate(optional_ptr<const DBConfig> db_con
171
171
  string versioned_path = "/${REVISION}/${PLATFORM}/${NAME}.duckdb_extension";
172
172
  #ifdef WASM_LOADABLE_EXTENSIONS
173
173
  string default_endpoint = "https://extensions.duckdb.org";
174
- versioned_path = "/duckdb-wasm" + versioned_path + ".wasm";
174
+ versioned_path = versioned_path + ".wasm";
175
175
  #else
176
176
  string default_endpoint = "http://extensions.duckdb.org";
177
177
  versioned_path = versioned_path + ".gz";
@@ -0,0 +1,6 @@
1
+ // Unity Build generated by CMake
2
+ #include </Users/carlo/duckdb/src/main/extension/extension_alias.cpp>
3
+ #include </Users/carlo/duckdb/src/main/extension/extension_helper.cpp>
4
+ #include </Users/carlo/duckdb/src/main/extension/extension_install.cpp>
5
+ #include </Users/carlo/duckdb/src/main/extension/extension_load.cpp>
6
+ #include </Users/carlo/duckdb/src/main/extension/extension_util.cpp>
@@ -2,6 +2,8 @@
2
2
  #include "duckdb/execution/physical_operator.hpp"
3
3
  #include "duckdb/parser/sql_statement.hpp"
4
4
  #include "duckdb/common/exception/binder_exception.hpp"
5
+ #include "duckdb/main/database_manager.hpp"
6
+ #include "duckdb/transaction/transaction.hpp"
5
7
 
6
8
  namespace duckdb {
7
9
 
@@ -19,12 +21,19 @@ void PreparedStatementData::CheckParameterCount(idx_t parameter_count) {
19
21
  }
20
22
  }
21
23
 
24
+ void StartTransactionInCatalog(ClientContext &context, const string &catalog_name) {
25
+ auto database = DatabaseManager::Get(context).GetDatabase(context, catalog_name);
26
+ if (!database) {
27
+ throw BinderException("Prepared statement requires database %s but it was not attached", catalog_name);
28
+ }
29
+ Transaction::Get(context, *database);
30
+ }
31
+
22
32
  bool PreparedStatementData::RequireRebind(ClientContext &context, optional_ptr<case_insensitive_map_t<Value>> values) {
23
33
  idx_t count = values ? values->size() : 0;
24
34
  CheckParameterCount(count);
25
35
  if (!unbound_statement) {
26
- // no unbound statement!? cannot rebind?
27
- return false;
36
+ throw InternalException("Prepared statement without unbound statement");
28
37
  }
29
38
  if (properties.always_require_rebind) {
30
39
  // this statement must always be re-bound
@@ -34,10 +43,6 @@ bool PreparedStatementData::RequireRebind(ClientContext &context, optional_ptr<c
34
43
  // parameters not yet bound: query always requires a rebind
35
44
  return true;
36
45
  }
37
- if (Catalog::GetSystemCatalog(context).GetCatalogVersion() != catalog_version) {
38
- //! context is out of bounds
39
- return true;
40
- }
41
46
  for (auto &it : value_map) {
42
47
  auto &identifier = it.first;
43
48
  auto lookup = values->find(identifier);
@@ -48,6 +53,18 @@ bool PreparedStatementData::RequireRebind(ClientContext &context, optional_ptr<c
48
53
  return true;
49
54
  }
50
55
  }
56
+ // prior to checking the catalog version we need to explicitly start transactions in all affected databases
57
+ // this ensures all catalog entries we rely on are cached
58
+ for (auto &catalog_name : properties.read_databases) {
59
+ StartTransactionInCatalog(context, catalog_name);
60
+ }
61
+ for (auto &catalog_name : properties.modified_databases) {
62
+ StartTransactionInCatalog(context, catalog_name);
63
+ }
64
+ if (Catalog::GetSystemCatalog(context).GetCatalogVersion() != catalog_version) {
65
+ //! context is out of bounds
66
+ return true;
67
+ }
51
68
  return false;
52
69
  }
53
70
 
@@ -3,6 +3,7 @@
3
3
  #include "duckdb/common/fstream.hpp"
4
4
  #include "duckdb/common/http_state.hpp"
5
5
  #include "duckdb/common/limits.hpp"
6
+ #include "duckdb/common/numeric_utils.hpp"
6
7
  #include "duckdb/common/printer.hpp"
7
8
  #include "duckdb/common/string_util.hpp"
8
9
  #include "duckdb/common/to_string.hpp"
@@ -325,20 +326,20 @@ static string DrawPadded(const string &str, idx_t width) {
325
326
  return str.substr(0, width);
326
327
  } else {
327
328
  width -= str.size();
328
- int half_spaces = width / 2;
329
- int extra_left_space = width % 2 != 0 ? 1 : 0;
329
+ auto half_spaces = width / 2;
330
+ auto extra_left_space = width % 2 != 0 ? 1 : 0;
330
331
  return string(half_spaces + extra_left_space, ' ') + str + string(half_spaces, ' ');
331
332
  }
332
333
  }
333
334
 
334
335
  static string RenderTitleCase(string str) {
335
336
  str = StringUtil::Lower(str);
336
- str[0] = toupper(str[0]);
337
+ str[0] = NumericCast<char>(toupper(str[0]));
337
338
  for (idx_t i = 0; i < str.size(); i++) {
338
339
  if (str[i] == '_') {
339
340
  str[i] = ' ';
340
341
  if (i + 1 < str.size()) {
341
- str[i + 1] = toupper(str[i + 1]);
342
+ str[i + 1] = NumericCast<char>(toupper(str[i + 1]));
342
343
  }
343
344
  }
344
345
  }
@@ -506,8 +507,8 @@ static void PrintRow(std::ostream &ss, const string &annotation, int id, const s
506
507
  static void ExtractFunctions(std::ostream &ss, ExpressionInfo &info, int &fun_id, int depth) {
507
508
  if (info.hasfunction) {
508
509
  double time = info.sample_tuples_count == 0 ? 0 : int(info.function_time) / double(info.sample_tuples_count);
509
- PrintRow(ss, "Function", fun_id++, info.function_name, time, info.sample_tuples_count, info.tuples_count, "",
510
- depth);
510
+ PrintRow(ss, "Function", fun_id++, info.function_name, time, NumericCast<int>(info.sample_tuples_count),
511
+ NumericCast<int>(info.tuples_count), "", NumericCast<int>(depth));
511
512
  }
512
513
  if (info.children.empty()) {
513
514
  return;
@@ -538,7 +539,8 @@ static void ToJSONRecursive(QueryProfiler::TreeNode &node, std::ostream &ss, int
538
539
  ? 0
539
540
  : double(expr_timer->time) / double(expr_timer->sample_tuples_count);
540
541
  PrintRow(ss, "ExpressionRoot", expression_counter++, expr_timer->name, time,
541
- expr_timer->sample_tuples_count, expr_timer->tuples_count, expr_timer->extra_info, depth + 1);
542
+ NumericCast<int>(expr_timer->sample_tuples_count), NumericCast<int>(expr_timer->tuples_count),
543
+ expr_timer->extra_info, depth + 1);
542
544
  // Extract all functions inside the tree
543
545
  ExtractFunctions(ss, *expr_timer->root, function_counter, depth + 1);
544
546
  }
@@ -1,13 +1,13 @@
1
1
  #include "duckdb/main/relation/read_csv_relation.hpp"
2
2
 
3
- #include "duckdb/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.hpp"
4
- #include "duckdb/execution/operator/csv_scanner/sniffer/csv_sniffer.hpp"
3
+ #include "duckdb/execution/operator/csv_scanner/csv_buffer_manager.hpp"
4
+ #include "duckdb/execution/operator/csv_scanner/csv_sniffer.hpp"
5
5
  #include "duckdb/parser/expression/columnref_expression.hpp"
6
6
  #include "duckdb/parser/expression/comparison_expression.hpp"
7
7
  #include "duckdb/parser/expression/constant_expression.hpp"
8
8
  #include "duckdb/parser/expression/function_expression.hpp"
9
9
  #include "duckdb/common/string_util.hpp"
10
- #include "duckdb/execution/operator/csv_scanner/options/csv_reader_options.hpp"
10
+ #include "duckdb/execution/operator/csv_scanner/csv_reader_options.hpp"
11
11
  #include "duckdb/common/multi_file_reader.hpp"
12
12
  #include "duckdb/parser/expression/star_expression.hpp"
13
13
  #include "duckdb/parser/query_node/select_node.hpp"
@@ -38,7 +38,9 @@ ReadCSVRelation::ReadCSVRelation(const std::shared_ptr<ClientContext> &context,
38
38
  InitializeAlias(input);
39
39
 
40
40
  auto file_list = CreateValueFromFileList(input);
41
- auto files = MultiFileReader::GetFileList(*context, file_list, "CSV");
41
+
42
+ vector<string> files;
43
+ context->RunFunctionInTransaction([&]() { files = MultiFileReader::GetFileList(*context, file_list, "CSV"); });
42
44
  D_ASSERT(!files.empty());
43
45
 
44
46
  auto &file_name = files[0];
@@ -52,14 +54,17 @@ ReadCSVRelation::ReadCSVRelation(const std::shared_ptr<ClientContext> &context,
52
54
 
53
55
  // Run the auto-detect, populating the options with the detected settings
54
56
 
55
- auto buffer_manager = make_shared<CSVBufferManager>(*context, csv_options, files[0], 0);
56
- CSVSniffer sniffer(csv_options, buffer_manager, CSVStateMachineCache::Get(*context));
57
- auto sniffer_result = sniffer.SniffCSV();
58
- auto &types = sniffer_result.return_types;
59
- auto &names = sniffer_result.names;
60
- for (idx_t i = 0; i < types.size(); i++) {
61
- columns.emplace_back(names[i], types[i]);
62
- }
57
+ shared_ptr<CSVBufferManager> buffer_manager;
58
+ context->RunFunctionInTransaction([&]() {
59
+ buffer_manager = make_shared<CSVBufferManager>(*context, csv_options, files[0], 0);
60
+ CSVSniffer sniffer(csv_options, buffer_manager, CSVStateMachineCache::Get(*context));
61
+ auto sniffer_result = sniffer.SniffCSV();
62
+ auto &types = sniffer_result.return_types;
63
+ auto &names = sniffer_result.names;
64
+ for (idx_t i = 0; i < types.size(); i++) {
65
+ columns.emplace_back(names[i], types[i]);
66
+ }
67
+ });
63
68
 
64
69
  // After sniffing we can consider these set, so they are exported as named parameters
65
70
  // FIXME: This is horribly hacky, should be refactored at some point
@@ -0,0 +1,26 @@
1
+ // Unity Build generated by CMake
2
+ #include </Users/carlo/duckdb/src/main/relation/aggregate_relation.cpp>
3
+ #include </Users/carlo/duckdb/src/main/relation/create_table_relation.cpp>
4
+ #include </Users/carlo/duckdb/src/main/relation/create_view_relation.cpp>
5
+ #include </Users/carlo/duckdb/src/main/relation/cross_product_relation.cpp>
6
+ #include </Users/carlo/duckdb/src/main/relation/delete_relation.cpp>
7
+ #include </Users/carlo/duckdb/src/main/relation/distinct_relation.cpp>
8
+ #include </Users/carlo/duckdb/src/main/relation/explain_relation.cpp>
9
+ #include </Users/carlo/duckdb/src/main/relation/filter_relation.cpp>
10
+ #include </Users/carlo/duckdb/src/main/relation/insert_relation.cpp>
11
+ #include </Users/carlo/duckdb/src/main/relation/join_relation.cpp>
12
+ #include </Users/carlo/duckdb/src/main/relation/limit_relation.cpp>
13
+ #include </Users/carlo/duckdb/src/main/relation/order_relation.cpp>
14
+ #include </Users/carlo/duckdb/src/main/relation/update_relation.cpp>
15
+ #include </Users/carlo/duckdb/src/main/relation/projection_relation.cpp>
16
+ #include </Users/carlo/duckdb/src/main/relation/query_relation.cpp>
17
+ #include </Users/carlo/duckdb/src/main/relation/read_csv_relation.cpp>
18
+ #include </Users/carlo/duckdb/src/main/relation/read_json_relation.cpp>
19
+ #include </Users/carlo/duckdb/src/main/relation/setop_relation.cpp>
20
+ #include </Users/carlo/duckdb/src/main/relation/subquery_relation.cpp>
21
+ #include </Users/carlo/duckdb/src/main/relation/table_function_relation.cpp>
22
+ #include </Users/carlo/duckdb/src/main/relation/table_relation.cpp>
23
+ #include </Users/carlo/duckdb/src/main/relation/value_relation.cpp>
24
+ #include </Users/carlo/duckdb/src/main/relation/view_relation.cpp>
25
+ #include </Users/carlo/duckdb/src/main/relation/write_parquet_relation.cpp>
26
+ #include </Users/carlo/duckdb/src/main/relation/write_csv_relation.cpp>
@@ -20,6 +20,7 @@ ValueRelation::ValueRelation(const std::shared_ptr<ClientContext> &context, cons
20
20
  }
21
21
  this->expressions.push_back(std::move(expressions));
22
22
  }
23
+ QueryResult::DeduplicateColumns(names);
23
24
  context->TryBindRelation(*this, this->columns);
24
25
  }
25
26
 
@@ -27,6 +28,7 @@ ValueRelation::ValueRelation(const std::shared_ptr<ClientContext> &context, cons
27
28
  vector<string> names_p, string alias_p)
28
29
  : Relation(context, RelationType::VALUE_LIST_RELATION), names(std::move(names_p)), alias(std::move(alias_p)) {
29
30
  this->expressions = Parser::ParseValuesList(values_list, context->GetParserOptions());
31
+ QueryResult::DeduplicateColumns(names);
30
32
  context->TryBindRelation(*this, this->columns);
31
33
  }
32
34
 
@@ -15,7 +15,7 @@ int64_t BaseSecret::MatchScore(const string &path) const {
15
15
  continue;
16
16
  }
17
17
  if (StringUtil::StartsWith(path, prefix)) {
18
- longest_match = MaxValue<int>(prefix.length(), longest_match);
18
+ longest_match = MaxValue<int64_t>(prefix.length(), longest_match);
19
19
  }
20
20
  }
21
21
  return longest_match;
@@ -223,8 +223,7 @@ unique_ptr<SecretEntry> SecretManager::CreateSecret(ClientContext &context, cons
223
223
  // Lookup function
224
224
  auto function_lookup = LookupFunctionInternal(function_input.type, function_input.provider);
225
225
  if (!function_lookup) {
226
- throw InvalidInputException("Could not find CreateSecretFunction for type: '%s' and provider: '%s'", info.type,
227
- info.provider);
226
+ ThrowProviderNotFoundError(info.type, info.provider);
228
227
  }
229
228
 
230
229
  // Call the function
@@ -258,8 +257,7 @@ BoundStatement SecretManager::BindCreateSecret(CatalogTransaction transaction, C
258
257
  auto function = LookupFunctionInternal(type, provider);
259
258
 
260
259
  if (!function) {
261
- throw BinderException("Could not find create secret function for secret type '%s' with %sprovider '%s'", type,
262
- default_string, provider);
260
+ ThrowProviderNotFoundError(info.type, info.provider, default_provider);
263
261
  }
264
262
 
265
263
  auto bound_info = info;
@@ -301,7 +299,7 @@ SecretMatch SecretManager::LookupSecret(CatalogTransaction transaction, const st
301
299
  if (!storage_ref.get().IncludeInLookups()) {
302
300
  continue;
303
301
  }
304
- auto match = storage_ref.get().LookupSecret(path, type, &transaction);
302
+ auto match = storage_ref.get().LookupSecret(path, StringUtil::Lower(type), &transaction);
305
303
  if (match.HasMatch() && match.score > best_match_score) {
306
304
  best_match = std::move(match.secret_entry);
307
305
  best_match_score = match.score;
@@ -426,7 +424,7 @@ SecretType SecretManager::LookupTypeInternal(const string &type) {
426
424
  return lookup->second;
427
425
  }
428
426
 
429
- throw InvalidInputException("Secret type '%s' not found", type);
427
+ ThrowTypeNotFoundError(type);
430
428
  }
431
429
 
432
430
  vector<SecretEntry> SecretManager::AllSecrets(CatalogTransaction transaction) {
@@ -516,11 +514,39 @@ void SecretManager::InitializeSecrets(CatalogTransaction transaction) {
516
514
  }
517
515
 
518
516
  void SecretManager::AutoloadExtensionForType(const string &type) {
519
- ExtensionHelper::TryAutoloadFromEntry(*db, type, EXTENSION_SECRET_TYPES);
517
+ ExtensionHelper::TryAutoloadFromEntry(*db, StringUtil::Lower(type), EXTENSION_SECRET_TYPES);
518
+ }
519
+
520
+ void SecretManager::ThrowTypeNotFoundError(const string &type) {
521
+ auto entry = ExtensionHelper::FindExtensionInEntries(StringUtil::Lower(type), EXTENSION_SECRET_TYPES);
522
+ if (!entry.empty() && db) {
523
+ auto error_message = "Secret type '" + type + "' does not exist, but it exists in the " + entry + " extension.";
524
+ error_message =
525
+ ExtensionHelper::AddExtensionInstallHintToErrorMsg(DBConfig::GetConfig(*db), error_message, entry);
526
+
527
+ throw InvalidInputException(error_message);
528
+ }
529
+ throw InvalidInputException("Secret type '%s' not found", type);
520
530
  }
521
531
 
522
532
  void SecretManager::AutoloadExtensionForFunction(const string &type, const string &provider) {
523
- ExtensionHelper::TryAutoloadFromEntry(*db, type + "/" + provider, EXTENSION_SECRET_PROVIDERS);
533
+ ExtensionHelper::TryAutoloadFromEntry(*db, StringUtil::Lower(type) + "/" + StringUtil::Lower(provider),
534
+ EXTENSION_SECRET_PROVIDERS);
535
+ }
536
+
537
+ void SecretManager::ThrowProviderNotFoundError(const string &type, const string &provider, bool was_default) {
538
+ auto entry = ExtensionHelper::FindExtensionInEntries(StringUtil::Lower(type) + "/" + StringUtil::Lower(provider),
539
+ EXTENSION_SECRET_PROVIDERS);
540
+ if (!entry.empty() && db) {
541
+ string error_message = was_default ? "Default secret provider" : "Secret provider";
542
+ error_message +=
543
+ " '" + provider + "' for type '" + type + "' does not exist, but it exists in the " + entry + " extension.";
544
+ error_message =
545
+ ExtensionHelper::AddExtensionInstallHintToErrorMsg(DBConfig::GetConfig(*db), error_message, entry);
546
+
547
+ throw InvalidInputException(error_message);
548
+ }
549
+ throw InvalidInputException("Secret provider '%s' not found for type '%s'", provider, type);
524
550
  }
525
551
 
526
552
  optional_ptr<SecretStorage> SecretManager::GetSecretStorage(const string &name) {
@@ -567,6 +593,13 @@ unique_ptr<CatalogEntry> DefaultSecretGenerator::CreateDefaultEntry(ClientContex
567
593
  // Note each file should contain 1 secret
568
594
  try {
569
595
  auto file_reader = BufferedFileReader(fs, secret_path.c_str());
596
+
597
+ if (!LocalFileSystem::IsPrivateFile(secret_path, nullptr)) {
598
+ throw IOException(
599
+ "The secret file '%s' has incorrect permissions! Please set correct permissions or remove file",
600
+ secret_path);
601
+ }
602
+
570
603
  if (!file_reader.Finished()) {
571
604
  BinaryDeserializer deserializer(file_reader);
572
605
 
@@ -104,7 +104,7 @@ SecretMatch CatalogSetSecretStorage::LookupSecret(const string &path, const stri
104
104
 
105
105
  const std::function<void(CatalogEntry &)> callback = [&](CatalogEntry &entry) {
106
106
  auto &cast_entry = entry.Cast<SecretCatalogEntry>();
107
- if (cast_entry.secret->secret->GetType() == type) {
107
+ if (StringUtil::CIEquals(cast_entry.secret->secret->GetType(), type)) {
108
108
  best_match = SelectBestMatch(*cast_entry.secret, path, best_match);
109
109
  }
110
110
  };
@@ -203,7 +203,13 @@ void LocalFileSecretStorage::WriteSecret(const BaseSecret &secret, OnCreateConfl
203
203
  fs.RemoveFile(file_path);
204
204
  }
205
205
 
206
- auto file_writer = BufferedFileWriter(fs, file_path);
206
+ auto open_flags = FileFlags::FILE_FLAGS_WRITE;
207
+ // Ensure we are writing to a private file with 600 permission
208
+ open_flags |= FileFlags::FILE_FLAGS_PRIVATE;
209
+ // Ensure we overwrite anything that may have been placed there since our delete above
210
+ open_flags |= FileFlags::FILE_FLAGS_FILE_CREATE_NEW;
211
+
212
+ auto file_writer = BufferedFileWriter(fs, file_path, open_flags);
207
213
 
208
214
  auto serializer = BinarySerializer(file_writer);
209
215
  serializer.Begin();
@@ -65,7 +65,8 @@ Value AccessModeSetting::GetSetting(ClientContext &context) {
65
65
  // Allow Persistent Secrets
66
66
  //===--------------------------------------------------------------------===//
67
67
  void AllowPersistentSecrets::SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &input) {
68
- config.secret_manager->SetEnablePersistentSecrets(input.GetValue<bool>());
68
+ auto value = input.DefaultCastAs(LogicalType::BOOLEAN);
69
+ config.secret_manager->SetEnablePersistentSecrets(value.GetValue<bool>());
69
70
  }
70
71
 
71
72
  void AllowPersistentSecrets::ResetGlobal(DatabaseInstance *db, DBConfig &config) {
@@ -74,7 +75,7 @@ void AllowPersistentSecrets::ResetGlobal(DatabaseInstance *db, DBConfig &config)
74
75
 
75
76
  Value AllowPersistentSecrets::GetSetting(ClientContext &context) {
76
77
  auto &config = DBConfig::GetConfig(context);
77
- return config.secret_manager->PersistentSecretsEnabled();
78
+ return Value::BOOLEAN(config.secret_manager->PersistentSecretsEnabled());
78
79
  }
79
80
 
80
81
  //===--------------------------------------------------------------------===//
@@ -475,6 +476,29 @@ Value AllowUnsignedExtensionsSetting::GetSetting(ClientContext &context) {
475
476
  return Value::BOOLEAN(config.options.allow_unsigned_extensions);
476
477
  }
477
478
 
479
+ //===--------------------------------------------------------------------===//
480
+ // Allow Unredacted Secrets
481
+ //===--------------------------------------------------------------------===//
482
+ void AllowUnredactedSecretsSetting::SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &input) {
483
+ auto new_value = input.GetValue<bool>();
484
+ if (db && new_value) {
485
+ throw InvalidInputException("Cannot change allow_unredacted_secrets setting while database is running");
486
+ }
487
+ config.options.allow_unredacted_secrets = new_value;
488
+ }
489
+
490
+ void AllowUnredactedSecretsSetting::ResetGlobal(DatabaseInstance *db, DBConfig &config) {
491
+ if (db) {
492
+ throw InvalidInputException("Cannot change allow_unredacted_secrets setting while database is running");
493
+ }
494
+ config.options.allow_unredacted_secrets = DBConfig().options.allow_unredacted_secrets;
495
+ }
496
+
497
+ Value AllowUnredactedSecretsSetting::GetSetting(ClientContext &context) {
498
+ auto &config = DBConfig::GetConfig(context);
499
+ return Value::BOOLEAN(config.options.allow_unredacted_secrets);
500
+ }
501
+
478
502
  //===--------------------------------------------------------------------===//
479
503
  // Enable Object Cache
480
504
  //===--------------------------------------------------------------------===//
@@ -964,6 +988,22 @@ Value OldImplicitCasting::GetSetting(ClientContext &context) {
964
988
  return Value::BOOLEAN(config.options.old_implicit_casting);
965
989
  }
966
990
 
991
+ //===--------------------------------------------------------------------===//
992
+ // Partitioned Write Flush Threshold
993
+ //===--------------------------------------------------------------------===//
994
+ void PartitionedWriteFlushThreshold::ResetLocal(ClientContext &context) {
995
+ ClientConfig::GetConfig(context).partitioned_write_flush_threshold =
996
+ ClientConfig().partitioned_write_flush_threshold;
997
+ }
998
+
999
+ void PartitionedWriteFlushThreshold::SetLocal(ClientContext &context, const Value &input) {
1000
+ ClientConfig::GetConfig(context).partitioned_write_flush_threshold = input.GetValue<idx_t>();
1001
+ }
1002
+
1003
+ Value PartitionedWriteFlushThreshold::GetSetting(ClientContext &context) {
1004
+ return Value::BIGINT(ClientConfig::GetConfig(context).partitioned_write_flush_threshold);
1005
+ }
1006
+
967
1007
  //===--------------------------------------------------------------------===//
968
1008
  // Password Setting
969
1009
  //===--------------------------------------------------------------------===//
@@ -0,0 +1,2 @@
1
+ // Unity Build generated by CMake
2
+ #include </Users/carlo/duckdb/src/main/settings/settings.cpp>