duckdb 0.9.3-dev0.0 → 0.9.3-dev12.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 (1214) hide show
  1. package/LICENSE +1 -1
  2. package/binding.gyp +32 -7
  3. package/package.json +1 -1
  4. package/src/connection.cpp +6 -6
  5. package/src/database.cpp +11 -10
  6. package/src/duckdb/extension/icu/icu-datefunc.cpp +22 -10
  7. package/src/duckdb/extension/icu/icu-datepart.cpp +42 -22
  8. package/src/duckdb/extension/icu/icu-datetrunc.cpp +40 -7
  9. package/src/duckdb/extension/icu/icu-strptime.cpp +14 -8
  10. package/src/duckdb/extension/icu/icu-table-range.cpp +1 -1
  11. package/src/duckdb/extension/icu/icu-timezone.cpp +43 -16
  12. package/src/duckdb/extension/icu/icu_extension.cpp +1 -1
  13. package/src/duckdb/extension/icu/include/icu-datefunc.hpp +3 -0
  14. package/src/duckdb/extension/icu/third_party/icu/stubdata/stubdata.cpp +1 -1
  15. package/src/duckdb/extension/json/buffered_json_reader.cpp +78 -62
  16. package/src/duckdb/extension/json/include/buffered_json_reader.hpp +11 -7
  17. package/src/duckdb/extension/json/include/json_common.hpp +0 -14
  18. package/src/duckdb/extension/json/include/json_deserializer.hpp +1 -0
  19. package/src/duckdb/extension/json/include/json_functions.hpp +1 -0
  20. package/src/duckdb/extension/json/include/json_scan.hpp +19 -5
  21. package/src/duckdb/extension/json/include/json_serializer.hpp +2 -1
  22. package/src/duckdb/extension/json/include/json_structure.hpp +12 -10
  23. package/src/duckdb/extension/json/json_common.cpp +1 -0
  24. package/src/duckdb/extension/json/json_deserializer.cpp +13 -0
  25. package/src/duckdb/extension/json/json_extension.cpp +3 -3
  26. package/src/duckdb/extension/json/json_functions/copy_json.cpp +8 -4
  27. package/src/duckdb/extension/json/json_functions/json_array_length.cpp +1 -1
  28. package/src/duckdb/extension/json/json_functions/json_contains.cpp +3 -3
  29. package/src/duckdb/extension/json/json_functions/json_create.cpp +53 -8
  30. package/src/duckdb/extension/json/json_functions/json_extract.cpp +10 -6
  31. package/src/duckdb/extension/json/json_functions/json_keys.cpp +1 -1
  32. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +2 -3
  33. package/src/duckdb/extension/json/json_functions/json_serialize_plan.cpp +210 -0
  34. package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +22 -19
  35. package/src/duckdb/extension/json/json_functions/json_structure.cpp +71 -43
  36. package/src/duckdb/extension/json/json_functions/json_transform.cpp +105 -8
  37. package/src/duckdb/extension/json/json_functions/json_type.cpp +1 -1
  38. package/src/duckdb/extension/json/json_functions/json_valid.cpp +1 -1
  39. package/src/duckdb/extension/json/json_functions/read_json.cpp +43 -18
  40. package/src/duckdb/extension/json/json_functions/read_json_objects.cpp +1 -1
  41. package/src/duckdb/extension/json/json_functions.cpp +9 -5
  42. package/src/duckdb/extension/json/json_scan.cpp +147 -125
  43. package/src/duckdb/extension/json/json_serializer.cpp +9 -0
  44. package/src/duckdb/extension/json/serialize_json.cpp +6 -0
  45. package/src/duckdb/extension/parquet/column_reader.cpp +53 -18
  46. package/src/duckdb/extension/parquet/column_writer.cpp +29 -6
  47. package/src/duckdb/extension/parquet/include/column_reader.hpp +0 -1
  48. package/src/duckdb/extension/parquet/include/decode_utils.hpp +2 -2
  49. package/src/duckdb/extension/parquet/include/parquet_crypto.hpp +87 -0
  50. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -3
  51. package/src/duckdb/extension/parquet/include/parquet_decimal_utils.hpp +16 -3
  52. package/src/duckdb/extension/parquet/include/parquet_metadata.hpp +10 -0
  53. package/src/duckdb/extension/parquet/include/parquet_reader.hpp +34 -6
  54. package/src/duckdb/extension/parquet/include/parquet_statistics.hpp +3 -2
  55. package/src/duckdb/extension/parquet/include/parquet_timestamp.hpp +2 -0
  56. package/src/duckdb/extension/parquet/include/parquet_writer.hpp +21 -1
  57. package/src/duckdb/extension/parquet/parquet_crypto.cpp +370 -0
  58. package/src/duckdb/extension/parquet/parquet_extension.cpp +254 -24
  59. package/src/duckdb/extension/parquet/parquet_metadata.cpp +204 -16
  60. package/src/duckdb/extension/parquet/parquet_reader.cpp +108 -34
  61. package/src/duckdb/extension/parquet/parquet_statistics.cpp +75 -30
  62. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +15 -8
  63. package/src/duckdb/extension/parquet/parquet_writer.cpp +62 -10
  64. package/src/duckdb/extension/parquet/serialize_parquet.cpp +60 -0
  65. package/src/duckdb/src/catalog/catalog.cpp +23 -25
  66. package/src/duckdb/src/catalog/catalog_entry/column_dependency_manager.cpp +1 -0
  67. package/src/duckdb/src/catalog/catalog_entry/dependency/dependency_dependent_entry.cpp +31 -0
  68. package/src/duckdb/src/catalog/catalog_entry/dependency/dependency_entry.cpp +44 -0
  69. package/src/duckdb/src/catalog/catalog_entry/dependency/dependency_subject_entry.cpp +31 -0
  70. package/src/duckdb/src/catalog/catalog_entry/duck_index_entry.cpp +35 -10
  71. package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +22 -6
  72. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +110 -33
  73. package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +33 -17
  74. package/src/duckdb/src/catalog/catalog_entry/macro_catalog_entry.cpp +16 -0
  75. package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +7 -6
  76. package/src/duckdb/src/catalog/catalog_entry/sequence_catalog_entry.cpp +88 -14
  77. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +6 -15
  78. package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +20 -20
  79. package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +4 -0
  80. package/src/duckdb/src/catalog/catalog_entry.cpp +29 -0
  81. package/src/duckdb/src/catalog/catalog_set.cpp +358 -343
  82. package/src/duckdb/src/catalog/catalog_transaction.cpp +4 -0
  83. package/src/duckdb/src/catalog/default/default_functions.cpp +13 -4
  84. package/src/duckdb/src/catalog/default/default_schemas.cpp +5 -1
  85. package/src/duckdb/src/catalog/default/default_views.cpp +6 -2
  86. package/src/duckdb/src/catalog/dependency_catalog_set.cpp +51 -0
  87. package/src/duckdb/src/catalog/dependency_manager.cpp +510 -114
  88. package/src/duckdb/src/catalog/duck_catalog.cpp +4 -4
  89. package/src/duckdb/src/common/adbc/adbc.cpp +73 -53
  90. package/src/duckdb/src/common/adbc/driver_manager.cpp +1101 -268
  91. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +20 -9
  92. package/src/duckdb/src/common/bind_helpers.cpp +1 -0
  93. package/src/duckdb/src/common/box_renderer.cpp +52 -1
  94. package/src/duckdb/src/common/compressed_file_system.cpp +1 -0
  95. package/src/duckdb/src/common/constants.cpp +0 -1
  96. package/src/duckdb/src/common/enum_util.cpp +522 -107
  97. package/src/duckdb/src/common/enums/catalog_type.cpp +64 -1
  98. package/src/duckdb/src/common/enums/compression_type.cpp +14 -0
  99. package/src/duckdb/src/common/enums/date_part_specifier.cpp +1 -0
  100. package/src/duckdb/src/common/enums/expression_type.cpp +4 -0
  101. package/src/duckdb/src/common/enums/file_compression_type.cpp +1 -0
  102. package/src/duckdb/src/common/enums/join_type.cpp +33 -0
  103. package/src/duckdb/src/common/enums/logical_operator_type.cpp +5 -3
  104. package/src/duckdb/src/common/enums/optimizer_type.cpp +9 -1
  105. package/src/duckdb/src/common/enums/physical_operator_type.cpp +8 -4
  106. package/src/duckdb/src/common/enums/statement_type.cpp +2 -2
  107. package/src/duckdb/src/common/error_data.cpp +113 -0
  108. package/src/duckdb/src/common/exception/binder_exception.cpp +47 -0
  109. package/src/duckdb/src/common/exception/catalog_exception.cpp +55 -0
  110. package/src/duckdb/src/common/exception/parser_exception.cpp +19 -0
  111. package/src/duckdb/src/common/exception.cpp +110 -121
  112. package/src/duckdb/src/common/exception_format_value.cpp +9 -1
  113. package/src/duckdb/src/common/extra_type_info.cpp +48 -0
  114. package/src/duckdb/src/common/file_system.cpp +12 -7
  115. package/src/duckdb/src/common/gzip_file_system.cpp +18 -18
  116. package/src/duckdb/src/common/hive_partitioning.cpp +5 -1
  117. package/src/duckdb/src/common/http_state.cpp +20 -3
  118. package/src/duckdb/src/common/local_file_system.cpp +214 -15
  119. package/src/duckdb/src/common/multi_file_reader.cpp +20 -7
  120. package/src/duckdb/src/common/operator/cast_operators.cpp +397 -414
  121. package/src/duckdb/src/common/operator/convert_to_string.cpp +4 -0
  122. package/src/duckdb/src/common/operator/string_cast.cpp +5 -0
  123. package/src/duckdb/src/common/progress_bar/progress_bar.cpp +61 -12
  124. package/src/duckdb/src/common/progress_bar/terminal_progress_bar_display.cpp +13 -4
  125. package/src/duckdb/src/common/radix_partitioning.cpp +1 -1
  126. package/src/duckdb/src/common/row_operations/row_aggregate.cpp +2 -1
  127. package/src/duckdb/src/common/row_operations/row_gather.cpp +7 -1
  128. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +78 -12
  129. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +222 -61
  130. package/src/duckdb/src/common/row_operations/row_matcher.cpp +6 -1
  131. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +51 -0
  132. package/src/duckdb/src/common/row_operations/row_scatter.cpp +8 -1
  133. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +6 -0
  134. package/src/duckdb/src/common/serializer/binary_serializer.cpp +5 -0
  135. package/src/duckdb/src/common/serializer/serializer.cpp +19 -0
  136. package/src/duckdb/src/common/sort/comparators.cpp +126 -0
  137. package/src/duckdb/src/common/sort/partition_state.cpp +17 -17
  138. package/src/duckdb/src/common/sort/radix_sort.cpp +2 -1
  139. package/src/duckdb/src/common/sort/sort_state.cpp +10 -5
  140. package/src/duckdb/src/common/sort/sorted_block.cpp +7 -6
  141. package/src/duckdb/src/common/string_util.cpp +302 -24
  142. package/src/duckdb/src/common/tree_renderer.cpp +8 -6
  143. package/src/duckdb/src/common/types/cast_helpers.cpp +6 -0
  144. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +1 -1
  145. package/src/duckdb/src/common/types/column/column_data_collection.cpp +58 -0
  146. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +8 -1
  147. package/src/duckdb/src/common/types/data_chunk.cpp +9 -0
  148. package/src/duckdb/src/common/types/date.cpp +2 -2
  149. package/src/duckdb/src/common/types/hash.cpp +9 -1
  150. package/src/duckdb/src/common/types/hugeint.cpp +229 -51
  151. package/src/duckdb/src/common/types/hyperloglog.cpp +10 -3
  152. package/src/duckdb/src/common/types/interval.cpp +67 -12
  153. package/src/duckdb/src/common/types/list_segment.cpp +98 -4
  154. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +11 -1
  155. package/src/duckdb/src/common/types/row/row_data_collection.cpp +1 -1
  156. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +2 -2
  157. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +3 -2
  158. package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +63 -3
  159. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +331 -127
  160. package/src/duckdb/src/common/types/time.cpp +47 -75
  161. package/src/duckdb/src/common/types/timestamp.cpp +16 -3
  162. package/src/duckdb/src/common/types/uhugeint.cpp +746 -0
  163. package/src/duckdb/src/common/types/validity_mask.cpp +6 -2
  164. package/src/duckdb/src/common/types/value.cpp +183 -27
  165. package/src/duckdb/src/common/types/vector.cpp +331 -30
  166. package/src/duckdb/src/common/types/vector_buffer.cpp +29 -1
  167. package/src/duckdb/src/common/types/vector_cache.cpp +22 -1
  168. package/src/duckdb/src/common/types.cpp +606 -90
  169. package/src/duckdb/src/common/value_operations/comparison_operations.cpp +21 -1
  170. package/src/duckdb/src/common/vector_operations/comparison_operators.cpp +5 -0
  171. package/src/duckdb/src/common/vector_operations/generators.cpp +2 -2
  172. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +131 -2
  173. package/src/duckdb/src/common/vector_operations/vector_copy.cpp +26 -4
  174. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +41 -0
  175. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +7 -0
  176. package/src/duckdb/src/common/virtual_file_system.cpp +0 -1
  177. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +2 -1
  178. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +144 -56
  179. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +2 -0
  180. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +27 -0
  181. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +4 -3
  182. package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +25 -5
  183. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +100 -3
  184. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +2 -1
  185. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +9 -1
  186. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +83 -52
  187. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +485 -289
  188. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +3 -3
  189. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
  190. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +34 -37
  191. package/src/duckdb/src/core_functions/function_list.cpp +30 -1
  192. package/src/duckdb/src/core_functions/lambda_functions.cpp +416 -0
  193. package/src/duckdb/src/core_functions/scalar/array/array_functions.cpp +294 -0
  194. package/src/duckdb/src/core_functions/scalar/array/array_value.cpp +87 -0
  195. package/src/duckdb/src/core_functions/scalar/blob/create_sort_key.cpp +686 -0
  196. package/src/duckdb/src/core_functions/scalar/blob/encode.cpp +1 -0
  197. package/src/duckdb/src/core_functions/scalar/date/current.cpp +3 -3
  198. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +295 -20
  199. package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +1 -0
  200. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +8 -7
  201. package/src/duckdb/src/core_functions/scalar/date/to_interval.cpp +84 -23
  202. package/src/duckdb/src/core_functions/scalar/generic/error.cpp +4 -4
  203. package/src/duckdb/src/core_functions/scalar/generic/least.cpp +7 -8
  204. package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
  205. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +17 -6
  206. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +8 -0
  207. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +28 -14
  208. package/src/duckdb/src/core_functions/scalar/list/list_filter.cpp +49 -0
  209. package/src/duckdb/src/core_functions/scalar/list/list_reduce.cpp +230 -0
  210. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +85 -16
  211. package/src/duckdb/src/core_functions/scalar/list/list_transform.cpp +41 -0
  212. package/src/duckdb/src/core_functions/scalar/list/list_value.cpp +21 -2
  213. package/src/duckdb/src/core_functions/scalar/map/map.cpp +6 -5
  214. package/src/duckdb/src/core_functions/scalar/map/map_entries.cpp +2 -2
  215. package/src/duckdb/src/core_functions/scalar/map/map_from_entries.cpp +1 -2
  216. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +24 -4
  217. package/src/duckdb/src/core_functions/scalar/operators/bitwise.cpp +6 -0
  218. package/src/duckdb/src/core_functions/scalar/random/random.cpp +2 -2
  219. package/src/duckdb/src/core_functions/scalar/random/setseed.cpp +2 -2
  220. package/src/duckdb/src/core_functions/scalar/secret/which_secret.cpp +28 -0
  221. package/src/duckdb/src/core_functions/scalar/string/bar.cpp +9 -4
  222. package/src/duckdb/src/core_functions/scalar/string/format_bytes.cpp +7 -2
  223. package/src/duckdb/src/core_functions/scalar/string/hex.cpp +63 -4
  224. package/src/duckdb/src/core_functions/scalar/string/pad.cpp +2 -2
  225. package/src/duckdb/src/core_functions/scalar/string/parse_path.cpp +348 -0
  226. package/src/duckdb/src/core_functions/scalar/string/regexp_escape.cpp +22 -0
  227. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +6 -5
  228. package/src/duckdb/src/core_functions/scalar/struct/struct_insert.cpp +3 -3
  229. package/src/duckdb/src/core_functions/scalar/struct/struct_pack.cpp +1 -1
  230. package/src/duckdb/src/execution/aggregate_hashtable.cpp +9 -2
  231. package/src/duckdb/src/execution/column_binding_resolver.cpp +44 -10
  232. package/src/duckdb/src/execution/expression_executor/execute_between.cpp +4 -0
  233. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +4 -0
  234. package/src/duckdb/src/execution/expression_executor/execute_comparison.cpp +4 -0
  235. package/src/duckdb/src/execution/expression_executor.cpp +2 -1
  236. package/src/duckdb/src/execution/index/art/art.cpp +202 -53
  237. package/src/duckdb/src/execution/index/art/art_key.cpp +20 -27
  238. package/src/duckdb/src/execution/index/fixed_size_allocator.cpp +52 -17
  239. package/src/duckdb/src/execution/index/fixed_size_buffer.cpp +14 -8
  240. package/src/duckdb/src/execution/index/index_type_set.cpp +32 -0
  241. package/src/duckdb/src/execution/index/unknown_index.cpp +65 -0
  242. package/src/duckdb/src/execution/join_hashtable.cpp +151 -174
  243. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -0
  244. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +4 -0
  245. package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +2 -1
  246. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +82 -36
  247. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +58 -32
  248. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +35 -19
  249. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer.cpp +90 -0
  250. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.cpp +124 -0
  251. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_file_handle.cpp +97 -0
  252. package/src/duckdb/src/execution/operator/csv_scanner/scanner/base_scanner.cpp +71 -0
  253. package/src/duckdb/src/execution/operator/csv_scanner/scanner/column_count_scanner.cpp +98 -0
  254. package/src/duckdb/src/execution/operator/csv_scanner/scanner/scanner_boundary.cpp +105 -0
  255. package/src/duckdb/src/execution/operator/csv_scanner/scanner/skip_scanner.cpp +63 -0
  256. package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +1091 -0
  257. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/csv_sniffer.cpp +124 -26
  258. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +117 -129
  259. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +46 -22
  260. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +83 -199
  261. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_refinement.cpp +21 -122
  262. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_replacement.cpp +18 -17
  263. package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine.cpp +22 -0
  264. package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine_cache.cpp +201 -0
  265. package/src/duckdb/src/execution/operator/csv_scanner/table_function/csv_file_scanner.cpp +221 -0
  266. package/src/duckdb/src/execution/operator/csv_scanner/table_function/global_csv_state.cpp +204 -0
  267. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +186 -0
  268. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +532 -0
  269. package/src/duckdb/src/execution/operator/helper/physical_buffered_collector.cpp +85 -0
  270. package/src/duckdb/src/execution/operator/helper/physical_create_secret.cpp +21 -0
  271. package/src/duckdb/src/execution/operator/helper/physical_materialized_collector.cpp +1 -1
  272. package/src/duckdb/src/execution/operator/helper/physical_pragma.cpp +2 -2
  273. package/src/duckdb/src/execution/operator/helper/physical_reservoir_sample.cpp +34 -9
  274. package/src/duckdb/src/execution/operator/helper/physical_result_collector.cpp +10 -0
  275. package/src/duckdb/src/execution/operator/helper/physical_transaction.cpp +1 -0
  276. package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +25 -10
  277. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +7 -8
  278. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +1 -1
  279. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +5 -2
  280. package/src/duckdb/src/execution/operator/join/physical_comparison_join.cpp +1 -1
  281. package/src/duckdb/src/execution/operator/join/physical_delim_join.cpp +5 -127
  282. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +221 -61
  283. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +18 -21
  284. package/src/duckdb/src/execution/operator/join/physical_join.cpp +10 -5
  285. package/src/duckdb/src/execution/operator/join/physical_left_delim_join.cpp +137 -0
  286. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +11 -4
  287. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +2 -2
  288. package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +19 -4
  289. package/src/duckdb/src/execution/operator/join/physical_right_delim_join.cpp +121 -0
  290. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +3 -2
  291. package/src/duckdb/src/execution/operator/persistent/physical_copy_database.cpp +59 -0
  292. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +132 -92
  293. package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +54 -54
  294. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  295. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +4 -0
  296. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +21 -3
  297. package/src/duckdb/src/execution/operator/schema/physical_alter.cpp +1 -0
  298. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +61 -43
  299. package/src/duckdb/src/execution/operator/schema/physical_create_art_index.cpp +15 -13
  300. package/src/duckdb/src/execution/operator/schema/physical_create_schema.cpp +1 -0
  301. package/src/duckdb/src/execution/operator/schema/physical_drop.cpp +10 -0
  302. package/src/duckdb/src/execution/operator/set/physical_cte.cpp +44 -90
  303. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +3 -0
  304. package/src/duckdb/src/execution/operator/set/physical_union.cpp +8 -4
  305. package/src/duckdb/src/execution/physical_operator.cpp +3 -1
  306. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +30 -143
  307. package/src/duckdb/src/execution/physical_plan/plan_copy_database.cpp +12 -0
  308. package/src/duckdb/src/execution/physical_plan/plan_copy_to_file.cpp +11 -4
  309. package/src/duckdb/src/execution/physical_plan/plan_create_index.cpp +8 -8
  310. package/src/duckdb/src/execution/physical_plan/plan_create_secret.cpp +11 -0
  311. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +9 -8
  312. package/src/duckdb/src/execution/physical_plan/plan_cte.cpp +5 -3
  313. package/src/duckdb/src/execution/physical_plan/plan_delim_join.cpp +15 -6
  314. package/src/duckdb/src/execution/physical_plan/plan_positional_join.cpp +1 -0
  315. package/src/duckdb/src/execution/physical_plan/plan_pragma.cpp +1 -1
  316. package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +3 -1
  317. package/src/duckdb/src/execution/physical_plan/plan_set_operation.cpp +90 -12
  318. package/src/duckdb/src/execution/physical_plan/plan_window.cpp +67 -22
  319. package/src/duckdb/src/execution/physical_plan_generator.cpp +6 -3
  320. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +163 -32
  321. package/src/duckdb/src/execution/reservoir_sample.cpp +112 -32
  322. package/src/duckdb/src/execution/window_executor.cpp +291 -26
  323. package/src/duckdb/src/execution/window_segment_tree.cpp +958 -114
  324. package/src/duckdb/src/function/aggregate/distributive/count.cpp +18 -16
  325. package/src/duckdb/src/function/aggregate/distributive/first.cpp +11 -4
  326. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +303 -131
  327. package/src/duckdb/src/function/cast/array_casts.cpp +226 -0
  328. package/src/duckdb/src/function/cast/bit_cast.cpp +2 -0
  329. package/src/duckdb/src/function/cast/cast_function_set.cpp +13 -2
  330. package/src/duckdb/src/function/cast/decimal_cast.cpp +2 -0
  331. package/src/duckdb/src/function/cast/default_casts.cpp +4 -1
  332. package/src/duckdb/src/function/cast/list_casts.cpp +151 -6
  333. package/src/duckdb/src/function/cast/numeric_casts.cpp +4 -0
  334. package/src/duckdb/src/function/cast/string_cast.cpp +95 -5
  335. package/src/duckdb/src/function/cast/struct_cast.cpp +53 -19
  336. package/src/duckdb/src/function/cast/time_casts.cpp +23 -1
  337. package/src/duckdb/src/function/cast/union/from_struct.cpp +1 -0
  338. package/src/duckdb/src/function/cast/union_casts.cpp +4 -3
  339. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +8 -4
  340. package/src/duckdb/src/function/cast_rules.cpp +197 -31
  341. package/src/duckdb/src/function/compression_config.cpp +4 -0
  342. package/src/duckdb/src/function/function.cpp +15 -9
  343. package/src/duckdb/src/function/function_binder.cpp +80 -29
  344. package/src/duckdb/src/function/function_set.cpp +6 -6
  345. package/src/duckdb/src/function/pragma/pragma_functions.cpp +10 -8
  346. package/src/duckdb/src/function/pragma/pragma_queries.cpp +34 -38
  347. package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +12 -0
  348. package/src/duckdb/src/function/scalar/list/contains_or_position.cpp +10 -1
  349. package/src/duckdb/src/function/scalar/list/list_concat.cpp +11 -1
  350. package/src/duckdb/src/function/scalar/list/list_extract.cpp +14 -3
  351. package/src/duckdb/src/function/scalar/list/list_resize.cpp +4 -0
  352. package/src/duckdb/src/function/scalar/list/list_select.cpp +176 -0
  353. package/src/duckdb/src/function/scalar/list/list_zip.cpp +165 -0
  354. package/src/duckdb/src/function/scalar/nested_functions.cpp +33 -0
  355. package/src/duckdb/src/function/scalar/operators/add.cpp +53 -6
  356. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +48 -14
  357. package/src/duckdb/src/function/scalar/operators/multiply.cpp +9 -1
  358. package/src/duckdb/src/function/scalar/operators/subtract.cpp +19 -4
  359. package/src/duckdb/src/function/scalar/sequence/nextval.cpp +28 -55
  360. package/src/duckdb/src/function/scalar/strftime_format.cpp +242 -19
  361. package/src/duckdb/src/function/scalar/string/caseconvert.cpp +2 -2
  362. package/src/duckdb/src/function/scalar/string/concat.cpp +16 -6
  363. package/src/duckdb/src/function/scalar/string/length.cpp +124 -24
  364. package/src/duckdb/src/function/scalar/string/regexp.cpp +27 -27
  365. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +64 -15
  366. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +4 -3
  367. package/src/duckdb/src/function/scalar_function.cpp +8 -7
  368. package/src/duckdb/src/function/table/arrow/arrow_duck_schema.cpp +12 -0
  369. package/src/duckdb/src/function/table/arrow.cpp +20 -27
  370. package/src/duckdb/src/function/table/arrow_conversion.cpp +433 -150
  371. package/src/duckdb/src/function/table/copy_csv.cpp +62 -62
  372. package/src/duckdb/src/function/table/range.cpp +6 -3
  373. package/src/duckdb/src/function/table/read_csv.cpp +107 -759
  374. package/src/duckdb/src/function/table/read_file.cpp +242 -0
  375. package/src/duckdb/src/function/table/sniff_csv.cpp +275 -0
  376. package/src/duckdb/src/function/table/system/duckdb_columns.cpp +15 -3
  377. package/src/duckdb/src/function/table/system/duckdb_databases.cpp +5 -0
  378. package/src/duckdb/src/function/table/system/duckdb_dependencies.cpp +9 -13
  379. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +67 -14
  380. package/src/duckdb/src/function/table/system/duckdb_indexes.cpp +12 -15
  381. package/src/duckdb/src/function/table/system/duckdb_memory.cpp +63 -0
  382. package/src/duckdb/src/function/table/system/duckdb_optimizers.cpp +57 -0
  383. package/src/duckdb/src/function/table/system/duckdb_schemas.cpp +5 -0
  384. package/src/duckdb/src/function/table/system/duckdb_secrets.cpp +128 -0
  385. package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +12 -6
  386. package/src/duckdb/src/function/table/system/duckdb_settings.cpp +0 -1
  387. package/src/duckdb/src/function/table/system/duckdb_tables.cpp +5 -0
  388. package/src/duckdb/src/function/table/system/duckdb_types.cpp +6 -0
  389. package/src/duckdb/src/function/table/system/duckdb_views.cpp +5 -0
  390. package/src/duckdb/src/function/table/system/pragma_table_info.cpp +166 -64
  391. package/src/duckdb/src/function/table/system/test_all_types.cpp +2 -1
  392. package/src/duckdb/src/function/table/system_functions.cpp +3 -2
  393. package/src/duckdb/src/function/table/table_scan.cpp +50 -110
  394. package/src/duckdb/src/function/table/version/pragma_version.cpp +4 -44
  395. package/src/duckdb/src/function/table_function.cpp +2 -2
  396. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +4 -3
  397. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/dependency/dependency_dependent_entry.hpp +27 -0
  398. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/dependency/dependency_entry.hpp +66 -0
  399. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/dependency/dependency_subject_entry.hpp +27 -0
  400. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_index_entry.hpp +25 -5
  401. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_schema_entry.hpp +3 -1
  402. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -1
  403. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/index_catalog_entry.hpp +19 -5
  404. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/list.hpp +1 -0
  405. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/scalar_macro_catalog_entry.hpp +2 -0
  406. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +1 -1
  407. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +26 -11
  408. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +1 -0
  409. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_macro_catalog_entry.hpp +2 -0
  410. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +1 -0
  411. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/view_catalog_entry.hpp +2 -0
  412. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +15 -0
  413. package/src/duckdb/src/include/duckdb/catalog/catalog_set.hpp +41 -49
  414. package/src/duckdb/src/include/duckdb/catalog/catalog_transaction.hpp +1 -0
  415. package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +3 -1
  416. package/src/duckdb/src/include/duckdb/catalog/dependency.hpp +120 -8
  417. package/src/duckdb/src/include/duckdb/catalog/dependency_catalog_set.hpp +32 -0
  418. package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +2 -0
  419. package/src/duckdb/src/include/duckdb/catalog/dependency_manager.hpp +92 -12
  420. package/src/duckdb/src/include/duckdb/catalog/standard_entry.hpp +1 -1
  421. package/src/duckdb/src/include/duckdb/common/adbc/adbc-init.hpp +4 -2
  422. package/src/duckdb/src/include/duckdb/common/adbc/adbc.h +1153 -12
  423. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +6 -6
  424. package/src/duckdb/src/include/duckdb/common/adbc/driver_manager.h +0 -2
  425. package/src/duckdb/src/include/duckdb/common/adbc/options.h +64 -0
  426. package/src/duckdb/src/include/duckdb/common/adbc/single_batch_array_stream.hpp +8 -0
  427. package/src/duckdb/src/include/duckdb/common/arrow/arrow.hpp +25 -6
  428. package/src/duckdb/src/include/duckdb/common/arrow/arrow_wrapper.hpp +3 -3
  429. package/src/duckdb/src/include/duckdb/common/arrow/result_arrow_wrapper.hpp +1 -1
  430. package/src/duckdb/src/include/duckdb/common/bit_utils.hpp +30 -0
  431. package/src/duckdb/src/include/duckdb/common/bitpacking.hpp +6 -6
  432. package/src/duckdb/src/include/duckdb/common/case_insensitive_map.hpp +10 -0
  433. package/src/duckdb/src/include/duckdb/common/constants.hpp +1 -0
  434. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +75 -19
  435. package/src/duckdb/src/include/duckdb/common/enums/catalog_type.hpp +11 -1
  436. package/src/duckdb/src/include/duckdb/common/enums/compression_type.hpp +3 -0
  437. package/src/duckdb/src/include/duckdb/common/enums/expression_type.hpp +2 -0
  438. package/src/duckdb/src/include/duckdb/common/enums/index_constraint_type.hpp +35 -0
  439. package/src/duckdb/src/include/duckdb/common/enums/join_type.hpp +16 -3
  440. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +6 -5
  441. package/src/duckdb/src/include/duckdb/common/enums/memory_tag.hpp +32 -0
  442. package/src/duckdb/src/include/duckdb/common/enums/on_create_conflict.hpp +26 -0
  443. package/src/duckdb/src/include/duckdb/common/enums/optimizer_type.hpp +2 -0
  444. package/src/duckdb/src/include/duckdb/common/enums/pending_execution_result.hpp +7 -1
  445. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +9 -3
  446. package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +6 -5
  447. package/src/duckdb/src/include/duckdb/common/enums/tableref_type.hpp +3 -2
  448. package/src/duckdb/src/include/duckdb/common/enums/wal_type.hpp +1 -0
  449. package/src/duckdb/src/include/duckdb/common/error_data.hpp +72 -0
  450. package/src/duckdb/src/include/duckdb/common/exception/binder_exception.hpp +47 -0
  451. package/src/duckdb/src/include/duckdb/common/exception/catalog_exception.hpp +39 -0
  452. package/src/duckdb/src/include/duckdb/common/exception/conversion_exception.hpp +27 -0
  453. package/src/duckdb/src/include/duckdb/common/exception/http_exception.hpp +62 -0
  454. package/src/duckdb/src/include/duckdb/common/exception/list.hpp +6 -0
  455. package/src/duckdb/src/include/duckdb/common/exception/parser_exception.hpp +29 -0
  456. package/src/duckdb/src/include/duckdb/common/exception/transaction_exception.hpp +25 -0
  457. package/src/duckdb/src/include/duckdb/common/exception.hpp +52 -166
  458. package/src/duckdb/src/include/duckdb/common/exception_format_value.hpp +7 -4
  459. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +53 -1
  460. package/src/duckdb/src/include/duckdb/common/helper.hpp +13 -3
  461. package/src/duckdb/src/include/duckdb/common/http_state.hpp +18 -4
  462. package/src/duckdb/src/include/duckdb/common/hugeint.hpp +5 -1
  463. package/src/duckdb/src/include/duckdb/common/limits.hpp +19 -1
  464. package/src/duckdb/src/include/duckdb/common/local_file_system.hpp +1 -0
  465. package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +7 -2
  466. package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +16 -3
  467. package/src/duckdb/src/include/duckdb/common/operator/add.hpp +13 -2
  468. package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +114 -5
  469. package/src/duckdb/src/include/duckdb/common/operator/comparison_operators.hpp +0 -4
  470. package/src/duckdb/src/include/duckdb/common/operator/convert_to_string.hpp +2 -0
  471. package/src/duckdb/src/include/duckdb/common/operator/decimal_cast_operators.hpp +29 -0
  472. package/src/duckdb/src/include/duckdb/common/operator/double_cast_operator.hpp +52 -0
  473. package/src/duckdb/src/include/duckdb/common/operator/integer_cast_operator.hpp +459 -0
  474. package/src/duckdb/src/include/duckdb/common/operator/multiply.hpp +2 -0
  475. package/src/duckdb/src/include/duckdb/common/operator/numeric_cast.hpp +136 -0
  476. package/src/duckdb/src/include/duckdb/common/operator/string_cast.hpp +2 -0
  477. package/src/duckdb/src/include/duckdb/common/operator/subtract.hpp +7 -1
  478. package/src/duckdb/src/include/duckdb/common/optional_idx.hpp +7 -5
  479. package/src/duckdb/src/include/duckdb/common/platform.h +53 -0
  480. package/src/duckdb/src/include/duckdb/common/progress_bar/display/terminal_progress_bar_display.hpp +5 -5
  481. package/src/duckdb/src/include/duckdb/common/progress_bar/progress_bar.hpp +22 -6
  482. package/src/duckdb/src/include/duckdb/common/radix.hpp +6 -0
  483. package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +20 -6
  484. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -0
  485. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +1 -0
  486. package/src/duckdb/src/include/duckdb/common/serializer/deserializer.hpp +43 -4
  487. package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +1 -0
  488. package/src/duckdb/src/include/duckdb/common/serializer/serializer.hpp +15 -0
  489. package/src/duckdb/src/include/duckdb/common/sort/comparators.hpp +2 -0
  490. package/src/duckdb/src/include/duckdb/common/sort/partition_state.hpp +12 -2
  491. package/src/duckdb/src/include/duckdb/common/sort/sort.hpp +81 -0
  492. package/src/duckdb/src/include/duckdb/common/sort/sorted_block.hpp +0 -78
  493. package/src/duckdb/src/include/duckdb/common/string_util.hpp +23 -1
  494. package/src/duckdb/src/include/duckdb/common/type_util.hpp +5 -1
  495. package/src/duckdb/src/include/duckdb/common/types/cast_helpers.hpp +26 -3
  496. package/src/duckdb/src/include/duckdb/common/types/conflict_manager.hpp +8 -0
  497. package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +3 -0
  498. package/src/duckdb/src/include/duckdb/common/types/date.hpp +3 -0
  499. package/src/duckdb/src/include/duckdb/common/types/datetime.hpp +5 -3
  500. package/src/duckdb/src/include/duckdb/common/types/hash.hpp +2 -0
  501. package/src/duckdb/src/include/duckdb/common/types/hugeint.hpp +81 -15
  502. package/src/duckdb/src/include/duckdb/common/types/interval.hpp +57 -29
  503. package/src/duckdb/src/include/duckdb/common/types/list_segment.hpp +1 -1
  504. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +4 -2
  505. package/src/duckdb/src/include/duckdb/common/types/row/row_data_collection.hpp +2 -2
  506. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_collection.hpp +26 -22
  507. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +7 -0
  508. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +7 -5
  509. package/src/duckdb/src/include/duckdb/common/types/time.hpp +6 -2
  510. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +2 -0
  511. package/src/duckdb/src/include/duckdb/common/types/uhugeint.hpp +216 -0
  512. package/src/duckdb/src/include/duckdb/common/types/validity_mask.hpp +18 -10
  513. package/src/duckdb/src/include/duckdb/common/types/value.hpp +31 -0
  514. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +18 -2
  515. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +22 -1
  516. package/src/duckdb/src/include/duckdb/common/types.hpp +151 -49
  517. package/src/duckdb/src/include/duckdb/common/uhugeint.hpp +81 -0
  518. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +70 -6
  519. package/src/duckdb/src/include/duckdb/common/vector_size.hpp +6 -6
  520. package/src/duckdb/src/include/duckdb/core_functions/aggregate/distributive_functions.hpp +29 -2
  521. package/src/duckdb/src/include/duckdb/core_functions/lambda_functions.hpp +131 -0
  522. package/src/duckdb/src/include/duckdb/core_functions/scalar/array_functions.hpp +69 -0
  523. package/src/duckdb/src/include/duckdb/core_functions/scalar/blob_functions.hpp +9 -0
  524. package/src/duckdb/src/include/duckdb/core_functions/scalar/date_functions.hpp +40 -4
  525. package/src/duckdb/src/include/duckdb/core_functions/scalar/list_functions.hpp +42 -0
  526. package/src/duckdb/src/include/duckdb/core_functions/scalar/secret_functions.hpp +27 -0
  527. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +56 -2
  528. package/src/duckdb/src/include/duckdb/core_functions/to_interval.hpp +29 -0
  529. package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +2 -2
  530. package/src/duckdb/src/include/duckdb/execution/executor.hpp +11 -13
  531. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +34 -19
  532. package/src/duckdb/src/include/duckdb/execution/index/fixed_size_allocator.hpp +18 -14
  533. package/src/duckdb/src/include/duckdb/execution/index/fixed_size_buffer.hpp +2 -1
  534. package/src/duckdb/src/include/duckdb/execution/index/index_type.hpp +57 -0
  535. package/src/duckdb/src/include/duckdb/execution/index/index_type_set.hpp +29 -0
  536. package/src/duckdb/src/include/duckdb/execution/index/unknown_index.hpp +65 -0
  537. package/src/duckdb/src/include/duckdb/execution/join_hashtable.hpp +35 -24
  538. package/src/duckdb/src/include/duckdb/execution/merge_sort_tree.hpp +630 -0
  539. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_hash_aggregate.hpp +2 -0
  540. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_window.hpp +3 -2
  541. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/buffer_manager/csv_buffer.hpp +103 -0
  542. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.hpp +74 -0
  543. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/buffer_manager/csv_file_handle.hpp +60 -0
  544. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/options/csv_option.hpp +155 -0
  545. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/options/csv_reader_options.hpp +163 -0
  546. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/options/state_machine_options.hpp +35 -0
  547. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/base_scanner.hpp +228 -0
  548. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/column_count_scanner.hpp +70 -0
  549. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/scanner_boundary.hpp +93 -0
  550. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/skip_scanner.hpp +60 -0
  551. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/string_value_scanner.hpp +197 -0
  552. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/sniffer/csv_sniffer.hpp +189 -0
  553. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/sniffer/quote_rules.hpp +21 -0
  554. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/state_machine/csv_state.hpp +30 -0
  555. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/state_machine/csv_state_machine.hpp +99 -0
  556. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/state_machine/csv_state_machine_cache.hpp +87 -0
  557. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/table_function/csv_file_scanner.hpp +70 -0
  558. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/table_function/global_csv_state.hpp +80 -0
  559. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/util/csv_casting.hpp +137 -0
  560. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/util/csv_error.hpp +104 -0
  561. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_batch_collector.hpp +0 -4
  562. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_buffered_collector.hpp +37 -0
  563. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_create_secret.hpp +38 -0
  564. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_pragma.hpp +4 -7
  565. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_reservoir_sample.hpp +6 -2
  566. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_blockwise_nl_join.hpp +1 -2
  567. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_delim_join.hpp +5 -18
  568. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_hash_join.hpp +14 -5
  569. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_iejoin.hpp +2 -2
  570. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_join.hpp +2 -1
  571. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_left_delim_join.hpp +37 -0
  572. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_nested_loop_join.hpp +1 -2
  573. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp +1 -1
  574. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_range_join.hpp +1 -1
  575. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_right_delim_join.hpp +37 -0
  576. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_order.hpp +0 -1
  577. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_top_n.hpp +0 -1
  578. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_database.hpp +35 -0
  579. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +8 -3
  580. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_export.hpp +14 -0
  581. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +1 -4
  582. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_expression_scan.hpp +0 -1
  583. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +17 -12
  584. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +4 -0
  585. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_union.hpp +3 -1
  586. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +2 -1
  587. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +6 -2
  588. package/src/duckdb/src/include/duckdb/execution/radix_partitioned_hashtable.hpp +3 -1
  589. package/src/duckdb/src/include/duckdb/execution/reservoir_sample.hpp +32 -18
  590. package/src/duckdb/src/include/duckdb/execution/task_error_manager.hpp +57 -0
  591. package/src/duckdb/src/include/duckdb/execution/window_executor.hpp +2 -0
  592. package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +101 -19
  593. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +46 -14
  594. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +6 -2
  595. package/src/duckdb/src/include/duckdb/function/built_in_functions.hpp +1 -0
  596. package/src/duckdb/src/include/duckdb/function/cast/bound_cast_data.hpp +26 -1
  597. package/src/duckdb/src/include/duckdb/function/cast/cast_function_set.hpp +3 -0
  598. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +1 -0
  599. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +7 -1
  600. package/src/duckdb/src/include/duckdb/function/compression/compression.hpp +10 -0
  601. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +16 -4
  602. package/src/duckdb/src/include/duckdb/function/function.hpp +12 -7
  603. package/src/duckdb/src/include/duckdb/function/function_binder.hpp +15 -12
  604. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +4 -3
  605. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +3 -3
  606. package/src/duckdb/src/include/duckdb/function/pragma/pragma_functions.hpp +4 -1
  607. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -0
  608. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +21 -1
  609. package/src/duckdb/src/include/duckdb/function/scalar/sequence_functions.hpp +22 -0
  610. package/src/duckdb/src/include/duckdb/function/scalar/strftime_format.hpp +16 -2
  611. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +22 -8
  612. package/src/duckdb/src/include/duckdb/function/table/arrow/arrow_duck_schema.hpp +6 -0
  613. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +35 -3
  614. package/src/duckdb/src/include/duckdb/function/table/list.hpp +1 -0
  615. package/src/duckdb/src/include/duckdb/function/table/range.hpp +12 -0
  616. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +14 -16
  617. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +12 -8
  618. package/src/duckdb/src/include/duckdb/function/table/table_scan.hpp +0 -2
  619. package/src/duckdb/src/include/duckdb/function/table_function.hpp +8 -3
  620. package/src/duckdb/src/include/duckdb/main/appender.hpp +3 -1
  621. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +3 -2
  622. package/src/duckdb/src/include/duckdb/main/buffered_data/buffered_data.hpp +89 -0
  623. package/src/duckdb/src/include/duckdb/main/buffered_data/simple_buffered_data.hpp +53 -0
  624. package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +2 -1
  625. package/src/duckdb/src/include/duckdb/main/capi/cast/generic.hpp +2 -0
  626. package/src/duckdb/src/include/duckdb/main/chunk_scan_state/query_result.hpp +4 -4
  627. package/src/duckdb/src/include/duckdb/main/chunk_scan_state.hpp +3 -3
  628. package/src/duckdb/src/include/duckdb/main/client_config.hpp +8 -10
  629. package/src/duckdb/src/include/duckdb/main/client_context.hpp +22 -23
  630. package/src/duckdb/src/include/duckdb/main/client_context_state.hpp +37 -0
  631. package/src/duckdb/src/include/duckdb/main/client_data.hpp +1 -7
  632. package/src/duckdb/src/include/duckdb/main/config.hpp +24 -7
  633. package/src/duckdb/src/include/duckdb/main/connection.hpp +8 -1
  634. package/src/duckdb/src/include/duckdb/main/connection_manager.hpp +17 -26
  635. package/src/duckdb/src/include/duckdb/main/database.hpp +4 -2
  636. package/src/duckdb/src/include/duckdb/main/database_manager.hpp +39 -7
  637. package/src/duckdb/src/include/duckdb/main/database_path_and_type.hpp +5 -4
  638. package/src/duckdb/src/include/duckdb/main/error_manager.hpp +4 -1
  639. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +203 -197
  640. package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +42 -16
  641. package/src/duckdb/src/include/duckdb/main/extension_util.hpp +8 -1
  642. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +1 -1
  643. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +5 -2
  644. package/src/duckdb/src/include/duckdb/main/prepared_statement.hpp +4 -4
  645. package/src/duckdb/src/include/duckdb/main/prepared_statement_data.hpp +2 -0
  646. package/src/duckdb/src/include/duckdb/main/query_profiler.hpp +0 -32
  647. package/src/duckdb/src/include/duckdb/main/query_result.hpp +13 -12
  648. package/src/duckdb/src/include/duckdb/main/relation/read_csv_relation.hpp +6 -6
  649. package/src/duckdb/src/include/duckdb/main/relation/setop_relation.hpp +3 -1
  650. package/src/duckdb/src/include/duckdb/main/secret/secret.hpp +206 -0
  651. package/src/duckdb/src/include/duckdb/main/secret/secret_manager.hpp +211 -0
  652. package/src/duckdb/src/include/duckdb/main/secret/secret_storage.hpp +164 -0
  653. package/src/duckdb/src/include/duckdb/main/settings.hpp +52 -13
  654. package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +9 -1
  655. package/src/duckdb/src/include/duckdb/optimizer/deliminator.hpp +4 -1
  656. package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +2 -0
  657. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_node.hpp +1 -1
  658. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_relation.hpp +2 -0
  659. package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph_manager.hpp +3 -0
  660. package/src/duckdb/src/include/duckdb/optimizer/join_order/relation_statistics_helper.hpp +1 -0
  661. package/src/duckdb/src/include/duckdb/parallel/event.hpp +2 -2
  662. package/src/duckdb/src/include/duckdb/parallel/meta_pipeline.hpp +14 -22
  663. package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +20 -0
  664. package/src/duckdb/src/include/duckdb/parallel/pipeline_executor.hpp +3 -5
  665. package/src/duckdb/src/include/duckdb/parallel/task.hpp +7 -0
  666. package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +10 -4
  667. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +3 -0
  668. package/src/duckdb/src/include/duckdb/parser/column_definition.hpp +8 -1
  669. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +11 -4
  670. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +16 -9
  671. package/src/duckdb/src/include/duckdb/parser/expression/lambdaref_expression.hpp +47 -0
  672. package/src/duckdb/src/include/duckdb/parser/expression/list.hpp +1 -0
  673. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +29 -2
  674. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +2 -1
  675. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +47 -2
  676. package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +3 -0
  677. package/src/duckdb/src/include/duckdb/parser/parsed_data/bound_pragma_info.hpp +29 -0
  678. package/src/duckdb/src/include/duckdb/parser/parsed_data/comment_on_info.hpp +45 -0
  679. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_index_info.hpp +21 -22
  680. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +5 -11
  681. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_schema_info.hpp +23 -0
  682. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_secret_info.hpp +47 -0
  683. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_info.hpp +3 -1
  684. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_type_info.hpp +2 -0
  685. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +4 -0
  686. package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +6 -1
  687. package/src/duckdb/src/include/duckdb/parser/parsed_data/extra_drop_info.hpp +66 -0
  688. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +3 -1
  689. package/src/duckdb/src/include/duckdb/parser/parsed_data/pragma_info.hpp +8 -4
  690. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +1 -3
  691. package/src/duckdb/src/include/duckdb/parser/parser_extension.hpp +2 -0
  692. package/src/duckdb/src/include/duckdb/parser/qualified_name.hpp +1 -1
  693. package/src/duckdb/src/include/duckdb/parser/query_error_context.hpp +5 -22
  694. package/src/duckdb/src/include/duckdb/parser/query_node/set_operation_node.hpp +2 -0
  695. package/src/duckdb/src/include/duckdb/parser/statement/copy_database_statement.hpp +40 -0
  696. package/src/duckdb/src/include/duckdb/parser/statement/list.hpp +1 -1
  697. package/src/duckdb/src/include/duckdb/parser/statement/set_statement.hpp +4 -3
  698. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -2
  699. package/src/duckdb/src/include/duckdb/parser/tableref/list.hpp +1 -0
  700. package/src/duckdb/src/include/duckdb/parser/tableref/showref.hpp +47 -0
  701. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +2 -1
  702. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +2 -1
  703. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +20 -3
  704. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +5 -1
  705. package/src/duckdb/src/include/duckdb/planner/binder.hpp +24 -27
  706. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +4 -0
  707. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +4 -0
  708. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +4 -1
  709. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +2 -1
  710. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +4 -2
  711. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +5 -6
  712. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +11 -0
  713. package/src/duckdb/src/include/duckdb/planner/expression.hpp +2 -1
  714. package/src/duckdb/src/include/duckdb/planner/expression_binder/column_alias_binder.hpp +2 -2
  715. package/src/duckdb/src/include/duckdb/planner/expression_binder/index_binder.hpp +3 -2
  716. package/src/duckdb/src/include/duckdb/planner/expression_binder/order_binder.hpp +2 -1
  717. package/src/duckdb/src/include/duckdb/planner/expression_binder/table_function_binder.hpp +2 -1
  718. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +65 -22
  719. package/src/duckdb/src/include/duckdb/planner/filter/struct_filter.hpp +41 -0
  720. package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +2 -1
  721. package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +2 -1
  722. package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +2 -0
  723. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_database.hpp +45 -0
  724. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +3 -0
  725. package/src/duckdb/src/include/duckdb/planner/operator/logical_create_secret.hpp +43 -0
  726. package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +3 -2
  727. package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +5 -10
  728. package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +2 -0
  729. package/src/duckdb/src/include/duckdb/planner/operator/logical_set_operation.hpp +11 -4
  730. package/src/duckdb/src/include/duckdb/planner/parsed_data/bound_create_table_info.hpp +3 -3
  731. package/src/duckdb/src/include/duckdb/planner/pragma_handler.hpp +1 -1
  732. package/src/duckdb/src/include/duckdb/planner/query_node/bound_set_operation_node.hpp +2 -0
  733. package/src/duckdb/src/include/duckdb/planner/subquery/flatten_dependent_join.hpp +3 -0
  734. package/src/duckdb/src/include/duckdb/planner/subquery/rewrite_cte_scan.hpp +29 -0
  735. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +9 -7
  736. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +2 -1
  737. package/src/duckdb/src/include/duckdb/planner/tableref/bound_dummytableref.hpp +3 -2
  738. package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +9 -5
  739. package/src/duckdb/src/include/duckdb/storage/buffer/buffer_pool.hpp +23 -6
  740. package/src/duckdb/src/include/duckdb/storage/buffer/temporary_file_information.hpp +7 -0
  741. package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +11 -4
  742. package/src/duckdb/src/include/duckdb/storage/checkpoint/row_group_writer.hpp +0 -3
  743. package/src/duckdb/src/include/duckdb/storage/checkpoint/string_checkpoint_state.hpp +1 -1
  744. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +7 -7
  745. package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +1 -1
  746. package/src/duckdb/src/include/duckdb/storage/compression/alp/algorithm/alp.hpp +408 -0
  747. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_analyze.hpp +173 -0
  748. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_compress.hpp +283 -0
  749. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_constants.hpp +134 -0
  750. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_fetch.hpp +42 -0
  751. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_scan.hpp +244 -0
  752. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_utils.hpp +103 -0
  753. package/src/duckdb/src/include/duckdb/storage/compression/alprd/algorithm/alprd.hpp +235 -0
  754. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_analyze.hpp +134 -0
  755. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_compress.hpp +301 -0
  756. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_constants.hpp +35 -0
  757. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_fetch.hpp +41 -0
  758. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_scan.hpp +252 -0
  759. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +7 -103
  760. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +5 -234
  761. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_scan.hpp +2 -2
  762. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +7 -107
  763. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +5 -184
  764. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +12 -17
  765. package/src/duckdb/src/include/duckdb/storage/database_size.hpp +1 -0
  766. package/src/duckdb/src/include/duckdb/storage/index.hpp +40 -42
  767. package/src/duckdb/src/include/duckdb/storage/index_storage_info.hpp +77 -0
  768. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_manager.hpp +6 -2
  769. package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +0 -1
  770. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +12 -6
  771. package/src/duckdb/src/include/duckdb/storage/segment/uncompressed.hpp +8 -3
  772. package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +17 -17
  773. package/src/duckdb/src/include/duckdb/storage/statistics/array_stats.hpp +40 -0
  774. package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +12 -3
  775. package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats_union.hpp +3 -0
  776. package/src/duckdb/src/include/duckdb/storage/storage_extension.hpp +3 -2
  777. package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +49 -24
  778. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +8 -4
  779. package/src/duckdb/src/include/duckdb/storage/table/array_column_data.hpp +67 -0
  780. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +3 -3
  781. package/src/duckdb/src/include/duckdb/storage/table/column_data_checkpointer.hpp +1 -0
  782. package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +1 -2
  783. package/src/duckdb/src/include/duckdb/storage/table/data_table_info.hpp +8 -3
  784. package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +1 -1
  785. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +4 -2
  786. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +7 -0
  787. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +12 -1
  788. package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +1 -1
  789. package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +1 -1
  790. package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +16 -12
  791. package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +4 -0
  792. package/src/duckdb/src/include/duckdb/storage/table_storage_info.hpp +6 -9
  793. package/src/duckdb/src/include/duckdb/storage/temporary_memory_manager.hpp +119 -0
  794. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +13 -55
  795. package/src/duckdb/src/include/duckdb/transaction/duck_transaction.hpp +1 -1
  796. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +4 -5
  797. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +2 -2
  798. package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +6 -3
  799. package/src/duckdb/src/include/duckdb/transaction/transaction_context.hpp +4 -4
  800. package/src/duckdb/src/include/duckdb/transaction/transaction_manager.hpp +3 -3
  801. package/src/duckdb/src/include/duckdb/verification/fetch_row_verifier.hpp +25 -0
  802. package/src/duckdb/src/include/duckdb/verification/statement_verifier.hpp +5 -0
  803. package/src/duckdb/src/include/duckdb.h +571 -143
  804. package/src/duckdb/src/main/appender.cpp +17 -2
  805. package/src/duckdb/src/main/attached_database.cpp +24 -12
  806. package/src/duckdb/src/main/buffered_data/simple_buffered_data.cpp +96 -0
  807. package/src/duckdb/src/main/capi/appender-c.cpp +42 -3
  808. package/src/duckdb/src/main/capi/arrow-c.cpp +32 -9
  809. package/src/duckdb/src/main/capi/datetime-c.cpp +22 -0
  810. package/src/duckdb/src/main/capi/duckdb-c.cpp +14 -4
  811. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +66 -2
  812. package/src/duckdb/src/main/capi/helper-c.cpp +76 -2
  813. package/src/duckdb/src/main/capi/hugeint-c.cpp +23 -0
  814. package/src/duckdb/src/main/capi/logical_types-c.cpp +27 -3
  815. package/src/duckdb/src/main/capi/pending-c.cpp +43 -9
  816. package/src/duckdb/src/main/capi/prepared-c.cpp +38 -2
  817. package/src/duckdb/src/main/capi/result-c.cpp +54 -3
  818. package/src/duckdb/src/main/capi/table_function-c.cpp +4 -4
  819. package/src/duckdb/src/main/capi/value-c.cpp +10 -0
  820. package/src/duckdb/src/main/chunk_scan_state/query_result.cpp +3 -3
  821. package/src/duckdb/src/main/client_context.cpp +259 -250
  822. package/src/duckdb/src/main/client_data.cpp +0 -1
  823. package/src/duckdb/src/main/client_verify.cpp +26 -8
  824. package/src/duckdb/src/main/config.cpp +34 -13
  825. package/src/duckdb/src/main/connection.cpp +27 -6
  826. package/src/duckdb/src/main/connection_manager.cpp +54 -0
  827. package/src/duckdb/src/main/database.cpp +44 -39
  828. package/src/duckdb/src/main/database_manager.cpp +106 -8
  829. package/src/duckdb/src/main/database_path_and_type.cpp +27 -8
  830. package/src/duckdb/src/main/db_instance_cache.cpp +4 -4
  831. package/src/duckdb/src/main/error_manager.cpp +12 -3
  832. package/src/duckdb/src/main/extension/extension_alias.cpp +2 -2
  833. package/src/duckdb/src/main/extension/extension_helper.cpp +15 -16
  834. package/src/duckdb/src/main/extension/extension_install.cpp +33 -24
  835. package/src/duckdb/src/main/extension/extension_load.cpp +22 -21
  836. package/src/duckdb/src/main/extension/extension_util.cpp +12 -0
  837. package/src/duckdb/src/main/materialized_query_result.cpp +1 -1
  838. package/src/duckdb/src/main/pending_query_result.cpp +25 -8
  839. package/src/duckdb/src/main/prepared_statement.cpp +5 -5
  840. package/src/duckdb/src/main/prepared_statement_data.cpp +8 -1
  841. package/src/duckdb/src/main/query_profiler.cpp +11 -11
  842. package/src/duckdb/src/main/query_result.cpp +32 -6
  843. package/src/duckdb/src/main/relation/cross_product_relation.cpp +1 -1
  844. package/src/duckdb/src/main/relation/join_relation.cpp +2 -2
  845. package/src/duckdb/src/main/relation/read_csv_relation.cpp +38 -32
  846. package/src/duckdb/src/main/relation/setop_relation.cpp +5 -3
  847. package/src/duckdb/src/main/relation.cpp +5 -5
  848. package/src/duckdb/src/main/secret/secret.cpp +135 -0
  849. package/src/duckdb/src/main/secret/secret_manager.cpp +634 -0
  850. package/src/duckdb/src/main/secret/secret_storage.cpp +233 -0
  851. package/src/duckdb/src/main/settings/settings.cpp +133 -38
  852. package/src/duckdb/src/main/stream_query_result.cpp +53 -14
  853. package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +6 -0
  854. package/src/duckdb/src/optimizer/cse_optimizer.cpp +1 -1
  855. package/src/duckdb/src/optimizer/deliminator.cpp +136 -14
  856. package/src/duckdb/src/optimizer/filter_combiner.cpp +72 -26
  857. package/src/duckdb/src/optimizer/filter_pushdown.cpp +3 -0
  858. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +2 -1
  859. package/src/duckdb/src/optimizer/join_order/cost_model.cpp +0 -1
  860. package/src/duckdb/src/optimizer/join_order/join_node.cpp +4 -0
  861. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +3 -6
  862. package/src/duckdb/src/optimizer/join_order/join_relation_set.cpp +20 -0
  863. package/src/duckdb/src/optimizer/join_order/query_graph_manager.cpp +71 -40
  864. package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +12 -3
  865. package/src/duckdb/src/optimizer/join_order/relation_statistics_helper.cpp +77 -3
  866. package/src/duckdb/src/optimizer/pushdown/pushdown_projection.cpp +7 -7
  867. package/src/duckdb/src/optimizer/pushdown/pushdown_semi_anti_join.cpp +56 -0
  868. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +21 -0
  869. package/src/duckdb/src/optimizer/rule/date_part_simplification.cpp +2 -2
  870. package/src/duckdb/src/optimizer/rule/move_constants.cpp +15 -10
  871. package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +70 -0
  872. package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +17 -5
  873. package/src/duckdb/src/optimizer/statistics/expression/propagate_cast.cpp +1 -0
  874. package/src/duckdb/src/optimizer/statistics/expression/propagate_comparison.cpp +1 -0
  875. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +1 -2
  876. package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +22 -9
  877. package/src/duckdb/src/optimizer/statistics/operator/propagate_window.cpp +28 -4
  878. package/src/duckdb/src/optimizer/unnest_rewriter.cpp +12 -7
  879. package/src/duckdb/src/parallel/event.cpp +2 -2
  880. package/src/duckdb/src/parallel/executor.cpp +114 -81
  881. package/src/duckdb/src/parallel/executor_task.cpp +2 -4
  882. package/src/duckdb/src/parallel/meta_pipeline.cpp +28 -29
  883. package/src/duckdb/src/parallel/pipeline.cpp +41 -41
  884. package/src/duckdb/src/parallel/pipeline_event.cpp +2 -4
  885. package/src/duckdb/src/parallel/pipeline_executor.cpp +13 -75
  886. package/src/duckdb/src/parallel/task_scheduler.cpp +22 -13
  887. package/src/duckdb/src/parser/column_definition.cpp +22 -4
  888. package/src/duckdb/src/parser/column_list.cpp +2 -1
  889. package/src/duckdb/src/parser/expression/function_expression.cpp +1 -1
  890. package/src/duckdb/src/parser/expression/lambda_expression.cpp +51 -0
  891. package/src/duckdb/src/parser/expression/lambdaref_expression.cpp +59 -0
  892. package/src/duckdb/src/parser/expression/window_expression.cpp +9 -1
  893. package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +40 -0
  894. package/src/duckdb/src/parser/parsed_data/attach_info.cpp +1 -0
  895. package/src/duckdb/src/parser/parsed_data/comment_on_info.cpp +19 -0
  896. package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +11 -9
  897. package/src/duckdb/src/parser/parsed_data/create_info.cpp +1 -0
  898. package/src/duckdb/src/parser/parsed_data/create_secret_info.cpp +22 -0
  899. package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +17 -0
  900. package/src/duckdb/src/parser/parsed_data/create_type_info.cpp +19 -0
  901. package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +13 -9
  902. package/src/duckdb/src/parser/parsed_data/drop_info.cpp +8 -9
  903. package/src/duckdb/src/parser/parsed_data/extra_drop_info.cpp +16 -0
  904. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +3 -1
  905. package/src/duckdb/src/parser/parser.cpp +14 -8
  906. package/src/duckdb/src/parser/query_error_context.cpp +12 -13
  907. package/src/duckdb/src/parser/query_node/select_node.cpp +5 -1
  908. package/src/duckdb/src/parser/query_node/set_operation_node.cpp +8 -13
  909. package/src/duckdb/src/parser/statement/copy_database_statement.cpp +41 -0
  910. package/src/duckdb/src/parser/statement/set_statement.cpp +5 -1
  911. package/src/duckdb/src/parser/tableref/basetableref.cpp +1 -0
  912. package/src/duckdb/src/parser/tableref/showref.cpp +47 -0
  913. package/src/duckdb/src/parser/transform/constraint/transform_constraint.cpp +6 -2
  914. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +1 -0
  915. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +30 -15
  916. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +1 -0
  917. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +3 -2
  918. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +34 -4
  919. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +26 -12
  920. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +1 -1
  921. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +34 -5
  922. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +3 -1
  923. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +3 -1
  924. package/src/duckdb/src/parser/transform/expression/transform_multi_assign_reference.cpp +3 -3
  925. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +3 -3
  926. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +1 -1
  927. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +13 -13
  928. package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +2 -0
  929. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +1 -1
  930. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +32 -1
  931. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +1 -1
  932. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +1 -0
  933. package/src/duckdb/src/parser/transform/statement/transform_comment_on.cpp +108 -0
  934. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +45 -37
  935. package/src/duckdb/src/parser/transform/statement/transform_copy_database.cpp +29 -0
  936. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +5 -14
  937. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +0 -1
  938. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +1 -1
  939. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +25 -6
  940. package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -1
  941. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +6 -14
  942. package/src/duckdb/src/parser/transform/statement/transform_secret.cpp +103 -0
  943. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +8 -1
  944. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +4 -8
  945. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -5
  946. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +14 -41
  947. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +13 -6
  948. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +3 -1
  949. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +1 -1
  950. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +1 -2
  951. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +6 -5
  952. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +1 -1
  953. package/src/duckdb/src/parser/transformer.cpp +22 -0
  954. package/src/duckdb/src/planner/bind_context.cpp +23 -14
  955. package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +15 -14
  956. package/src/duckdb/src/planner/binder/expression/bind_between_expression.cpp +20 -9
  957. package/src/duckdb/src/planner/binder/expression/bind_case_expression.cpp +12 -7
  958. package/src/duckdb/src/planner/binder/expression/bind_cast_expression.cpp +4 -4
  959. package/src/duckdb/src/planner/binder/expression/bind_collate_expression.cpp +3 -3
  960. package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +279 -195
  961. package/src/duckdb/src/planner/binder/expression/bind_comparison_expression.cpp +103 -17
  962. package/src/duckdb/src/planner/binder/expression/bind_conjunction_expression.cpp +3 -3
  963. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +91 -68
  964. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +116 -84
  965. package/src/duckdb/src/planner/binder/expression/bind_macro_expression.cpp +85 -15
  966. package/src/duckdb/src/planner/binder/expression/bind_operator_expression.cpp +68 -31
  967. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +7 -7
  968. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +11 -7
  969. package/src/duckdb/src/planner/binder/expression/bind_unnest_expression.cpp +42 -19
  970. package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +38 -16
  971. package/src/duckdb/src/planner/binder/query_node/bind_cte_node.cpp +16 -7
  972. package/src/duckdb/src/planner/binder/query_node/bind_recursive_cte_node.cpp +3 -0
  973. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +83 -12
  974. package/src/duckdb/src/planner/binder/query_node/bind_setop_node.cpp +28 -37
  975. package/src/duckdb/src/planner/binder/query_node/bind_table_macro_node.cpp +3 -4
  976. package/src/duckdb/src/planner/binder/query_node/plan_cte_node.cpp +2 -2
  977. package/src/duckdb/src/planner/binder/query_node/plan_recursive_cte_node.cpp +3 -3
  978. package/src/duckdb/src/planner/binder/query_node/plan_setop.cpp +7 -5
  979. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +10 -0
  980. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +48 -50
  981. package/src/duckdb/src/planner/binder/statement/bind_copy_database.cpp +187 -0
  982. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +38 -22
  983. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +8 -15
  984. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +6 -1
  985. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +2 -2
  986. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +12 -10
  987. package/src/duckdb/src/planner/binder/statement/bind_pragma.cpp +37 -13
  988. package/src/duckdb/src/planner/binder/statement/bind_set.cpp +8 -2
  989. package/src/duckdb/src/planner/binder/statement/bind_simple.cpp +2 -0
  990. package/src/duckdb/src/planner/binder/statement/bind_summarize.cpp +29 -14
  991. package/src/duckdb/src/planner/binder/statement/bind_vacuum.cpp +1 -1
  992. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +16 -6
  993. package/src/duckdb/src/planner/binder/tableref/bind_expressionlistref.cpp +11 -4
  994. package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +1 -1
  995. package/src/duckdb/src/planner/binder/tableref/bind_named_parameters.cpp +2 -2
  996. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +18 -17
  997. package/src/duckdb/src/planner/binder/tableref/bind_showref.cpp +85 -0
  998. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +11 -17
  999. package/src/duckdb/src/planner/binder/tableref/plan_cteref.cpp +1 -9
  1000. package/src/duckdb/src/planner/binder.cpp +31 -26
  1001. package/src/duckdb/src/planner/bound_result_modifier.cpp +24 -0
  1002. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +1 -1
  1003. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +10 -1
  1004. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +20 -4
  1005. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +9 -10
  1006. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +65 -3
  1007. package/src/duckdb/src/planner/expression.cpp +15 -5
  1008. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +5 -6
  1009. package/src/duckdb/src/planner/expression_binder/check_binder.cpp +9 -8
  1010. package/src/duckdb/src/planner/expression_binder/column_alias_binder.cpp +10 -7
  1011. package/src/duckdb/src/planner/expression_binder/having_binder.cpp +9 -4
  1012. package/src/duckdb/src/planner/expression_binder/index_binder.cpp +0 -25
  1013. package/src/duckdb/src/planner/expression_binder/order_binder.cpp +8 -11
  1014. package/src/duckdb/src/planner/expression_binder/qualify_binder.cpp +3 -2
  1015. package/src/duckdb/src/planner/expression_binder/table_function_binder.cpp +15 -8
  1016. package/src/duckdb/src/planner/expression_binder/where_binder.cpp +3 -4
  1017. package/src/duckdb/src/planner/expression_binder.cpp +51 -25
  1018. package/src/duckdb/src/planner/expression_iterator.cpp +2 -1
  1019. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -0
  1020. package/src/duckdb/src/planner/filter/struct_filter.cpp +33 -0
  1021. package/src/duckdb/src/planner/joinside.cpp +1 -1
  1022. package/src/duckdb/src/planner/logical_operator.cpp +2 -1
  1023. package/src/duckdb/src/planner/operator/logical_copy_database.cpp +32 -0
  1024. package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +13 -4
  1025. package/src/duckdb/src/planner/operator/logical_create_table.cpp +2 -0
  1026. package/src/duckdb/src/planner/operator/logical_get.cpp +4 -1
  1027. package/src/duckdb/src/planner/operator/logical_join.cpp +8 -0
  1028. package/src/duckdb/src/planner/planner.cpp +24 -23
  1029. package/src/duckdb/src/planner/pragma_handler.cpp +10 -19
  1030. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +99 -6
  1031. package/src/duckdb/src/planner/subquery/rewrite_cte_scan.cpp +36 -0
  1032. package/src/duckdb/src/planner/table_binding.cpp +14 -12
  1033. package/src/duckdb/src/storage/buffer/block_handle.cpp +12 -10
  1034. package/src/duckdb/src/storage/buffer/block_manager.cpp +1 -1
  1035. package/src/duckdb/src/storage/buffer/buffer_pool.cpp +25 -9
  1036. package/src/duckdb/src/storage/buffer/buffer_pool_reservation.cpp +4 -3
  1037. package/src/duckdb/src/storage/buffer_manager.cpp +14 -3
  1038. package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +0 -8
  1039. package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +15 -7
  1040. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +1 -1
  1041. package/src/duckdb/src/storage/checkpoint_manager.cpp +94 -41
  1042. package/src/duckdb/src/storage/compression/alp/alp.cpp +57 -0
  1043. package/src/duckdb/src/storage/compression/alp/alp_constants.cpp +13 -0
  1044. package/src/duckdb/src/storage/compression/alprd.cpp +57 -0
  1045. package/src/duckdb/src/storage/compression/bitpacking.cpp +86 -55
  1046. package/src/duckdb/src/storage/compression/bitpacking_hugeint.cpp +41 -41
  1047. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +1 -3
  1048. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +2 -0
  1049. package/src/duckdb/src/storage/compression/fsst.cpp +4 -4
  1050. package/src/duckdb/src/storage/compression/numeric_constant.cpp +3 -0
  1051. package/src/duckdb/src/storage/compression/rle.cpp +6 -4
  1052. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +7 -7
  1053. package/src/duckdb/src/storage/compression/uncompressed.cpp +1 -0
  1054. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +6 -6
  1055. package/src/duckdb/src/storage/data_table.cpp +32 -96
  1056. package/src/duckdb/src/storage/index.cpp +23 -11
  1057. package/src/duckdb/src/storage/local_storage.cpp +36 -19
  1058. package/src/duckdb/src/storage/metadata/metadata_manager.cpp +2 -2
  1059. package/src/duckdb/src/storage/partial_block_manager.cpp +1 -1
  1060. package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +9 -4
  1061. package/src/duckdb/src/storage/serialization/serialize_expression.cpp +3 -3
  1062. package/src/duckdb/src/storage/serialization/serialize_extra_drop_info.cpp +42 -0
  1063. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +7 -17
  1064. package/src/duckdb/src/storage/serialization/serialize_macro_function.cpp +2 -2
  1065. package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +84 -77
  1066. package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +63 -4
  1067. package/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp +23 -0
  1068. package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +2 -0
  1069. package/src/duckdb/src/storage/serialization/serialize_storage.cpp +35 -0
  1070. package/src/duckdb/src/storage/serialization/serialize_table_filter.cpp +19 -0
  1071. package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +22 -1
  1072. package/src/duckdb/src/storage/serialization/serialize_types.cpp +50 -0
  1073. package/src/duckdb/src/storage/single_file_block_manager.cpp +46 -7
  1074. package/src/duckdb/src/storage/standard_buffer_manager.cpp +57 -28
  1075. package/src/duckdb/src/storage/statistics/array_stats.cpp +131 -0
  1076. package/src/duckdb/src/storage/statistics/base_statistics.cpp +62 -4
  1077. package/src/duckdb/src/storage/statistics/column_statistics.cpp +1 -0
  1078. package/src/duckdb/src/storage/statistics/distinct_statistics.cpp +3 -1
  1079. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +21 -0
  1080. package/src/duckdb/src/storage/statistics/numeric_stats_union.cpp +5 -0
  1081. package/src/duckdb/src/storage/statistics/string_stats.cpp +2 -2
  1082. package/src/duckdb/src/storage/storage_info.cpp +1 -1
  1083. package/src/duckdb/src/storage/storage_manager.cpp +47 -22
  1084. package/src/duckdb/src/storage/table/array_column_data.cpp +241 -0
  1085. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -1
  1086. package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +3 -1
  1087. package/src/duckdb/src/storage/table/column_data.cpp +41 -18
  1088. package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +12 -3
  1089. package/src/duckdb/src/storage/table/column_segment.cpp +40 -6
  1090. package/src/duckdb/src/storage/table/list_column_data.cpp +18 -15
  1091. package/src/duckdb/src/storage/table/row_group.cpp +73 -21
  1092. package/src/duckdb/src/storage/table/row_group_collection.cpp +395 -20
  1093. package/src/duckdb/src/storage/table/row_version_manager.cpp +2 -1
  1094. package/src/duckdb/src/storage/table/scan_state.cpp +4 -0
  1095. package/src/duckdb/src/storage/table/standard_column_data.cpp +11 -5
  1096. package/src/duckdb/src/storage/table/struct_column_data.cpp +30 -10
  1097. package/src/duckdb/src/storage/table/table_statistics.cpp +7 -1
  1098. package/src/duckdb/src/storage/table/update_segment.cpp +18 -2
  1099. package/src/duckdb/src/storage/table_index_list.cpp +73 -7
  1100. package/src/duckdb/src/storage/temporary_memory_manager.cpp +148 -0
  1101. package/src/duckdb/src/storage/wal_replay.cpp +329 -152
  1102. package/src/duckdb/src/storage/write_ahead_log.cpp +157 -137
  1103. package/src/duckdb/src/transaction/cleanup_state.cpp +3 -2
  1104. package/src/duckdb/src/transaction/commit_state.cpp +89 -63
  1105. package/src/duckdb/src/transaction/duck_transaction.cpp +5 -3
  1106. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +26 -54
  1107. package/src/duckdb/src/transaction/meta_transaction.cpp +37 -23
  1108. package/src/duckdb/src/transaction/transaction_context.cpp +23 -4
  1109. package/src/duckdb/src/transaction/undo_buffer.cpp +16 -2
  1110. package/src/duckdb/src/verification/fetch_row_verifier.cpp +13 -0
  1111. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +5 -7
  1112. package/src/duckdb/src/verification/statement_verifier.cpp +6 -5
  1113. package/src/duckdb/third_party/fast_float/fast_float/fast_float.h +100 -29
  1114. package/src/duckdb/third_party/fmt/include/fmt/format-inl.h +1 -1
  1115. package/src/duckdb/third_party/fmt/include/fmt/format.h +4 -2
  1116. package/src/duckdb/third_party/fmt/include/fmt/printf.h +5 -5
  1117. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +4 -0
  1118. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +82 -21
  1119. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +551 -1004
  1120. package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +17 -3
  1121. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +24861 -23465
  1122. package/src/duckdb/third_party/libpg_query/src_backend_parser_scan.cpp +420 -389
  1123. package/src/duckdb/third_party/mbedtls/include/mbedtls/aes.h +640 -1
  1124. package/src/duckdb/third_party/mbedtls/include/mbedtls/aes_alt.h +1 -0
  1125. package/src/duckdb/third_party/mbedtls/include/mbedtls/aria.h +358 -0
  1126. package/src/duckdb/third_party/mbedtls/include/mbedtls/aria_alt.h +1 -0
  1127. package/src/duckdb/third_party/mbedtls/include/mbedtls/camellia.h +316 -0
  1128. package/src/duckdb/third_party/mbedtls/include/mbedtls/camellia_alt.h +1 -0
  1129. package/src/duckdb/third_party/mbedtls/include/mbedtls/ccm.h +1 -1
  1130. package/src/duckdb/third_party/mbedtls/include/mbedtls/ccm_alt.h +1 -0
  1131. package/src/duckdb/third_party/mbedtls/include/mbedtls/chacha20.h +1 -0
  1132. package/src/duckdb/third_party/mbedtls/include/mbedtls/chachapoly.h +1 -0
  1133. package/src/duckdb/third_party/mbedtls/include/mbedtls/cipher.h +124 -124
  1134. package/src/duckdb/third_party/mbedtls/include/mbedtls/cmac.h +1 -0
  1135. package/src/duckdb/third_party/mbedtls/include/mbedtls/entropy.h +293 -0
  1136. package/src/duckdb/third_party/mbedtls/include/mbedtls/gcm.h +383 -0
  1137. package/src/duckdb/third_party/mbedtls/include/mbedtls/gcm_alt.h +1 -0
  1138. package/src/duckdb/third_party/mbedtls/include/mbedtls/mbedtls_config.h +9 -0
  1139. package/src/duckdb/third_party/mbedtls/include/mbedtls/nist_kw.h +1 -0
  1140. package/src/duckdb/third_party/mbedtls/include/mbedtls/timing.h +1 -0
  1141. package/src/duckdb/third_party/mbedtls/include/mbedtls_wrapper.hpp +35 -6
  1142. package/src/duckdb/third_party/mbedtls/library/aes.cpp +2171 -0
  1143. package/src/duckdb/third_party/mbedtls/library/aesni.h +1 -0
  1144. package/src/duckdb/third_party/mbedtls/library/aria.cpp +1058 -0
  1145. package/src/duckdb/third_party/mbedtls/library/camellia.cpp +1087 -0
  1146. package/src/duckdb/third_party/mbedtls/library/cipher.cpp +1633 -0
  1147. package/src/duckdb/third_party/mbedtls/library/cipher_wrap.cpp +2270 -0
  1148. package/src/duckdb/third_party/mbedtls/library/cipher_wrap.h +146 -0
  1149. package/src/duckdb/third_party/mbedtls/library/entropy.cpp +701 -0
  1150. package/src/duckdb/third_party/mbedtls/library/entropy_poll.cpp +237 -0
  1151. package/src/duckdb/third_party/mbedtls/library/entropy_poll.h +76 -0
  1152. package/src/duckdb/third_party/mbedtls/library/gcm.cpp +1161 -0
  1153. package/src/duckdb/third_party/mbedtls/library/padlock.h +1 -0
  1154. package/src/duckdb/third_party/mbedtls/mbedtls_wrapper.cpp +132 -24
  1155. package/src/duckdb/third_party/pcg/pcg_uint128.hpp +1 -1
  1156. package/src/duckdb/third_party/skiplist/HeadNode.h +934 -0
  1157. package/src/duckdb/third_party/skiplist/IntegrityEnums.h +62 -0
  1158. package/src/duckdb/third_party/skiplist/Node.h +641 -0
  1159. package/src/duckdb/third_party/skiplist/NodeRefs.h +251 -0
  1160. package/src/duckdb/third_party/skiplist/RollingMedian.h +202 -0
  1161. package/src/duckdb/third_party/skiplist/SkipList.cpp +40 -0
  1162. package/src/duckdb/third_party/skiplist/SkipList.h +549 -0
  1163. package/src/duckdb/third_party/thrift/thrift/thrift-config.h +1 -1
  1164. package/src/duckdb/ub_extension_json_json_functions.cpp +2 -0
  1165. package/src/duckdb/ub_src_catalog.cpp +3 -1
  1166. package/src/duckdb/ub_src_catalog_catalog_entry_dependency.cpp +6 -0
  1167. package/src/duckdb/ub_src_common.cpp +1 -1
  1168. package/src/duckdb/ub_src_common_exception.cpp +6 -0
  1169. package/src/duckdb/ub_src_common_types.cpp +2 -2
  1170. package/src/duckdb/ub_src_core_functions.cpp +2 -0
  1171. package/src/duckdb/ub_src_core_functions_scalar_array.cpp +4 -0
  1172. package/src/duckdb/ub_src_core_functions_scalar_blob.cpp +2 -0
  1173. package/src/duckdb/ub_src_core_functions_scalar_list.cpp +7 -3
  1174. package/src/duckdb/ub_src_core_functions_scalar_secret.cpp +2 -0
  1175. package/src/duckdb/ub_src_core_functions_scalar_string.cpp +4 -0
  1176. package/src/duckdb/ub_src_execution_index.cpp +4 -0
  1177. package/src/duckdb/ub_src_execution_operator_csv_scanner_buffer_manager.cpp +6 -0
  1178. package/src/duckdb/ub_src_execution_operator_csv_scanner_scanner.cpp +10 -0
  1179. package/src/duckdb/ub_src_execution_operator_csv_scanner_state_machine.cpp +4 -0
  1180. package/src/duckdb/ub_src_execution_operator_csv_scanner_table_function.cpp +4 -0
  1181. package/src/duckdb/ub_src_execution_operator_csv_scanner_util.cpp +4 -0
  1182. package/src/duckdb/ub_src_execution_operator_helper.cpp +4 -0
  1183. package/src/duckdb/ub_src_execution_operator_join.cpp +4 -2
  1184. package/src/duckdb/ub_src_execution_operator_persistent.cpp +2 -0
  1185. package/src/duckdb/ub_src_execution_physical_plan.cpp +4 -2
  1186. package/src/duckdb/ub_src_function_cast.cpp +2 -0
  1187. package/src/duckdb/ub_src_function_scalar_list.cpp +4 -0
  1188. package/src/duckdb/ub_src_function_table.cpp +4 -4
  1189. package/src/duckdb/ub_src_function_table_system.cpp +6 -0
  1190. package/src/duckdb/ub_src_main.cpp +2 -0
  1191. package/src/duckdb/ub_src_main_buffered_data.cpp +2 -0
  1192. package/src/duckdb/ub_src_main_secret.cpp +6 -0
  1193. package/src/duckdb/ub_src_optimizer_pushdown.cpp +2 -0
  1194. package/src/duckdb/ub_src_parser_expression.cpp +2 -0
  1195. package/src/duckdb/ub_src_parser_parsed_data.cpp +6 -0
  1196. package/src/duckdb/ub_src_parser_statement.cpp +2 -2
  1197. package/src/duckdb/ub_src_parser_tableref.cpp +2 -0
  1198. package/src/duckdb/ub_src_parser_transform_statement.cpp +6 -0
  1199. package/src/duckdb/ub_src_planner_binder_statement.cpp +2 -2
  1200. package/src/duckdb/ub_src_planner_binder_tableref.cpp +2 -0
  1201. package/src/duckdb/ub_src_planner_filter.cpp +2 -0
  1202. package/src/duckdb/ub_src_planner_operator.cpp +2 -0
  1203. package/src/duckdb/ub_src_planner_subquery.cpp +2 -0
  1204. package/src/duckdb/ub_src_storage.cpp +2 -0
  1205. package/src/duckdb/ub_src_storage_compression.cpp +2 -0
  1206. package/src/duckdb/ub_src_storage_compression_alp.cpp +4 -0
  1207. package/src/duckdb/ub_src_storage_serialization.cpp +2 -0
  1208. package/src/duckdb/ub_src_storage_statistics.cpp +2 -0
  1209. package/src/duckdb/ub_src_storage_table.cpp +2 -0
  1210. package/src/duckdb_node.hpp +1 -1
  1211. package/src/statement.cpp +18 -8
  1212. package/src/utils.cpp +1 -15
  1213. package/test/columns.test.ts +2 -1
  1214. package/test/test_all_types.test.ts +9 -4
