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
@@ -15,13 +15,13 @@
15
15
  namespace duckdb {
16
16
 
17
17
  template <typename T>
18
- struct fixed_size_map_iterator_t;
18
+ struct fixed_size_map_iterator_t; // NOLINT: match stl case
19
19
 
20
20
  template <typename T>
21
- struct const_fixed_size_map_iterator_t;
21
+ struct const_fixed_size_map_iterator_t; // NOLINT: match stl case
22
22
 
23
23
  template <typename T>
24
- class fixed_size_map_t {
24
+ class fixed_size_map_t { // NOLINT: match stl case
25
25
  friend struct fixed_size_map_iterator_t<T>;
26
26
  friend struct const_fixed_size_map_iterator_t<T>;
27
27
 
@@ -34,18 +34,18 @@ public:
34
34
  resize(capacity);
35
35
  }
36
36
 
37
- idx_t size() const {
37
+ idx_t size() const { // NOLINT: match stl case
38
38
  return count;
39
39
  }
40
40
 
41
- void resize(idx_t capacity_p) {
41
+ void resize(idx_t capacity_p) { // NOLINT: match stl case
42
42
  capacity = capacity_p;
43
43
  occupied = ValidityMask(capacity);
44
44
  values = make_unsafe_uniq_array<T>(capacity + 1);
45
45
  clear();
46
46
  }
47
47
 
48
- void clear() {
48
+ void clear() { // NOLINT: match stl case
49
49
  count = 0;
50
50
  occupied.SetAllInvalid(capacity);
51
51
  }
@@ -62,23 +62,23 @@ public:
62
62
  return values[key];
63
63
  }
64
64
 
65
- fixed_size_map_iterator_t<T> begin() {
65
+ fixed_size_map_iterator_t<T> begin() { // NOLINT: match stl case
66
66
  return fixed_size_map_iterator_t<T>(begin_internal(), *this);
67
67
  }
68
68
 
69
- const_fixed_size_map_iterator_t<T> begin() const {
69
+ const_fixed_size_map_iterator_t<T> begin() const { // NOLINT: match stl case
70
70
  return const_fixed_size_map_iterator_t<T>(begin_internal(), *this);
71
71
  }
72
72
 
73
- fixed_size_map_iterator_t<T> end() {
73
+ fixed_size_map_iterator_t<T> end() { // NOLINT: match stl case
74
74
  return fixed_size_map_iterator_t<T>(capacity, *this);
75
75
  }
76
76
 
77
- const_fixed_size_map_iterator_t<T> end() const {
77
+ const_fixed_size_map_iterator_t<T> end() const { // NOLINT: match stl case
78
78
  return const_fixed_size_map_iterator_t<T>(capacity, *this);
79
79
  }
80
80
 
81
- fixed_size_map_iterator_t<T> find(const idx_t &index) {
81
+ fixed_size_map_iterator_t<T> find(const idx_t &index) { // NOLINT: match stl case
82
82
  if (occupied.RowIsValid(index)) {
83
83
  return fixed_size_map_iterator_t<T>(index, *this);
84
84
  } else {
@@ -86,7 +86,7 @@ public:
86
86
  }
87
87
  }
88
88
 
89
- const_fixed_size_map_iterator_t<T> find(const idx_t &index) const {
89
+ const_fixed_size_map_iterator_t<T> find(const idx_t &index) const { // NOLINT: match stl case
90
90
  if (occupied.RowIsValid(index)) {
91
91
  return const_fixed_size_map_iterator_t<T>(index, *this);
92
92
  } else {
@@ -95,7 +95,7 @@ public:
95
95
  }
96
96
 
97
97
  private:
98
- idx_t begin_internal() const {
98
+ idx_t begin_internal() const { // NOLINT: match stl case
99
99
  idx_t index;
100
100
  for (index = 0; index < capacity; index++) {
101
101
  if (occupied.RowIsValid(index)) {
@@ -39,68 +39,62 @@ namespace duckdb {
39
39
 
40
40
  template <class... T>
41
41
  struct AlwaysFalse {
42
- static constexpr bool value = false;
42
+ static constexpr bool VALUE = false;
43
43
  };
44
44
 
45
45
  template<typename T>
46
46
  using reference = std::reference_wrapper<T>;
47
47
 
48
- template<class _Tp, bool SAFE = true>
49
- struct __unique_if
48
+ template<class DATA_TYPE, bool SAFE = true>
49
+ struct TemplatedUniqueIf
50
50
  {
51
- typedef unique_ptr<_Tp, std::default_delete<_Tp>, SAFE> __unique_single;
51
+ typedef unique_ptr<DATA_TYPE, std::default_delete<DATA_TYPE>, SAFE> templated_unique_single_t;
52
52
  };
53
53
 
54
- template<class _Tp>
55
- struct __unique_if<_Tp[]>
54
+ template<class DATA_TYPE, size_t N>
55
+ struct TemplatedUniqueIf<DATA_TYPE[N]>
56
56
  {
57
- typedef unique_ptr<_Tp[]> __unique_array_unknown_bound;
57
+ typedef void TemplatedUniqueArrayKnownBound; // NOLINT: mimic std style
58
58
  };
59
59
 
60
- template<class _Tp, size_t _Np>
61
- struct __unique_if<_Tp[_Np]>
62
- {
63
- typedef void __unique_array_known_bound;
64
- };
65
-
66
- template<class _Tp, class... _Args>
60
+ template<class DATA_TYPE, class... ARGS>
67
61
  inline
68
- typename __unique_if<_Tp, true>::__unique_single
69
- make_uniq(_Args&&... __args)
62
+ typename TemplatedUniqueIf<DATA_TYPE, true>::templated_unique_single_t
63
+ make_uniq(ARGS&&... args) // NOLINT: mimic std style
70
64
  {
71
- return unique_ptr<_Tp, std::default_delete<_Tp>, true>(new _Tp(std::forward<_Args>(__args)...));
65
+ return unique_ptr<DATA_TYPE, std::default_delete<DATA_TYPE>, true>(new DATA_TYPE(std::forward<ARGS>(args)...));
72
66
  }
73
67
 
74
- template<class _Tp, class... _Args>
68
+ template<class DATA_TYPE, class... ARGS>
75
69
  inline
76
- typename __unique_if<_Tp, false>::__unique_single
77
- make_unsafe_uniq(_Args&&... __args)
70
+ typename TemplatedUniqueIf<DATA_TYPE, false>::templated_unique_single_t
71
+ make_unsafe_uniq(ARGS&&... args) // NOLINT: mimic std style
78
72
  {
79
- return unique_ptr<_Tp, std::default_delete<_Tp>, false>(new _Tp(std::forward<_Args>(__args)...));
73
+ return unique_ptr<DATA_TYPE, std::default_delete<DATA_TYPE>, false>(new DATA_TYPE(std::forward<ARGS>(args)...));
80
74
  }
81
75
 
82
- template<class _Tp>
83
- inline unique_ptr<_Tp[], std::default_delete<_Tp>, true>
84
- make_uniq_array(size_t __n)
76
+ template<class DATA_TYPE>
77
+ inline unique_ptr<DATA_TYPE[], std::default_delete<DATA_TYPE>, true>
78
+ make_uniq_array(size_t n) // NOLINT: mimic std style
85
79
  {
86
- return unique_ptr<_Tp[], std::default_delete<_Tp>, true>(new _Tp[__n]());
80
+ return unique_ptr<DATA_TYPE[], std::default_delete<DATA_TYPE>, true>(new DATA_TYPE[n]());
87
81
  }
88
82
 
89
- template<class _Tp>
90
- inline unique_ptr<_Tp[], std::default_delete<_Tp>, false>
91
- make_unsafe_uniq_array(size_t __n)
83
+ template<class DATA_TYPE>
84
+ inline unique_ptr<DATA_TYPE[], std::default_delete<DATA_TYPE>, false>
85
+ make_unsafe_uniq_array(size_t n) // NOLINT: mimic std style
92
86
  {
93
- return unique_ptr<_Tp[], std::default_delete<_Tp>, false>(new _Tp[__n]());
87
+ return unique_ptr<DATA_TYPE[], std::default_delete<DATA_TYPE>, false>(new DATA_TYPE[n]());
94
88
  }
95
89
 
96
- template<class _Tp, class... _Args>
97
- typename __unique_if<_Tp>::__unique_array_known_bound
98
- make_uniq(_Args&&...) = delete;
90
+ template<class DATA_TYPE, class... ARGS>
91
+ typename TemplatedUniqueIf<DATA_TYPE>::TemplatedUniqueArrayKnownBound
92
+ make_uniq(ARGS&&...) = delete; // NOLINT: mimic std style
99
93
 
100
94
 
101
- template <typename S, typename T, typename... Args>
102
- unique_ptr<S> make_uniq_base(Args &&... args) {
103
- return unique_ptr<S>(new T(std::forward<Args>(args)...));
95
+ template <typename S, typename T, typename... ARGS>
96
+ unique_ptr<S> make_uniq_base(ARGS &&... args) { // NOLINT: mimic std style
97
+ return unique_ptr<S>(new T(std::forward<ARGS>(args)...));
104
98
  }
105
99
 
106
100
  #ifdef DUCKDB_ENABLE_DEPRECATED_API
@@ -111,7 +105,7 @@ unique_ptr<S> make_unique_base(Args &&... args) {
111
105
  #endif // DUCKDB_ENABLE_DEPRECATED_API
112
106
 
113
107
  template <typename T, typename S>
114
- unique_ptr<S> unique_ptr_cast(unique_ptr<T> src) {
108
+ unique_ptr<S> unique_ptr_cast(unique_ptr<T> src) { // NOLINT: mimic std style
115
109
  return unique_ptr<S>(static_cast<S *>(src.release()));
116
110
  }
117
111
 
@@ -137,12 +131,12 @@ typename std::remove_reference<T>::type&& move(T&& t) noexcept {
137
131
  }
138
132
  #endif
139
133
 
140
- template <class T, class... _Args>
141
- static duckdb::unique_ptr<T> make_unique(_Args&&... __args) {
134
+ template <class T, class... ARGS>
135
+ static duckdb::unique_ptr<T> make_unique(ARGS&&... __args) { // NOLINT: mimic std style
142
136
  #ifndef DUCKDB_ENABLE_DEPRECATED_API
143
137
  static_assert(sizeof(T) == 0, "Use make_uniq instead of make_unique!");
144
138
  #endif // DUCKDB_ENABLE_DEPRECATED_API
145
- return unique_ptr<T>(new T(std::forward<_Args>(__args)...));
139
+ return unique_ptr<T>(new T(std::forward<ARGS>(__args)...));
146
140
  }
147
141
 
148
142
  template <typename T>
@@ -184,13 +178,13 @@ T SignValue(T a) {
184
178
  template <typename T>
185
179
  const T Load(const_data_ptr_t ptr) {
186
180
  T ret;
187
- memcpy(&ret, ptr, sizeof(ret));
181
+ memcpy(&ret, ptr, sizeof(ret)); // NOLINT
188
182
  return ret;
189
183
  }
190
184
 
191
185
  template <typename T>
192
186
  void Store(const T &val, data_ptr_t ptr) {
193
- memcpy(ptr, (void *)&val, sizeof(val));
187
+ memcpy(ptr, (void *)&val, sizeof(val)); // NOLINT
194
188
  }
195
189
 
196
190
  //! This assigns a shared pointer, but ONLY assigns if "target" is not equal to "source"
@@ -211,19 +205,20 @@ using const_reference = std::reference_wrapper<const T>;
211
205
 
212
206
  //! Returns whether or not two reference wrappers refer to the same object
213
207
  template<class T>
214
- bool RefersToSameObject(const reference<T> &A, const reference<T> &B) {
215
- return &A.get() == &B.get();
208
+ bool RefersToSameObject(const reference<T> &a, const reference<T> &b) {
209
+ return &a.get() == &b.get();
216
210
  }
217
211
 
218
212
  template<class T>
219
- bool RefersToSameObject(const T &A, const T &B) {
220
- return &A == &B;
213
+ bool RefersToSameObject(const T &a, const T &b) {
214
+ return &a == &b;
221
215
  }
222
216
 
223
217
  template<class T, class SRC>
224
- void DynamicCastCheck(SRC *source) {
218
+ void DynamicCastCheck(const SRC *source) {
225
219
  #ifndef __APPLE__
226
- D_ASSERT(dynamic_cast<T *>(source));
220
+ // Actual check is on the fact that dynamic_cast and reinterpret_cast are equivalent
221
+ D_ASSERT(reinterpret_cast<const T *>(source) == dynamic_cast<const T *>(source));
227
222
  #endif
228
223
  }
229
224
 
@@ -84,7 +84,7 @@ public:
84
84
  shared_ptr<CachedFile> &GetCachedFile(const string &path);
85
85
  //! Helper functions to get the HTTP state
86
86
  static shared_ptr<HTTPState> TryGetState(ClientContext &context, bool create_on_missing = true);
87
- static shared_ptr<HTTPState> TryGetState(FileOpener *opener, bool create_on_missing = true);
87
+ static shared_ptr<HTTPState> TryGetState(optional_ptr<FileOpener> opener, bool create_on_missing = true);
88
88
 
89
89
  bool IsEmpty() {
90
90
  return head_count == 0 && get_count == 0 && put_count == 0 && post_count == 0 && total_bytes_received == 0 &&
@@ -8,9 +8,9 @@
8
8
  namespace duckdb {
9
9
 
10
10
  // Forward declaration to allow conversion between hugeint and uhugeint
11
- struct uhugeint_t;
11
+ struct uhugeint_t; // NOLINT: use numeric casing
12
12
 
13
- struct hugeint_t {
13
+ struct hugeint_t { // NOLINT: use numeric casing
14
14
  public:
15
15
  uint64_t lower;
16
16
  int64_t upper;
@@ -18,7 +18,7 @@ namespace duckdb {
18
18
  template <class T, class INDEX_TYPE>
19
19
  class IndexVector {
20
20
  public:
21
- void push_back(T element) {
21
+ void push_back(T element) { // NOLINT: match stl API
22
22
  internal_vector.push_back(std::move(element));
23
23
  }
24
24
 
@@ -30,34 +30,34 @@ public:
30
30
  return internal_vector[idx.index];
31
31
  }
32
32
 
33
- idx_t size() const {
33
+ idx_t size() const { // NOLINT: match stl API
34
34
  return internal_vector.size();
35
35
  }
36
36
 
37
- bool empty() const {
37
+ bool empty() const { // NOLINT: match stl API
38
38
  return internal_vector.empty();
39
39
  }
40
40
 
41
- void reserve(idx_t size) {
41
+ void reserve(idx_t size) { // NOLINT: match stl API
42
42
  internal_vector.reserve(size);
43
43
  }
44
44
 
45
- typename vector<T>::iterator begin() {
45
+ typename vector<T>::iterator begin() { // NOLINT: match stl API
46
46
  return internal_vector.begin();
47
47
  }
48
- typename vector<T>::iterator end() {
48
+ typename vector<T>::iterator end() { // NOLINT: match stl API
49
49
  return internal_vector.end();
50
50
  }
51
- typename vector<T>::const_iterator cbegin() {
51
+ typename vector<T>::const_iterator cbegin() { // NOLINT: match stl API
52
52
  return internal_vector.cbegin();
53
53
  }
54
- typename vector<T>::const_iterator cend() {
54
+ typename vector<T>::const_iterator cend() { // NOLINT: match stl API
55
55
  return internal_vector.cend();
56
56
  }
57
- typename vector<T>::const_iterator begin() const {
57
+ typename vector<T>::const_iterator begin() const { // NOLINT: match stl API
58
58
  return internal_vector.begin();
59
59
  }
60
- typename vector<T>::const_iterator end() const {
60
+ typename vector<T>::const_iterator end() const { // NOLINT: match stl API
61
61
  return internal_vector.end();
62
62
  }
63
63
 
@@ -15,9 +15,8 @@ namespace duckdb {
15
15
 
16
16
  class LocalFileSystem : public FileSystem {
17
17
  public:
18
- unique_ptr<FileHandle> OpenFile(const string &path, uint8_t flags, FileLockType lock = FileLockType::NO_LOCK,
19
- FileCompressionType compression = FileCompressionType::UNCOMPRESSED,
20
- FileOpener *opener = nullptr) override;
18
+ unique_ptr<FileHandle> OpenFile(const string &path, FileOpenFlags flags,
19
+ optional_ptr<FileOpener> opener = nullptr) override;
21
20
 
22
21
  //! Read exactly nr_bytes from the specified location in the file. Fails if nr_bytes could not be read. This is
23
22
  //! equivalent to calling SetFilePointer(location) followed by calling Read().
@@ -30,6 +29,10 @@ public:
30
29
  int64_t Read(FileHandle &handle, void *buffer, int64_t nr_bytes) override;
31
30
  //! Write nr_bytes from the buffer into the file, moving the file pointer forward by nr_bytes.
32
31
  int64_t Write(FileHandle &handle, void *buffer, int64_t nr_bytes) override;
32
+ //! Excise a range of the file. The file-system is free to deallocate this
33
+ //! range (sparse file support). Reads to the range will succeed but will return
34
+ //! undefined data.
35
+ bool Trim(FileHandle &handle, idx_t offset_bytes, idx_t length_bytes) override;
33
36
 
34
37
  //! Returns the file size of a file handle, returns -1 on error
35
38
  int64_t GetFileSize(FileHandle &handle) override;
@@ -42,24 +45,24 @@ public:
42
45
  void Truncate(FileHandle &handle, int64_t new_size) override;
43
46
 
44
47
  //! Check if a directory exists
45
- bool DirectoryExists(const string &directory) override;
48
+ bool DirectoryExists(const string &directory, optional_ptr<FileOpener> opener = nullptr) override;
46
49
  //! Create a directory if it does not exist
47
- void CreateDirectory(const string &directory) override;
50
+ void CreateDirectory(const string &directory, optional_ptr<FileOpener> opener = nullptr) override;
48
51
  //! Recursively remove a directory and all files in it
49
- void RemoveDirectory(const string &directory) override;
52
+ void RemoveDirectory(const string &directory, optional_ptr<FileOpener> opener = nullptr) override;
50
53
  //! List files in a directory, invoking the callback method for each one with (filename, is_dir)
51
54
  bool ListFiles(const string &directory, const std::function<void(const string &, bool)> &callback,
52
55
  FileOpener *opener = nullptr) override;
53
56
  //! Move a file from source path to the target, StorageManager relies on this being an atomic action for ACID
54
57
  //! properties
55
- void MoveFile(const string &source, const string &target) override;
58
+ void MoveFile(const string &source, const string &target, optional_ptr<FileOpener> opener = nullptr) override;
56
59
  //! Check if a file exists
57
- bool FileExists(const string &filename) override;
60
+ bool FileExists(const string &filename, optional_ptr<FileOpener> opener = nullptr) override;
58
61
 
59
62
  //! Check if path is a pipe
60
- bool IsPipe(const string &filename) override;
63
+ bool IsPipe(const string &filename, optional_ptr<FileOpener> opener = nullptr) override;
61
64
  //! Remove a file from disk
62
- void RemoveFile(const string &filename) override;
65
+ void RemoveFile(const string &filename, optional_ptr<FileOpener> opener = nullptr) override;
63
66
  //! Sync a file handle to disk
64
67
  void FileSync(FileHandle &handle) override;
65
68
 
@@ -2,13 +2,13 @@
2
2
 
3
3
  namespace duckdb {
4
4
 
5
- template <bool ENABLED>
5
+ template <bool IS_ENABLED>
6
6
  struct MemorySafety {
7
7
  #ifdef DEBUG
8
8
  // In DEBUG mode safety is always on
9
- static constexpr bool enabled = true;
9
+ static constexpr bool ENABLED = true;
10
10
  #else
11
- static constexpr bool enabled = ENABLED;
11
+ static constexpr bool ENABLED = IS_ENABLED;
12
12
  #endif
13
13
  };
14
14
 
@@ -29,7 +29,7 @@ struct MultiFileReaderOptions {
29
29
  DUCKDB_API void AddBatchInfo(BindInfo &bind_info) const;
30
30
  DUCKDB_API void AutoDetectHivePartitioning(const vector<string> &files, ClientContext &context);
31
31
  DUCKDB_API static bool AutoDetectHivePartitioningInternal(const vector<string> &files, ClientContext &context);
32
- DUCKDB_API void AutoDetectHiveTypesInternal(const string &file, ClientContext &context);
32
+ DUCKDB_API void AutoDetectHiveTypesInternal(const vector<string> &file, ClientContext &context);
33
33
  DUCKDB_API void VerifyHiveTypesArePartitions(const std::map<string, string> &partitions) const;
34
34
  DUCKDB_API LogicalType GetHiveLogicalType(const string &hive_partition_column) const;
35
35
  DUCKDB_API Value GetHivePartitionValue(const string &base, const string &entry, ClientContext &context) const;
@@ -18,13 +18,16 @@ public:
18
18
  virtual FileSystem &GetFileSystem() const = 0;
19
19
  virtual optional_ptr<FileOpener> GetOpener() const = 0;
20
20
 
21
- unique_ptr<FileHandle> OpenFile(const string &path, uint8_t flags, FileLockType lock = FileLockType::NO_LOCK,
22
- FileCompressionType compression = FileCompressionType::UNCOMPRESSED,
23
- FileOpener *opener = nullptr) override {
21
+ void VerifyNoOpener(optional_ptr<FileOpener> opener) {
24
22
  if (opener) {
25
23
  throw InternalException("OpenerFileSystem cannot take an opener - the opener is pushed automatically");
26
24
  }
27
- return GetFileSystem().OpenFile(path, flags, lock, compression, GetOpener().get());
25
+ }
26
+
27
+ unique_ptr<FileHandle> OpenFile(const string &path, FileOpenFlags flags,
28
+ optional_ptr<FileOpener> opener = nullptr) override {
29
+ VerifyNoOpener(opener);
30
+ return GetFileSystem().OpenFile(path, flags, GetOpener());
28
31
  }
29
32
 
30
33
  void Read(FileHandle &handle, void *buffer, int64_t nr_bytes, idx_t location) override {
@@ -61,27 +64,29 @@ public:
61
64
  GetFileSystem().FileSync(handle);
62
65
  }
63
66
 
64
- bool DirectoryExists(const string &directory) override {
65
- return GetFileSystem().DirectoryExists(directory);
67
+ bool DirectoryExists(const string &directory, optional_ptr<FileOpener> opener) override {
68
+ VerifyNoOpener(opener);
69
+ return GetFileSystem().DirectoryExists(directory, GetOpener());
66
70
  }
67
- void CreateDirectory(const string &directory) override {
68
- return GetFileSystem().CreateDirectory(directory);
71
+ void CreateDirectory(const string &directory, optional_ptr<FileOpener> opener) override {
72
+ VerifyNoOpener(opener);
73
+ return GetFileSystem().CreateDirectory(directory, GetOpener());
69
74
  }
70
75
 
71
- void RemoveDirectory(const string &directory) override {
72
- return GetFileSystem().RemoveDirectory(directory);
76
+ void RemoveDirectory(const string &directory, optional_ptr<FileOpener> opener) override {
77
+ VerifyNoOpener(opener);
78
+ return GetFileSystem().RemoveDirectory(directory, GetOpener());
73
79
  }
74
80
 
75
81
  bool ListFiles(const string &directory, const std::function<void(const string &, bool)> &callback,
76
82
  FileOpener *opener = nullptr) override {
77
- if (opener) {
78
- throw InternalException("OpenerFileSystem cannot take an opener - the opener is pushed automatically");
79
- }
83
+ VerifyNoOpener(opener);
80
84
  return GetFileSystem().ListFiles(directory, callback, GetOpener().get());
81
85
  }
82
86
 
83
- void MoveFile(const string &source, const string &target) override {
84
- GetFileSystem().MoveFile(source, target);
87
+ void MoveFile(const string &source, const string &target, optional_ptr<FileOpener> opener) override {
88
+ VerifyNoOpener(opener);
89
+ GetFileSystem().MoveFile(source, target, GetOpener());
85
90
  }
86
91
 
87
92
  string GetHomeDirectory() override {
@@ -92,15 +97,18 @@ public:
92
97
  return FileSystem::ExpandPath(path, GetOpener());
93
98
  }
94
99
 
95
- bool FileExists(const string &filename) override {
96
- return GetFileSystem().FileExists(filename);
100
+ bool FileExists(const string &filename, optional_ptr<FileOpener> opener) override {
101
+ VerifyNoOpener(opener);
102
+ return GetFileSystem().FileExists(filename, GetOpener());
97
103
  }
98
104
 
99
- bool IsPipe(const string &filename) override {
100
- return GetFileSystem().IsPipe(filename);
105
+ bool IsPipe(const string &filename, optional_ptr<FileOpener> opener) override {
106
+ VerifyNoOpener(opener);
107
+ return GetFileSystem().IsPipe(filename, GetOpener());
101
108
  }
102
- void RemoveFile(const string &filename) override {
103
- GetFileSystem().RemoveFile(filename);
109
+ void RemoveFile(const string &filename, optional_ptr<FileOpener> opener) override {
110
+ VerifyNoOpener(opener);
111
+ GetFileSystem().RemoveFile(filename, GetOpener());
104
112
  }
105
113
 
106
114
  string PathSeparator(const string &path) override {
@@ -108,15 +116,33 @@ public:
108
116
  }
109
117
 
110
118
  vector<string> Glob(const string &path, FileOpener *opener = nullptr) override {
111
- if (opener) {
112
- throw InternalException("OpenerFileSystem cannot take an opener - the opener is pushed automatically");
113
- }
119
+ VerifyNoOpener(opener);
114
120
  return GetFileSystem().Glob(path, GetOpener().get());
115
121
  }
116
122
 
117
123
  std::string GetName() const override {
118
124
  return "OpenerFileSystem - " + GetFileSystem().GetName();
119
125
  }
126
+
127
+ void RegisterSubSystem(unique_ptr<FileSystem> sub_fs) override {
128
+ GetFileSystem().RegisterSubSystem(std::move(sub_fs));
129
+ }
130
+
131
+ void RegisterSubSystem(FileCompressionType compression_type, unique_ptr<FileSystem> fs) override {
132
+ GetFileSystem().RegisterSubSystem(compression_type, std::move(fs));
133
+ }
134
+
135
+ void UnregisterSubSystem(const string &name) override {
136
+ GetFileSystem().UnregisterSubSystem(name);
137
+ }
138
+
139
+ void SetDisabledFileSystems(const vector<string> &names) override {
140
+ GetFileSystem().SetDisabledFileSystems(names);
141
+ }
142
+
143
+ vector<string> ListSubSystems() override {
144
+ return GetFileSystem().ListSubSystems();
145
+ }
120
146
  };
121
147
 
122
148
  } // namespace duckdb
@@ -39,7 +39,7 @@ inline int8_t TryAbsOperator::Operation(int8_t input) {
39
39
  if (input == NumericLimits<int8_t>::Minimum()) {
40
40
  throw OutOfRangeException("Overflow on abs(%d)", input);
41
41
  }
42
- return input < 0 ? -input : input;
42
+ return AbsOperator::Operation<int8_t, int8_t>(input);
43
43
  }
44
44
 
45
45
  template <>
@@ -47,7 +47,7 @@ inline int16_t TryAbsOperator::Operation(int16_t input) {
47
47
  if (input == NumericLimits<int16_t>::Minimum()) {
48
48
  throw OutOfRangeException("Overflow on abs(%d)", input);
49
49
  }
50
- return input < 0 ? -input : input;
50
+ return AbsOperator::Operation<int16_t, int16_t>(input);
51
51
  }
52
52
 
53
53
  template <>
@@ -55,7 +55,7 @@ inline int32_t TryAbsOperator::Operation(int32_t input) {
55
55
  if (input == NumericLimits<int32_t>::Minimum()) {
56
56
  throw OutOfRangeException("Overflow on abs(%d)", input);
57
57
  }
58
- return input < 0 ? -input : input;
58
+ return AbsOperator::Operation<int32_t, int32_t>(input);
59
59
  }
60
60
 
61
61
  template <>
@@ -63,7 +63,15 @@ inline int64_t TryAbsOperator::Operation(int64_t input) {
63
63
  if (input == NumericLimits<int64_t>::Minimum()) {
64
64
  throw OutOfRangeException("Overflow on abs(%d)", input);
65
65
  }
66
- return input < 0 ? -input : input;
66
+ return AbsOperator::Operation<int64_t, int64_t>(input);
67
+ }
68
+
69
+ template <>
70
+ inline hugeint_t TryAbsOperator::Operation(hugeint_t input) {
71
+ if (input == NumericLimits<hugeint_t>::Minimum()) {
72
+ throw OutOfRangeException("Overflow on abs(%s)", input.ToString());
73
+ }
74
+ return AbsOperator::Operation<hugeint_t, hugeint_t>(input);
67
75
  }
68
76
 
69
77
  template <>
@@ -14,7 +14,7 @@
14
14
  namespace duckdb {
15
15
 
16
16
  template <class T>
17
- class optional_ptr {
17
+ class optional_ptr { // NOLINT: mimic std casing
18
18
  public:
19
19
  optional_ptr() : ptr(nullptr) {
20
20
  }
@@ -29,7 +29,7 @@ public:
29
29
  }
30
30
  }
31
31
 
32
- operator bool() const {
32
+ operator bool() const { // NOLINT: allow implicit conversion to bool
33
33
  return ptr;
34
34
  }
35
35
  T &operator*() {
@@ -48,16 +48,16 @@ public:
48
48
  CheckValid();
49
49
  return ptr;
50
50
  }
51
- T *get() {
51
+ T *get() { // NOLINT: mimic std casing
52
52
  // CheckValid();
53
53
  return ptr;
54
54
  }
55
- const T *get() const {
55
+ const T *get() const { // NOLINT: mimic std casing
56
56
  // CheckValid();
57
57
  return ptr;
58
58
  }
59
59
  // this looks dirty - but this is the default behavior of raw pointers
60
- T *get_mutable() const {
60
+ T *get_mutable() const { // NOLINT: mimic std casing
61
61
  // CheckValid();
62
62
  return ptr;
63
63
  }
@@ -28,7 +28,7 @@ public:
28
28
  bool CanSeek() override {
29
29
  return false;
30
30
  }
31
- bool IsPipe(const string &filename) override {
31
+ bool IsPipe(const string &filename, optional_ptr<FileOpener> opener) override {
32
32
  return true;
33
33
  }
34
34
  void FileSync(FileHandle &handle) override;
@@ -3,7 +3,7 @@
3
3
 
4
4
  namespace duckdb {
5
5
 
6
- std::string DuckDBPlatform() {
6
+ std::string DuckDBPlatform() { // NOLINT: allow definition in header
7
7
  #if defined(DUCKDB_CUSTOM_PLATFORM)
8
8
  return DUCKDB_QUOTE_DEFINE(DUCKDB_CUSTOM_PLATFORM);
9
9
  #endif
@@ -23,14 +23,14 @@ public:
23
23
  //! Print the object to stderr
24
24
  DUCKDB_API static void Print(const string &str);
25
25
  //! Print the formatted object to the stream
26
- template <typename... Args>
27
- static void PrintF(OutputStream stream, const string &str, Args... params) {
26
+ template <typename... ARGS>
27
+ static void PrintF(OutputStream stream, const string &str, ARGS... params) {
28
28
  Printer::Print(stream, StringUtil::Format(str, params...));
29
29
  }
30
30
  //! Print the formatted object to stderr
31
- template <typename... Args>
32
- static void PrintF(const string &str, Args... params) {
33
- Printer::PrintF(OutputStream::STREAM_STDERR, str, std::forward<Args>(params)...);
31
+ template <typename... ARGS>
32
+ static void PrintF(const string &str, ARGS... params) {
33
+ Printer::PrintF(OutputStream::STREAM_STDERR, str, std::forward<ARGS>(params)...);
34
34
  }
35
35
  //! Directly prints the string to stdout without a newline
36
36
  DUCKDB_API static void RawPrint(OutputStream stream, const string &str);