duckdb 0.10.2-dev0.0 → 0.10.2-dev5.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 (700) 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
  700. package/test/jsdoc.test.ts +3 -0
@@ -181,7 +181,7 @@ public:
181
181
  }
182
182
  template <class TARGET>
183
183
  const TARGET &Cast() const {
184
- D_ASSERT(dynamic_cast<const TARGET *>(this));
184
+ DynamicCastCheck<TARGET>(this);
185
185
  return reinterpret_cast<const TARGET &>(*this);
186
186
  }
187
187
  };
@@ -50,6 +50,9 @@ public:
50
50
  inline Aggregates &GetAggregates() {
51
51
  return aggregates;
52
52
  }
53
+ const inline Aggregates &GetAggregates() const {
54
+ return aggregates;
55
+ }
53
56
  //! Returns a map from column id to the struct TupleDataLayout
54
57
  const inline TupleDataLayout &GetStructLayout(idx_t col_idx) const {
55
58
  D_ASSERT(struct_layouts->find(col_idx) != struct_layouts->end());
@@ -89,7 +92,11 @@ public:
89
92
  }
90
93
  //! Returns whether any of the aggregates have a destructor
91
94
  inline bool HasDestructor() const {
92
- return has_destructor;
95
+ return !aggr_destructor_idxs.empty();
96
+ }
97
+ //! Returns the indices of the aggregates that have destructors
98
+ inline const vector<idx_t> &GetAggregateDestructorIndices() const {
99
+ return aggr_destructor_idxs;
93
100
  }
94
101
 
95
102
  private:
@@ -113,8 +120,8 @@ private:
113
120
  bool all_constant;
114
121
  //! Offset to the heap size of every row
115
122
  idx_t heap_size_offset;
116
- //! Whether any of the aggregates have a destructor
117
- bool has_destructor;
123
+ //! Indices of aggregate functions that have a destructor
124
+ vector<idx_t> aggr_destructor_idxs;
118
125
  };
119
126
 
120
127
  } // namespace duckdb
@@ -22,7 +22,7 @@ class TupleDataLayout;
22
22
 