@@ -8,6 +8,7 @@
8
8
 
9
9
  #pragma once
10
10
 
11
+ #include "duckdb/common/array.hpp"
11
12
  #include "duckdb/common/vector_operations/aggregate_executor.hpp"
12
13
  #include "duckdb/function/aggregate_state.hpp"
13
14
  #include "duckdb/planner/bound_result_modifier.hpp"
@@ -15,6 +16,31 @@
15
16
 
16
17
  namespace duckdb {
17
18
 
19
+ //! A half-open range of frame boundary values _relative to the current row_
20
+ //! This is why they are signed values.
21
+ struct FrameDelta {
22
+ FrameDelta() : begin(0), end(0) {};
23
+ FrameDelta(int64_t begin, int64_t end) : begin(begin), end(end) {};
24
+ int64_t begin = 0;
25
+ int64_t end = 0;
26
+ };
27
+
28
+ //! The half-open ranges of frame boundary values relative to the current row
29
+ using FrameStats = array<FrameDelta, 2>;
30
+
31
+ //! The partition data for custom window functions
32
+ struct WindowPartitionInput {
33
+ WindowPartitionInput(const Vector inputs[], idx_t input_count, idx_t count, const ValidityMask &filter_mask,
34
+ const FrameStats &stats)
35
+ : inputs(inputs), input_count(input_count), count(count), filter_mask(filter_mask), stats(stats) {
36
+ }
37
+ const Vector *inputs;
38
+ idx_t input_count;
39
+ idx_t count;
40
+ const ValidityMask &filter_mask;
41
+ const FrameStats stats;
42
+ };
43
+
18
44
  //! The type used for sizing hashed aggregate function states
19
45
  typedef idx_t (*aggregate_size_t)();
20
46
  //! The type used for initializing hashed aggregate function states
@@ -40,11 +66,14 @@ typedef void (*aggregate_destructor_t)(Vector &state, AggregateInputData &aggr_i
40
66
  typedef void (*aggregate_simple_update_t)(Vector inputs[], AggregateInputData &aggr_input_data, idx_t input_count,
41
67
  data_ptr_t state, idx_t count);
42
68
 
43
- //! The type used for updating complex windowed aggregate functions (optional)
44
- typedef void (*aggregate_window_t)(Vector inputs[], const ValidityMask &filter_mask,
45
- AggregateInputData &aggr_input_data, idx_t input_count, data_ptr_t state,
46
- const FrameBounds &frame, const FrameBounds &prev, Vector &result, idx_t rid,
47
- idx_t bias);
69
+ //! The type used for computing complex/custom windowed aggregate functions (optional)
70
+ typedef void (*aggregate_window_t)(AggregateInputData &aggr_input_data, const WindowPartitionInput &partition,
71
+ const_data_ptr_t g_state, data_ptr_t l_state, const SubFrames &subframes,
72
+ Vector &result, idx_t rid);
73
+
74
+ //! The type used for initializing shared complex/custom windowed aggregate state (optional)
75
+ typedef void (*aggregate_wininit_t)(AggregateInputData &aggr_input_data, const WindowPartitionInput &partition,
76
+ data_ptr_t g_state);
48
77
 
49
78
  typedef void (*aggregate_serialize_t)(Serializer &serializer, const optional_ptr<FunctionData> bind_data,
50
79
  const AggregateFunction &function);
@@ -60,7 +89,7 @@ public:
60
89
  aggregate_destructor_t destructor = nullptr, aggregate_statistics_t statistics = nullptr,
61
90
  aggregate_window_t window = nullptr, aggregate_serialize_t serialize = nullptr,
62
91
  aggregate_deserialize_t deserialize = nullptr)
63
- : BaseScalarFunction(name, arguments, return_type, FunctionSideEffects::NO_SIDE_EFFECTS,
92
+ : BaseScalarFunction(name, arguments, return_type, FunctionStability::CONSISTENT,
64
93
  LogicalType(LogicalTypeId::INVALID), null_handling),
65
94
  state_size(state_size), initialize(initialize), update(update), combine(combine), finalize(finalize),
66
95
  simple_update(simple_update), window(window), bind(bind), destructor(destructor), statistics(statistics),
@@ -74,7 +103,7 @@ public:
74
103
  aggregate_destructor_t destructor = nullptr, aggregate_statistics_t statistics = nullptr,
75
104
  aggregate_window_t window = nullptr, aggregate_serialize_t serialize = nullptr,
76
105
  aggregate_deserialize_t deserialize = nullptr)
77
- : BaseScalarFunction(name, arguments, return_type, FunctionSideEffects::NO_SIDE_EFFECTS,
106
+ : BaseScalarFunction(name, arguments, return_type, FunctionStability::CONSISTENT,
78
107
  LogicalType(LogicalTypeId::INVALID)),
79
108
  state_size(state_size), initialize(initialize), update(update), combine(combine), finalize(finalize),
80
109
  simple_update(simple_update), window(window), bind(bind), destructor(destructor), statistics(statistics),
@@ -116,8 +145,10 @@ public:
116
145
  aggregate_finalize_t finalize;
117
146
  //! The simple aggregate update function (may be null)
118
147
  aggregate_simple_update_t simple_update;
119
- //! The windowed aggregate frame update function (may be null)
148
+ //! The windowed aggregate custom function (may be null)
120
149
  aggregate_window_t window;
150
+ //! The windowed aggregate custom initialization function (may be null)
151
+ aggregate_wininit_t window_init = nullptr;
121
152
 
122
153
  //! The bind function (may be null)
123
154
  bind_aggregate_function_t bind;
@@ -218,12 +249,13 @@ public:
218
249
  }
219
250
 
220
251
  template <class STATE, class INPUT_TYPE, class RESULT_TYPE, class OP>
221
- static void UnaryWindow(Vector inputs[], const ValidityMask &filter_mask, AggregateInputData &aggr_input_data,
222
- idx_t input_count, data_ptr_t state, const FrameBounds &frame, const FrameBounds &prev,
223
- Vector &result, idx_t rid, idx_t bias) {
224
- D_ASSERT(input_count == 1);
225
- AggregateExecutor::UnaryWindow<STATE, INPUT_TYPE, RESULT_TYPE, OP>(inputs[0], filter_mask, aggr_input_data,
226
- state, frame, prev, result, rid, bias);
252
+ static void UnaryWindow(AggregateInputData &aggr_input_data, const WindowPartitionInput &partition,
253
+ const_data_ptr_t g_state, data_ptr_t l_state, const SubFrames &subframes, Vector &result,
254
+ idx_t rid) {
255
+
256
+ D_ASSERT(partition.input_count == 1);
257
+ AggregateExecutor::UnaryWindow<STATE, INPUT_TYPE, RESULT_TYPE, OP>(
258
+ partition.inputs[0], partition.filter_mask, aggr_input_data, l_state, subframes, result, rid, g_state);
227
259
  }
228
260
 
229
261
  template <class STATE, class A_TYPE, class B_TYPE, class OP>
@@ -17,15 +17,19 @@ namespace duckdb {
17
17
  enum class AggregateType : uint8_t { NON_DISTINCT = 1, DISTINCT = 2 };
18
18
  //! Whether or not the input order influences the result of the aggregate
19
19
  enum class AggregateOrderDependent : uint8_t { ORDER_DEPENDENT = 1, NOT_ORDER_DEPENDENT = 2 };
20
+ //! Whether or not the combiner needs to preserve the source
21
+ enum class AggregateCombineType : uint8_t { PRESERVE_INPUT = 1, ALLOW_DESTRUCTIVE = 2 };
20
22
 
21
23
  class BoundAggregateExpression;
22
24
 
23
25
  struct AggregateInputData {
24
- AggregateInputData(optional_ptr<FunctionData> bind_data_p, ArenaAllocator &allocator_p)
25
- : bind_data(bind_data_p), allocator(allocator_p) {
26
+ AggregateInputData(optional_ptr<FunctionData> bind_data_p, ArenaAllocator &allocator_p,
27
+ AggregateCombineType combine_type_p = AggregateCombineType::PRESERVE_INPUT)
28
+ : bind_data(bind_data_p), allocator(allocator_p), combine_type(combine_type_p) {
26
29
  }
27
30
  optional_ptr<FunctionData> bind_data;
28
31
  ArenaAllocator &allocator;
32
+ AggregateCombineType combine_type;
29
33
  };
30
34
 
31
35
  struct AggregateUnaryInput {
@@ -52,6 +52,7 @@ private:
52
52
  void RegisterReadFunctions();
53
53
  void RegisterTableFunctions();
54
54
  void RegisterArrowFunctions();
55
+ void RegisterSnifferFunction();
55
56
 
56
57
  // aggregates
57
58
  void RegisterDistributiveAggregates();
@@ -27,17 +27,42 @@ public:
27
27
  }
28
28
  };
29
29
 
30
+ struct ArrayBoundCastData : public BoundCastData {
31
+ explicit ArrayBoundCastData(BoundCastInfo child_cast) : child_cast_info(std::move(child_cast)) {
32
+ }
33
+
34
+ BoundCastInfo child_cast_info;
35
+
36
+ static unique_ptr<BoundCastData> BindArrayToArrayCast(BindCastInput &input, const LogicalType &source,
37
+ const LogicalType &target);
38
+ static unique_ptr<FunctionLocalState> InitArrayLocalState(CastLocalStateParameters &parameters);
39
+
40
+ public:
41
+ unique_ptr<BoundCastData> Copy() const override {
42
+ return make_uniq<ArrayBoundCastData>(child_cast_info.Copy());
43
+ }
44
+ };
45
+
30
46
  struct ListCast {
31
47
  static bool ListToListCast(Vector &source, Vector &result, idx_t count, CastParameters &parameters);
32
48
  };
33
49
 
34
50
  struct StructBoundCastData : public BoundCastData {
51
+ StructBoundCastData(vector<BoundCastInfo> child_casts, LogicalType target_p, vector<idx_t> child_member_map_p)
52
+ : child_cast_info(std::move(child_casts)), target(std::move(target_p)),
53
+ child_member_map(std::move(child_member_map_p)) {
54
+ D_ASSERT(child_cast_info.size() == child_member_map.size());
55
+ }
35
56
  StructBoundCastData(vector<BoundCastInfo> child_casts, LogicalType target_p)
36
57
  : child_cast_info(std::move(child_casts)), target(std::move(target_p)) {
58
+ for (idx_t i = 0; i < child_cast_info.size(); i++) {
59
+ child_member_map.push_back(i);
60
+ }
37
61
  }
38
62
 
39
63
  vector<BoundCastInfo> child_cast_info;
40
64
  LogicalType target;
65
+ vector<idx_t> child_member_map;
41
66
 
42
67
  static unique_ptr<BoundCastData> BindStructToStructCast(BindCastInput &input, const LogicalType &source,
43
68
  const LogicalType &target);
@@ -49,7 +74,7 @@ public:
49
74
  for (auto &info : child_cast_info) {
50
75
  copy_info.push_back(info.Copy());
51
76
  }
52
- return make_uniq<StructBoundCastData>(std::move(copy_info), target);
77
+ return make_uniq<StructBoundCastData>(std::move(copy_info), target, child_member_map);
53
78
  }
54
79
  };
55
80
 
@@ -13,6 +13,7 @@
13
13
  namespace duckdb {
14
14
  struct MapCastInfo;
15
15
  struct MapCastNode;
16
+ struct DBConfig;
16
17
 
17
18
  typedef BoundCastInfo (*bind_cast_function_t)(BindCastInput &input, const LogicalType &source,
18
19
  const LogicalType &target);
@@ -38,6 +39,7 @@ struct BindCastFunction {
38
39
  class CastFunctionSet {
39
40
  public:
40
41
  CastFunctionSet();
42
+ CastFunctionSet(DBConfig &config);
41
43
 
42
44
  public:
43
45
  DUCKDB_API static CastFunctionSet &Get(ClientContext &context);
@@ -57,6 +59,7 @@ public:
57
59
  bind_cast_function_t bind, int64_t implicit_cast_cost = -1);
58
60
 
59
61
  private:
62
+ optional_ptr<DBConfig> config;
60
63
  vector<BindCastFunction> bind_functions;
61
64
  //! If any custom cast functions have been defined using RegisterCastFunction, this holds the map
62
65
  optional_ptr<MapCastInfo> map_info;
@@ -135,6 +135,7 @@ private:
135
135
  static BoundCastInfo EnumCastSwitch(BindCastInput &input, const LogicalType &source, const LogicalType &target);
136
136
  static BoundCastInfo IntervalCastSwitch(BindCastInput &input, const LogicalType &source, const LogicalType &target);
137
137
  static BoundCastInfo ListCastSwitch(BindCastInput &input, const LogicalType &source, const LogicalType &target);
138
+ static BoundCastInfo ArrayCastSwitch(BindCastInput &input, const LogicalType &source, const LogicalType &target);
138
139
  static BoundCastInfo NumericCastSwitch(BindCastInput &input, const LogicalType &source, const LogicalType &target);
139
140
  static BoundCastInfo MapCastSwitch(BindCastInput &input, const LogicalType &source, const LogicalType &target);
140
141
  static BoundCastInfo PointerCastSwitch(BindCastInput &input, const LogicalType &source, const LogicalType &target);
@@ -206,9 +206,15 @@ struct VectorStringToList {
206
206
  const SelectionVector *sel);
207
207
  };
208
208
 
209
+ struct VectorStringToArray {
210
+ static bool StringToNestedTypeCastLoop(const string_t *source_data, ValidityMask &source_mask, Vector &result,
211
+ ValidityMask &result_mask, idx_t count, CastParameters &parameters,
212
+ const SelectionVector *sel);
213
+ };
214
+
209
215
  struct VectorStringToStruct {
210
216
  static bool SplitStruct(const string_t &input, vector<unique_ptr<Vector>> &varchar_vectors, idx_t &row_idx,
211
- string_map_t<idx_t> &child_names, vector<ValidityMask *> &child_masks);
217
+ string_map_t<idx_t> &child_names, vector<reference<ValidityMask>> &child_masks);
212
218
  static bool StringToNestedTypeCastLoop(const string_t *source_data, ValidityMask &source_mask, Vector &result,
213
219
  ValidityMask &result_mask, idx_t count, CastParameters &parameters,
214
220
  const SelectionVector *sel);
@@ -48,6 +48,16 @@ struct PatasCompressionFun {
48
48
  static bool TypeIsSupported(PhysicalType type);
49
49
  };
50
50
 
51
+ struct AlpCompressionFun {
52
+ static CompressionFunction GetFunction(PhysicalType type);
53
+ static bool TypeIsSupported(PhysicalType type);
54
+ };
55
+
56
+ struct AlpRDCompressionFun {
57
+ static CompressionFunction GetFunction(PhysicalType type);
58
+ static bool TypeIsSupported(PhysicalType type);
59
+ };
60
+
51
61
  struct FSSTFun {
52
62
  static CompressionFunction GetFunction(PhysicalType type);
53
63
  static bool TypeIsSupported(PhysicalType type);
@@ -68,10 +68,19 @@ struct PreparedBatchData {
68
68
  }
69
69
  };
70
70
 
71
+ struct CopyFunctionBindInput {
72
+ const CopyInfo &info;
73
+
74
+ string file_extension;
75
+
76
+ CopyFunctionBindInput(const CopyInfo &info_p) : info(info_p) {
77
+ }
78
+ };
79
+
71
80
  enum class CopyFunctionExecutionMode { REGULAR_COPY_TO_FILE, PARALLEL_COPY_TO_FILE, BATCH_COPY_TO_FILE };
72
81
 
73
82
  typedef BoundStatement (*copy_to_plan_t)(Binder &binder, CopyStatement &stmt);
74
- typedef unique_ptr<FunctionData> (*copy_to_bind_t)(ClientContext &context, const CopyInfo &info,
83
+ typedef unique_ptr<FunctionData> (*copy_to_bind_t)(ClientContext &context, CopyFunctionBindInput &input,
75
84
  const vector<string> &names, const vector<LogicalType> &sql_types);
76
85
  typedef unique_ptr<LocalFunctionData> (*copy_to_initialize_local_t)(ExecutionContext &context, FunctionData &bind_data);
77
86
  typedef unique_ptr<GlobalFunctionData> (*copy_to_initialize_global_t)(ClientContext &context, FunctionData &bind_data,
@@ -99,18 +108,20 @@ typedef void (*copy_flush_batch_t)(ClientContext &context, FunctionData &bind_da
99
108
  PreparedBatchData &batch);
100
109
  typedef idx_t (*copy_desired_batch_size_t)(ClientContext &context, FunctionData &bind_data);
101
110
 
111
+ typedef idx_t (*copy_file_size_bytes_t)(GlobalFunctionData &gstate);
112
+
102
113
  enum class CopyTypeSupport { SUPPORTED, LOSSY, UNSUPPORTED };
103
114
 
104
115
  typedef CopyTypeSupport (*copy_supports_type_t)(const LogicalType &type);
105
116
 
106
117
  class CopyFunction : public Function {
107
118
  public:
108
- explicit CopyFunction(string name)
119
+ explicit CopyFunction(const string &name)
109
120
  : Function(name), plan(nullptr), copy_to_bind(nullptr), copy_to_initialize_local(nullptr),
110
121
  copy_to_initialize_global(nullptr), copy_to_sink(nullptr), copy_to_combine(nullptr),
111
122
  copy_to_finalize(nullptr), execution_mode(nullptr), prepare_batch(nullptr), flush_batch(nullptr),
112
- desired_batch_size(nullptr), serialize(nullptr), deserialize(nullptr), supports_type(nullptr),
113
- copy_from_bind(nullptr) {
123
+ desired_batch_size(nullptr), file_size_bytes(nullptr), serialize(nullptr), deserialize(nullptr),
124
+ supports_type(nullptr), copy_from_bind(nullptr) {
114
125
  }
115
126
 
116
127
  //! Plan rewrite copy function
@@ -127,6 +138,7 @@ public:
127
138
  copy_prepare_batch_t prepare_batch;
128
139
  copy_flush_batch_t flush_batch;
129
140
  copy_desired_batch_size_t desired_batch_size;
141
+ copy_file_size_bytes_t file_size_bytes;
130
142
 
131
143
  copy_to_serialize_t serialize;
132
144
  copy_to_deserialize_t deserialize;
@@ -37,7 +37,12 @@ struct PragmaInfo;
37
37
 
38
38
  //! The default null handling is NULL in, NULL out
39
39
  enum class FunctionNullHandling : uint8_t { DEFAULT_NULL_HANDLING = 0, SPECIAL_HANDLING = 1 };
40
- enum class FunctionSideEffects : uint8_t { NO_SIDE_EFFECTS = 0, HAS_SIDE_EFFECTS = 1 };
40
+ //! The stability of the function, used by the optimizer
41
+ //! CONSISTENT -> this function always returns the same result when given the same input, no variance
42
+ //! CONSISTENT_WITHIN_QUERY -> this function returns the same result WITHIN the same query/transaction
43
+ //! but the result might change across queries (e.g. NOW(), CURRENT_TIME)
44
+ //! VOLATILE -> the result of this function might change per row (e.g. RANDOM())
45
+ enum class FunctionStability : uint8_t { CONSISTENT = 0, VOLATILE = 1, CONSISTENT_WITHIN_QUERY = 2 };
41
46
 
42
47
  struct FunctionData {
43
48
  DUCKDB_API virtual ~FunctionData();
@@ -96,10 +101,11 @@ public:
96
101
 
97
102
  public:
98
103
  //! Returns the formatted string name(arg1, arg2, ...)
99
- DUCKDB_API static string CallToString(const string &name, const vector<LogicalType> &arguments);
104
+ DUCKDB_API static string CallToString(const string &name, const vector<LogicalType> &arguments,
105
+ const LogicalType &varargs = LogicalType::INVALID);
100
106
  //! Returns the formatted string name(arg1, arg2..) -> return_type
101
107
  DUCKDB_API static string CallToString(const string &name, const vector<LogicalType> &arguments,
102
- const LogicalType &return_type);
108
+ const LogicalType &varargs, const LogicalType &return_type);
103
109
  //! Returns the formatted string name(arg1, arg2.., np1=a, np2=b, ...)
104
110
  DUCKDB_API static string CallToString(const string &name, const vector<LogicalType> &arguments,
105
111
  const named_parameter_type_map_t &named_parameters);
@@ -147,16 +153,15 @@ public:
147
153
  class BaseScalarFunction : public SimpleFunction {
148
154
  public:
149
155
  DUCKDB_API BaseScalarFunction(string name, vector<LogicalType> arguments, LogicalType return_type,
150
- FunctionSideEffects side_effects,
156
+ FunctionStability stability,
151
157
  LogicalType varargs = LogicalType(LogicalTypeId::INVALID),
152
158
  FunctionNullHandling null_handling = FunctionNullHandling::DEFAULT_NULL_HANDLING);
153
159
  DUCKDB_API ~BaseScalarFunction() override;
154
160
 
155
161
  //! Return type of the function
156
162
  LogicalType return_type;
157
- //! Whether or not the function has side effects (e.g. sequence increments, random() functions, NOW()). Functions
158
- //! with side-effects cannot be constant-folded.
159
- FunctionSideEffects side_effects;
163
+ //! The stability of the function (see FunctionStability enum for more info)
164
+ FunctionStability stability;
160
165
  //! How this function handles NULL values
161
166
  FunctionNullHandling null_handling;
162
167
 
@@ -13,6 +13,8 @@
13
13
  #include "duckdb/function/scalar_function.hpp"
14
14
  #include "duckdb/function/aggregate_function.hpp"
15
15
  #include "duckdb/function/function_set.hpp"
16
+ #include "duckdb/common/exception/binder_exception.hpp"
17
+ #include "duckdb/common/error_data.hpp"
16
18
 
17
19
  namespace duckdb {
18
20
 
@@ -27,29 +29,30 @@ public:
27
29
  //! Bind a scalar function from the set of functions and input arguments. Returns the index of the chosen function,
28
30
  //! returns DConstants::INVALID_INDEX and sets error if none could be found
29
31
  DUCKDB_API idx_t BindFunction(const string &name, ScalarFunctionSet &functions,
30
- const vector<LogicalType> &arguments, string &error);
32
+ const vector<LogicalType> &arguments, ErrorData &error);
31
33
  DUCKDB_API idx_t BindFunction(const string &name, ScalarFunctionSet &functions,
32
- vector<unique_ptr<Expression>> &arguments, string &error);
34
+ vector<unique_ptr<Expression>> &arguments, ErrorData &error);
33
35
  //! Bind an aggregate function from the set of functions and input arguments. Returns the index of the chosen
34
36
  //! function, returns DConstants::INVALID_INDEX and sets error if none could be found
35
37
  DUCKDB_API idx_t BindFunction(const string &name, AggregateFunctionSet &functions,
36
- const vector<LogicalType> &arguments, string &error);
38
+ const vector<LogicalType> &arguments, ErrorData &error);
37
39
  DUCKDB_API idx_t BindFunction(const string &name, AggregateFunctionSet &functions,
38
- vector<unique_ptr<Expression>> &arguments, string &error);
40
+ vector<unique_ptr<Expression>> &arguments, ErrorData &error);
39
41
  //! Bind a table function from the set of functions and input arguments. Returns the index of the chosen
40
42
  //! function, returns DConstants::INVALID_INDEX and sets error if none could be found
41
43
  DUCKDB_API idx_t BindFunction(const string &name, TableFunctionSet &functions, const vector<LogicalType> &arguments,
42
- string &error);
44
+ ErrorData &error);
43
45
  DUCKDB_API idx_t BindFunction(const string &name, TableFunctionSet &functions,
44
- vector<unique_ptr<Expression>> &arguments, string &error);
46
+ vector<unique_ptr<Expression>> &arguments, ErrorData &error);
45
47
  //! Bind a pragma function from the set of functions and input arguments
46
- DUCKDB_API idx_t BindFunction(const string &name, PragmaFunctionSet &functions, PragmaInfo &info, string &error);
48
+ DUCKDB_API idx_t BindFunction(const string &name, PragmaFunctionSet &functions, vector<Value> &parameters,
49
+ ErrorData &error);
47
50
 
48
51
  DUCKDB_API unique_ptr<Expression> BindScalarFunction(const string &schema, const string &name,
49
- vector<unique_ptr<Expression>> children, string &error,
52
+ vector<unique_ptr<Expression>> children, ErrorData &error,
50
53
  bool is_operator = false, Binder *binder = nullptr);
51
54
  DUCKDB_API unique_ptr<Expression> BindScalarFunction(ScalarFunctionCatalogEntry &function,
52
- vector<unique_ptr<Expression>> children, string &error,
55
+ vector<unique_ptr<Expression>> children, ErrorData &error,
53
56
  bool is_operator = false, Binder *binder = nullptr);
54
57
 
55
58
  DUCKDB_API unique_ptr<BoundFunctionExpression> BindScalarFunction(ScalarFunction bound_function,
@@ -72,15 +75,15 @@ private:
72
75
 
73
76
  template <class T>
74
77
  vector<idx_t> BindFunctionsFromArguments(const string &name, FunctionSet<T> &functions,
75
- const vector<LogicalType> &arguments, string &error);
78
+ const vector<LogicalType> &arguments, ErrorData &error);
76
79
 
77
80
  template <class T>
78
81
  idx_t MultipleCandidateException(const string &name, FunctionSet<T> &functions, vector<idx_t> &candidate_functions,
79
- const vector<LogicalType> &arguments, string &error);
82
+ const vector<LogicalType> &arguments, ErrorData &error);
80
83
 
81
84
  template <class T>
82
85
  idx_t BindFunctionFromArguments(const string &name, FunctionSet<T> &functions, const vector<LogicalType> &arguments,
83
- string &error);
86
+ ErrorData &error);
84
87
 
85
88
  vector<LogicalType> GetLogicalTypesFromExpressions(vector<unique_ptr<Expression>> &arguments);
86
89
  };
