duckdb 0.10.2-dev0.0 → 0.10.2-dev3.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 (699) hide show
  1. package/binding.gyp +22 -18
  2. package/binding.gyp.in +3 -0
  3. package/package.json +1 -1
  4. package/src/duckdb/extension/icu/icu-timezone.cpp +3 -1
  5. package/src/duckdb/extension/icu/icu_extension.cpp +6 -2
  6. package/src/duckdb/extension/json/buffered_json_reader.cpp +10 -3
  7. package/src/duckdb/extension/json/include/buffered_json_reader.hpp +2 -0
  8. package/src/duckdb/extension/json/include/json_scan.hpp +13 -7
  9. package/src/duckdb/extension/json/include/json_serializer.hpp +5 -4
  10. package/src/duckdb/extension/json/include/json_structure.hpp +3 -3
  11. package/src/duckdb/extension/json/json_functions/json_serialize_plan.cpp +15 -5
  12. package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +15 -6
  13. package/src/duckdb/extension/json/json_functions/json_structure.cpp +21 -20
  14. package/src/duckdb/extension/json/json_functions/read_json.cpp +37 -3
  15. package/src/duckdb/extension/json/json_functions.cpp +7 -2
  16. package/src/duckdb/extension/json/json_scan.cpp +57 -33
  17. package/src/duckdb/extension/parquet/column_reader.cpp +12 -3
  18. package/src/duckdb/extension/parquet/column_writer.cpp +44 -7
  19. package/src/duckdb/extension/parquet/include/parquet_writer.hpp +5 -1
  20. package/src/duckdb/extension/parquet/parquet_extension.cpp +30 -3
  21. package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
  22. package/src/duckdb/extension/parquet/parquet_writer.cpp +4 -2
  23. package/src/duckdb/extension/parquet/zstd_file_system.cpp +1 -1
  24. package/src/duckdb/src/catalog/catalog.cpp +5 -1
  25. package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +21 -5
  26. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +8 -9
  27. package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +3 -7
  28. package/src/duckdb/src/catalog/catalog_entry/sequence_catalog_entry.cpp +1 -1
  29. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +6 -7
  30. package/src/duckdb/src/catalog/catalog_entry.cpp +8 -0
  31. package/src/duckdb/src/catalog/catalog_search_path.cpp +5 -0
  32. package/src/duckdb/src/catalog/catalog_set.cpp +2 -2
  33. package/src/duckdb/src/catalog/default/default_functions.cpp +6 -6
  34. package/src/duckdb/src/catalog/default/default_schemas.cpp +1 -1
  35. package/src/duckdb/src/catalog/default/default_views.cpp +7 -7
  36. package/src/duckdb/src/catalog/dependency_catalog_set.cpp +2 -1
  37. package/src/duckdb/src/catalog/dependency_list.cpp +92 -8
  38. package/src/duckdb/src/catalog/dependency_manager.cpp +53 -68
  39. package/src/duckdb/src/catalog/duck_catalog.cpp +1 -1
  40. package/src/duckdb/src/common/adbc/adbc.cpp +287 -45
  41. package/src/duckdb/src/common/arrow/appender/union_data.cpp +2 -2
  42. package/src/duckdb/src/common/box_renderer.cpp +12 -12
  43. package/src/duckdb/src/common/crypto/md5.cpp +2 -1
  44. package/src/duckdb/src/common/enum_util.cpp +307 -1
  45. package/src/duckdb/src/common/enums/expression_type.cpp +4 -0
  46. package/src/duckdb/src/common/enums/optimizer_type.cpp +1 -1
  47. package/src/duckdb/src/common/file_system.cpp +60 -13
  48. package/src/duckdb/src/common/filename_pattern.cpp +13 -13
  49. package/src/duckdb/src/common/gzip_file_system.cpp +1 -1
  50. package/src/duckdb/src/common/http_state.cpp +1 -1
  51. package/src/duckdb/src/common/local_file_system.cpp +72 -71
  52. package/src/duckdb/src/common/multi_file_reader.cpp +48 -28
  53. package/src/duckdb/src/common/row_operations/row_matcher.cpp +2 -2
  54. package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +13 -1
  55. package/src/duckdb/src/common/serializer/buffered_file_writer.cpp +32 -13
  56. package/src/duckdb/src/common/string_util.cpp +2 -3
  57. package/src/duckdb/src/common/tree_renderer.cpp +32 -67
  58. package/src/duckdb/src/common/types/bit.cpp +6 -6
  59. package/src/duckdb/src/common/types/data_chunk.cpp +2 -2
  60. package/src/duckdb/src/common/types/hash.cpp +6 -6
  61. package/src/duckdb/src/common/types/hyperloglog.cpp +2 -0
  62. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +13 -0
  63. package/src/duckdb/src/common/types/row/tuple_data_layout.cpp +5 -7
  64. package/src/duckdb/src/common/types/uuid.cpp +1 -1
  65. package/src/duckdb/src/common/types/vector.cpp +22 -14
  66. package/src/duckdb/src/common/types.cpp +8 -1
  67. package/src/duckdb/src/common/vector_operations/comparison_operators.cpp +20 -18
  68. package/src/duckdb/src/common/vector_operations/generators.cpp +1 -1
  69. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +267 -110
  70. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +52 -23
  71. package/src/duckdb/src/common/virtual_file_system.cpp +33 -20
  72. package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +2 -2
  73. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +3 -3
  74. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +31 -16
  75. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +3 -0
  76. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +2 -0
  77. package/src/duckdb/src/core_functions/core_functions.cpp +1 -1
  78. package/src/duckdb/src/core_functions/function_list.cpp +2 -2
  79. package/src/duckdb/src/core_functions/scalar/date/time_bucket.cpp +1 -1
  80. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +46 -17
  81. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +1 -1
  82. package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +82 -45
  83. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +2 -2
  84. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +3 -0
  85. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +3 -2
  86. package/src/duckdb/src/core_functions/scalar/string/hex.cpp +2 -4
  87. package/src/duckdb/src/core_functions/scalar/string/repeat.cpp +12 -21
  88. package/src/duckdb/src/execution/column_binding_resolver.cpp +2 -10
  89. package/src/duckdb/src/execution/expression_executor/execute_comparison.cpp +133 -66
  90. package/src/duckdb/src/execution/expression_executor/execute_function.cpp +0 -2
  91. package/src/duckdb/src/execution/expression_executor.cpp +0 -4
  92. package/src/duckdb/src/execution/expression_executor_state.cpp +1 -1
  93. package/src/duckdb/src/execution/index/art/art.cpp +2 -2
  94. package/src/duckdb/src/execution/index/unknown_index.cpp +13 -13
  95. package/src/duckdb/src/execution/join_hashtable.cpp +1 -1
  96. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +0 -1
  97. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer.cpp +10 -7
  98. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.cpp +32 -1
  99. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_file_handle.cpp +16 -2
  100. package/src/duckdb/src/execution/operator/csv_scanner/scanner/scanner_boundary.cpp +7 -7
  101. package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +354 -159
  102. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/csv_sniffer.cpp +11 -2
  103. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +22 -7
  104. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +1 -1
  105. package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine_cache.cpp +10 -10
  106. package/src/duckdb/src/execution/operator/csv_scanner/table_function/csv_file_scanner.cpp +9 -18
  107. package/src/duckdb/src/execution/operator/csv_scanner/table_function/global_csv_state.cpp +180 -47
  108. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +100 -58
  109. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +88 -21
  110. package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +12 -13
  111. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +2 -0
  112. package/src/duckdb/src/execution/operator/persistent/csv_rejects_table.cpp +118 -23
  113. package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +2 -2
  114. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +14 -5
  115. package/src/duckdb/src/execution/operator/persistent/physical_copy_database.cpp +1 -1
  116. package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +5 -5
  117. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +1 -1
  118. package/src/duckdb/src/execution/physical_plan/plan_simple.cpp +0 -9
  119. package/src/duckdb/src/execution/physical_plan/plan_vacuum.cpp +18 -0
  120. package/src/duckdb/src/execution/physical_plan_generator.cpp +5 -3
  121. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +81 -106
  122. package/src/duckdb/src/execution/reservoir_sample.cpp +1 -1
  123. package/src/duckdb/src/execution/window_executor.cpp +48 -28
  124. package/src/duckdb/src/execution/window_segment_tree.cpp +20 -23
  125. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +1 -1
  126. package/src/duckdb/src/function/cast/enum_casts.cpp +20 -55
  127. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +10 -9
  128. package/src/duckdb/src/function/cast_rules.cpp +9 -1
  129. package/src/duckdb/src/function/compression_config.cpp +1 -1
  130. package/src/duckdb/src/function/function_binder.cpp +45 -44
  131. package/src/duckdb/src/function/function_set.cpp +9 -9
  132. package/src/duckdb/src/function/pragma/pragma_queries.cpp +1 -2
  133. package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +21 -5
  134. package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +2 -2
  135. package/src/duckdb/src/function/scalar/list/list_select.cpp +5 -2
  136. package/src/duckdb/src/function/scalar/list/list_zip.cpp +5 -4
  137. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +60 -32
  138. package/src/duckdb/src/function/scalar/sequence/nextval.cpp +1 -1
  139. package/src/duckdb/src/function/scalar/strftime_format.cpp +31 -25
  140. package/src/duckdb/src/function/scalar/string/caseconvert.cpp +6 -6
  141. package/src/duckdb/src/function/scalar/string/length.cpp +23 -2
  142. package/src/duckdb/src/function/scalar/string/like.cpp +1 -1
  143. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +1 -1
  144. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +3 -3
  145. package/src/duckdb/src/function/table/arrow/arrow_array_scan_state.cpp +1 -1
  146. package/src/duckdb/src/function/table/arrow.cpp +7 -1
  147. package/src/duckdb/src/function/table/copy_csv.cpp +17 -13
  148. package/src/duckdb/src/function/table/read_csv.cpp +52 -39
  149. package/src/duckdb/src/function/table/sniff_csv.cpp +7 -13
  150. package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +1 -1
  151. package/src/duckdb/src/function/table/system/duckdb_databases.cpp +7 -1
  152. package/src/duckdb/src/function/table/system/duckdb_extensions.cpp +12 -2
  153. package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +1 -2
  154. package/src/duckdb/src/function/table/system/duckdb_tables.cpp +2 -2
  155. package/src/duckdb/src/function/table/system/pragma_metadata_info.cpp +9 -2
  156. package/src/duckdb/src/function/table/system/pragma_table_info.cpp +10 -6
  157. package/src/duckdb/src/function/table/table_scan.cpp +1 -4
  158. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  159. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +6 -2
  160. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_index_entry.hpp +1 -1
  161. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_schema_entry.hpp +1 -1
  162. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +1 -1
  163. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +6 -1
  164. package/src/duckdb/src/include/duckdb/catalog/catalog_set.hpp +3 -3
  165. package/src/duckdb/src/include/duckdb/catalog/default/default_functions.hpp +3 -3
  166. package/src/duckdb/src/include/duckdb/catalog/dependency.hpp +26 -4
  167. package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +39 -6
  168. package/src/duckdb/src/include/duckdb/catalog/dependency_manager.hpp +19 -14
  169. package/src/duckdb/src/include/duckdb/catalog/duck_catalog.hpp +1 -1
  170. package/src/duckdb/src/include/duckdb/catalog/standard_entry.hpp +4 -0
  171. package/src/duckdb/src/include/duckdb/common/allocator.hpp +3 -3
  172. package/src/duckdb/src/include/duckdb/common/arrow/arrow_wrapper.hpp +1 -1
  173. package/src/duckdb/src/include/duckdb/common/bit_utils.hpp +1 -1
  174. package/src/duckdb/src/include/duckdb/common/box_renderer.hpp +16 -16
  175. package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +0 -1
  176. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +32 -0
  177. package/src/duckdb/src/include/duckdb/common/enums/expression_type.hpp +4 -2
  178. package/src/duckdb/src/include/duckdb/common/exception/binder_exception.hpp +14 -10
  179. package/src/duckdb/src/include/duckdb/common/exception/catalog_exception.hpp +4 -4
  180. package/src/duckdb/src/include/duckdb/common/exception/conversion_exception.hpp +6 -6
  181. package/src/duckdb/src/include/duckdb/common/exception/http_exception.hpp +3 -3
  182. package/src/duckdb/src/include/duckdb/common/exception/parser_exception.hpp +4 -4
  183. package/src/duckdb/src/include/duckdb/common/exception/transaction_exception.hpp +2 -2
  184. package/src/duckdb/src/include/duckdb/common/exception.hpp +57 -58
  185. package/src/duckdb/src/include/duckdb/common/exception_format_value.hpp +2 -2
  186. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +2 -2
  187. package/src/duckdb/src/include/duckdb/common/file_open_flags.hpp +134 -0
  188. package/src/duckdb/src/include/duckdb/common/file_opener.hpp +9 -6
  189. package/src/duckdb/src/include/duckdb/common/file_system.hpp +35 -36
  190. package/src/duckdb/src/include/duckdb/common/filename_pattern.hpp +4 -6
  191. package/src/duckdb/src/include/duckdb/common/fixed_size_map.hpp +13 -13
  192. package/src/duckdb/src/include/duckdb/common/helper.hpp +42 -47
  193. package/src/duckdb/src/include/duckdb/common/http_state.hpp +1 -1
  194. package/src/duckdb/src/include/duckdb/common/hugeint.hpp +2 -2
  195. package/src/duckdb/src/include/duckdb/common/index_vector.hpp +10 -10
  196. package/src/duckdb/src/include/duckdb/common/local_file_system.hpp +13 -10
  197. package/src/duckdb/src/include/duckdb/common/memory_safety.hpp +3 -3
  198. package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +1 -1
  199. package/src/duckdb/src/include/duckdb/common/opener_file_system.hpp +50 -24
  200. package/src/duckdb/src/include/duckdb/common/operator/abs.hpp +12 -4
  201. package/src/duckdb/src/include/duckdb/common/optional_ptr.hpp +5 -5
  202. package/src/duckdb/src/include/duckdb/common/pipe_file_system.hpp +1 -1
  203. package/src/duckdb/src/include/duckdb/common/platform.h +1 -1
  204. package/src/duckdb/src/include/duckdb/common/printer.hpp +5 -5
  205. package/src/duckdb/src/include/duckdb/common/profiler.hpp +2 -2
  206. package/src/duckdb/src/include/duckdb/common/progress_bar/display/terminal_progress_bar_display.hpp +5 -5
  207. package/src/duckdb/src/include/duckdb/common/random_engine.hpp +1 -1
  208. package/src/duckdb/src/include/duckdb/common/re2_regex.hpp +7 -7
  209. package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_reader.hpp +3 -0
  210. package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_writer.hpp +2 -2
  211. package/src/duckdb/src/include/duckdb/common/serializer/deserialization_data.hpp +17 -6
  212. package/src/duckdb/src/include/duckdb/common/serializer/deserializer.hpp +12 -0
  213. package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +14 -0
  214. package/src/duckdb/src/include/duckdb/common/serializer/serializer.hpp +16 -0
  215. package/src/duckdb/src/include/duckdb/common/sort/duckdb_pdqsort.hpp +3 -0
  216. package/src/duckdb/src/include/duckdb/common/sort/partition_state.hpp +2 -0
  217. package/src/duckdb/src/include/duckdb/common/string_util.hpp +4 -4
  218. package/src/duckdb/src/include/duckdb/common/tree_renderer.hpp +24 -25
  219. package/src/duckdb/src/include/duckdb/common/typedefs.hpp +5 -5
  220. package/src/duckdb/src/include/duckdb/common/types/cast_helpers.hpp +1 -2
  221. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection.hpp +10 -10
  222. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection_iterators.hpp +5 -5
  223. package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +1 -1
  224. package/src/duckdb/src/include/duckdb/common/types/constraint_conflict_info.hpp +1 -2
  225. package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +2 -2
  226. package/src/duckdb/src/include/duckdb/common/types/date.hpp +1 -1
  227. package/src/duckdb/src/include/duckdb/common/types/hash.hpp +5 -5
  228. package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +1 -1
  229. package/src/duckdb/src/include/duckdb/common/types/interval.hpp +4 -4
  230. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +1 -1
  231. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_layout.hpp +10 -3
  232. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_segment.hpp +1 -1
  233. package/src/duckdb/src/include/duckdb/common/types/selection_vector.hpp +12 -12
  234. package/src/duckdb/src/include/duckdb/common/types/string_heap.hpp +1 -1
  235. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +21 -20
  236. package/src/duckdb/src/include/duckdb/common/types/time.hpp +2 -2
  237. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +3 -3
  238. package/src/duckdb/src/include/duckdb/common/types/uuid.hpp +2 -2
  239. package/src/duckdb/src/include/duckdb/common/types/value.hpp +2 -2
  240. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +15 -7
  241. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +1 -1
  242. package/src/duckdb/src/include/duckdb/common/types.hpp +14 -10
  243. package/src/duckdb/src/include/duckdb/common/uhugeint.hpp +2 -2
  244. package/src/duckdb/src/include/duckdb/common/union_by_name.hpp +1 -1
  245. package/src/duckdb/src/include/duckdb/common/unique_ptr.hpp +15 -14
  246. package/src/duckdb/src/include/duckdb/common/vector.hpp +21 -21
  247. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +2 -0
  248. package/src/duckdb/src/include/duckdb/common/vector_operations/general_cast.hpp +2 -1
  249. package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +2 -3
  250. package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -2
  251. package/src/duckdb/src/include/duckdb/common/vector_operations/vector_operations.hpp +50 -32
  252. package/src/duckdb/src/include/duckdb/common/virtual_file_system.hpp +10 -11
  253. package/src/duckdb/src/include/duckdb/core_functions/aggregate/distributive_functions.hpp +1 -1
  254. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +13 -1
  255. package/src/duckdb/src/include/duckdb/core_functions/function_list.hpp +1 -1
  256. package/src/duckdb/src/include/duckdb/core_functions/lambda_functions.hpp +2 -1
  257. package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +1 -1
  258. package/src/duckdb/src/include/duckdb/execution/column_binding_resolver.hpp +1 -1
  259. package/src/duckdb/src/include/duckdb/execution/expression_executor.hpp +1 -1
  260. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +2 -5
  261. package/src/duckdb/src/include/duckdb/execution/merge_sort_tree.hpp +3 -3
  262. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/aggregate_object.hpp +2 -2
  263. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/distinct_aggregate_data.hpp +1 -1
  264. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/base_scanner.hpp +1 -1
  265. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/column_count_scanner.hpp +0 -3
  266. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_buffer.hpp +9 -6
  267. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_buffer_manager.hpp +3 -0
  268. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_error.hpp +40 -22
  269. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_file_handle.hpp +5 -0
  270. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_file_scanner.hpp +1 -0
  271. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_option.hpp +6 -4
  272. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_reader_options.hpp +24 -10
  273. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state_machine.hpp +4 -0
  274. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/global_csv_state.hpp +3 -1
  275. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/skip_scanner.hpp +0 -3
  276. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/string_value_scanner.hpp +58 -17
  277. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_batch_collector.hpp +1 -1
  278. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_explain_analyze.hpp +1 -1
  279. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_prepare.hpp +3 -3
  280. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_set.hpp +1 -1
  281. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_vacuum.hpp +4 -1
  282. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_rejects_table.hpp +16 -5
  283. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +6 -6
  284. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +2 -1
  285. package/src/duckdb/src/include/duckdb/execution/window_executor.hpp +1 -1
  286. package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +1 -1
  287. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +1 -1
  288. package/src/duckdb/src/include/duckdb/function/cast/cast_function_set.hpp +5 -5
  289. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +4 -4
  290. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +6 -6
  291. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +4 -4
  292. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +10 -13
  293. package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
  294. package/src/duckdb/src/include/duckdb/function/function_binder.hpp +24 -23
  295. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +1 -1
  296. package/src/duckdb/src/include/duckdb/function/function_set.hpp +1 -1
  297. package/src/duckdb/src/include/duckdb/function/pragma_function.hpp +1 -1
  298. package/src/duckdb/src/include/duckdb/function/scalar/regexp.hpp +3 -3
  299. package/src/duckdb/src/include/duckdb/function/scalar/strftime_format.hpp +7 -7
  300. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +3 -3
  301. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +6 -6
  302. package/src/duckdb/src/include/duckdb/function/table/arrow/arrow_duck_schema.hpp +4 -4
  303. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +2 -2
  304. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +1 -3
  305. package/src/duckdb/src/include/duckdb/function/table/table_scan.hpp +1 -1
  306. package/src/duckdb/src/include/duckdb/function/table_function.hpp +12 -11
  307. package/src/duckdb/src/include/duckdb/function/udf_function.hpp +66 -60
  308. package/src/duckdb/src/include/duckdb/main/appender.hpp +6 -6
  309. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +3 -1
  310. package/src/duckdb/src/include/duckdb/main/buffered_data/buffered_data.hpp +2 -2
  311. package/src/duckdb/src/include/duckdb/main/buffered_data/simple_buffered_data.hpp +1 -1
  312. package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +2 -2
  313. package/src/duckdb/src/include/duckdb/main/chunk_scan_state/query_result.hpp +2 -2
  314. package/src/duckdb/src/include/duckdb/main/client_context.hpp +1 -1
  315. package/src/duckdb/src/include/duckdb/main/client_context_file_opener.hpp +3 -2
  316. package/src/duckdb/src/include/duckdb/main/client_data.hpp +1 -0
  317. package/src/duckdb/src/include/duckdb/main/client_properties.hpp +2 -1
  318. package/src/duckdb/src/include/duckdb/main/config.hpp +14 -5
  319. package/src/duckdb/src/include/duckdb/main/connection.hpp +27 -26
  320. package/src/duckdb/src/include/duckdb/main/database.hpp +19 -3
  321. package/src/duckdb/src/include/duckdb/main/database_file_opener.hpp +58 -0
  322. package/src/duckdb/src/include/duckdb/main/database_path_and_type.hpp +2 -2
  323. package/src/duckdb/src/include/duckdb/main/error_manager.hpp +6 -6
  324. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +8 -0
  325. package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +1 -0
  326. package/src/duckdb/src/include/duckdb/main/external_dependencies.hpp +2 -1
  327. package/src/duckdb/src/include/duckdb/main/prepared_statement.hpp +8 -8
  328. package/src/duckdb/src/include/duckdb/main/query_profiler.hpp +2 -59
  329. package/src/duckdb/src/include/duckdb/main/query_result.hpp +3 -3
  330. package/src/duckdb/src/include/duckdb/main/relation/query_relation.hpp +1 -1
  331. package/src/duckdb/src/include/duckdb/main/relation.hpp +1 -1
  332. package/src/duckdb/src/include/duckdb/main/secret/secret.hpp +11 -7
  333. package/src/duckdb/src/include/duckdb/main/secret/secret_manager.hpp +2 -2
  334. package/src/duckdb/src/include/duckdb/main/secret/secret_storage.hpp +4 -4
  335. package/src/duckdb/src/include/duckdb/main/settings.hpp +78 -70
  336. package/src/duckdb/src/include/duckdb/optimizer/column_lifetime_analyzer.hpp +45 -0
  337. package/src/duckdb/src/include/duckdb/optimizer/compressed_materialization.hpp +11 -13
  338. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
  339. package/src/duckdb/src/include/duckdb/optimizer/join_order/cost_model.hpp +1 -1
  340. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_node.hpp +1 -1
  341. package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph.hpp +1 -1
  342. package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph_manager.hpp +1 -1
  343. package/src/duckdb/src/include/duckdb/optimizer/join_order/relation_manager.hpp +1 -1
  344. package/src/duckdb/src/include/duckdb/optimizer/matcher/expression_matcher.hpp +7 -7
  345. package/src/duckdb/src/include/duckdb/optimizer/matcher/function_matcher.hpp +7 -7
  346. package/src/duckdb/src/include/duckdb/optimizer/matcher/type_matcher.hpp +1 -1
  347. package/src/duckdb/src/include/duckdb/optimizer/optimizer.hpp +3 -0
  348. package/src/duckdb/src/include/duckdb/optimizer/statistics_propagator.hpp +32 -30
  349. package/src/duckdb/src/include/duckdb/optimizer/unnest_rewriter.hpp +1 -1
  350. package/src/duckdb/src/include/duckdb/parallel/event.hpp +1 -1
  351. package/src/duckdb/src/include/duckdb/parallel/executor_task.hpp +1 -1
  352. package/src/duckdb/src/include/duckdb/parallel/interrupt.hpp +2 -2
  353. package/src/duckdb/src/include/duckdb/parallel/pipeline_event.hpp +1 -1
  354. package/src/duckdb/src/include/duckdb/parser/column_list.hpp +4 -4
  355. package/src/duckdb/src/include/duckdb/parser/constraints/unique_constraint.hpp +49 -8
  356. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
  357. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
  358. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  359. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_scalar_function_info.hpp +1 -1
  360. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_function_info.hpp +1 -1
  361. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +1 -1
  362. package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_database_info.hpp +40 -0
  363. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_function_info.hpp +2 -1
  364. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_index_info.hpp +1 -0
  365. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +2 -1
  366. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_macro_info.hpp +1 -1
  367. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_pragma_function_info.hpp +1 -1
  368. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_secret_info.hpp +2 -2
  369. package/src/duckdb/src/include/duckdb/parser/parsed_data/extra_drop_info.hpp +3 -3
  370. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +3 -2
  371. package/src/duckdb/src/include/duckdb/parser/parsed_data/vacuum_info.hpp +2 -5
  372. package/src/duckdb/src/include/duckdb/parser/parser.hpp +1 -1
  373. package/src/duckdb/src/include/duckdb/parser/parser_extension.hpp +3 -3
  374. package/src/duckdb/src/include/duckdb/parser/query_error_context.hpp +1 -1
  375. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +3 -5
  376. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -2
  377. package/src/duckdb/src/include/duckdb/planner/binder.hpp +16 -9
  378. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
  379. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
  380. package/src/duckdb/src/include/duckdb/planner/expression/bound_default_expression.hpp +1 -1
  381. package/src/duckdb/src/include/duckdb/planner/expression/bound_expanded_expression.hpp +34 -0
  382. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
  383. package/src/duckdb/src/include/duckdb/planner/expression.hpp +1 -1
  384. package/src/duckdb/src/include/duckdb/planner/expression_binder/base_select_binder.hpp +5 -8
  385. package/src/duckdb/src/include/duckdb/planner/expression_binder/column_alias_binder.hpp +3 -4
  386. package/src/duckdb/src/include/duckdb/planner/expression_binder/group_binder.hpp +3 -2
  387. package/src/duckdb/src/include/duckdb/planner/expression_binder/having_binder.hpp +3 -5
  388. package/src/duckdb/src/include/duckdb/planner/expression_binder/order_binder.hpp +6 -14
  389. package/src/duckdb/src/include/duckdb/planner/expression_binder/qualify_binder.hpp +3 -6
  390. package/src/duckdb/src/include/duckdb/planner/expression_binder/select_bind_state.hpp +52 -0
  391. package/src/duckdb/src/include/duckdb/planner/expression_binder/select_binder.hpp +4 -10
  392. package/src/duckdb/src/include/duckdb/planner/expression_binder/table_function_binder.hpp +5 -2
  393. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -0
  394. package/src/duckdb/src/include/duckdb/planner/expression_iterator.hpp +2 -0
  395. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +3 -6
  396. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +2 -0
  397. package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +1 -0
  398. package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +1 -0
  399. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_database.hpp +4 -12
  400. package/src/duckdb/src/include/duckdb/planner/operator/logical_create_secret.hpp +1 -1
  401. package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +2 -2
  402. package/src/duckdb/src/include/duckdb/planner/operator/logical_delim_get.hpp +1 -1
  403. package/src/duckdb/src/include/duckdb/planner/operator/logical_dummy_scan.hpp +1 -1
  404. package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +1 -1
  405. package/src/duckdb/src/include/duckdb/planner/operator/logical_export.hpp +2 -2
  406. package/src/duckdb/src/include/duckdb/planner/operator/logical_expression_get.hpp +2 -2
  407. package/src/duckdb/src/include/duckdb/planner/operator/logical_extension_operator.hpp +2 -2
  408. package/src/duckdb/src/include/duckdb/planner/operator/logical_materialized_cte.hpp +2 -2
  409. package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +1 -1
  410. package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +3 -2
  411. package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +3 -3
  412. package/src/duckdb/src/include/duckdb/planner/operator/logical_reset.hpp +1 -1
  413. package/src/duckdb/src/include/duckdb/planner/operator/logical_set.hpp +2 -1
  414. package/src/duckdb/src/include/duckdb/planner/operator/logical_vacuum.hpp +52 -0
  415. package/src/duckdb/src/include/duckdb/planner/operator_extension.hpp +1 -1
  416. package/src/duckdb/src/include/duckdb/planner/parsed_data/bound_create_table_info.hpp +2 -2
  417. package/src/duckdb/src/include/duckdb/planner/query_node/bound_select_node.hpp +5 -4
  418. package/src/duckdb/src/include/duckdb/planner/subquery/flatten_dependent_join.hpp +2 -2
  419. package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +4 -1
  420. package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +1 -1
  421. package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +3 -3
  422. package/src/duckdb/src/include/duckdb/storage/checkpoint/row_group_writer.hpp +2 -3
  423. package/src/duckdb/src/include/duckdb/storage/checkpoint/string_checkpoint_state.hpp +1 -1
  424. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +3 -3
  425. package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +5 -5
  426. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_analyze.hpp +1 -1
  427. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_compress.hpp +1 -1
  428. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_fetch.hpp +1 -1
  429. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_scan.hpp +1 -1
  430. package/src/duckdb/src/include/duckdb/storage/compression/alprd/algorithm/alprd.hpp +3 -3
  431. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_analyze.hpp +2 -2
  432. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_compress.hpp +1 -1
  433. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_fetch.hpp +1 -1
  434. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_scan.hpp +3 -3
  435. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/flag_buffer.hpp +1 -1
  436. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/leading_zero_buffer.hpp +3 -3
  437. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp.hpp +3 -3
  438. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +0 -1
  439. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_fetch.hpp +1 -1
  440. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_scan.hpp +4 -4
  441. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas.hpp +4 -4
  442. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +0 -1
  443. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_fetch.hpp +1 -1
  444. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_scan.hpp +3 -3
  445. package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +1 -1
  446. package/src/duckdb/src/include/duckdb/storage/index.hpp +1 -1
  447. package/src/duckdb/src/include/duckdb/storage/magic_bytes.hpp +1 -1
  448. package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +3 -3
  449. package/src/duckdb/src/include/duckdb/storage/optimistic_data_writer.hpp +1 -1
  450. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
  451. package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +4 -1
  452. package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +24 -24
  453. package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats_union.hpp +3 -3
  454. package/src/duckdb/src/include/duckdb/storage/statistics/segment_statistics.hpp +2 -2
  455. package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +2 -2
  456. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +4 -4
  457. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +9 -6
  458. package/src/duckdb/src/include/duckdb/storage/table/append_state.hpp +1 -1
  459. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +2 -2
  460. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +1 -1
  461. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +10 -1
  462. package/src/duckdb/src/include/duckdb/storage/table/data_table_info.hpp +3 -2
  463. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +1 -1
  464. package/src/duckdb/src/include/duckdb/storage/table/row_group_segment_tree.hpp +1 -1
  465. package/src/duckdb/src/include/duckdb/storage/table/row_version_manager.hpp +2 -1
  466. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +3 -3
  467. package/src/duckdb/src/include/duckdb/storage/table/segment_lock.hpp +1 -1
  468. package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +4 -4
  469. package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +2 -0
  470. package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +3 -2
  471. package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +1 -1
  472. package/src/duckdb/src/include/duckdb/storage/table/update_segment.hpp +1 -1
  473. package/src/duckdb/src/include/duckdb/storage/table_storage_info.hpp +2 -1
  474. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +1 -1
  475. package/src/duckdb/src/include/duckdb/transaction/delete_info.hpp +20 -1
  476. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +1 -1
  477. package/src/duckdb/src/include/duckdb/transaction/transaction_data.hpp +1 -1
  478. package/src/duckdb/src/include/duckdb/transaction/undo_buffer.hpp +1 -1
  479. package/src/duckdb/src/include/duckdb/transaction/update_info.hpp +1 -1
  480. package/src/duckdb/src/main/appender.cpp +1 -1
  481. package/src/duckdb/src/main/attached_database.cpp +11 -3
  482. package/src/duckdb/src/main/capi/arrow-c.cpp +6 -2
  483. package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
  484. package/src/duckdb/src/main/capi/duckdb-c.cpp +1 -1
  485. package/src/duckdb/src/main/capi/pending-c.cpp +1 -1
  486. package/src/duckdb/src/main/capi/prepared-c.cpp +2 -2
  487. package/src/duckdb/src/main/capi/result-c.cpp +4 -4
  488. package/src/duckdb/src/main/client_context.cpp +4 -12
  489. package/src/duckdb/src/main/client_context_file_opener.cpp +15 -3
  490. package/src/duckdb/src/main/client_data.cpp +5 -0
  491. package/src/duckdb/src/main/config.cpp +82 -82
  492. package/src/duckdb/src/main/database.cpp +31 -7
  493. package/src/duckdb/src/main/database_manager.cpp +3 -2
  494. package/src/duckdb/src/main/database_path_and_type.cpp +4 -4
  495. package/src/duckdb/src/main/error_manager.cpp +1 -1
  496. package/src/duckdb/src/main/extension/extension_alias.cpp +9 -9
  497. package/src/duckdb/src/main/extension/extension_helper.cpp +10 -5
  498. package/src/duckdb/src/main/extension/extension_install.cpp +1 -1
  499. package/src/duckdb/src/main/extension/extension_load.cpp +111 -37
  500. package/src/duckdb/src/main/query_profiler.cpp +1 -118
  501. package/src/duckdb/src/main/secret/secret_manager.cpp +1 -2
  502. package/src/duckdb/src/main/secret/secret_storage.cpp +1 -1
  503. package/src/duckdb/src/main/settings/settings.cpp +81 -65
  504. package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +8 -1
  505. package/src/duckdb/src/optimizer/compressed_materialization/compress_aggregate.cpp +3 -0
  506. package/src/duckdb/src/optimizer/compressed_materialization.cpp +26 -28
  507. package/src/duckdb/src/optimizer/cse_optimizer.cpp +5 -5
  508. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -6
  509. package/src/duckdb/src/optimizer/optimizer.cpp +14 -17
  510. package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +16 -5
  511. package/src/duckdb/src/optimizer/pushdown/pushdown_inner_join.cpp +7 -4
  512. package/src/duckdb/src/optimizer/pushdown/pushdown_set_operation.cpp +2 -2
  513. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +3 -3
  514. package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +2 -2
  515. package/src/duckdb/src/optimizer/statistics/expression/propagate_aggregate.cpp +1 -1
  516. package/src/duckdb/src/optimizer/statistics/expression/propagate_between.cpp +8 -8
  517. package/src/duckdb/src/optimizer/statistics/expression/propagate_case.cpp +1 -1
  518. package/src/duckdb/src/optimizer/statistics/expression/propagate_cast.cpp +1 -1
  519. package/src/duckdb/src/optimizer/statistics/expression/propagate_columnref.cpp +1 -1
  520. package/src/duckdb/src/optimizer/statistics/expression/propagate_comparison.cpp +7 -7
  521. package/src/duckdb/src/optimizer/statistics/expression/propagate_conjunction.cpp +6 -6
  522. package/src/duckdb/src/optimizer/statistics/expression/propagate_constant.cpp +1 -1
  523. package/src/duckdb/src/optimizer/statistics/expression/propagate_function.cpp +2 -2
  524. package/src/duckdb/src/optimizer/statistics/expression/propagate_operator.cpp +10 -10
  525. package/src/duckdb/src/optimizer/statistics/operator/propagate_aggregate.cpp +1 -1
  526. package/src/duckdb/src/optimizer/statistics/operator/propagate_cross_product.cpp +1 -1
  527. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +14 -7
  528. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
  529. package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +9 -9
  530. package/src/duckdb/src/optimizer/statistics/operator/propagate_limit.cpp +1 -1
  531. package/src/duckdb/src/optimizer/statistics/operator/propagate_order.cpp +1 -1
  532. package/src/duckdb/src/optimizer/statistics/operator/propagate_projection.cpp +2 -2
  533. package/src/duckdb/src/optimizer/statistics/operator/propagate_set_operation.cpp +1 -1
  534. package/src/duckdb/src/optimizer/statistics/operator/propagate_window.cpp +1 -1
  535. package/src/duckdb/src/optimizer/statistics_propagator.cpp +39 -18
  536. package/src/duckdb/src/parallel/pipeline_finish_event.cpp +1 -1
  537. package/src/duckdb/src/parallel/task_scheduler.cpp +8 -1
  538. package/src/duckdb/src/parser/constraints/unique_constraint.cpp +4 -2
  539. package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +64 -0
  540. package/src/duckdb/src/parser/parsed_data/vacuum_info.cpp +1 -0
  541. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +13 -5
  542. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +24 -0
  543. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +1 -8
  544. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +2 -1
  545. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +3 -0
  546. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +2 -6
  547. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +2 -6
  548. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +2 -6
  549. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +1 -1
  550. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +5 -2
  551. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +2 -8
  552. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +1 -6
  553. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +3 -2
  554. package/src/duckdb/src/parser/transformer.cpp +14 -2
  555. package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +40 -17
  556. package/src/duckdb/src/planner/binder/expression/bind_unnest_expression.cpp +8 -3
  557. package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +32 -30
  558. package/src/duckdb/src/planner/binder/query_node/bind_cte_node.cpp +28 -17
  559. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +146 -101
  560. package/src/duckdb/src/planner/binder/query_node/bind_setop_node.cpp +28 -26
  561. package/src/duckdb/src/planner/binder/query_node/plan_cte_node.cpp +29 -0
  562. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +10 -10
  563. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +3 -2
  564. package/src/duckdb/src/planner/binder/statement/bind_copy_database.cpp +23 -28
  565. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +11 -12
  566. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +9 -11
  567. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +10 -13
  568. package/src/duckdb/src/planner/binder/statement/bind_pragma.cpp +3 -3
  569. package/src/duckdb/src/planner/binder/statement/bind_set.cpp +3 -0
  570. package/src/duckdb/src/planner/binder/statement/bind_vacuum.cpp +66 -65
  571. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +54 -46
  572. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +3 -0
  573. package/src/duckdb/src/planner/binder/tableref/bind_subqueryref.cpp +1 -1
  574. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +5 -5
  575. package/src/duckdb/src/planner/binder.cpp +78 -6
  576. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +11 -3
  577. package/src/duckdb/src/planner/expression/bound_expanded_expression.cpp +22 -0
  578. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +11 -58
  579. package/src/duckdb/src/planner/expression_binder/column_alias_binder.cpp +5 -8
  580. package/src/duckdb/src/planner/expression_binder/group_binder.cpp +5 -4
  581. package/src/duckdb/src/planner/expression_binder/having_binder.cpp +5 -19
  582. package/src/duckdb/src/planner/expression_binder/lateral_binder.cpp +8 -8
  583. package/src/duckdb/src/planner/expression_binder/order_binder.cpp +42 -26
  584. package/src/duckdb/src/planner/expression_binder/qualify_binder.cpp +3 -22
  585. package/src/duckdb/src/planner/expression_binder/select_bind_state.cpp +52 -0
  586. package/src/duckdb/src/planner/expression_binder/select_binder.cpp +43 -5
  587. package/src/duckdb/src/planner/expression_binder/table_function_binder.cpp +19 -7
  588. package/src/duckdb/src/planner/logical_operator.cpp +20 -3
  589. package/src/duckdb/src/planner/operator/logical_copy_database.cpp +4 -14
  590. package/src/duckdb/src/planner/operator/logical_delete.cpp +1 -1
  591. package/src/duckdb/src/planner/operator/logical_get.cpp +1 -1
  592. package/src/duckdb/src/planner/operator/logical_insert.cpp +1 -1
  593. package/src/duckdb/src/planner/operator/logical_update.cpp +1 -1
  594. package/src/duckdb/src/planner/operator/logical_vacuum.cpp +65 -0
  595. package/src/duckdb/src/planner/planner.cpp +4 -4
  596. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +26 -27
  597. package/src/duckdb/src/storage/arena_allocator.cpp +9 -0
  598. package/src/duckdb/src/storage/buffer/buffer_pool_reservation.cpp +1 -1
  599. package/src/duckdb/src/storage/buffer_manager.cpp +2 -10
  600. package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +2 -3
  601. package/src/duckdb/src/storage/checkpoint_manager.cpp +15 -8
  602. package/src/duckdb/src/storage/compression/bitpacking.cpp +6 -1
  603. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +1 -1
  604. package/src/duckdb/src/storage/data_pointer.cpp +1 -1
  605. package/src/duckdb/src/storage/data_table.cpp +18 -7
  606. package/src/duckdb/src/storage/local_storage.cpp +8 -5
  607. package/src/duckdb/src/storage/magic_bytes.cpp +6 -5
  608. package/src/duckdb/src/storage/partial_block_manager.cpp +1 -1
  609. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +20 -9
  610. package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +12 -10
  611. package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +23 -0
  612. package/src/duckdb/src/storage/single_file_block_manager.cpp +46 -19
  613. package/src/duckdb/src/storage/standard_buffer_manager.cpp +21 -5
  614. package/src/duckdb/src/storage/statistics/array_stats.cpp +1 -1
  615. package/src/duckdb/src/storage/statistics/base_statistics.cpp +2 -3
  616. package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
  617. package/src/duckdb/src/storage/statistics/struct_stats.cpp +1 -1
  618. package/src/duckdb/src/storage/storage_info.cpp +19 -19
  619. package/src/duckdb/src/storage/storage_manager.cpp +18 -13
  620. package/src/duckdb/src/storage/table/chunk_info.cpp +11 -3
  621. package/src/duckdb/src/storage/table/column_data.cpp +88 -66
  622. package/src/duckdb/src/storage/table/row_group.cpp +7 -7
  623. package/src/duckdb/src/storage/table/row_version_manager.cpp +2 -2
  624. package/src/duckdb/src/storage/table/standard_column_data.cpp +4 -0
  625. package/src/duckdb/src/storage/table/update_segment.cpp +3 -1
  626. package/src/duckdb/src/storage/table_index_list.cpp +6 -1
  627. package/src/duckdb/src/storage/temporary_file_manager.cpp +1 -1
  628. package/src/duckdb/src/storage/wal_replay.cpp +8 -7
  629. package/src/duckdb/src/storage/write_ahead_log.cpp +3 -4
  630. package/src/duckdb/src/transaction/cleanup_state.cpp +10 -3
  631. package/src/duckdb/src/transaction/commit_state.cpp +11 -4
  632. package/src/duckdb/src/transaction/duck_transaction.cpp +23 -3
  633. package/src/duckdb/src/transaction/rollback_state.cpp +1 -1
  634. package/src/duckdb/src/transaction/transaction_context.cpp +1 -1
  635. package/src/duckdb/src/transaction/undo_buffer.cpp +3 -1
  636. package/src/duckdb/third_party/fmt/include/fmt/core.h +0 -5
  637. package/src/duckdb/third_party/fsst/fsst.h +1 -1
  638. package/src/duckdb/third_party/fsst/libfsst.cpp +1 -140
  639. package/src/duckdb/third_party/fsst/libfsst.hpp +0 -13
  640. package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +4 -0
  641. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +8 -1
  642. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +2 -1
  643. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +15401 -15354
  644. package/src/duckdb/third_party/libpg_query/src_backend_parser_scan.cpp +299 -538
  645. package/src/duckdb/third_party/lz4/lz4.cpp +2605 -0
  646. package/src/duckdb/third_party/lz4/lz4.hpp +843 -0
  647. package/src/duckdb/third_party/parquet/parquet_types.cpp +3 -0
  648. package/src/duckdb/third_party/parquet/parquet_types.h +2 -1
  649. package/src/duckdb/third_party/re2/re2/bitmap256.cc +44 -0
  650. package/src/duckdb/third_party/re2/re2/bitmap256.h +3 -35
  651. package/src/duckdb/third_party/re2/re2/bitstate.cc +31 -24
  652. package/src/duckdb/third_party/re2/re2/compile.cc +146 -164
  653. package/src/duckdb/third_party/re2/re2/dfa.cc +174 -181
  654. package/src/duckdb/third_party/re2/re2/filtered_re2.cc +19 -3
  655. package/src/duckdb/third_party/re2/re2/filtered_re2.h +27 -23
  656. package/src/duckdb/third_party/re2/re2/mimics_pcre.cc +21 -11
  657. package/src/duckdb/third_party/re2/re2/nfa.cc +91 -131
  658. package/src/duckdb/third_party/re2/re2/onepass.cc +11 -10
  659. package/src/duckdb/third_party/re2/re2/parse.cc +171 -154
  660. package/src/duckdb/third_party/re2/re2/perl_groups.cc +35 -35
  661. package/src/duckdb/third_party/re2/re2/pod_array.h +55 -0
  662. package/src/duckdb/third_party/re2/re2/prefilter.cc +40 -40
  663. package/src/duckdb/third_party/re2/re2/prefilter.h +24 -2
  664. package/src/duckdb/third_party/re2/re2/prefilter_tree.cc +70 -84
  665. package/src/duckdb/third_party/re2/re2/prefilter_tree.h +5 -4
  666. package/src/duckdb/third_party/re2/re2/prog.cc +315 -58
  667. package/src/duckdb/third_party/re2/re2/prog.h +77 -44
  668. package/src/duckdb/third_party/re2/re2/re2.cc +333 -221
  669. package/src/duckdb/third_party/re2/re2/re2.h +277 -201
  670. package/src/duckdb/third_party/re2/re2/regexp.cc +137 -105
  671. package/src/duckdb/third_party/re2/re2/regexp.h +45 -40
  672. package/src/duckdb/third_party/re2/re2/set.cc +40 -17
  673. package/src/duckdb/third_party/re2/re2/set.h +11 -6
  674. package/src/duckdb/third_party/re2/re2/simplify.cc +50 -41
  675. package/src/duckdb/third_party/re2/re2/sparse_array.h +392 -0
  676. package/src/duckdb/third_party/re2/re2/sparse_set.h +264 -0
  677. package/src/duckdb/third_party/re2/re2/stringpiece.cc +1 -1
  678. package/src/duckdb/third_party/re2/re2/stringpiece.h +11 -8
  679. package/src/duckdb/third_party/re2/re2/tostring.cc +8 -6
  680. package/src/duckdb/third_party/re2/re2/unicode_casefold.cc +39 -10
  681. package/src/duckdb/third_party/re2/re2/unicode_casefold.h +1 -1
  682. package/src/duckdb/third_party/re2/re2/unicode_groups.cc +5019 -4566
  683. package/src/duckdb/third_party/re2/re2/unicode_groups.h +1 -1
  684. package/src/duckdb/third_party/re2/re2/walker-inl.h +21 -20
  685. package/src/duckdb/third_party/re2/util/logging.h +14 -18
  686. package/src/duckdb/third_party/re2/util/mix.h +4 -4
  687. package/src/duckdb/third_party/re2/util/mutex.h +48 -15
  688. package/src/duckdb/third_party/re2/util/rune.cc +5 -5
  689. package/src/duckdb/third_party/re2/util/strutil.cc +1 -16
  690. package/src/duckdb/third_party/re2/util/strutil.h +1 -3
  691. package/src/duckdb/third_party/re2/util/utf.h +1 -1
  692. package/src/duckdb/third_party/re2/util/util.h +9 -1
  693. package/src/duckdb/third_party/utf8proc/include/utf8proc_wrapper.hpp +2 -0
  694. package/src/duckdb/third_party/utf8proc/utf8proc_wrapper.cpp +36 -1
  695. package/src/duckdb/ub_src_common.cpp +0 -2
  696. package/src/duckdb/ub_src_execution_physical_plan.cpp +2 -0
  697. package/src/duckdb/ub_src_planner_expression.cpp +2 -0
  698. package/src/duckdb/ub_src_planner_expression_binder.cpp +2 -0
  699. package/src/duckdb/ub_src_planner_operator.cpp +2 -0