23
23
  struct TupleDataChunkPart {
24
24
  public:
25
- TupleDataChunkPart(mutex &lock);
25
+ explicit TupleDataChunkPart(mutex &lock);
26
26
 
27
27
  //! Disable copy constructors
28
28
  TupleDataChunkPart(const TupleDataChunkPart &other) = delete;
@@ -43,7 +43,7 @@ struct SelectionVector {
43
43
  explicit SelectionVector(buffer_ptr<SelectionData> data) {
44
44
  Initialize(std::move(data));
45
45
  }
46
- SelectionVector &operator=(SelectionVector &&other) {
46
+ SelectionVector &operator=(SelectionVector &&other) noexcept {
47
47
  sel_vector = other.sel_vector;
48
48
  other.sel_vector = nullptr;
49
49
  selection_data = std::move(other.selection_data);
@@ -83,24 +83,24 @@ public:
83
83
  sel_vector = other.sel_vector;
84
84
  }
85
85
 
86
- inline void set_index(idx_t idx, idx_t loc) {
86
+ inline void set_index(idx_t idx, idx_t loc) { // NOLINT: allow casing for legacy reasons
87
87
  sel_vector[idx] = UnsafeNumericCast<sel_t>(loc);
88
88
  }
89
- inline void swap(idx_t i, idx_t j) {
89
+ inline void swap(idx_t i, idx_t j) { // NOLINT: allow casing for legacy reasons
90
90
  sel_t tmp = sel_vector[i];
91
91
  sel_vector[i] = sel_vector[j];
92
92
  sel_vector[j] = tmp;
93
93
  }
94
- inline idx_t get_index(idx_t idx) const {
94
+ inline idx_t get_index(idx_t idx) const { // NOLINT: allow casing for legacy reasons
95
95
  return sel_vector ? sel_vector[idx] : idx;
96
96
  }
97
- sel_t *data() {
97
+ sel_t *data() { // NOLINT: allow casing for legacy reasons
98
98
  return sel_vector;
99
99
  }
100
- const sel_t *data() const {
100
+ const sel_t *data() const { // NOLINT: allow casing for legacy reasons
101
101
  return sel_vector;
102
102
  }
103
- buffer_ptr<SelectionData> sel_data() {
103
+ buffer_ptr<SelectionData> sel_data() { // NOLINT: allow casing for legacy reasons
104
104
  return selection_data;
105
105
  }
106
106
  buffer_ptr<SelectionData> Slice(const SelectionVector &sel, idx_t count) const;
@@ -119,7 +119,7 @@ private:
119
119
 
120
120
  class OptionalSelection {
121
121
  public:
122
- explicit inline OptionalSelection(SelectionVector *sel_p) {
122
+ explicit OptionalSelection(SelectionVector *sel_p) {
123
123
  Initialize(sel_p);
124
124
  }
125
125
  void Initialize(SelectionVector *sel_p) {
@@ -130,7 +130,7 @@ public:
130
130
  }
131
131
  }
132
132
 
133
- inline operator SelectionVector *() {
133
+ inline operator SelectionVector *() { // NOLINT: allow implicit conversion to SelectionVector
134
134
  return sel;
135
135
  }
136
136
 
@@ -169,10 +169,10 @@ public:
169
169
  bool Initialized() const {
170
170
  return initialized;
171
171
  }
172
- void Initialize(idx_t size) {
172
+ void Initialize(idx_t new_size) {
173
173
  D_ASSERT(!initialized);
174
- this->size = size;
175
- sel_vec.Initialize(size);
174
+ this->size = new_size;
175
+ sel_vec.Initialize(new_size);
176
176
  internal_opt_selvec.Initialize(&sel_vec);
177
177
  initialized = true;
178
178
  }
@@ -18,7 +18,7 @@ namespace duckdb {
18
18
  //! returned pointer will remain valid until the StringHeap is destroyed
19
19
  class StringHeap {
20
20
  public:
21
- DUCKDB_API StringHeap(Allocator &allocator = Allocator::DefaultAllocator());
21
+ DUCKDB_API explicit StringHeap(Allocator &allocator = Allocator::DefaultAllocator());
22
22
 
23
23
  DUCKDB_API void Destroy();
24
24
  DUCKDB_API void Move(StringHeap &other);
@@ -14,6 +14,7 @@
14
14
  #include "duckdb/common/numeric_utils.hpp"
15
15
 
16
16
  #include <cstring>
17
+ #include <algorithm>
17
18
 
18
19
  namespace duckdb {
19
20
 
@@ -60,13 +61,11 @@ public:
60
61
  }
61
62
  }
62
63
 
63
- string_t(const char *data)
64
- : string_t(data,
65
- UnsafeNumericCast<uint32_t>(strlen(data))) { // NOLINT: Allow implicit conversion from `const char*`
64
+ string_t(const char *data) // NOLINT: Allow implicit conversion from `const char*`
65
+ : string_t(data, UnsafeNumericCast<uint32_t>(strlen(data))) {
66
66
  }
67
- string_t(const string &value)
68
- : string_t(value.c_str(),
69
- UnsafeNumericCast<uint32_t>(value.size())) { // NOLINT: Allow implicit conversion from `const char*`
67
+ string_t(const string &value) // NOLINT: Allow implicit conversion from `const char*`
68
+ : string_t(value.c_str(), UnsafeNumericCast<uint32_t>(value.size())) {
70
69
  }
71
70
 
72
71
  bool IsInlined() const {
@@ -88,8 +87,8 @@ public:
88
87
  return value.inlined.inlined;
89
88
  }
90
89
 
91
- char *GetPrefixWriteable() const {
92
- return (char *)value.inlined.inlined;
90
+ char *GetPrefixWriteable() {
91
+ return value.inlined.inlined;
93
92
  }
94
93
 
95
94
  idx_t GetSize() const {
@@ -142,20 +141,21 @@ public:
142
141
  struct StringComparisonOperators {
143
142
  static inline bool Equals(const string_t &a, const string_t &b) {
144
143
  #ifdef DUCKDB_DEBUG_NO_INLINE
145
- if (a.GetSize() != b.GetSize())
144
+ if (a.GetSize() != b.GetSize()) {
146
145
  return false;
146
+ }
147
147
  return (memcmp(a.GetData(), b.GetData(), a.GetSize()) == 0);
148
148
  #endif
149
- uint64_t A = Load<uint64_t>(const_data_ptr_cast(&a));
150
- uint64_t B = Load<uint64_t>(const_data_ptr_cast(&b));
151
- if (A != B) {
149
+ uint64_t a_bulk_comp = Load<uint64_t>(const_data_ptr_cast(&a));
150
+ uint64_t b_bulk_comp = Load<uint64_t>(const_data_ptr_cast(&b));
151
+ if (a_bulk_comp != b_bulk_comp) {
152
152
  // Either length or prefix are different -> not equal
153
153
  return false;
154
154
  }
155
155
  // they have the same length and same prefix!
156
- A = Load<uint64_t>(const_data_ptr_cast(&a) + 8u);
157
- B = Load<uint64_t>(const_data_ptr_cast(&b) + 8u);
158
- if (A == B) {
156
+ a_bulk_comp = Load<uint64_t>(const_data_ptr_cast(&a) + 8u);
157
+ b_bulk_comp = Load<uint64_t>(const_data_ptr_cast(&b) + 8u);
158
+ if (a_bulk_comp == b_bulk_comp) {
159
159
  // either they are both inlined (so compare equal) or point to the same string (so compare equal)
160
160
  return true;
161
161
  }
@@ -177,11 +177,11 @@ public:
177
177
  const uint32_t min_length = std::min<uint32_t>(left_length, right_length);
178
178
 
179
179
  #ifndef DUCKDB_DEBUG_NO_INLINE
180
- uint32_t A = Load<uint32_t>(const_data_ptr_cast(left.GetPrefix()));
181
- uint32_t B = Load<uint32_t>(const_data_ptr_cast(right.GetPrefix()));
180
+ uint32_t a_prefix = Load<uint32_t>(const_data_ptr_cast(left.GetPrefix()));
181
+ uint32_t b_prefix = Load<uint32_t>(const_data_ptr_cast(right.GetPrefix()));
182
182
 
183
183
  // Utility to move 0xa1b2c3d4 into 0xd4c3b2a1, basically inverting the order byte-a-byte
184
- auto bswap = [](uint32_t v) -> uint32_t {
184
+ auto byte_swap = [](uint32_t v) -> uint32_t {
185
185
  uint32_t t1 = (v >> 16u) | (v << 16u);
186
186
  uint32_t t2 = t1 & 0x00ff00ff;
187
187
  uint32_t t3 = t1 & 0xff00ff00;
@@ -194,8 +194,9 @@ public:
194
194
  // if the prefix is smaller(after bswap), it will stay smaller regardless of the extra bytes
195
195
  // if the prefix is equal, the extra bytes are guaranteed to be /0 for the shorter one
196
196
 
197
- if (A != B)
198
- return bswap(A) > bswap(B);
197
+ if (a_prefix != b_prefix) {
198
+ return byte_swap(a_prefix) > byte_swap(b_prefix);
199
+ }
199
200
  #endif
200
201
  auto memcmp_res = memcmp(left.GetData(), right.GetData(), min_length);
201
202
  return memcmp_res > 0 || (memcmp_res == 0 && left_length > right_length);
@@ -14,8 +14,8 @@
14
14
 
15
15
  namespace duckdb {
16
16
 
17
- struct dtime_t;
18
- struct dtime_tz_t;
17
+ struct dtime_t; // NOLINT
18
+ struct dtime_tz_t; // NOLINT
19
19
 
20
20
  //! The Time class is a static class that holds helper functions for the Time
21
21
  //! type.
@@ -18,9 +18,9 @@
18
18
 
19
19
  namespace duckdb {
20
20
 
21
- struct date_t;
22
- struct dtime_t;
23
- struct dtime_tz_t;
21
+ struct date_t; // NOLINT
22
+ struct dtime_t; // NOLINT
23
+ struct dtime_tz_t; // NOLINT
24
24
 
25
25
  //! Type used to represent timestamps (seconds,microseconds,milliseconds or nanoseconds since 1970-01-01)
26
26
  struct timestamp_t { // NOLINT
@@ -20,7 +20,7 @@ class UUID {
20
20
  public:
21
21
  constexpr static const uint8_t STRING_SIZE = 36;
22
22
  //! Convert a uuid string to a hugeint object
23
- static bool FromString(string str, hugeint_t &result);
23
+ static bool FromString(const string &str, hugeint_t &result);
24
24
  //! Convert a uuid string to a hugeint object
25
25
  static bool FromCString(const char *str, idx_t len, hugeint_t &result) {
26
26
  return FromString(string(str, 0, len), result);
@@ -42,7 +42,7 @@ public:
42
42
  return string(buff, STRING_SIZE);
43
43
  }
44
44
 
45
- static hugeint_t FromString(string str) {
45
+ static hugeint_t FromString(const string &str) {
46
46
  hugeint_t result;
47
47
  FromString(str, result);
48
48
  return result;
@@ -191,13 +191,13 @@ public:
191
191
  DUCKDB_API static Value BIT(const string &data);
192
192
 
193
193
  //! Creates an aggregate state
194
- DUCKDB_API static Value AGGREGATE_STATE(const LogicalType &type, const_data_ptr_t data, idx_t len);
194
+ DUCKDB_API static Value AGGREGATE_STATE(const LogicalType &type, const_data_ptr_t data, idx_t len); // NOLINT
195
195
 
196
196
  template <class T>
197
197
  T GetValue() const;
198
198
  template <class T>
199
199
  static Value CreateValue(T value) {
200
- static_assert(AlwaysFalse<T>::value, "No specialization exists for this type");
200
+ static_assert(AlwaysFalse<T>::VALUE, "No specialization exists for this type");
201
201
  return Value(nullptr);
202
202
  }
203
203
  // Returns the internal value. Unlike GetValue(), this method does not perform casting, and assumes T matches the
@@ -83,9 +83,9 @@ public:
83
83
  //! Create a vector that references the other vector
84
84
  DUCKDB_API Vector(Vector &other);
85
85
  //! Create a vector that slices another vector
86
- DUCKDB_API explicit Vector(Vector &other, const SelectionVector &sel, idx_t count);
86
+ DUCKDB_API explicit Vector(const Vector &other, const SelectionVector &sel, idx_t count);
87
87
  //! Create a vector that slices another vector between a pair of offsets
88
- DUCKDB_API explicit Vector(Vector &other, idx_t offset, idx_t end);
88
+ DUCKDB_API explicit Vector(const Vector &other, idx_t offset, idx_t end);
89
89
  //! Create a vector of size one holding the passed on value
90
90
  DUCKDB_API explicit Vector(const Value &value);
91
91
  //! Create a vector of size tuple_count (non-standard)
@@ -291,19 +291,19 @@ struct ConstantVector {
291
291
  struct DictionaryVector {
292
292
  static inline const SelectionVector &SelVector(const Vector &vector) {
293
293
  D_ASSERT(vector.GetVectorType() == VectorType::DICTIONARY_VECTOR);
294
- return ((const DictionaryBuffer &)*vector.buffer).GetSelVector();
294
+ return vector.buffer->Cast<DictionaryBuffer>().GetSelVector();
295
295
  }
296
296
  static inline SelectionVector &SelVector(Vector &vector) {
297
297
  D_ASSERT(vector.GetVectorType() == VectorType::DICTIONARY_VECTOR);
298
- return ((DictionaryBuffer &)*vector.buffer).GetSelVector();
298
+ return vector.buffer->Cast<DictionaryBuffer>().GetSelVector();
299
299
  }
300
300
  static inline const Vector &Child(const Vector &vector) {
301
301
  D_ASSERT(vector.GetVectorType() == VectorType::DICTIONARY_VECTOR);
302
- return ((const VectorChildBuffer &)*vector.auxiliary).data;
302
+ return vector.auxiliary->Cast<VectorChildBuffer>().data;
303
303
  }
304
304
  static inline Vector &Child(Vector &vector) {
305
305
  D_ASSERT(vector.GetVectorType() == VectorType::DICTIONARY_VECTOR);
306
- return ((VectorChildBuffer &)*vector.auxiliary).data;
306
+ return vector.auxiliary->Cast<VectorChildBuffer>().data;
307
307
  }
308
308
  };
309
309
 
@@ -390,6 +390,10 @@ struct ListVector {
390
390
  DUCKDB_API static void GetConsecutiveChildSelVector(Vector &list, SelectionVector &sel, idx_t offset, idx_t count);
391
391
  //! Share the entry of the other list vector
392
392
  DUCKDB_API static void ReferenceEntry(Vector &vector, Vector &other);
393
+
394
+ private:
395
+ template <class T>
396
+ static T &GetEntryInternal(T &vector);
393
397
  };
394
398
 
395
399
  struct StringVector {
@@ -493,6 +497,10 @@ struct ArrayVector {
493
497
  DUCKDB_API static Vector &GetEntry(Vector &vector);
494
498
  //! Gets the total size of the underlying child-vector of an array
495
499
  DUCKDB_API static idx_t GetTotalSize(const Vector &vector);
500
+
501
+ private:
502
+ template <class T>
503
+ static T &GetEntryInternal(T &vector);
496
504
  };
497
505
 
498
506
  enum class UnionInvalidReason : uint8_t {
@@ -552,7 +560,7 @@ struct UnionVector {
552
560
  struct SequenceVector {
553
561
  static void GetSequence(const Vector &vector, int64_t &start, int64_t &increment, int64_t &sequence_count) {
554
562
  D_ASSERT(vector.GetVectorType() == VectorType::SEQUENCE_VECTOR);
555
- auto data = (int64_t *)vector.buffer->GetData();
563
+ auto data = reinterpret_cast<int64_t *>(vector.buffer->GetData());
556
564
  start = data[0];
557
565
  increment = data[1];
558
566
  sequence_count = data[2];
@@ -131,7 +131,7 @@ public:
131
131
  }
132
132
  template <class TARGET>
133
133
  const TARGET &Cast() const {
134
- D_ASSERT(dynamic_cast<const TARGET *>(this));
134
+ DynamicCastCheck<TARGET>(this);
135
135
  return reinterpret_cast<const TARGET &>(*this);
136
136
  }
137
137
  };
@@ -24,7 +24,7 @@ class TypeCatalogEntry;
24
24
  class Vector;
25
25
  class ClientContext;
26
26
 
27
- struct string_t;
27
+ struct string_t; // NOLINT: mimic std casing
28
28
 
29
29
  template <class T>
30
30
  using child_list_t = vector<std::pair<std::string, T>>;
@@ -32,12 +32,12 @@ using child_list_t = vector<std::pair<std::string, T>>;
32
32
  template <class T>
33
33
  using buffer_ptr = shared_ptr<T>;
34
34
 
35
- template <class T, typename... Args>
36
- buffer_ptr<T> make_buffer(Args &&...args) {
37
- return make_shared<T>(std::forward<Args>(args)...);
35
+ template <class T, typename... ARGS>
36
+ buffer_ptr<T> make_buffer(ARGS &&...args) { // NOLINT: mimic std casing
37
+ return make_shared<T>(std::forward<ARGS>(args)...);
38
38
  }
39
39
 
40
- struct list_entry_t {
40
+ struct list_entry_t { // NOLINT: mimic std casing
41
41
  list_entry_t() = default;
42
42
  list_entry_t(uint64_t offset, uint64_t length) : offset(offset), length(length) {
43
43
  }
@@ -234,7 +234,7 @@ enum class LogicalTypeId : uint8_t {
234
234
 
235
235
  struct ExtraTypeInfo;
236
236
 
237
- struct aggregate_state_t;
237
+ struct aggregate_state_t; // NOLINT: mimic std casing
238
238
 
239
239
  struct LogicalType {
240
240
  DUCKDB_API LogicalType();
@@ -245,7 +245,7 @@ struct LogicalType {
245
245
 
246
246
  DUCKDB_API ~LogicalType();
247
247
 
248
- inline LogicalTypeId id() const {
248
+ inline LogicalTypeId id() const { // NOLINT: mimic std casing
249
249
  return id_;
250
250
  }
251
251
  inline PhysicalType InternalType() const {
@@ -279,6 +279,9 @@ struct LogicalType {
279
279
 
280
280
  // copy assignment
281
281
  inline LogicalType &operator=(const LogicalType &other) {
282
+ if (this == &other) {
283
+ return *this;
284
+ }
282
285
  id_ = other.id_;
283
286
  physical_type_ = other.physical_type_;
284
287
  type_info_ = other.type_info_;
@@ -337,9 +340,9 @@ struct LogicalType {
337
340
  bool Contains(LogicalTypeId type_id) const;
338
341
 
339
342
  private:
340
- LogicalTypeId id_;
341
- PhysicalType physical_type_;
342
- shared_ptr<ExtraTypeInfo> type_info_;
343
+ LogicalTypeId id_; // NOLINT: allow this naming for legacy reasons
344
+ PhysicalType physical_type_; // NOLINT: allow this naming for legacy reasons
345
+ shared_ptr<ExtraTypeInfo> type_info_; // NOLINT: allow this naming for legacy reasons
343
346
 
344
347
  private:
345
348
  PhysicalType GetInternalType();
@@ -520,6 +523,7 @@ bool ApproxEqual(double l, double r);
520
523
  struct aggregate_state_t {
521
524
  aggregate_state_t() {
522
525
  }
526
+ // NOLINTNEXTLINE: work around bug in clang-tidy
523
527
  aggregate_state_t(string function_name_p, LogicalType return_type_p, vector<LogicalType> bound_argument_types_p)
524
528
  : function_name(std::move(function_name_p)), return_type(std::move(return_type_p)),
525
529
  bound_argument_types(std::move(bound_argument_types_p)) {
@@ -7,9 +7,9 @@
7
7
  namespace duckdb {
8
8
 
9
9
  // Forward declaration to allow conversion between hugeint and uhugeint
10
- struct hugeint_t;
10
+ struct hugeint_t; // NOLINT
11
11
 
12
- struct uhugeint_t {
12
+ struct uhugeint_t { // NOLINT
13
13
  public:
14
14
  uint64_t lower;
15
15
  uint64_t upper;
@@ -29,7 +29,7 @@ public:
29
29
  vector<unique_ptr<READER_TYPE>> union_readers;
30
30
  case_insensitive_map_t<idx_t> union_names_map;
31
31
  for (idx_t file_idx = 0; file_idx < files.size(); ++file_idx) {
32
- const auto file_name = files[file_idx];
32
+ const auto &file_name = files[file_idx];
33
33
  auto reader = make_uniq<READER_TYPE>(context, file_name, options);
34
34
 
35
35
  auto &col_names = reader->GetNames();
@@ -9,11 +9,11 @@
9
9
 
10
10
  namespace duckdb {
11
11
 
12
- template <class _Tp, class _Dp = std::default_delete<_Tp>, bool SAFE = true>
13
- class unique_ptr : public std::unique_ptr<_Tp, _Dp> {
12
+ template <class DATA_TYPE, class ALLOCATOR_TYPE = std::default_delete<DATA_TYPE>, bool SAFE = true>
13
+ class unique_ptr : public std::unique_ptr<DATA_TYPE, ALLOCATOR_TYPE> { // NOLINT: naming
14
14
  public:
15
- using original = std::unique_ptr<_Tp, _Dp>;
16
- using original::original;
15
+ using original = std::unique_ptr<DATA_TYPE, ALLOCATOR_TYPE>;
16
+ using original::original; // NOLINT
17
17
 
18
18
  private:
19
19
  static inline void AssertNotNull(const bool null) {
@@ -27,17 +27,17 @@ private:
27
27
  }
28
28
 
29
29
  public:
30
- typename std::add_lvalue_reference<_Tp>::type operator*() const {
30
+ typename std::add_lvalue_reference<DATA_TYPE>::type operator*() const { // NOLINT: hiding on purpose
31
31
  const auto ptr = original::get();
32
- if (MemorySafety<SAFE>::enabled) {
32
+ if (MemorySafety<SAFE>::ENABLED) {
33
33
  AssertNotNull(!ptr);
34
34
  }
35
35
  return *ptr;
36
36
  }
37
37
 
38
- typename original::pointer operator->() const {
38
+ typename original::pointer operator->() const { // NOLINT: hiding on purpose
39
39
  const auto ptr = original::get();
40
- if (MemorySafety<SAFE>::enabled) {
40
+ if (MemorySafety<SAFE>::ENABLED) {
41
41
  AssertNotNull(!ptr);
42
42
  }
43
43
  return ptr;
@@ -48,15 +48,16 @@ public:
48
48
  [[clang::reinitializes]]
49
49
  #endif
50
50
  inline void
51
- reset(typename original::pointer ptr = typename original::pointer()) noexcept {
51
+ reset(typename original::pointer ptr = typename original::pointer()) noexcept { // NOLINT: hiding on purpose
52
52
  original::reset(ptr);
53
53
  }
54
54
  };
55
55
 
56
- template <class _Tp, class _Dp, bool SAFE>
57
- class unique_ptr<_Tp[], _Dp, SAFE> : public std::unique_ptr<_Tp[], std::default_delete<_Tp[]>> {
56
+ template <class DATA_TYPE, class ALLOCATOR_TYPE, bool SAFE>
57
+ class unique_ptr<DATA_TYPE[], ALLOCATOR_TYPE, SAFE>
58
+ : public std::unique_ptr<DATA_TYPE[], std::default_delete<DATA_TYPE[]>> {
58
59
  public:
59
- using original = std::unique_ptr<_Tp[], std::default_delete<_Tp[]>>;
60
+ using original = std::unique_ptr<DATA_TYPE[], std::default_delete<DATA_TYPE[]>>;
60
61
  using original::original;
61
62
 
62
63
  private:
@@ -71,9 +72,9 @@ private:
71
72
  }
72
73
 
73
74
  public:
74
- typename std::add_lvalue_reference<_Tp>::type operator[](size_t __i) const {
75
+ typename std::add_lvalue_reference<DATA_TYPE>::type operator[](size_t __i) const { // NOLINT: hiding on purpose
75
76
  const auto ptr = original::get();
76
- if (MemorySafety<SAFE>::enabled) {
77
+ if (MemorySafety<SAFE>::ENABLED) {
77
78
  AssertNotNull(!ptr);
78
79
  }
79
80
  return ptr[__i];
@@ -17,10 +17,10 @@
17
17
 
18
18
  namespace duckdb {
19
19
 
20
- template <class _Tp, bool SAFE = true>
21
- class vector : public std::vector<_Tp, std::allocator<_Tp>> {
20
+ template <class DATA_TYPE, bool SAFE = true>
21
+ class vector : public std::vector<DATA_TYPE, std::allocator<DATA_TYPE>> { // NOLINT: matching name of std
22
22
  public:
23
- using original = std::vector<_Tp, std::allocator<_Tp>>;
23
+ using original = std::vector<DATA_TYPE, std::allocator<DATA_TYPE>>;
24
24
  using original::original;
25
25
  using size_type = typename original::size_type;
26
26
  using const_reference = typename original::const_reference;
@@ -43,59 +43,59 @@ public:
43
43
  [[clang::reinitializes]]
44
44
  #endif
45
45
  inline void
46
- clear() noexcept {
46
+ clear() noexcept { // NOLINT: hiding on purpose
47
47
  original::clear();
48
48
  }
49
49
 
50
50
  // Because we create the other constructor, the implicitly created constructor
51
51
  // gets deleted, so we have to be explicit
52
52
  vector() = default;
53
- vector(original &&other) : original(std::move(other)) {
53
+ vector(original &&other) : original(std::move(other)) { // NOLINT: allow implicit conversion
54
54
  }
55
- template <bool _SAFE>
56
- vector(vector<_Tp, _SAFE> &&other) : original(std::move(other)) {
55
+ template <bool INTERNAL_SAFE>
56
+ vector(vector<DATA_TYPE, INTERNAL_SAFE> &&other) : original(std::move(other)) { // NOLINT: allow implicit conversion
57
57
  }
58
58
 
59
- template <bool _SAFE = false>
60
- inline typename original::reference get(typename original::size_type __n) {
61
- if (MemorySafety<_SAFE>::enabled) {
59
+ template <bool INTERNAL_SAFE = false>
60
+ inline typename original::reference get(typename original::size_type __n) { // NOLINT: hiding on purpose
61
+ if (MemorySafety<INTERNAL_SAFE>::ENABLED) {
62
62
  AssertIndexInBounds(__n, original::size());
63
63
  }
64
64
  return original::operator[](__n);
65
65
  }
66
66
 
67
- template <bool _SAFE = false>
68
- inline typename original::const_reference get(typename original::size_type __n) const {
69
- if (MemorySafety<_SAFE>::enabled) {
67
+ template <bool INTERNAL_SAFE = false>
68
+ inline typename original::const_reference get(typename original::size_type __n) const { // NOLINT: hiding on purpose
69
+ if (MemorySafety<INTERNAL_SAFE>::ENABLED) {
70
70
  AssertIndexInBounds(__n, original::size());
71
71
  }
72
72
  return original::operator[](__n);
73
73
  }
74
74
 
75
- typename original::reference operator[](typename original::size_type __n) {
75
+ typename original::reference operator[](typename original::size_type __n) { // NOLINT: hiding on purpose
76
76
  return get<SAFE>(__n);
77
77
  }
78
- typename original::const_reference operator[](typename original::size_type __n) const {
78
+ typename original::const_reference operator[](typename original::size_type __n) const { // NOLINT: hiding on purpose
79
79
  return get<SAFE>(__n);
80
80
  }
81
81
 
82
- typename original::reference front() {
82
+ typename original::reference front() { // NOLINT: hiding on purpose
83
83
  return get<SAFE>(0);
84
84
  }
85
85
 
86
- typename original::const_reference front() const {
86
+ typename original::const_reference front() const { // NOLINT: hiding on purpose
87
87
  return get<SAFE>(0);
88
88
  }
89
89
 
90
- typename original::reference back() {
91
- if (MemorySafety<SAFE>::enabled && original::empty()) {
90
+ typename original::reference back() { // NOLINT: hiding on purpose
91
+ if (MemorySafety<SAFE>::ENABLED && original::empty()) {
92
92
  throw InternalException("'back' called on an empty vector!");
93
93
  }
94
94
  return get<SAFE>(original::size() - 1);
95
95
  }
96
96
 
97
- typename original::const_reference back() const {
98
- if (MemorySafety<SAFE>::enabled && original::empty()) {
97
+ typename original::const_reference back() const { // NOLINT: hiding on purpose
98
+ if (MemorySafety<SAFE>::ENABLED && original::empty()) {
99
99
  throw InternalException("'back' called on an empty vector!");
100
100
  }
101
101
  return get<SAFE>(original::size() - 1);
@@ -444,6 +444,8 @@ public:
444
444
  op.Right(i, limit);
445
445
  break;
446
446
  case 0x03:
447
+ default:
448
+ D_ASSERT(overlap == 0x03);
447
449
  // i ∈ F ∩ P
448
450
  limit = MinValue(right->end, left->end);
449
451
  op.Both(i, limit);
@@ -24,7 +24,8 @@ struct VectorTryCastData {
24
24
 
25
25
  struct HandleVectorCastError {
26
26
  template <class RESULT_TYPE>
27
- static RESULT_TYPE Operation(string error_message, ValidityMask &mask, idx_t idx, VectorTryCastData &cast_data) {
27
+ static RESULT_TYPE Operation(const string &error_message, ValidityMask &mask, idx_t idx,
28
+ VectorTryCastData &cast_data) {
28
29
  HandleCastError::AssignError(error_message, cast_data.parameters);
29
30
  cast_data.all_converted = false;
30
31
  mask.SetInvalid(idx);
@@ -26,10 +26,9 @@ struct PrimitiveTypeState {
26
26
 
27
27
  template <class INPUT_TYPE>
28
28
  struct PrimitiveType {
29
- PrimitiveType() {
29
+ PrimitiveType() = default;
30
+ PrimitiveType(INPUT_TYPE val) : val(val) { // NOLINT: allow implicit cast
30
31
  }
31
- PrimitiveType(INPUT_TYPE val) : val(val) {
32
- } // NOLINT: allow implicit cast
33
32
 
34
33
  INPUT_TYPE val;
35
34