@@ -86,9 +86,10 @@ public:
86
86
  } else if (function.bind) {
87
87
  try {
88
88
  bind_data = function.bind(context, function, children);
89
- } catch (Exception &ex) {
90
- // FIXME
91
- throw SerializationException("Error during bind of function in deserialization: %s", ex.what());
89
+ } catch (std::exception &ex) {
90
+ ErrorData error(ex);
91
+ throw SerializationException("Error during bind of function in deserialization: %s",
92
+ error.RawMessage());
92
93
  }
93
94
  }
94
95
  function.return_type = std::move(return_type);
@@ -8,12 +8,12 @@
8
8
 
9
9
  #pragma once
10
10
 
11
- #include "duckdb/parser/query_node.hpp"
12
11
  #include "duckdb/function/function.hpp"
13
12
  #include "duckdb/main/client_context.hpp"
13
+ #include "duckdb/parser/expression/constant_expression.hpp"
14
+ #include "duckdb/parser/query_node.hpp"
14
15
  #include "duckdb/planner/binder.hpp"
15
16
  #include "duckdb/planner/expression_binder.hpp"
16
- #include "duckdb/parser/expression/constant_expression.hpp"
17
17
 
18
18
  namespace duckdb {
19
19
 
@@ -28,7 +28,7 @@ public:
28
28
  //! The positional parameters
29
29
  vector<unique_ptr<ParsedExpression>> parameters;
30
30
  //! The default parameters and their associated values
31
- unordered_map<string, unique_ptr<ParsedExpression>> default_parameters;
31
+ case_insensitive_map_t<unique_ptr<ParsedExpression>> default_parameters;
32
32
 
33
33
  public:
34
34
  virtual ~MacroFunction() {
@@ -21,6 +21,9 @@ struct PragmaFunctions {
21
21
  static void RegisterFunction(BuiltinFunctions &set);
22
22
  };
23
23
 
24
- string PragmaShow(ClientContext &context, const FunctionParameters &parameters);
24
+ string PragmaShowTables();
25
+ string PragmaShowTablesExpanded();
26
+ string PragmaShowDatabases();
27
+ string PragmaShow(const string &table_name);
25
28
 
26
29
  } // namespace duckdb
@@ -113,6 +113,9 @@ void ListContainsOrPosition(DataChunk &args, Vector &result) {
113
113
  case PhysicalType::UINT64:
114
114
  TemplatedContainsOrPosition<uint64_t, T, OP, LIST_ACCESSOR>(args, result);
115
115
  break;
116
+ case PhysicalType::UINT128:
117
+ TemplatedContainsOrPosition<uhugeint_t, T, OP, LIST_ACCESSOR>(args, result);
118
+ break;
116
119
  case PhysicalType::FLOAT:
117
120
  TemplatedContainsOrPosition<float, T, OP, LIST_ACCESSOR>(args, result);
118
121
  break;
@@ -49,6 +49,10 @@ struct PositionFunctor {
49
49
  }
50
50
  };
51
51
 
52
+ struct MapUtil {
53
+ static void ReinterpretMap(Vector &target, Vector &other, idx_t count);
54
+ };
55
+
52
56
  struct VariableReturnBindData : public FunctionData {
53
57
  LogicalType stype;
54
58
 
@@ -99,13 +103,29 @@ struct ListPositionFun {
99
103
  };
100
104
 
101
105
  struct ListResizeFun {
106
+ static void RegisterFunction(BuiltinFunctions &set);
107
+ };
108
+
109
+ struct ListZipFun {
102
110
  static ScalarFunction GetFunction();
103
111
  static void RegisterFunction(BuiltinFunctions &set);
104
112
  };
105
113
 
106
- struct StructExtractFun {
114
+ struct ListSelectFun {
115
+ static ScalarFunction GetFunction();
116
+ static void RegisterFunction(BuiltinFunctions &set);
117
+ };
118
+
119
+ struct ListWhereFun {
107
120
  static ScalarFunction GetFunction();
108
121
  static void RegisterFunction(BuiltinFunctions &set);
109
122
  };
110
123
 
124
+ struct StructExtractFun {
125
+ static ScalarFunction KeyExtractFunction();
126
+ static ScalarFunction IndexExtractFunction();
127
+ static ScalarFunctionSet GetFunctions();
128
+ static void RegisterFunction(BuiltinFunctions &set);
129
+ };
130
+
111
131
  } // namespace duckdb
@@ -8,12 +8,34 @@
8
8
 
9
9
  #pragma once
10
10
 
11
+ #include "duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp"
11
12
  #include "duckdb/function/scalar_function.hpp"
12
13
  #include "duckdb/function/function_set.hpp"
13
14
  #include "duckdb/function/built_in_functions.hpp"
14
15
 
15
16
  namespace duckdb {
16
17
 
18
+ struct NextvalBindData : public FunctionData {
19
+ explicit NextvalBindData(optional_ptr<SequenceCatalogEntry> sequence)
20
+ : sequence(sequence), create_info(sequence ? sequence->GetInfo() : nullptr) {
21
+ }
22
+
23
+ //! The sequence to use for the nextval computation; only if the sequence is a constant
24
+ optional_ptr<SequenceCatalogEntry> sequence;
25
+
26
+ //! The CreateInfo for the above sequence, if it exists
27
+ unique_ptr<CreateInfo> create_info;
28
+
29
+ unique_ptr<FunctionData> Copy() const override {
30
+ return make_uniq<NextvalBindData>(sequence);
31
+ }
32
+
33
+ bool Equals(const FunctionData &other_p) const override {
34
+ auto &other = other_p.Cast<NextvalBindData>();
35
+ return sequence == other.sequence;
36
+ }
37
+ };
38
+
17
39
  struct NextvalFun {
18
40
  static void RegisterFunction(BuiltinFunctions &set);
19
41
  };
@@ -1,7 +1,7 @@
1
1
  //===----------------------------------------------------------------------===//
2
2
  // DuckDB
3
3
  //
4
- // duckdb/function/scalar/strftime.hpp
4
+ // duckdb/function/scalar/strftime_format.hpp
5
5
  //
6
6
  //
7
7
  //===----------------------------------------------------------------------===//
@@ -53,7 +53,13 @@ enum class StrTimeSpecifier : uint8_t {
53
53
  29, // %c - Locale’s appropriate date and time representation. (Mon Sep 30 07:06:05 2013)
54
54
  LOCALE_APPROPRIATE_DATE = 30, // %x - Locale’s appropriate date representation. (09/30/13)
55
55
  LOCALE_APPROPRIATE_TIME = 31, // %X - Locale’s appropriate time representation. (07:06:05)
56
- NANOSECOND_PADDED = 32 // %n - Nanosecond as a decimal number, zero-padded on the left. (000000000 - 999999999)
56
+ NANOSECOND_PADDED = 32, // %n - Nanosecond as a decimal number, zero-padded on the left. (000000000 - 999999999)
57
+ // Python 3.6 ISO directives https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes
58
+ YEAR_ISO =
59
+ 33, // %G - ISO 8601 year with century representing the year that contains the greater part of the ISO week
60
+ WEEKDAY_ISO = 34, // %u - ISO 8601 weekday as a decimal number where 1 is Monday (1..7)
61
+ WEEK_NUMBER_ISO = 35, // %V - ISO 8601 week as a decimal number with Monday as the first day of the week.
62
+ // Week 01 is the week containing Jan 4. (01..53)
57
63
  };
58
64
 
59
65
  struct StrTimeFormat {
@@ -66,6 +72,8 @@ public:
66
72
  inline bool HasFormatSpecifier(StrTimeSpecifier s) const {
67
73
  return std::find(specifiers.begin(), specifiers.end(), s) != specifiers.end();
68
74
  }
75
+ //! If the string format is empty
76
+ DUCKDB_API bool Empty() const;
69
77
 
70
78
  //! The full format specifier, for error messages
71
79
  string format_specifier;
@@ -131,6 +139,9 @@ public:
131
139
  string error_message;
132
140
  idx_t error_position = DConstants::INVALID_INDEX;
133
141
 
142
+ bool is_special;
143
+ date_t special;
144
+
134
145
  date_t ToDate();
135
146
  timestamp_t ToTimestamp();
136
147
 
@@ -141,6 +152,9 @@ public:
141
152
  };
142
153
 
143
154
  public:
155
+ bool operator!=(const StrpTimeFormat &other) const {
156
+ return format_specifier != other.format_specifier;
157
+ }
144
158
  DUCKDB_API static ParseResult Parse(const string &format, const string &text);
145
159
 
146
160
  DUCKDB_API bool Parse(string_t str, ParseResult &result) const;