@@ -24,12 +24,12 @@ struct SettingLookupResult {
24
24
  public:
25
25
  SettingLookupResult() : scope(SettingScope::INVALID) {
26
26
  }
27
- SettingLookupResult(SettingScope scope) : scope(scope) {
27
+ explicit SettingLookupResult(SettingScope scope) : scope(scope) {
28
28
  D_ASSERT(scope != SettingScope::INVALID);
29
29
  }
30
30
 
31
31
  public:
32
- operator bool() {
32
+ operator bool() { // NOLINT: allow implicit conversion to bool
33
33
  return scope != SettingScope::INVALID;
34
34
  }
35
35
 
@@ -49,7 +49,7 @@ struct AccessModeSetting {
49
49
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
50
50
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
51
51
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
52
- static Value GetSetting(ClientContext &context);
52
+ static Value GetSetting(const ClientContext &context);
53
53
  };
54
54
 
55
55
  struct AllowPersistentSecrets {
@@ -59,7 +59,7 @@ struct AllowPersistentSecrets {
59
59
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
60
60
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
61
61
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
62
- static Value GetSetting(ClientContext &context);
62
+ static Value GetSetting(const ClientContext &context);
63
63
  };
64
64
 
65
65
  struct CheckpointThresholdSetting {
@@ -69,7 +69,7 @@ struct CheckpointThresholdSetting {
69
69
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
70
70
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
71
71
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
72
- static Value GetSetting(ClientContext &context);
72
+ static Value GetSetting(const ClientContext &context);
73
73
  };
74
74
 
75
75
  struct DebugCheckpointAbort {
@@ -79,7 +79,7 @@ struct DebugCheckpointAbort {
79
79
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
80
80
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
81
81
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
82
- static Value GetSetting(ClientContext &context);
82
+ static Value GetSetting(const ClientContext &context);
83
83
  };
84
84
 
85
85
  struct DebugForceExternal {
@@ -89,7 +89,7 @@ struct DebugForceExternal {
89
89
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
90
90
  static void SetLocal(ClientContext &context, const Value &parameter);
91
91
  static void ResetLocal(ClientContext &context);
92
- static Value GetSetting(ClientContext &context);
92
+ static Value GetSetting(const ClientContext &context);
93
93
  };
94
94
 
95
95
  struct DebugForceNoCrossProduct {
@@ -99,7 +99,7 @@ struct DebugForceNoCrossProduct {
99
99
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
100
100
  static void SetLocal(ClientContext &context, const Value &parameter);
101
101
  static void ResetLocal(ClientContext &context);
102
- static Value GetSetting(ClientContext &context);
102
+ static Value GetSetting(const ClientContext &context);
103
103
  };
104
104
 
105
105
  struct OrderedAggregateThreshold {
@@ -109,7 +109,7 @@ struct OrderedAggregateThreshold {
109
109
  static constexpr const LogicalTypeId InputType = LogicalTypeId::UBIGINT; // NOLINT
110
110
  static void SetLocal(ClientContext &context, const Value &parameter);
111
111
  static void ResetLocal(ClientContext &context);
112
- static Value GetSetting(ClientContext &context);
112
+ static Value GetSetting(const ClientContext &context);
113
113
  };
114
114
 
115
115
  struct DebugAsOfIEJoin {
@@ -118,7 +118,7 @@ struct DebugAsOfIEJoin {
118
118
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN; // NOLINT
119
119
  static void SetLocal(ClientContext &context, const Value &parameter);
120
120
  static void ResetLocal(ClientContext &context);
121
- static Value GetSetting(ClientContext &context);
121
+ static Value GetSetting(const ClientContext &context);
122
122
  };
123
123
 
124
124
  struct PreferRangeJoins {
@@ -127,7 +127,7 @@ struct PreferRangeJoins {
127
127
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN; // NOLINT
128
128
  static void SetLocal(ClientContext &context, const Value &parameter);
129
129
  static void ResetLocal(ClientContext &context);
130
- static Value GetSetting(ClientContext &context);
130
+ static Value GetSetting(const ClientContext &context);
131
131
  };
132
132
 
133
133
  struct DebugWindowMode {
@@ -136,7 +136,7 @@ struct DebugWindowMode {
136
136
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
137
137
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
138
138
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
139
- static Value GetSetting(ClientContext &context);
139
+ static Value GetSetting(const ClientContext &context);
140
140
  };
141
141
 
142
142
  struct DefaultCollationSetting {
@@ -147,7 +147,7 @@ struct DefaultCollationSetting {
147
147
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
148
148
  static void SetLocal(ClientContext &context, const Value &parameter);
149
149
  static void ResetLocal(ClientContext &context);
150
- static Value GetSetting(ClientContext &context);
150
+ static Value GetSetting(const ClientContext &context);
151
151
  };
152
152
 
153
153
  struct DefaultOrderSetting {
@@ -156,7 +156,7 @@ struct DefaultOrderSetting {
156
156
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
157
157
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
158
158
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
159
- static Value GetSetting(ClientContext &context);
159
+ static Value GetSetting(const ClientContext &context);
160
160
  };
161
161
 
162
162
  struct DefaultNullOrderSetting {
@@ -165,7 +165,7 @@ struct DefaultNullOrderSetting {
165
165
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
166
166
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
167
167
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
168
- static Value GetSetting(ClientContext &context);
168
+ static Value GetSetting(const ClientContext &context);
169
169
  };
170
170
 
171
171
  struct DefaultSecretStorage {
@@ -174,7 +174,7 @@ struct DefaultSecretStorage {
174
174
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
175
175
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
176
176
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
177
- static Value GetSetting(ClientContext &context);
177
+ static Value GetSetting(const ClientContext &context);
178
178
  };
179
179
 
180
180
  struct DisabledFileSystemsSetting {
@@ -183,7 +183,7 @@ struct DisabledFileSystemsSetting {
183
183
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
184
184
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
185
185
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
186
- static Value GetSetting(ClientContext &context);
186
+ static Value GetSetting(const ClientContext &context);
187
187
  };
188
188
 
189
189
  struct DisabledOptimizersSetting {
@@ -192,7 +192,7 @@ struct DisabledOptimizersSetting {
192
192
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
193
193
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
194
194
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
195
- static Value GetSetting(ClientContext &context);
195
+ static Value GetSetting(const ClientContext &context);
196
196
  };
197
197
 
198
198
  struct EnableExternalAccessSetting {
@@ -203,7 +203,7 @@ struct EnableExternalAccessSetting {
203
203
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
204
204
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
205
205
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
206
- static Value GetSetting(ClientContext &context);
206
+ static Value GetSetting(const ClientContext &context);
207
207
  };
208
208
 
209
209
  struct EnableFSSTVectors {
@@ -213,7 +213,7 @@ struct EnableFSSTVectors {
213
213
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
214
214
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
215
215
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
216
- static Value GetSetting(ClientContext &context);
216
+ static Value GetSetting(const ClientContext &context);
217
217
  };
218
218
 
219
219
  struct AllowUnsignedExtensionsSetting {
@@ -222,7 +222,16 @@ struct AllowUnsignedExtensionsSetting {
222
222
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
223
223
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
224
224
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
225
- static Value GetSetting(ClientContext &context);
225
+ static Value GetSetting(const ClientContext &context);
226
+ };
227
+
228
+ struct AllowExtensionsMetadataMismatchSetting {
229
+ static constexpr const char *Name = "allow_extensions_metadata_mismatch";
230
+ static constexpr const char *Description = "Allow to load extensions with not compatible metadata";
231
+ static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
232
+ static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
233
+ static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
234
+ static Value GetSetting(const ClientContext &context);
226
235
  };
227
236
 
228
237
  struct AllowUnredactedSecretsSetting {
@@ -231,7 +240,7 @@ struct AllowUnredactedSecretsSetting {
231
240
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
232
241
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
233
242
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
234
- static Value GetSetting(ClientContext &context);
243
+ static Value GetSetting(const ClientContext &context);
235
244
  };
236
245
 
237
246
  struct CustomExtensionRepository {
@@ -240,7 +249,7 @@ struct CustomExtensionRepository {
240
249
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
241
250
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
242
251
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
243
- static Value GetSetting(ClientContext &context);
252
+ static Value GetSetting(const ClientContext &context);
244
253
  };
245
254
 
246
255
  struct AutoloadExtensionRepository {
@@ -250,7 +259,7 @@ struct AutoloadExtensionRepository {
250
259
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
251
260
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
252
261
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
253
- static Value GetSetting(ClientContext &context);
262
+ static Value GetSetting(const ClientContext &context);
254
263
  };
255
264
 
256
265
  struct AutoinstallKnownExtensions {
@@ -260,7 +269,7 @@ struct AutoinstallKnownExtensions {
260
269
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
261
270
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
262
271
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
263
- static Value GetSetting(ClientContext &context);
272
+ static Value GetSetting(const ClientContext &context);
264
273
  };
265
274
 
266
275
  struct AutoloadKnownExtensions {
@@ -270,7 +279,7 @@ struct AutoloadKnownExtensions {
270
279
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
271
280
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
272
281
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
273
- static Value GetSetting(ClientContext &context);
282
+ static Value GetSetting(const ClientContext &context);
274
283
  };
275
284
 
276
285
  struct EnableObjectCacheSetting {
@@ -279,7 +288,7 @@ struct EnableObjectCacheSetting {
279
288
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
280
289
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
281
290
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
282
- static Value GetSetting(ClientContext &context);
291
+ static Value GetSetting(const ClientContext &context);
283
292
  };
284
293
 
285
294
  struct EnableHTTPMetadataCacheSetting {
@@ -288,7 +297,7 @@ struct EnableHTTPMetadataCacheSetting {
288
297
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
289
298
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
290
299
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
291
- static Value GetSetting(ClientContext &context);
300
+ static Value GetSetting(const ClientContext &context);
292
301
  };
293
302
 
294
303
  struct EnableProfilingSetting {
@@ -298,7 +307,7 @@ struct EnableProfilingSetting {
298
307
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
299
308
  static void SetLocal(ClientContext &context, const Value &parameter);
300
309
  static void ResetLocal(ClientContext &context);
301
- static Value GetSetting(ClientContext &context);
310
+ static Value GetSetting(const ClientContext &context);
302
311
  };
303
312
 
304
313
  struct EnableProgressBarSetting {
@@ -308,7 +317,7 @@ struct EnableProgressBarSetting {
308
317
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
309
318
  static void SetLocal(ClientContext &context, const Value &parameter);
310
319
  static void ResetLocal(ClientContext &context);
311
- static Value GetSetting(ClientContext &context);
320
+ static Value GetSetting(const ClientContext &context);
312
321
  };
313
322
 
314
323
  struct EnableProgressBarPrintSetting {
@@ -318,7 +327,7 @@ struct EnableProgressBarPrintSetting {
318
327
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
319
328
  static void SetLocal(ClientContext &context, const Value &parameter);
320
329
  static void ResetLocal(ClientContext &context);
321
- static Value GetSetting(ClientContext &context);
330
+ static Value GetSetting(const ClientContext &context);
322
331
  };
323
332
 
324
333
  struct ErrorsAsJsonSetting {
@@ -327,7 +336,7 @@ struct ErrorsAsJsonSetting {
327
336
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
328
337
  static void SetLocal(ClientContext &context, const Value &parameter);
329
338
  static void ResetLocal(ClientContext &context);
330
- static Value GetSetting(ClientContext &context);
339
+ static Value GetSetting(const ClientContext &context);
331
340
  };
332
341
 
333
342
  struct ExplainOutputSetting {
@@ -336,7 +345,7 @@ struct ExplainOutputSetting {
336
345
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
337
346
  static void SetLocal(ClientContext &context, const Value &parameter);
338
347
  static void ResetLocal(ClientContext &context);
339
- static Value GetSetting(ClientContext &context);
348
+ static Value GetSetting(const ClientContext &context);
340
349
  };
341
350
 
342
351
  struct ExportLargeBufferArrow {
@@ -346,7 +355,7 @@ struct ExportLargeBufferArrow {
346
355
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
347
356
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
348
357
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
349
- static Value GetSetting(ClientContext &context);
358
+ static Value GetSetting(const ClientContext &context);
350
359
  };
351
360
 
352
361
  struct ExtensionDirectorySetting {
@@ -355,7 +364,7 @@ struct ExtensionDirectorySetting {
355
364
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
356
365
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
357
366
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
358
- static Value GetSetting(ClientContext &context);
367
+ static Value GetSetting(const ClientContext &context);
359
368
  };
360
369
 
361
370
  struct ExternalThreadsSetting {
@@ -364,7 +373,7 @@ struct ExternalThreadsSetting {
364
373
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BIGINT;
365
374
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
366
375
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
367
- static Value GetSetting(ClientContext &context);
376
+ static Value GetSetting(const ClientContext &context);
368
377
  };
369
378
 
370
379
  struct FileSearchPathSetting {
@@ -373,7 +382,7 @@ struct FileSearchPathSetting {
373
382
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
374
383
  static void SetLocal(ClientContext &context, const Value &parameter);
375
384
  static void ResetLocal(ClientContext &context);
376
- static Value GetSetting(ClientContext &context);
385
+ static Value GetSetting(const ClientContext &context);
377
386
  };
378
387
 
379
388
  struct ForceCompressionSetting {
@@ -382,7 +391,7 @@ struct ForceCompressionSetting {
382
391
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
383
392
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
384
393
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
385
- static Value GetSetting(ClientContext &context);
394
+ static Value GetSetting(const ClientContext &context);
386
395
  };
387
396
 
388
397
  struct ForceBitpackingModeSetting {
@@ -391,7 +400,7 @@ struct ForceBitpackingModeSetting {
391
400
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
392
401
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
393
402
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
394
- static Value GetSetting(ClientContext &context);
403
+ static Value GetSetting(const ClientContext &context);
395
404
  };
396
405
 
397
406
  struct HomeDirectorySetting {
@@ -400,7 +409,7 @@ struct HomeDirectorySetting {
400
409
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
401
410
  static void SetLocal(ClientContext &context, const Value &parameter);
402
411
  static void ResetLocal(ClientContext &context);
403
- static Value GetSetting(ClientContext &context);
412
+ static Value GetSetting(const ClientContext &context);
404
413
  };
405
414
 
406
415
  struct IntegerDivisionSetting {
@@ -410,17 +419,17 @@ struct IntegerDivisionSetting {
410
419
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
411
420
  static void SetLocal(ClientContext &context, const Value &parameter);
412
421
  static void ResetLocal(ClientContext &context);
413
- static Value GetSetting(ClientContext &context);
422
+ static Value GetSetting(const ClientContext &context);
414
423
  };
415
424
 
416
425
  struct LogQueryPathSetting {
417
426
  static constexpr const char *Name = "log_query_path";
418
427
  static constexpr const char *Description =
419
- "Specifies the path to which queries should be logged (default: empty string, queries are not logged)";
428
+ "Specifies the path to which queries should be logged (default: NULL, queries are not logged)";
420
429
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
421
430
  static void SetLocal(ClientContext &context, const Value &parameter);
422
431
  static void ResetLocal(ClientContext &context);
423
- static Value GetSetting(ClientContext &context);
432
+ static Value GetSetting(const ClientContext &context);
424
433
  };
425
434
 
426
435
  struct LockConfigurationSetting {
@@ -429,7 +438,7 @@ struct LockConfigurationSetting {
429
438
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
430
439
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
431
440
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
432
- static Value GetSetting(ClientContext &context);
441
+ static Value GetSetting(const ClientContext &context);
433
442
  };
434
443
 
435
444
  struct ImmediateTransactionModeSetting {
@@ -439,7 +448,7 @@ struct ImmediateTransactionModeSetting {
439
448
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
440
449
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
441
450
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
442
- static Value GetSetting(ClientContext &context);
451
+ static Value GetSetting(const ClientContext &context);
443
452
  };
444
453
 
445
454
  struct MaximumExpressionDepthSetting {
@@ -450,7 +459,7 @@ struct MaximumExpressionDepthSetting {
450
459
  static constexpr const LogicalTypeId InputType = LogicalTypeId::UBIGINT;
451
460
  static void SetLocal(ClientContext &context, const Value &parameter);
452
461
  static void ResetLocal(ClientContext &context);
453
- static Value GetSetting(ClientContext &context);
462
+ static Value GetSetting(const ClientContext &context);
454
463
  };
455
464
 
456
465
  struct MaximumMemorySetting {
@@ -459,7 +468,7 @@ struct MaximumMemorySetting {
459
468
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
460
469
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
461
470
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
462
- static Value GetSetting(ClientContext &context);
471
+ static Value GetSetting(const ClientContext &context);
463
472
  };
464
473
 
465
474
  struct OldImplicitCasting {
@@ -468,7 +477,7 @@ struct OldImplicitCasting {
468
477
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
469
478
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
470
479
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
471
- static Value GetSetting(ClientContext &context);
480
+ static Value GetSetting(const ClientContext &context);
472
481
  };
473
482
 
474
483
  struct PartitionedWriteFlushThreshold {
@@ -478,7 +487,7 @@ struct PartitionedWriteFlushThreshold {
478
487
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BIGINT;
479
488
  static void SetLocal(ClientContext &context, const Value &parameter);
480
489
  static void ResetLocal(ClientContext &context);
481
- static Value GetSetting(ClientContext &context);
490
+ static Value GetSetting(const ClientContext &context);
482
491
  };
483
492
 
484
493
  struct PasswordSetting {
@@ -487,16 +496,16 @@ struct PasswordSetting {
487
496
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
488
497
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
489
498
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
490
- static Value GetSetting(ClientContext &context);
499
+ static Value GetSetting(const ClientContext &context);
491
500
  };
492
501
 
493
502
  struct PerfectHashThresholdSetting {
494
503
  static constexpr const char *Name = "perfect_ht_threshold";
495
- static constexpr const char *Description = "Threshold in bytes for when to use a perfect hash table (default: 12)";
504
+ static constexpr const char *Description = "Threshold in bytes for when to use a perfect hash table";
496
505
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BIGINT;
497
506
  static void SetLocal(ClientContext &context, const Value &parameter);
498
507
  static void ResetLocal(ClientContext &context);
499
- static Value GetSetting(ClientContext &context);
508
+ static Value GetSetting(const ClientContext &context);
500
509
  };
501
510
 
502
511
  struct PivotFilterThreshold {
@@ -506,17 +515,16 @@ struct PivotFilterThreshold {
506
515
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BIGINT;
507
516
  static void SetLocal(ClientContext &context, const Value &parameter);
508
517
  static void ResetLocal(ClientContext &context);
509
- static Value GetSetting(ClientContext &context);
518
+ static Value GetSetting(const ClientContext &context);
510
519
  };
511
520
 
512
521
  struct PivotLimitSetting {
513
522
  static constexpr const char *Name = "pivot_limit";
514
- static constexpr const char *Description =
515
- "The maximum number of pivot columns in a pivot statement (default: 100000)";
523
+ static constexpr const char *Description = "The maximum number of pivot columns in a pivot statement";
516
524
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BIGINT;
517
525
  static void SetLocal(ClientContext &context, const Value &parameter);
518
526
  static void ResetLocal(ClientContext &context);
519
- static Value GetSetting(ClientContext &context);
527
+ static Value GetSetting(const ClientContext &context);
520
528
  };
521
529
 
522
530
  struct PreserveIdentifierCase {
@@ -526,7 +534,7 @@ struct PreserveIdentifierCase {
526
534
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
527
535
  static void SetLocal(ClientContext &context, const Value &parameter);
528
536
  static void ResetLocal(ClientContext &context);
529
- static Value GetSetting(ClientContext &context);
537
+ static Value GetSetting(const ClientContext &context);
530
538
  };
531
539
 
532
540
  struct PreserveInsertionOrder {
@@ -537,7 +545,7 @@ struct PreserveInsertionOrder {
537
545
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
538
546
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
539
547
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
540
- static Value GetSetting(ClientContext &context);
548
+ static Value GetSetting(const ClientContext &context);
541
549
  };
542
550
 
543
551
  struct ProfileOutputSetting {
@@ -547,7 +555,7 @@ struct ProfileOutputSetting {
547
555
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
548
556
  static void SetLocal(ClientContext &context, const Value &parameter);
549
557
  static void ResetLocal(ClientContext &context);
550
- static Value GetSetting(ClientContext &context);
558
+ static Value GetSetting(const ClientContext &context);
551
559
  };
552
560
 
553
561
  struct ProfilingModeSetting {
@@ -556,7 +564,7 @@ struct ProfilingModeSetting {
556
564
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
557
565
  static void SetLocal(ClientContext &context, const Value &parameter);
558
566
  static void ResetLocal(ClientContext &context);
559
- static Value GetSetting(ClientContext &context);
567
+ static Value GetSetting(const ClientContext &context);
560
568
  };
561
569
 
562
570
  struct ProgressBarTimeSetting {
@@ -566,7 +574,7 @@ struct ProgressBarTimeSetting {
566
574
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BIGINT;
567
575
  static void SetLocal(ClientContext &context, const Value &parameter);
568
576
  static void ResetLocal(ClientContext &context);
569
- static Value GetSetting(ClientContext &context);
577
+ static Value GetSetting(const ClientContext &context);
570
578
  };
571
579
 
572
580
  struct SchemaSetting {
@@ -576,7 +584,7 @@ struct SchemaSetting {
576
584
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
577
585
  static void SetLocal(ClientContext &context, const Value &parameter);
578
586
  static void ResetLocal(ClientContext &context);
579
- static Value GetSetting(ClientContext &context);
587
+ static Value GetSetting(const ClientContext &context);
580
588
  };
581
589
 
582
590
  struct SearchPathSetting {
@@ -586,7 +594,7 @@ struct SearchPathSetting {
586
594
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
587
595
  static void SetLocal(ClientContext &context, const Value &parameter);
588
596
  static void ResetLocal(ClientContext &context);
589
- static Value GetSetting(ClientContext &context);
597
+ static Value GetSetting(const ClientContext &context);
590
598
  };
591
599
 
592
600
  struct SecretDirectorySetting {
@@ -595,7 +603,7 @@ struct SecretDirectorySetting {
595
603
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
596
604
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
597
605
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
598
- static Value GetSetting(ClientContext &context);
606
+ static Value GetSetting(const ClientContext &context);
599
607
  };
600
608
 
601
609
  struct TempDirectorySetting {
@@ -604,7 +612,7 @@ struct TempDirectorySetting {
604
612
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
605
613
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
606
614
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
607
- static Value GetSetting(ClientContext &context);
615
+ static Value GetSetting(const ClientContext &context);
608
616
  };
609
617
 
610
618
  struct ThreadsSetting {
@@ -613,7 +621,7 @@ struct ThreadsSetting {
613
621
  static constexpr const LogicalTypeId InputType = LogicalTypeId::BIGINT;
614
622
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
615
623
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
616
- static Value GetSetting(ClientContext &context);
624
+ static Value GetSetting(const ClientContext &context);
617
625
  };
618
626
 
619
627
  struct UsernameSetting {
@@ -622,7 +630,7 @@ struct UsernameSetting {
622
630
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
623
631
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
624
632
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
625
- static Value GetSetting(ClientContext &context);
633
+ static Value GetSetting(const ClientContext &context);
626
634
  };
627
635
 
628
636
  struct FlushAllocatorSetting {
@@ -632,7 +640,7 @@ struct FlushAllocatorSetting {
632
640
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
633
641
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
634
642
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
635
- static Value GetSetting(ClientContext &context);
643
+ static Value GetSetting(const ClientContext &context);
636
644
  };
637
645
 
638
646
  struct DuckDBApiSetting {
@@ -641,7 +649,7 @@ struct DuckDBApiSetting {
641
649
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
642
650
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
643
651
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
644
- static Value GetSetting(ClientContext &context);
652
+ static Value GetSetting(const ClientContext &context);
645
653
  };
646
654
 
647
655
  struct CustomUserAgentSetting {
@@ -650,7 +658,7 @@ struct CustomUserAgentSetting {
650
658
  static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR;
651
659
  static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &parameter);
652
660
  static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
653
- static Value GetSetting(ClientContext &context);
661
+ static Value GetSetting(const ClientContext &context);
654
662
  };
655
663
 
656
664
  } // namespace duckdb
@@ -0,0 +1,45 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/optimizer/column_lifetime_analyzer.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #pragma once
10
+
11
+ #include "duckdb/planner/logical_operator_visitor.hpp"
12
+ #include "duckdb/planner/column_binding_map.hpp"
13
+ #include "duckdb/common/vector.hpp"
14
+
15
+ namespace duckdb {
16
+ class BoundColumnRefExpression;
17
+
18
+ //! The ColumnLifetimeAnalyzer optimizer traverses the logical operator tree and ensures that columns are removed from
19
+ //! the plan when no longer required
20
+ class ColumnLifetimeAnalyzer : public LogicalOperatorVisitor {
21
+ public:
22
+ explicit ColumnLifetimeAnalyzer(bool is_root = false) : everything_referenced(is_root) {
23
+ }
24
+
25
+ void VisitOperator(LogicalOperator &op) override;
26
+
27
+ protected:
28
+ unique_ptr<Expression> VisitReplace(BoundColumnRefExpression &expr, unique_ptr<Expression> *expr_ptr) override;
29
+ unique_ptr<Expression> VisitReplace(BoundReferenceExpression &expr, unique_ptr<Expression> *expr_ptr) override;
30
+
31
+ private:
32
+ //! Whether or not all the columns are referenced. This happens in the case of the root expression (because the
33
+ //! output implicitly refers all the columns below it)
34
+ bool everything_referenced;
35
+ //! The set of column references
36
+ column_binding_set_t column_references;
37
+
38
+ private:
39
+ void StandardVisitOperator(LogicalOperator &op);
40
+
41
+ void ExtractUnusedColumnBindings(vector<ColumnBinding> bindings, column_binding_set_t &unused_bindings);
42
+ void GenerateProjectionMap(vector<ColumnBinding> bindings, column_binding_set_t &unused_bindings,
43
+ vector<idx_t> &map);
44
+ };
45
+ } // namespace duckdb