duckdb 0.10.2 → 0.10.3-dev10.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 (1055) hide show
  1. package/.github/workflows/NodeJS.yml +95 -4
  2. package/binding.gyp +4 -5
  3. package/examples/example.js +10 -0
  4. package/lib/duckdb.js +11 -0
  5. package/package.json +1 -1
  6. package/src/database.cpp +3 -3
  7. package/src/duckdb/extension/icu/icu_extension.cpp +44 -15
  8. package/src/duckdb/extension/icu/include/icu_extension.hpp +1 -0
  9. package/src/duckdb/extension/icu/third_party/icu/i18n/basictz.cpp +5 -5
  10. package/src/duckdb/extension/json/include/json_common.hpp +6 -1
  11. package/src/duckdb/extension/json/include/json_executors.hpp +5 -5
  12. package/src/duckdb/extension/json/include/json_extension.hpp +1 -0
  13. package/src/duckdb/extension/json/include/json_functions.hpp +2 -2
  14. package/src/duckdb/extension/json/include/json_serializer.hpp +2 -2
  15. package/src/duckdb/extension/json/json_common.cpp +69 -43
  16. package/src/duckdb/extension/json/json_extension.cpp +8 -0
  17. package/src/duckdb/extension/json/json_functions/copy_json.cpp +17 -16
  18. package/src/duckdb/extension/json/json_functions/json_create.cpp +3 -1
  19. package/src/duckdb/extension/json/json_functions/json_structure.cpp +18 -13
  20. package/src/duckdb/extension/json/json_functions/json_transform.cpp +4 -0
  21. package/src/duckdb/extension/json/json_functions/json_type.cpp +2 -2
  22. package/src/duckdb/extension/json/json_functions/read_json.cpp +14 -11
  23. package/src/duckdb/extension/json/json_functions/read_json_objects.cpp +11 -8
  24. package/src/duckdb/extension/json/json_functions.cpp +4 -3
  25. package/src/duckdb/extension/json/json_scan.cpp +21 -11
  26. package/src/duckdb/extension/parquet/column_reader.cpp +9 -5
  27. package/src/duckdb/extension/parquet/column_writer.cpp +31 -18
  28. package/src/duckdb/extension/parquet/include/column_writer.hpp +1 -0
  29. package/src/duckdb/extension/parquet/include/null_column_reader.hpp +54 -0
  30. package/src/duckdb/extension/parquet/include/parquet_extension.hpp +1 -0
  31. package/src/duckdb/extension/parquet/include/parquet_reader.hpp +1 -1
  32. package/src/duckdb/extension/parquet/include/parquet_writer.hpp +7 -2
  33. package/src/duckdb/extension/parquet/include/templated_column_reader.hpp +6 -1
  34. package/src/duckdb/extension/parquet/parquet_crypto.cpp +8 -6
  35. package/src/duckdb/extension/parquet/parquet_extension.cpp +271 -126
  36. package/src/duckdb/extension/parquet/parquet_metadata.cpp +39 -37
  37. package/src/duckdb/extension/parquet/parquet_reader.cpp +7 -4
  38. package/src/duckdb/extension/parquet/parquet_statistics.cpp +5 -4
  39. package/src/duckdb/extension/parquet/parquet_writer.cpp +55 -2
  40. package/src/duckdb/extension/parquet/serialize_parquet.cpp +2 -2
  41. package/src/duckdb/src/catalog/catalog.cpp +19 -39
  42. package/src/duckdb/src/catalog/catalog_entry/duck_index_entry.cpp +6 -6
  43. package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +47 -31
  44. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +84 -52
  45. package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +4 -2
  46. package/src/duckdb/src/catalog/catalog_entry/macro_catalog_entry.cpp +4 -0
  47. package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +7 -0
  48. package/src/duckdb/src/catalog/catalog_entry/sequence_catalog_entry.cpp +4 -1
  49. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +36 -15
  50. package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +7 -1
  51. package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +5 -1
  52. package/src/duckdb/src/catalog/catalog_entry.cpp +7 -0
  53. package/src/duckdb/src/catalog/catalog_entry_retriever.cpp +64 -0
  54. package/src/duckdb/src/catalog/catalog_set.cpp +32 -17
  55. package/src/duckdb/src/catalog/default/default_functions.cpp +2 -1
  56. package/src/duckdb/src/catalog/default/default_views.cpp +1 -1
  57. package/src/duckdb/src/catalog/dependency_manager.cpp +129 -9
  58. package/src/duckdb/src/catalog/duck_catalog.cpp +5 -0
  59. package/src/duckdb/src/common/adbc/nanoarrow/allocator.cpp +2 -2
  60. package/src/duckdb/src/common/adbc/nanoarrow/metadata.cpp +3 -3
  61. package/src/duckdb/src/common/adbc/nanoarrow/schema.cpp +7 -6
  62. package/src/duckdb/src/common/allocator.cpp +6 -2
  63. package/src/duckdb/src/common/arrow/appender/bool_data.cpp +1 -0
  64. package/src/duckdb/src/common/arrow/appender/struct_data.cpp +1 -1
  65. package/src/duckdb/src/common/arrow/appender/union_data.cpp +2 -1
  66. package/src/duckdb/src/common/arrow/arrow_appender.cpp +7 -5
  67. package/src/duckdb/src/common/arrow/arrow_converter.cpp +3 -5
  68. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +1 -1
  69. package/src/duckdb/src/common/box_renderer.cpp +6 -3
  70. package/src/duckdb/src/common/compressed_file_system.cpp +11 -7
  71. package/src/duckdb/src/common/enum_util.cpp +230 -17
  72. package/src/duckdb/src/common/enums/logical_operator_type.cpp +2 -0
  73. package/src/duckdb/src/common/enums/physical_operator_type.cpp +2 -0
  74. package/src/duckdb/src/common/enums/relation_type.cpp +2 -0
  75. package/src/duckdb/src/common/enums/statement_type.cpp +2 -0
  76. package/src/duckdb/src/common/error_data.cpp +12 -0
  77. package/src/duckdb/src/common/exception_format_value.cpp +1 -0
  78. package/src/duckdb/src/common/extra_type_info.cpp +86 -8
  79. package/src/duckdb/src/common/file_system.cpp +39 -7
  80. package/src/duckdb/src/common/gzip_file_system.cpp +38 -14
  81. package/src/duckdb/src/common/hive_partitioning.cpp +28 -76
  82. package/src/duckdb/src/common/http_state.cpp +4 -4
  83. package/src/duckdb/src/common/local_file_system.cpp +29 -12
  84. package/src/duckdb/src/common/multi_file_list.cpp +285 -0
  85. package/src/duckdb/src/common/multi_file_reader.cpp +112 -80
  86. package/src/duckdb/src/common/operator/cast_operators.cpp +27 -225
  87. package/src/duckdb/src/common/operator/string_cast.cpp +13 -14
  88. package/src/duckdb/src/common/pipe_file_system.cpp +3 -2
  89. package/src/duckdb/src/common/progress_bar/progress_bar.cpp +1 -1
  90. package/src/duckdb/src/common/random_engine.cpp +2 -1
  91. package/src/duckdb/src/common/re2_regex.cpp +6 -4
  92. package/src/duckdb/src/common/row_operations/row_aggregate.cpp +10 -10
  93. package/src/duckdb/src/common/row_operations/row_external.cpp +4 -3
  94. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +5 -3
  95. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +17 -4
  96. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +1 -1
  97. package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +4 -4
  98. package/src/duckdb/src/common/serializer/buffered_file_writer.cpp +9 -8
  99. package/src/duckdb/src/common/serializer/memory_stream.cpp +6 -3
  100. package/src/duckdb/src/common/serializer/serializer.cpp +1 -1
  101. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  102. package/src/duckdb/src/common/sort/merge_sorter.cpp +2 -2
  103. package/src/duckdb/src/common/sort/partition_state.cpp +6 -6
  104. package/src/duckdb/src/common/sort/radix_sort.cpp +1 -1
  105. package/src/duckdb/src/common/sort/sort_state.cpp +3 -3
  106. package/src/duckdb/src/common/sort/sorted_block.cpp +5 -5
  107. package/src/duckdb/src/common/string_util.cpp +69 -162
  108. package/src/duckdb/src/common/types/bit.cpp +1 -1
  109. package/src/duckdb/src/common/types/blob.cpp +3 -3
  110. package/src/duckdb/src/common/types/cast_helpers.cpp +197 -0
  111. package/src/duckdb/src/common/types/column/column_data_collection.cpp +17 -9
  112. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  113. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +13 -5
  114. package/src/duckdb/src/common/types/conflict_info.cpp +1 -1
  115. package/src/duckdb/src/common/types/conflict_manager.cpp +1 -1
  116. package/src/duckdb/src/common/types/data_chunk.cpp +1 -1
  117. package/src/duckdb/src/common/types/date.cpp +2 -2
  118. package/src/duckdb/src/common/types/decimal.cpp +12 -12
  119. package/src/duckdb/src/common/types/hash.cpp +1 -1
  120. package/src/duckdb/src/common/types/hugeint.cpp +10 -9
  121. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +4 -4
  122. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +6 -5
  123. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +21 -18
  124. package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +2 -2
  125. package/src/duckdb/src/common/types/row/tuple_data_segment.cpp +7 -0
  126. package/src/duckdb/src/common/types/string_heap.cpp +4 -0
  127. package/src/duckdb/src/common/types/timestamp.cpp +23 -1
  128. package/src/duckdb/src/common/types/uhugeint.cpp +1 -1
  129. package/src/duckdb/src/common/types/uuid.cpp +7 -6
  130. package/src/duckdb/src/common/types/value.cpp +54 -30
  131. package/src/duckdb/src/common/types/vector.cpp +71 -96
  132. package/src/duckdb/src/common/types/vector_buffer.cpp +4 -0
  133. package/src/duckdb/src/common/types/vector_cache.cpp +3 -3
  134. package/src/duckdb/src/common/types.cpp +124 -18
  135. package/src/duckdb/src/common/vector_operations/generators.cpp +4 -16
  136. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +20 -0
  137. package/src/duckdb/src/common/vector_operations/null_operations.cpp +1 -1
  138. package/src/duckdb/src/common/vector_operations/numeric_inplace_operators.cpp +2 -2
  139. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +1 -1
  140. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +13 -6
  141. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +8 -5
  142. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +2 -2
  143. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +2 -2
  144. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +2 -0
  145. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +2 -2
  146. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +8 -5
  147. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +14 -8
  148. package/src/duckdb/src/core_functions/function_list.cpp +2 -1
  149. package/src/duckdb/src/core_functions/lambda_functions.cpp +2 -2
  150. package/src/duckdb/src/core_functions/scalar/array/array_functions.cpp +5 -0
  151. package/src/duckdb/src/core_functions/scalar/bit/bitstring.cpp +4 -4
  152. package/src/duckdb/src/core_functions/scalar/blob/create_sort_key.cpp +3 -2
  153. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +2 -2
  154. package/src/duckdb/src/core_functions/scalar/date/epoch.cpp +17 -0
  155. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +1 -1
  156. package/src/duckdb/src/core_functions/scalar/date/to_interval.cpp +19 -0
  157. package/src/duckdb/src/core_functions/scalar/debug/vector_type.cpp +6 -5
  158. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +2 -3
  159. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +2 -2
  160. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +30 -21
  161. package/src/duckdb/src/core_functions/scalar/list/list_reduce.cpp +1 -1
  162. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +3 -3
  163. package/src/duckdb/src/core_functions/scalar/list/list_value.cpp +1 -1
  164. package/src/duckdb/src/core_functions/scalar/list/range.cpp +2 -2
  165. package/src/duckdb/src/core_functions/scalar/map/map.cpp +44 -14
  166. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +17 -4
  167. package/src/duckdb/src/core_functions/scalar/map/map_entries.cpp +30 -13
  168. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +25 -12
  169. package/src/duckdb/src/core_functions/scalar/map/map_keys_values.cpp +16 -4
  170. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +2 -2
  171. package/src/duckdb/src/core_functions/scalar/operators/bitwise.cpp +2 -2
  172. package/src/duckdb/src/core_functions/scalar/random/setseed.cpp +1 -1
  173. package/src/duckdb/src/core_functions/scalar/string/bar.cpp +1 -1
  174. package/src/duckdb/src/core_functions/scalar/string/chr.cpp +2 -2
  175. package/src/duckdb/src/core_functions/scalar/string/hex.cpp +13 -13
  176. package/src/duckdb/src/core_functions/scalar/string/instr.cpp +1 -1
  177. package/src/duckdb/src/core_functions/scalar/string/pad.cpp +8 -8
  178. package/src/duckdb/src/core_functions/scalar/string/repeat.cpp +15 -7
  179. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +1 -1
  180. package/src/duckdb/src/core_functions/scalar/string/to_base.cpp +1 -1
  181. package/src/duckdb/src/core_functions/scalar/string/translate.cpp +4 -4
  182. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +13 -9
  183. package/src/duckdb/src/core_functions/scalar/string/unicode.cpp +1 -1
  184. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  185. package/src/duckdb/src/execution/aggregate_hashtable.cpp +17 -8
  186. package/src/duckdb/src/execution/index/art/art.cpp +6 -6
  187. package/src/duckdb/src/execution/index/bound_index.cpp +115 -0
  188. package/src/duckdb/src/execution/index/unbound_index.cpp +30 -0
  189. package/src/duckdb/src/execution/join_hashtable.cpp +2 -1
  190. package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +1 -1
  191. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  192. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +3 -3
  193. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +40 -5
  194. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +2 -2
  195. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +16 -3
  196. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer.cpp +4 -4
  197. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.cpp +2 -12
  198. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_file_handle.cpp +2 -1
  199. package/src/duckdb/src/execution/operator/csv_scanner/scanner/base_scanner.cpp +21 -5
  200. package/src/duckdb/src/execution/operator/csv_scanner/scanner/column_count_scanner.cpp +1 -1
  201. package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +312 -260
  202. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/csv_sniffer.cpp +2 -2
  203. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +45 -16
  204. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +19 -18
  205. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +200 -55
  206. package/src/duckdb/src/execution/operator/csv_scanner/table_function/csv_file_scanner.cpp +26 -23
  207. package/src/duckdb/src/execution/operator/csv_scanner/table_function/global_csv_state.cpp +12 -12
  208. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +7 -7
  209. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +31 -22
  210. package/src/duckdb/src/execution/operator/helper/physical_buffered_collector.cpp +1 -1
  211. package/src/duckdb/src/execution/operator/helper/physical_execute.cpp +1 -1
  212. package/src/duckdb/src/execution/operator/helper/physical_load.cpp +24 -2
  213. package/src/duckdb/src/execution/operator/helper/physical_reservoir_sample.cpp +1 -1
  214. package/src/duckdb/src/execution/operator/helper/physical_update_extensions.cpp +57 -0
  215. package/src/duckdb/src/execution/operator/helper/physical_verify_vector.cpp +13 -8
  216. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  217. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +9 -9
  218. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +4 -4
  219. package/src/duckdb/src/execution/operator/join/physical_left_delim_join.cpp +1 -1
  220. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +2 -2
  221. package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +2 -2
  222. package/src/duckdb/src/execution/operator/order/physical_order.cpp +3 -2
  223. package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +4 -4
  224. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +20 -13
  225. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +70 -60
  226. package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +18 -7
  227. package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +88 -12
  228. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +47 -27
  229. package/src/duckdb/src/execution/operator/persistent/physical_update.cpp +34 -9
  230. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -0
  231. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -3
  232. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +22 -7
  233. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +1 -1
  234. package/src/duckdb/src/execution/operator/schema/physical_create_art_index.cpp +9 -9
  235. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +1 -1
  236. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +5 -4
  237. package/src/duckdb/src/execution/physical_operator.cpp +2 -2
  238. package/src/duckdb/src/execution/physical_plan/plan_column_data_get.cpp +2 -4
  239. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  240. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +2 -2
  241. package/src/duckdb/src/execution/physical_plan/plan_cte.cpp +1 -1
  242. package/src/duckdb/src/execution/physical_plan/plan_delete.cpp +2 -2
  243. package/src/duckdb/src/execution/physical_plan/plan_delim_get.cpp +2 -2
  244. package/src/duckdb/src/execution/physical_plan/plan_distinct.cpp +1 -0
  245. package/src/duckdb/src/execution/physical_plan/plan_expression_get.cpp +4 -5
  246. package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +6 -5
  247. package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +1 -1
  248. package/src/duckdb/src/execution/physical_plan/plan_simple.cpp +4 -0
  249. package/src/duckdb/src/execution/physical_plan/plan_top_n.cpp +2 -2
  250. package/src/duckdb/src/execution/physical_plan/plan_update.cpp +3 -3
  251. package/src/duckdb/src/execution/physical_plan/plan_window.cpp +1 -24
  252. package/src/duckdb/src/execution/physical_plan_generator.cpp +3 -0
  253. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +38 -33
  254. package/src/duckdb/src/execution/reservoir_sample.cpp +42 -31
  255. package/src/duckdb/src/execution/window_executor.cpp +39 -39
  256. package/src/duckdb/src/execution/window_segment_tree.cpp +5 -2
  257. package/src/duckdb/src/function/aggregate/distributive/first.cpp +1 -1
  258. package/src/duckdb/src/function/cast/string_cast.cpp +3 -3
  259. package/src/duckdb/src/function/cast_rules.cpp +1 -0
  260. package/src/duckdb/src/function/function.cpp +2 -2
  261. package/src/duckdb/src/function/function_binder.cpp +9 -4
  262. package/src/duckdb/src/function/pragma/pragma_functions.cpp +2 -1
  263. package/src/duckdb/src/function/pragma/pragma_queries.cpp +4 -3
  264. package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +1 -1
  265. package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -2
  266. package/src/duckdb/src/function/scalar/list/list_resize.cpp +1 -1
  267. package/src/duckdb/src/function/scalar/list/list_select.cpp +11 -4
  268. package/src/duckdb/src/function/scalar/list/list_zip.cpp +3 -1
  269. package/src/duckdb/src/function/scalar/operators/add.cpp +19 -9
  270. package/src/duckdb/src/function/scalar/sequence/nextval.cpp +77 -48
  271. package/src/duckdb/src/function/scalar/strftime_format.cpp +61 -39
  272. package/src/duckdb/src/function/scalar/string/caseconvert.cpp +12 -12
  273. package/src/duckdb/src/function/scalar/string/contains.cpp +2 -2
  274. package/src/duckdb/src/function/scalar/string/length.cpp +9 -9
  275. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +2 -2
  276. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +2 -1
  277. package/src/duckdb/src/function/scalar/string/substring.cpp +11 -9
  278. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +2 -2
  279. package/src/duckdb/src/function/scalar_function.cpp +2 -1
  280. package/src/duckdb/src/function/table/arrow.cpp +18 -4
  281. package/src/duckdb/src/function/table/arrow_conversion.cpp +88 -66
  282. package/src/duckdb/src/function/table/copy_csv.cpp +94 -28
  283. package/src/duckdb/src/function/table/glob.cpp +17 -9
  284. package/src/duckdb/src/function/table/read_csv.cpp +37 -14
  285. package/src/duckdb/src/function/table/read_file.cpp +6 -2
  286. package/src/duckdb/src/function/table/repeat.cpp +5 -1
  287. package/src/duckdb/src/function/table/repeat_row.cpp +1 -1
  288. package/src/duckdb/src/function/table/sniff_csv.cpp +9 -3
  289. package/src/duckdb/src/function/table/system/duckdb_columns.cpp +3 -3
  290. package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +31 -16
  291. package/src/duckdb/src/function/table/system/duckdb_databases.cpp +6 -1
  292. package/src/duckdb/src/function/table/system/duckdb_dependencies.cpp +2 -2
  293. package/src/duckdb/src/function/table/system/duckdb_extensions.cpp +48 -6
  294. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +8 -2
  295. package/src/duckdb/src/function/table/system/duckdb_indexes.cpp +9 -4
  296. package/src/duckdb/src/function/table/system/duckdb_memory.cpp +2 -2
  297. package/src/duckdb/src/function/table/system/duckdb_schemas.cpp +7 -2
  298. package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +8 -3
  299. package/src/duckdb/src/function/table/system/duckdb_tables.cpp +18 -10
  300. package/src/duckdb/src/function/table/system/duckdb_temporary_files.cpp +1 -1
  301. package/src/duckdb/src/function/table/system/duckdb_types.cpp +12 -5
  302. package/src/duckdb/src/function/table/system/duckdb_views.cpp +9 -4
  303. package/src/duckdb/src/function/table/system/duckdb_which_secret.cpp +75 -0
  304. package/src/duckdb/src/function/table/system/pragma_database_size.cpp +4 -4
  305. package/src/duckdb/src/function/table/system/pragma_metadata_info.cpp +3 -3
  306. package/src/duckdb/src/function/table/system/pragma_storage_info.cpp +6 -6
  307. package/src/duckdb/src/function/table/system_functions.cpp +1 -0
  308. package/src/duckdb/src/function/table/table_scan.cpp +11 -20
  309. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  310. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  311. package/src/duckdb/src/function/table_function.cpp +5 -4
  312. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +1 -10
  313. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_index_entry.hpp +1 -1
  314. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_schema_entry.hpp +2 -2
  315. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +6 -8
  316. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/function_entry.hpp +1 -0
  317. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +3 -2
  318. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +2 -5
  319. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +3 -4
  320. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +2 -0
  321. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +4 -0
  322. package/src/duckdb/src/include/duckdb/catalog/catalog_entry_retriever.hpp +72 -0
  323. package/src/duckdb/src/include/duckdb/catalog/catalog_transaction.hpp +3 -0
  324. package/src/duckdb/src/include/duckdb/catalog/dependency.hpp +4 -0
  325. package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +7 -1
  326. package/src/duckdb/src/include/duckdb/catalog/dependency_manager.hpp +2 -2
  327. package/src/duckdb/src/include/duckdb/catalog/standard_entry.hpp +2 -0
  328. package/src/duckdb/src/include/duckdb/common/arrow/appender/append_data.hpp +1 -0
  329. package/src/duckdb/src/include/duckdb/common/arrow/appender/enum_data.hpp +3 -3
  330. package/src/duckdb/src/include/duckdb/common/arrow/appender/map_data.hpp +1 -1
  331. package/src/duckdb/src/include/duckdb/common/arrow/appender/scalar_data.hpp +15 -0
  332. package/src/duckdb/src/include/duckdb/common/arrow/appender/varchar_data.hpp +3 -2
  333. package/src/duckdb/src/include/duckdb/common/bit_utils.hpp +63 -98
  334. package/src/duckdb/src/include/duckdb/common/bitpacking.hpp +4 -4
  335. package/src/duckdb/src/include/duckdb/common/constants.hpp +2 -0
  336. package/src/duckdb/src/include/duckdb/common/enable_shared_from_this.ipp +42 -0
  337. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +43 -3
  338. package/src/duckdb/src/include/duckdb/common/enums/checkpoint_type.hpp +38 -0
  339. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +1 -0
  340. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +1 -0
  341. package/src/duckdb/src/include/duckdb/common/enums/relation_type.hpp +1 -0
  342. package/src/duckdb/src/include/duckdb/common/enums/scan_options.hpp +3 -1
  343. package/src/duckdb/src/include/duckdb/common/enums/scan_vector_type.hpp +17 -0
  344. package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +1 -0
  345. package/src/duckdb/src/include/duckdb/common/enums/tableref_type.hpp +2 -1
  346. package/src/duckdb/src/include/duckdb/common/enums/undo_flags.hpp +2 -1
  347. package/src/duckdb/src/include/duckdb/common/exception.hpp +0 -1
  348. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +15 -1
  349. package/src/duckdb/src/include/duckdb/common/file_opener.hpp +4 -0
  350. package/src/duckdb/src/include/duckdb/common/file_system.hpp +3 -0
  351. package/src/duckdb/src/include/duckdb/common/gzip_file_system.hpp +3 -0
  352. package/src/duckdb/src/include/duckdb/common/helper.hpp +22 -1
  353. package/src/duckdb/src/include/duckdb/common/hive_partitioning.hpp +3 -17
  354. package/src/duckdb/src/include/duckdb/common/http_state.hpp +1 -1
  355. package/src/duckdb/src/include/duckdb/common/insertion_order_preserving_map.hpp +129 -0
  356. package/src/duckdb/src/include/duckdb/common/multi_file_list.hpp +151 -0
  357. package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +132 -56
  358. package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +7 -3
  359. package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +3 -0
  360. package/src/duckdb/src/include/duckdb/common/operator/add.hpp +2 -0
  361. package/src/duckdb/src/include/duckdb/common/operator/decimal_cast_operators.hpp +233 -0
  362. package/src/duckdb/src/include/duckdb/common/operator/integer_cast_operator.hpp +5 -4
  363. package/src/duckdb/src/include/duckdb/common/operator/numeric_cast.hpp +2 -2
  364. package/src/duckdb/src/include/duckdb/common/optional_ptr.hpp +5 -0
  365. package/src/duckdb/src/include/duckdb/common/optionally_owned_ptr.hpp +91 -0
  366. package/src/duckdb/src/include/duckdb/common/platform.h +6 -1
  367. package/src/duckdb/src/include/duckdb/common/radix.hpp +12 -4
  368. package/src/duckdb/src/include/duckdb/common/re2_regex.hpp +3 -2
  369. package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +2 -0
  370. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +2 -1
  371. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +8 -6
  372. package/src/duckdb/src/include/duckdb/common/serializer/deserializer.hpp +36 -0
  373. package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +65 -0
  374. package/src/duckdb/src/include/duckdb/common/serializer/serializer.hpp +52 -6
  375. package/src/duckdb/src/include/duckdb/common/shared_ptr.hpp +36 -3
  376. package/src/duckdb/src/include/duckdb/common/shared_ptr.ipp +268 -0
  377. package/src/duckdb/src/include/duckdb/common/sort/duckdb_pdqsort.hpp +3 -3
  378. package/src/duckdb/src/include/duckdb/common/string.hpp +3 -2
  379. package/src/duckdb/src/include/duckdb/common/string_util.hpp +11 -7
  380. package/src/duckdb/src/include/duckdb/common/types/bit.hpp +1 -1
  381. package/src/duckdb/src/include/duckdb/common/types/cast_helpers.hpp +43 -215
  382. package/src/duckdb/src/include/duckdb/common/types/datetime.hpp +36 -11
  383. package/src/duckdb/src/include/duckdb/common/types/hash.hpp +1 -1
  384. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_segment.hpp +7 -1
  385. package/src/duckdb/src/include/duckdb/common/types/selection_vector.hpp +1 -1
  386. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +2 -0
  387. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +2 -0
  388. package/src/duckdb/src/include/duckdb/common/types/validity_mask.hpp +1 -1
  389. package/src/duckdb/src/include/duckdb/common/types/value.hpp +4 -0
  390. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +20 -15
  391. package/src/duckdb/src/include/duckdb/common/types.hpp +14 -2
  392. package/src/duckdb/src/include/duckdb/common/unique_ptr.hpp +7 -6
  393. package/src/duckdb/src/include/duckdb/common/vector.hpp +11 -0
  394. package/src/duckdb/src/include/duckdb/common/vector_size.hpp +1 -1
  395. package/src/duckdb/src/include/duckdb/common/weak_ptr.ipp +117 -0
  396. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +3 -3
  397. package/src/duckdb/src/include/duckdb/core_functions/scalar/date_functions.hpp +18 -0
  398. package/src/duckdb/src/include/duckdb/execution/adaptive_filter.hpp +1 -0
  399. package/src/duckdb/src/include/duckdb/execution/expression_executor.hpp +1 -1
  400. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +4 -4
  401. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +1 -1
  402. package/src/duckdb/src/include/duckdb/execution/index/bound_index.hpp +145 -0
  403. package/src/duckdb/src/include/duckdb/execution/index/index_type.hpp +2 -2
  404. package/src/duckdb/src/include/duckdb/execution/index/unbound_index.hpp +63 -0
  405. package/src/duckdb/src/include/duckdb/execution/merge_sort_tree.hpp +24 -18
  406. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_streaming_window.hpp +2 -0
  407. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_window.hpp +2 -0
  408. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/base_scanner.hpp +10 -3
  409. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/column_count_scanner.hpp +1 -0
  410. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_error.hpp +6 -6
  411. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_reader_options.hpp +7 -6
  412. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_sniffer.hpp +24 -4
  413. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/string_value_scanner.hpp +90 -20
  414. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_update_extensions.hpp +52 -0
  415. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +3 -1
  416. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_delete.hpp +5 -5
  417. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_export.hpp +1 -0
  418. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_insert.hpp +8 -5
  419. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_update.hpp +4 -1
  420. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +4 -5
  421. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_expression_scan.hpp +6 -2
  422. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +1 -1
  423. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +1 -1
  424. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +1 -1
  425. package/src/duckdb/src/include/duckdb/execution/reservoir_sample.hpp +63 -8
  426. package/src/duckdb/src/include/duckdb/function/function.hpp +0 -5
  427. package/src/duckdb/src/include/duckdb/function/function_binder.hpp +6 -3
  428. package/src/duckdb/src/include/duckdb/function/replacement_scan.hpp +25 -2
  429. package/src/duckdb/src/include/duckdb/function/scalar/regexp.hpp +1 -1
  430. package/src/duckdb/src/include/duckdb/function/scalar/sequence_functions.hpp +3 -4
  431. package/src/duckdb/src/include/duckdb/function/scalar/strftime_format.hpp +5 -0
  432. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +1 -1
  433. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +13 -0
  434. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +7 -3
  435. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +3 -0
  436. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +4 -0
  437. package/src/duckdb/src/include/duckdb/function/table_function.hpp +15 -2
  438. package/src/duckdb/src/include/duckdb/logging/http_logger.hpp +81 -0
  439. package/src/duckdb/src/include/duckdb/main/appender.hpp +1 -3
  440. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +1 -1
  441. package/src/duckdb/src/include/duckdb/main/buffered_data/buffered_data.hpp +1 -0
  442. package/src/duckdb/src/include/duckdb/main/capi/cast/generic.hpp +2 -2
  443. package/src/duckdb/src/include/duckdb/main/client_config.hpp +8 -0
  444. package/src/duckdb/src/include/duckdb/main/client_context.hpp +1 -19
  445. package/src/duckdb/src/include/duckdb/main/client_context_state.hpp +11 -1
  446. package/src/duckdb/src/include/duckdb/main/client_context_wrapper.hpp +27 -0
  447. package/src/duckdb/src/include/duckdb/main/client_data.hpp +4 -0
  448. package/src/duckdb/src/include/duckdb/main/config.hpp +36 -3
  449. package/src/duckdb/src/include/duckdb/main/connection_manager.hpp +7 -17
  450. package/src/duckdb/src/include/duckdb/main/database.hpp +25 -20
  451. package/src/duckdb/src/include/duckdb/main/extension.hpp +25 -0
  452. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +155 -10
  453. package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +79 -12
  454. package/src/duckdb/src/include/duckdb/main/extension_install_info.hpp +89 -0
  455. package/src/duckdb/src/include/duckdb/main/extension_util.hpp +3 -1
  456. package/src/duckdb/src/include/duckdb/main/external_dependencies.hpp +46 -4
  457. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  458. package/src/duckdb/src/include/duckdb/main/relation/materialized_relation.hpp +35 -0
  459. package/src/duckdb/src/include/duckdb/main/relation/query_relation.hpp +1 -1
  460. package/src/duckdb/src/include/duckdb/main/relation/table_function_relation.hpp +2 -2
  461. package/src/duckdb/src/include/duckdb/main/relation/table_relation.hpp +1 -1
  462. package/src/duckdb/src/include/duckdb/main/relation/value_relation.hpp +3 -3
  463. package/src/duckdb/src/include/duckdb/main/relation/view_relation.hpp +1 -1
  464. package/src/duckdb/src/include/duckdb/main/relation.hpp +5 -6
  465. package/src/duckdb/src/include/duckdb/main/settings.hpp +47 -0
  466. package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +4 -4
  467. package/src/duckdb/src/include/duckdb/optimizer/join_order/cost_model.hpp +1 -1
  468. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_node.hpp +8 -15
  469. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_order_optimizer.hpp +0 -51
  470. package/src/duckdb/src/include/duckdb/optimizer/join_order/plan_enumerator.hpp +10 -17
  471. package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph_manager.hpp +5 -7
  472. package/src/duckdb/src/include/duckdb/optimizer/matcher/set_matcher.hpp +2 -1
  473. package/src/duckdb/src/include/duckdb/optimizer/optimizer_extension.hpp +10 -2
  474. package/src/duckdb/src/include/duckdb/optimizer/rule/list.hpp +1 -0
  475. package/src/duckdb/src/include/duckdb/optimizer/rule/timestamp_comparison.hpp +30 -0
  476. package/src/duckdb/src/include/duckdb/parallel/event.hpp +1 -1
  477. package/src/duckdb/src/include/duckdb/parallel/interrupt.hpp +1 -0
  478. package/src/duckdb/src/include/duckdb/parallel/meta_pipeline.hpp +1 -1
  479. package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +1 -1
  480. package/src/duckdb/src/include/duckdb/parallel/task.hpp +1 -1
  481. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +1 -1
  482. package/src/duckdb/src/include/duckdb/parser/column_definition.hpp +2 -0
  483. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +1 -0
  484. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_scalar_function_info.hpp +1 -0
  485. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_function_info.hpp +1 -0
  486. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +12 -0
  487. package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +1 -0
  488. package/src/duckdb/src/include/duckdb/parser/parsed_data/comment_on_column_info.hpp +3 -1
  489. package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_info.hpp +10 -12
  490. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +6 -2
  491. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_schema_info.hpp +3 -30
  492. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_sequence_info.hpp +2 -0
  493. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_type_info.hpp +12 -1
  494. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +1 -0
  495. package/src/duckdb/src/include/duckdb/parser/parsed_data/detach_info.hpp +1 -0
  496. package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +1 -0
  497. package/src/duckdb/src/include/duckdb/parser/parsed_data/exported_table_data.hpp +5 -2
  498. package/src/duckdb/src/include/duckdb/parser/parsed_data/load_info.hpp +4 -7
  499. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +7 -1
  500. package/src/duckdb/src/include/duckdb/parser/parsed_data/pragma_info.hpp +2 -11
  501. package/src/duckdb/src/include/duckdb/parser/parsed_data/transaction_info.hpp +2 -0
  502. package/src/duckdb/src/include/duckdb/parser/parsed_data/update_extensions_info.hpp +36 -0
  503. package/src/duckdb/src/include/duckdb/parser/parsed_data/vacuum_info.hpp +1 -0
  504. package/src/duckdb/src/include/duckdb/parser/parser_extension.hpp +1 -0
  505. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  506. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +1 -4
  507. package/src/duckdb/src/include/duckdb/parser/statement/alter_statement.hpp +1 -0
  508. package/src/duckdb/src/include/duckdb/parser/statement/attach_statement.hpp +1 -0
  509. package/src/duckdb/src/include/duckdb/parser/statement/call_statement.hpp +1 -0
  510. package/src/duckdb/src/include/duckdb/parser/statement/copy_database_statement.hpp +1 -2
  511. package/src/duckdb/src/include/duckdb/parser/statement/copy_statement.hpp +1 -3
  512. package/src/duckdb/src/include/duckdb/parser/statement/detach_statement.hpp +1 -0
  513. package/src/duckdb/src/include/duckdb/parser/statement/drop_statement.hpp +1 -0
  514. package/src/duckdb/src/include/duckdb/parser/statement/execute_statement.hpp +1 -0
  515. package/src/duckdb/src/include/duckdb/parser/statement/explain_statement.hpp +1 -0
  516. package/src/duckdb/src/include/duckdb/parser/statement/export_statement.hpp +1 -0
  517. package/src/duckdb/src/include/duckdb/parser/statement/extension_statement.hpp +1 -0
  518. package/src/duckdb/src/include/duckdb/parser/statement/insert_statement.hpp +1 -0
  519. package/src/duckdb/src/include/duckdb/parser/statement/list.hpp +1 -0
  520. package/src/duckdb/src/include/duckdb/parser/statement/load_statement.hpp +1 -0
  521. package/src/duckdb/src/include/duckdb/parser/statement/logical_plan_statement.hpp +3 -0
  522. package/src/duckdb/src/include/duckdb/parser/statement/multi_statement.hpp +1 -0
  523. package/src/duckdb/src/include/duckdb/parser/statement/pragma_statement.hpp +1 -0
  524. package/src/duckdb/src/include/duckdb/parser/statement/prepare_statement.hpp +1 -0
  525. package/src/duckdb/src/include/duckdb/parser/statement/relation_statement.hpp +1 -0
  526. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -0
  527. package/src/duckdb/src/include/duckdb/parser/statement/set_statement.hpp +6 -4
  528. package/src/duckdb/src/include/duckdb/parser/statement/transaction_statement.hpp +1 -0
  529. package/src/duckdb/src/include/duckdb/parser/statement/update_extensions_statement.hpp +36 -0
  530. package/src/duckdb/src/include/duckdb/parser/statement/vacuum_statement.hpp +1 -0
  531. package/src/duckdb/src/include/duckdb/parser/tableref/column_data_ref.hpp +46 -0
  532. package/src/duckdb/src/include/duckdb/parser/tableref/list.hpp +1 -0
  533. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +0 -4
  534. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +3 -0
  535. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +2 -0
  536. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +5 -0
  537. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +4 -4
  538. package/src/duckdb/src/include/duckdb/planner/binder.hpp +42 -16
  539. package/src/duckdb/src/include/duckdb/planner/bound_tokens.hpp +1 -0
  540. package/src/duckdb/src/include/duckdb/planner/expression_binder/alter_binder.hpp +7 -6
  541. package/src/duckdb/src/include/duckdb/planner/expression_binder/having_binder.hpp +2 -1
  542. package/src/duckdb/src/include/duckdb/planner/expression_binder/index_binder.hpp +5 -1
  543. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +5 -0
  544. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +0 -1
  545. package/src/duckdb/src/include/duckdb/planner/operator/logical_column_data_get.hpp +6 -2
  546. package/src/duckdb/src/include/duckdb/planner/operator/logical_delete.hpp +2 -0
  547. package/src/duckdb/src/include/duckdb/planner/operator/logical_export.hpp +7 -0
  548. package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +2 -0
  549. package/src/duckdb/src/include/duckdb/planner/operator/logical_top_n.hpp +3 -3
  550. package/src/duckdb/src/include/duckdb/planner/operator/logical_update.hpp +2 -0
  551. package/src/duckdb/src/include/duckdb/planner/parsed_data/bound_create_table_info.hpp +0 -4
  552. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +4 -4
  553. package/src/duckdb/src/include/duckdb/planner/tableref/bound_column_data_ref.hpp +30 -0
  554. package/src/duckdb/src/include/duckdb/planner/tableref/list.hpp +1 -0
  555. package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +6 -3
  556. package/src/duckdb/src/include/duckdb/storage/buffer/buffer_pool.hpp +16 -7
  557. package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +15 -3
  558. package/src/duckdb/src/include/duckdb/storage/checkpoint/row_group_writer.hpp +10 -7
  559. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +2 -0
  560. package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +24 -15
  561. package/src/duckdb/src/include/duckdb/storage/compression/alp/algorithm/alp.hpp +8 -7
  562. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_compress.hpp +2 -2
  563. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_constants.hpp +5 -4
  564. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_fetch.hpp +1 -1
  565. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_utils.hpp +3 -3
  566. package/src/duckdb/src/include/duckdb/storage/compression/alprd/algorithm/alprd.hpp +2 -1
  567. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_analyze.hpp +5 -3
  568. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_compress.hpp +2 -2
  569. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_fetch.hpp +1 -1
  570. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/bit_reader.hpp +1 -1
  571. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_fetch.hpp +1 -1
  572. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_fetch.hpp +1 -1
  573. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +55 -16
  574. package/src/duckdb/src/include/duckdb/storage/index.hpp +33 -97
  575. package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +3 -3
  576. package/src/duckdb/src/include/duckdb/storage/optimistic_data_writer.hpp +1 -1
  577. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +3 -3
  578. package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +22 -9
  579. package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +6 -3
  580. package/src/duckdb/src/include/duckdb/storage/storage_lock.hpp +17 -13
  581. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +27 -8
  582. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +3 -2
  583. package/src/duckdb/src/include/duckdb/storage/table/append_state.hpp +12 -0
  584. package/src/duckdb/src/include/duckdb/storage/table/array_column_data.hpp +5 -4
  585. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +29 -10
  586. package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +2 -1
  587. package/src/duckdb/src/include/duckdb/storage/table/data_table_info.hpp +32 -6
  588. package/src/duckdb/src/include/duckdb/storage/table/delete_state.hpp +23 -0
  589. package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +5 -4
  590. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +14 -3
  591. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +3 -2
  592. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +4 -0
  593. package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +5 -5
  594. package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +6 -6
  595. package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +5 -4
  596. package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +25 -1
  597. package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +5 -2
  598. package/src/duckdb/src/include/duckdb/storage/table/update_state.hpp +20 -0
  599. package/src/duckdb/src/include/duckdb/storage/table/validity_column_data.hpp +1 -0
  600. package/src/duckdb/src/include/duckdb/storage/temporary_file_manager.hpp +20 -4
  601. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +10 -5
  602. package/src/duckdb/src/include/duckdb/transaction/duck_transaction.hpp +19 -4
  603. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +30 -7
  604. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +8 -5
  605. package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +1 -0
  606. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +8 -0
  607. package/src/duckdb/src/include/duckdb/transaction/undo_buffer.hpp +9 -1
  608. package/src/duckdb/src/include/duckdb.h +15 -11
  609. package/src/duckdb/src/main/appender.cpp +3 -1
  610. package/src/duckdb/src/main/attached_database.cpp +5 -3
  611. package/src/duckdb/src/main/capi/appender-c.cpp +4 -3
  612. package/src/duckdb/src/main/capi/arrow-c.cpp +4 -4
  613. package/src/duckdb/src/main/capi/helper-c.cpp +3 -3
  614. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -5
  615. package/src/duckdb/src/main/capi/result-c.cpp +19 -5
  616. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  617. package/src/duckdb/src/main/client_context.cpp +32 -23
  618. package/src/duckdb/src/main/client_context_file_opener.cpp +31 -0
  619. package/src/duckdb/src/main/client_context_wrapper.cpp +22 -0
  620. package/src/duckdb/src/main/client_data.cpp +5 -3
  621. package/src/duckdb/src/main/config.cpp +71 -2
  622. package/src/duckdb/src/main/connection.cpp +11 -10
  623. package/src/duckdb/src/main/connection_manager.cpp +9 -23
  624. package/src/duckdb/src/main/database.cpp +26 -30
  625. package/src/duckdb/src/main/db_instance_cache.cpp +1 -1
  626. package/src/duckdb/src/main/extension/extension_helper.cpp +396 -17
  627. package/src/duckdb/src/main/extension/extension_install.cpp +297 -89
  628. package/src/duckdb/src/main/extension/extension_load.cpp +137 -135
  629. package/src/duckdb/src/main/extension/extension_util.cpp +8 -2
  630. package/src/duckdb/src/main/extension.cpp +56 -0
  631. package/src/duckdb/src/main/extension_install_info.cpp +116 -0
  632. package/src/duckdb/src/main/materialized_query_result.cpp +11 -0
  633. package/src/duckdb/src/main/query_profiler.cpp +1 -1
  634. package/src/duckdb/src/main/relation/create_view_relation.cpp +6 -0
  635. package/src/duckdb/src/main/relation/materialized_relation.cpp +58 -0
  636. package/src/duckdb/src/main/relation/query_relation.cpp +20 -1
  637. package/src/duckdb/src/main/relation/read_csv_relation.cpp +5 -3
  638. package/src/duckdb/src/main/relation/table_relation.cpp +4 -4
  639. package/src/duckdb/src/main/relation/value_relation.cpp +2 -2
  640. package/src/duckdb/src/main/relation/view_relation.cpp +1 -1
  641. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  642. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  643. package/src/duckdb/src/main/relation.cpp +36 -32
  644. package/src/duckdb/src/main/secret/secret.cpp +1 -1
  645. package/src/duckdb/src/main/settings/settings.cpp +137 -11
  646. package/src/duckdb/src/optimizer/common_aggregate_optimizer.cpp +1 -1
  647. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  648. package/src/duckdb/src/optimizer/filter_pushdown.cpp +3 -2
  649. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +3 -3
  650. package/src/duckdb/src/optimizer/join_order/cost_model.cpp +1 -1
  651. package/src/duckdb/src/optimizer/join_order/join_node.cpp +4 -27
  652. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +5 -8
  653. package/src/duckdb/src/optimizer/join_order/plan_enumerator.cpp +32 -107
  654. package/src/duckdb/src/optimizer/join_order/query_graph_manager.cpp +68 -61
  655. package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +4 -2
  656. package/src/duckdb/src/optimizer/join_order/relation_statistics_helper.cpp +3 -3
  657. package/src/duckdb/src/optimizer/optimizer.cpp +3 -1
  658. package/src/duckdb/src/optimizer/pushdown/pushdown_aggregate.cpp +2 -2
  659. package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +1 -1
  660. package/src/duckdb/src/optimizer/pushdown/pushdown_left_join.cpp +2 -2
  661. package/src/duckdb/src/optimizer/pushdown/pushdown_mark_join.cpp +6 -6
  662. package/src/duckdb/src/optimizer/pushdown/pushdown_projection.cpp +1 -1
  663. package/src/duckdb/src/optimizer/pushdown/pushdown_semi_anti_join.cpp +1 -1
  664. package/src/duckdb/src/optimizer/pushdown/pushdown_set_operation.cpp +1 -1
  665. package/src/duckdb/src/optimizer/pushdown/pushdown_single_join.cpp +2 -2
  666. package/src/duckdb/src/optimizer/remove_duplicate_groups.cpp +1 -1
  667. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +1 -1
  668. package/src/duckdb/src/optimizer/rule/arithmetic_simplification.cpp +1 -1
  669. package/src/duckdb/src/optimizer/rule/case_simplification.cpp +2 -2
  670. package/src/duckdb/src/optimizer/rule/conjunction_simplification.cpp +2 -1
  671. package/src/duckdb/src/optimizer/rule/constant_folding.cpp +1 -0
  672. package/src/duckdb/src/optimizer/rule/distributivity.cpp +1 -1
  673. package/src/duckdb/src/optimizer/rule/empty_needle_removal.cpp +1 -0
  674. package/src/duckdb/src/optimizer/rule/enum_comparison.cpp +1 -0
  675. package/src/duckdb/src/optimizer/rule/in_clause_simplification_rule.cpp +1 -0
  676. package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +1 -2
  677. package/src/duckdb/src/optimizer/rule/timestamp_comparison.cpp +107 -0
  678. package/src/duckdb/src/optimizer/statistics/expression/propagate_conjunction.cpp +1 -1
  679. package/src/duckdb/src/optimizer/statistics/expression/propagate_operator.cpp +4 -4
  680. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +3 -3
  681. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +1 -1
  682. package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +6 -3
  683. package/src/duckdb/src/optimizer/statistics/operator/propagate_set_operation.cpp +2 -1
  684. package/src/duckdb/src/optimizer/topn_optimizer.cpp +2 -2
  685. package/src/duckdb/src/parallel/executor.cpp +12 -9
  686. package/src/duckdb/src/parallel/meta_pipeline.cpp +2 -2
  687. package/src/duckdb/src/parallel/pipeline.cpp +2 -2
  688. package/src/duckdb/src/parallel/task_scheduler.cpp +9 -3
  689. package/src/duckdb/src/parser/column_definition.cpp +1 -0
  690. package/src/duckdb/src/parser/constraints/foreign_key_constraint.cpp +9 -7
  691. package/src/duckdb/src/parser/expression/star_expression.cpp +2 -2
  692. package/src/duckdb/src/parser/parsed_data/alter_scalar_function_info.cpp +4 -0
  693. package/src/duckdb/src/parser/parsed_data/alter_table_function_info.cpp +4 -0
  694. package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +183 -0
  695. package/src/duckdb/src/parser/parsed_data/attach_info.cpp +23 -0
  696. package/src/duckdb/src/parser/parsed_data/comment_on_column_info.cpp +15 -2
  697. package/src/duckdb/src/parser/parsed_data/copy_info.cpp +100 -0
  698. package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +16 -2
  699. package/src/duckdb/src/parser/parsed_data/create_info.cpp +2 -0
  700. package/src/duckdb/src/parser/parsed_data/create_schema_info.cpp +40 -0
  701. package/src/duckdb/src/parser/parsed_data/create_sequence_info.cpp +22 -0
  702. package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +12 -4
  703. package/src/duckdb/src/parser/parsed_data/create_type_info.cpp +37 -14
  704. package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +4 -4
  705. package/src/duckdb/src/parser/parsed_data/detach_info.cpp +12 -0
  706. package/src/duckdb/src/parser/parsed_data/drop_info.cpp +21 -0
  707. package/src/duckdb/src/parser/parsed_data/load_info.cpp +46 -0
  708. package/src/duckdb/src/parser/parsed_data/parse_info.cpp +50 -0
  709. package/src/duckdb/src/parser/parsed_data/pragma_info.cpp +33 -0
  710. package/src/duckdb/src/parser/parsed_data/transaction_info.cpp +22 -0
  711. package/src/duckdb/src/parser/parsed_data/vacuum_info.cpp +20 -0
  712. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +1 -0
  713. package/src/duckdb/src/parser/parser.cpp +5 -4
  714. package/src/duckdb/src/parser/query_node.cpp +6 -2
  715. package/src/duckdb/src/parser/statement/alter_statement.cpp +4 -0
  716. package/src/duckdb/src/parser/statement/attach_statement.cpp +4 -0
  717. package/src/duckdb/src/parser/statement/call_statement.cpp +8 -0
  718. package/src/duckdb/src/parser/statement/copy_statement.cpp +1 -91
  719. package/src/duckdb/src/parser/statement/detach_statement.cpp +4 -0
  720. package/src/duckdb/src/parser/statement/drop_statement.cpp +4 -0
  721. package/src/duckdb/src/parser/statement/execute_statement.cpp +15 -0
  722. package/src/duckdb/src/parser/statement/explain_statement.cpp +19 -0
  723. package/src/duckdb/src/parser/statement/export_statement.cpp +18 -0
  724. package/src/duckdb/src/parser/statement/extension_statement.cpp +4 -0
  725. package/src/duckdb/src/parser/statement/load_statement.cpp +4 -0
  726. package/src/duckdb/src/parser/statement/multi_statement.cpp +8 -0
  727. package/src/duckdb/src/parser/statement/pragma_statement.cpp +4 -0
  728. package/src/duckdb/src/parser/statement/prepare_statement.cpp +13 -0
  729. package/src/duckdb/src/parser/statement/relation_statement.cpp +4 -0
  730. package/src/duckdb/src/parser/statement/set_statement.cpp +33 -4
  731. package/src/duckdb/src/parser/statement/transaction_statement.cpp +4 -0
  732. package/src/duckdb/src/parser/statement/update_extensions_statement.cpp +34 -0
  733. package/src/duckdb/src/parser/statement/vacuum_statement.cpp +4 -0
  734. package/src/duckdb/src/parser/tableref/column_data_ref.cpp +81 -0
  735. package/src/duckdb/src/parser/tableref.cpp +1 -0
  736. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +2 -2
  737. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +1 -1
  738. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +6 -1
  739. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +1 -1
  740. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +1 -1
  741. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +16 -0
  742. package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +2 -0
  743. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +97 -63
  744. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +2 -0
  745. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +1 -1
  746. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -2
  747. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +19 -0
  748. package/src/duckdb/src/parser/transformer.cpp +5 -2
  749. package/src/duckdb/src/planner/bind_context.cpp +2 -2
  750. package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +35 -8
  751. package/src/duckdb/src/planner/binder/expression/bind_cast_expression.cpp +1 -1
  752. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +13 -7
  753. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +1 -1
  754. package/src/duckdb/src/planner/binder/query_node/plan_setop.cpp +35 -2
  755. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +0 -2
  756. package/src/duckdb/src/planner/binder/statement/bind_attach.cpp +2 -0
  757. package/src/duckdb/src/planner/binder/statement/bind_call.cpp +2 -0
  758. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +7 -3
  759. package/src/duckdb/src/planner/binder/statement/bind_copy_database.cpp +21 -68
  760. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +141 -28
  761. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +115 -57
  762. package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +4 -0
  763. package/src/duckdb/src/planner/binder/statement/bind_detach.cpp +2 -0
  764. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +2 -0
  765. package/src/duckdb/src/planner/binder/statement/bind_execute.cpp +4 -2
  766. package/src/duckdb/src/planner/binder/statement/bind_explain.cpp +2 -0
  767. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +15 -4
  768. package/src/duckdb/src/planner/binder/statement/bind_extension.cpp +1 -0
  769. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +5 -1
  770. package/src/duckdb/src/planner/binder/statement/bind_load.cpp +13 -0
  771. package/src/duckdb/src/planner/binder/statement/bind_logical_plan.cpp +2 -0
  772. package/src/duckdb/src/planner/binder/statement/bind_pragma.cpp +2 -0
  773. package/src/duckdb/src/planner/binder/statement/bind_prepare.cpp +1 -0
  774. package/src/duckdb/src/planner/binder/statement/bind_select.cpp +1 -0
  775. package/src/duckdb/src/planner/binder/statement/bind_set.cpp +4 -0
  776. package/src/duckdb/src/planner/binder/statement/bind_simple.cpp +6 -4
  777. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +5 -1
  778. package/src/duckdb/src/planner/binder/statement/bind_update_extensions.cpp +28 -0
  779. package/src/duckdb/src/planner/binder/statement/bind_vacuum.cpp +2 -0
  780. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +32 -29
  781. package/src/duckdb/src/planner/binder/tableref/bind_column_data_ref.cpp +16 -0
  782. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +7 -4
  783. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +32 -22
  784. package/src/duckdb/src/planner/binder/tableref/plan_column_data_ref.cpp +15 -0
  785. package/src/duckdb/src/planner/binder.cpp +50 -30
  786. package/src/duckdb/src/planner/bound_parameter_map.cpp +1 -1
  787. package/src/duckdb/src/planner/bound_result_modifier.cpp +1 -1
  788. package/src/duckdb/src/planner/expression/bound_expression.cpp +3 -2
  789. package/src/duckdb/src/planner/expression_binder/alter_binder.cpp +24 -7
  790. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +27 -2
  791. package/src/duckdb/src/planner/expression_binder/having_binder.cpp +34 -19
  792. package/src/duckdb/src/planner/expression_binder/index_binder.cpp +33 -0
  793. package/src/duckdb/src/planner/expression_binder/order_binder.cpp +10 -1
  794. package/src/duckdb/src/planner/expression_binder.cpp +4 -0
  795. package/src/duckdb/src/planner/expression_iterator.cpp +3 -1
  796. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  797. package/src/duckdb/src/planner/operator/logical_column_data_get.cpp +16 -2
  798. package/src/duckdb/src/planner/operator/logical_delete.cpp +2 -0
  799. package/src/duckdb/src/planner/operator/logical_get.cpp +4 -1
  800. package/src/duckdb/src/planner/operator/logical_insert.cpp +2 -0
  801. package/src/duckdb/src/planner/operator/logical_top_n.cpp +1 -1
  802. package/src/duckdb/src/planner/operator/logical_update.cpp +2 -0
  803. package/src/duckdb/src/planner/planner.cpp +35 -9
  804. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +34 -9
  805. package/src/duckdb/src/planner/table_binding.cpp +1 -1
  806. package/src/duckdb/src/storage/arena_allocator.cpp +5 -3
  807. package/src/duckdb/src/storage/buffer/block_handle.cpp +3 -3
  808. package/src/duckdb/src/storage/buffer/block_manager.cpp +1 -1
  809. package/src/duckdb/src/storage/buffer/buffer_pool.cpp +83 -22
  810. package/src/duckdb/src/storage/buffer/buffer_pool_reservation.cpp +2 -2
  811. package/src/duckdb/src/storage/buffer_manager.cpp +6 -2
  812. package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +9 -0
  813. package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +7 -2
  814. package/src/duckdb/src/storage/checkpoint_manager.cpp +68 -104
  815. package/src/duckdb/src/storage/compression/bitpacking.cpp +19 -13
  816. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +9 -7
  817. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +1 -1
  818. package/src/duckdb/src/storage/compression/fsst.cpp +11 -7
  819. package/src/duckdb/src/storage/compression/rle.cpp +1 -1
  820. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +5 -4
  821. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +1 -1
  822. package/src/duckdb/src/storage/data_table.cpp +254 -101
  823. package/src/duckdb/src/storage/index.cpp +2 -106
  824. package/src/duckdb/src/storage/local_storage.cpp +38 -50
  825. package/src/duckdb/src/storage/metadata/metadata_manager.cpp +2 -2
  826. package/src/duckdb/src/storage/metadata/metadata_writer.cpp +1 -1
  827. package/src/duckdb/src/storage/optimistic_data_writer.cpp +9 -11
  828. package/src/duckdb/src/storage/partial_block_manager.cpp +6 -6
  829. package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +8 -0
  830. package/src/duckdb/src/storage/serialization/serialize_dependency.cpp +49 -0
  831. package/src/duckdb/src/storage/serialization/serialize_extension_install_info.cpp +28 -0
  832. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +5 -2
  833. package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +78 -2
  834. package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +21 -0
  835. package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +16 -0
  836. package/src/duckdb/src/storage/serialization/serialize_types.cpp +6 -1
  837. package/src/duckdb/src/storage/single_file_block_manager.cpp +22 -19
  838. package/src/duckdb/src/storage/standard_buffer_manager.cpp +68 -40
  839. package/src/duckdb/src/storage/statistics/column_statistics.cpp +3 -3
  840. package/src/duckdb/src/storage/statistics/distinct_statistics.cpp +1 -1
  841. package/src/duckdb/src/storage/storage_info.cpp +67 -23
  842. package/src/duckdb/src/storage/storage_lock.cpp +77 -17
  843. package/src/duckdb/src/storage/storage_manager.cpp +56 -43
  844. package/src/duckdb/src/storage/table/array_column_data.cpp +13 -12
  845. package/src/duckdb/src/storage/table/column_data.cpp +80 -37
  846. package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +1 -1
  847. package/src/duckdb/src/storage/table/column_segment.cpp +6 -5
  848. package/src/duckdb/src/storage/table/list_column_data.cpp +15 -14
  849. package/src/duckdb/src/storage/table/row_group.cpp +38 -23
  850. package/src/duckdb/src/storage/table/row_group_collection.cpp +52 -38
  851. package/src/duckdb/src/storage/table/row_version_manager.cpp +2 -2
  852. package/src/duckdb/src/storage/table/standard_column_data.cpp +28 -16
  853. package/src/duckdb/src/storage/table/struct_column_data.cpp +23 -16
  854. package/src/duckdb/src/storage/table/table_statistics.cpp +27 -8
  855. package/src/duckdb/src/storage/table/update_segment.cpp +6 -6
  856. package/src/duckdb/src/storage/table/validity_column_data.cpp +5 -0
  857. package/src/duckdb/src/storage/table_index_list.cpp +69 -42
  858. package/src/duckdb/src/storage/temporary_file_manager.cpp +111 -17
  859. package/src/duckdb/src/storage/temporary_memory_manager.cpp +4 -4
  860. package/src/duckdb/src/storage/wal_replay.cpp +27 -22
  861. package/src/duckdb/src/storage/write_ahead_log.cpp +42 -22
  862. package/src/duckdb/src/transaction/cleanup_state.cpp +4 -7
  863. package/src/duckdb/src/transaction/commit_state.cpp +17 -8
  864. package/src/duckdb/src/transaction/duck_transaction.cpp +60 -15
  865. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +154 -121
  866. package/src/duckdb/src/transaction/meta_transaction.cpp +19 -1
  867. package/src/duckdb/src/transaction/rollback_state.cpp +2 -0
  868. package/src/duckdb/src/transaction/transaction.cpp +7 -7
  869. package/src/duckdb/src/transaction/undo_buffer.cpp +37 -17
  870. package/src/duckdb/third_party/concurrentqueue/concurrentqueue.h +5 -5
  871. package/src/duckdb/third_party/fsst/fsst.h +1 -1
  872. package/src/duckdb/third_party/jaro_winkler/details/common.hpp +9 -9
  873. package/src/duckdb/third_party/jaro_winkler/details/intrinsics.hpp +1 -1
  874. package/src/duckdb/third_party/jaro_winkler/details/jaro_impl.hpp +18 -18
  875. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +1 -0
  876. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +12 -0
  877. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +555 -1032
  878. package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +3 -0
  879. package/src/duckdb/third_party/libpg_query/include/utils/datetime.hpp +1 -0
  880. package/src/duckdb/third_party/libpg_query/pg_functions.cpp +13 -6
  881. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +23925 -23444
  882. package/src/duckdb/third_party/mbedtls/library/constant_time.cpp +1 -1
  883. package/src/duckdb/third_party/parquet/parquet_types.cpp +3 -0
  884. package/src/duckdb/third_party/parquet/parquet_types.h +2 -1
  885. package/src/duckdb/third_party/re2/re2/compile.cc +2 -2
  886. package/src/duckdb/third_party/re2/re2/dfa.cc +3 -8
  887. package/src/duckdb/third_party/re2/re2/onepass.cc +4 -3
  888. package/src/duckdb/third_party/re2/re2/prog.cc +10 -10
  889. package/src/duckdb/third_party/re2/re2/prog.h +8 -8
  890. package/src/duckdb/third_party/tdigest/t_digest.hpp +6 -6
  891. package/src/duckdb/third_party/utf8proc/include/utf8proc.hpp +1 -1
  892. package/src/duckdb/third_party/yyjson/include/yyjson.hpp +7930 -0
  893. package/src/duckdb/third_party/yyjson/yyjson.cpp +9490 -0
  894. package/src/duckdb/ub_src_catalog.cpp +2 -0
  895. package/src/duckdb/ub_src_common.cpp +2 -0
  896. package/src/duckdb/ub_src_execution_index.cpp +3 -1
  897. package/src/duckdb/ub_src_execution_operator_helper.cpp +2 -0
  898. package/src/duckdb/ub_src_function_table_system.cpp +2 -0
  899. package/src/duckdb/ub_src_main.cpp +4 -0
  900. package/src/duckdb/ub_src_main_relation.cpp +2 -0
  901. package/src/duckdb/ub_src_optimizer.cpp +8 -8
  902. package/src/duckdb/ub_src_optimizer_join_order.cpp +0 -2
  903. package/src/duckdb/ub_src_optimizer_rule.cpp +4 -2
  904. package/src/duckdb/ub_src_parser_parsed_data.cpp +10 -0
  905. package/src/duckdb/ub_src_parser_statement.cpp +2 -0
  906. package/src/duckdb/ub_src_parser_tableref.cpp +2 -0
  907. package/src/duckdb/ub_src_planner_binder_statement.cpp +2 -0
  908. package/src/duckdb/ub_src_planner_binder_tableref.cpp +4 -0
  909. package/src/duckdb/ub_src_storage_serialization.cpp +4 -0
  910. package/test/query_result.test.ts +9 -0
  911. package/test/replacement_scan.test.ts +2 -0
  912. package/src/duckdb/src/catalog/catalog_entry/ub_duckdb_catalog_entries.cpp +0 -16
  913. package/src/duckdb/src/catalog/default/ub_duckdb_catalog_default_entries.cpp +0 -5
  914. package/src/duckdb/src/catalog/ub_duckdb_catalog.cpp +0 -10
  915. package/src/duckdb/src/common/adbc/nanoarrow/ub_duckdb_adbc_nanoarrow.cpp +0 -5
  916. package/src/duckdb/src/common/adbc/ub_duckdb_adbc.cpp +0 -3
  917. package/src/duckdb/src/common/arrow/appender/ub_duckdb_common_arrow_appender.cpp +0 -6
  918. package/src/duckdb/src/common/arrow/ub_duckdb_common_arrow.cpp +0 -4
  919. package/src/duckdb/src/common/crypto/ub_duckdb_common_crypto.cpp +0 -2
  920. package/src/duckdb/src/common/enums/ub_duckdb_common_enums.cpp +0 -12
  921. package/src/duckdb/src/common/operator/ub_duckdb_common_operators.cpp +0 -4
  922. package/src/duckdb/src/common/progress_bar/ub_duckdb_progress_bar.cpp +0 -3
  923. package/src/duckdb/src/common/row_operations/ub_duckdb_row_operations.cpp +0 -9
  924. package/src/duckdb/src/common/serializer/ub_duckdb_common_serializer.cpp +0 -7
  925. package/src/duckdb/src/common/sort/ub_duckdb_sort.cpp +0 -7
  926. package/src/duckdb/src/common/types/column/ub_duckdb_common_types_column.cpp +0 -6
  927. package/src/duckdb/src/common/types/row/ub_duckdb_common_types_row.cpp +0 -11
  928. package/src/duckdb/src/common/types/ub_duckdb_common_types.cpp +0 -28
  929. package/src/duckdb/src/common/ub_duckdb_common.cpp +0 -34
  930. package/src/duckdb/src/common/value_operations/ub_duckdb_value_operations.cpp +0 -2
  931. package/src/duckdb/src/core_functions/aggregate/algebraic/ub_duckdb_aggr_algebraic.cpp +0 -5
  932. package/src/duckdb/src/core_functions/aggregate/distributive/ub_duckdb_aggr_distributive.cpp +0 -13
  933. package/src/duckdb/src/core_functions/aggregate/holistic/ub_duckdb_aggr_holistic.cpp +0 -5
  934. package/src/duckdb/src/core_functions/aggregate/nested/ub_duckdb_aggr_nested.cpp +0 -3
  935. package/src/duckdb/src/core_functions/aggregate/regression/ub_duckdb_aggr_regr.cpp +0 -8
  936. package/src/duckdb/src/core_functions/scalar/bit/ub_duckdb_func_bit.cpp +0 -2
  937. package/src/duckdb/src/core_functions/scalar/blob/ub_duckdb_func_blob.cpp +0 -3
  938. package/src/duckdb/src/core_functions/scalar/date/ub_duckdb_func_date.cpp +0 -12
  939. package/src/duckdb/src/core_functions/scalar/debug/ub_duckdb_func_debug.cpp +0 -2
  940. package/src/duckdb/src/core_functions/scalar/enum/ub_duckdb_func_enum.cpp +0 -2
  941. package/src/duckdb/src/core_functions/scalar/generic/ub_duckdb_func_generic.cpp +0 -9
  942. package/src/duckdb/src/core_functions/scalar/list/ub_duckdb_func_list.cpp +0 -11
  943. package/src/duckdb/src/core_functions/scalar/map/ub_duckdb_func_map_nested.cpp +0 -8
  944. package/src/duckdb/src/core_functions/scalar/math/ub_duckdb_func_math.cpp +0 -1
  945. package/src/duckdb/src/core_functions/scalar/operators/ub_duckdb_func_ops.cpp +0 -1
  946. package/src/duckdb/src/core_functions/scalar/random/ub_duckdb_func_random.cpp +0 -3
  947. package/src/duckdb/src/core_functions/scalar/string/ub_duckdb_func_string.cpp +0 -26
  948. package/src/duckdb/src/core_functions/scalar/struct/ub_duckdb_func_struct.cpp +0 -3
  949. package/src/duckdb/src/core_functions/scalar/union/ub_duckdb_func_union.cpp +0 -4
  950. package/src/duckdb/src/core_functions/ub_duckdb_core_functions.cpp +0 -3
  951. package/src/duckdb/src/execution/expression_executor/ub_duckdb_expression_executor.cpp +0 -11
  952. package/src/duckdb/src/execution/index/art/ub_duckdb_art_index_execution.cpp +0 -12
  953. package/src/duckdb/src/execution/index/art/ub_duckdb_execution_index_art.cpp +0 -11
  954. package/src/duckdb/src/execution/index/ub_duckdb_execution_index.cpp +0 -3
  955. package/src/duckdb/src/execution/nested_loop_join/ub_duckdb_nested_loop_join.cpp +0 -3
  956. package/src/duckdb/src/execution/operator/aggregate/ub_duckdb_operator_aggregate.cpp +0 -9
  957. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/ub_duckdb_operator_csv_sniffer.cpp +0 -7
  958. package/src/duckdb/src/execution/operator/csv_scanner/ub_duckdb_operator_csv_scanner.cpp +0 -10
  959. package/src/duckdb/src/execution/operator/filter/ub_duckdb_operator_filter.cpp +0 -2
  960. package/src/duckdb/src/execution/operator/helper/ub_duckdb_operator_helper.cpp +0 -18
  961. package/src/duckdb/src/execution/operator/join/ub_duckdb_operator_join.cpp +0 -16
  962. package/src/duckdb/src/execution/operator/order/ub_duckdb_operator_order.cpp +0 -3
  963. package/src/duckdb/src/execution/operator/persistent/ub_duckdb_operator_persistent.cpp +0 -10
  964. package/src/duckdb/src/execution/operator/projection/ub_duckdb_operator_projection.cpp +0 -5
  965. package/src/duckdb/src/execution/operator/scan/ub_duckdb_operator_scan.cpp +0 -7
  966. package/src/duckdb/src/execution/operator/schema/ub_duckdb_operator_schema.cpp +0 -12
  967. package/src/duckdb/src/execution/operator/set/ub_duckdb_operator_set.cpp +0 -4
  968. package/src/duckdb/src/execution/physical_plan/ub_duckdb_physical_plan.cpp +0 -44
  969. package/src/duckdb/src/execution/ub_duckdb_execution.cpp +0 -15
  970. package/src/duckdb/src/function/aggregate/algebraic/ub_duckdb_aggr_algebraic.cpp +0 -5
  971. package/src/duckdb/src/function/aggregate/distributive/ub_duckdb_aggr_distr.cpp +0 -3
  972. package/src/duckdb/src/function/aggregate/holistic/ub_duckdb_aggr_holistic.cpp +0 -5
  973. package/src/duckdb/src/function/aggregate/nested/ub_duckdb_aggr_nested.cpp +0 -3
  974. package/src/duckdb/src/function/aggregate/regression/ub_duckdb_aggr_regr.cpp +0 -8
  975. package/src/duckdb/src/function/aggregate/ub_duckdb_func_aggr.cpp +0 -3
  976. package/src/duckdb/src/function/cast/ub_duckdb_func_cast.cpp +0 -17
  977. package/src/duckdb/src/function/cast/union/ub_duckdb_union_cast.cpp +0 -2
  978. package/src/duckdb/src/function/pragma/ub_duckdb_func_pragma.cpp +0 -3
  979. package/src/duckdb/src/function/scalar/bit/ub_duckdb_func_bit.cpp +0 -2
  980. package/src/duckdb/src/function/scalar/blob/ub_duckdb_func_blob.cpp +0 -3
  981. package/src/duckdb/src/function/scalar/compressed_materialization/ub_duckdb_func_compressed_materialization.cpp +0 -3
  982. package/src/duckdb/src/function/scalar/date/ub_duckdb_func_date.cpp +0 -12
  983. package/src/duckdb/src/function/scalar/enum/ub_duckdb_func_enum.cpp +0 -2
  984. package/src/duckdb/src/function/scalar/generic/ub_duckdb_func_generic.cpp +0 -8
  985. package/src/duckdb/src/function/scalar/generic/ub_duckdb_func_generic_main.cpp +0 -2
  986. package/src/duckdb/src/function/scalar/list/ub_duckdb_func_list.cpp +0 -11
  987. package/src/duckdb/src/function/scalar/list/ub_duckdb_func_list_nested.cpp +0 -5
  988. package/src/duckdb/src/function/scalar/map/ub_duckdb_func_map_nested.cpp +0 -7
  989. package/src/duckdb/src/function/scalar/math/ub_duckdb_func_math.cpp +0 -4
  990. package/src/duckdb/src/function/scalar/operators/ub_duckdb_func_ops.cpp +0 -6
  991. package/src/duckdb/src/function/scalar/operators/ub_duckdb_func_ops_main.cpp +0 -5
  992. package/src/duckdb/src/function/scalar/sequence/ub_duckdb_func_seq.cpp +0 -2
  993. package/src/duckdb/src/function/scalar/string/regexp/ub_duckdb_func_string_regexp.cpp +0 -3
  994. package/src/duckdb/src/function/scalar/string/ub_duckdb_func_string.cpp +0 -31
  995. package/src/duckdb/src/function/scalar/string/ub_duckdb_func_string_main.cpp +0 -12
  996. package/src/duckdb/src/function/scalar/struct/ub_duckdb_func_struct.cpp +0 -4
  997. package/src/duckdb/src/function/scalar/struct/ub_duckdb_func_struct_main.cpp +0 -2
  998. package/src/duckdb/src/function/scalar/system/ub_duckdb_func_system.cpp +0 -2
  999. package/src/duckdb/src/function/scalar/ub_duckdb_func_scalar.cpp +0 -9
  1000. package/src/duckdb/src/function/scalar/union/ub_duckdb_func_union.cpp +0 -4
  1001. package/src/duckdb/src/function/table/arrow/ub_duckdb_arrow_conversion.cpp +0 -2
  1002. package/src/duckdb/src/function/table/system/ub_duckdb_table_func_system.cpp +0 -23
  1003. package/src/duckdb/src/function/table/ub_duckdb_func_table.cpp +0 -16
  1004. package/src/duckdb/src/function/table/version/ub_duckdb_func_table_version.cpp +0 -2
  1005. package/src/duckdb/src/function/ub_duckdb_function.cpp +0 -14
  1006. package/src/duckdb/src/main/capi/cast/ub_duckdb_main_capi_cast.cpp +0 -3
  1007. package/src/duckdb/src/main/capi/ub_duckdb_main_capi.cpp +0 -19
  1008. package/src/duckdb/src/main/chunk_scan_state/ub_duckdb_main_chunk_scan_state.cpp +0 -2
  1009. package/src/duckdb/src/main/extension/ub_duckdb_main_extension.cpp +0 -6
  1010. package/src/duckdb/src/main/relation/ub_duckdb_main_relation.cpp +0 -26
  1011. package/src/duckdb/src/main/settings/ub_duckdb_main_settings.cpp +0 -2
  1012. package/src/duckdb/src/main/ub_duckdb_main.cpp +0 -25
  1013. package/src/duckdb/src/optimizer/compressed_materialization/ub_duckdb_optimizer_compressed_materialization.cpp +0 -4
  1014. package/src/duckdb/src/optimizer/join_order/ub_duckdb_optimizer_join_order.cpp +0 -12
  1015. package/src/duckdb/src/optimizer/matcher/ub_duckdb_optimizer_matcher.cpp +0 -2
  1016. package/src/duckdb/src/optimizer/pullup/ub_duckdb_optimizer_pullup.cpp +0 -6
  1017. package/src/duckdb/src/optimizer/pushdown/ub_duckdb_optimizer_pushdown.cpp +0 -12
  1018. package/src/duckdb/src/optimizer/rule/ub_duckdb_optimizer_rules.cpp +0 -16
  1019. package/src/duckdb/src/optimizer/statistics/expression/ub_duckdb_optimizer_statistics_expr.cpp +0 -11
  1020. package/src/duckdb/src/optimizer/statistics/operator/ub_duckdb_optimizer_statistics_op.cpp +0 -11
  1021. package/src/duckdb/src/optimizer/ub_duckdb_optimizer.cpp +0 -20
  1022. package/src/duckdb/src/parallel/ub_duckdb_parallel.cpp +0 -15
  1023. package/src/duckdb/src/parser/constraints/ub_duckdb_constraints.cpp +0 -5
  1024. package/src/duckdb/src/parser/expression/ub_duckdb_expression.cpp +0 -18
  1025. package/src/duckdb/src/parser/parsed_data/ub_duckdb_parsed_data.cpp +0 -24
  1026. package/src/duckdb/src/parser/query_node/ub_duckdb_query_node.cpp +0 -5
  1027. package/src/duckdb/src/parser/statement/ub_duckdb_statement.cpp +0 -25
  1028. package/src/duckdb/src/parser/tableref/ub_duckdb_parser_tableref.cpp +0 -8
  1029. package/src/duckdb/src/parser/transform/constraint/ub_duckdb_transformer_constraint.cpp +0 -2
  1030. package/src/duckdb/src/parser/transform/expression/ub_duckdb_transformer_expression.cpp +0 -20
  1031. package/src/duckdb/src/parser/transform/helpers/ub_duckdb_transformer_helpers.cpp +0 -8
  1032. package/src/duckdb/src/parser/transform/statement/ub_duckdb_transformer_statement.cpp +0 -37
  1033. package/src/duckdb/src/parser/transform/tableref/ub_duckdb_transformer_tableref.cpp +0 -8
  1034. package/src/duckdb/src/parser/ub_duckdb_parser.cpp +0 -15
  1035. package/src/duckdb/src/planner/binder/expression/ub_duckdb_bind_expression.cpp +0 -20
  1036. package/src/duckdb/src/planner/binder/query_node/ub_duckdb_bind_query_node.cpp +0 -12
  1037. package/src/duckdb/src/planner/binder/statement/ub_duckdb_bind_statement.cpp +0 -26
  1038. package/src/duckdb/src/planner/binder/tableref/ub_duckdb_bind_tableref.cpp +0 -17
  1039. package/src/duckdb/src/planner/expression/ub_duckdb_planner_expression.cpp +0 -19
  1040. package/src/duckdb/src/planner/expression_binder/ub_duckdb_expression_binders.cpp +0 -20
  1041. package/src/duckdb/src/planner/filter/ub_duckdb_planner_filter.cpp +0 -4
  1042. package/src/duckdb/src/planner/operator/ub_duckdb_planner_operator.cpp +0 -43
  1043. package/src/duckdb/src/planner/parsed_data/ub_duckdb_planner_parsed_data.cpp +0 -2
  1044. package/src/duckdb/src/planner/subquery/ub_duckdb_planner_subquery.cpp +0 -4
  1045. package/src/duckdb/src/planner/ub_duckdb_planner.cpp +0 -15
  1046. package/src/duckdb/src/storage/buffer/ub_duckdb_storage_buffer.cpp +0 -6
  1047. package/src/duckdb/src/storage/checkpoint/ub_duckdb_storage_checkpoint.cpp +0 -5
  1048. package/src/duckdb/src/storage/compression/chimp/ub_duckdb_storage_compression_chimp.cpp +0 -6
  1049. package/src/duckdb/src/storage/compression/ub_duckdb_storage_compression.cpp +0 -12
  1050. package/src/duckdb/src/storage/metadata/ub_duckdb_storage_metadata.cpp +0 -4
  1051. package/src/duckdb/src/storage/serialization/ub_duckdb_storage_serialization.cpp +0 -16
  1052. package/src/duckdb/src/storage/statistics/ub_duckdb_storage_statistics.cpp +0 -10
  1053. package/src/duckdb/src/storage/table/ub_duckdb_storage_table.cpp +0 -17
  1054. package/src/duckdb/src/storage/ub_duckdb_storage.cpp +0 -20
  1055. package/src/duckdb/src/transaction/ub_duckdb_transaction.cpp +0 -11
@@ -31,19 +31,12 @@ public:
31
31
  //! Perform join reordering inside a plan
32
32
  unique_ptr<LogicalOperator> Optimize(unique_ptr<LogicalOperator> plan, optional_ptr<RelationStats> stats = nullptr);
33
33
 
34
- unique_ptr<JoinNode> CreateJoinTree(JoinRelationSet &set,
35
- const vector<reference<NeighborInfo>> &possible_connections, JoinNode &left,
36
- JoinNode &right);
37
-
38
34
  private:
39
35
  ClientContext &context;
40
36
 
41
37
  //! manages the query graph, relations, and edges between relations
42
38
  QueryGraphManager query_graph_manager;
43
39
 
44
- //! The optimal join plan found for the specific JoinRelationSet*
45
- unordered_map<JoinRelationSet *, unique_ptr<JoinNode>> plans;
46
-
47
40
  //! The set of filters extracted from the query graph
48
41
  vector<unique_ptr<Expression>> filters;
49
42
  //! The set of filter infos created from the extracted filters
@@ -54,51 +47,7 @@ private:
54
47
 
55
48
  CardinalityEstimator cardinality_estimator;
56
49
 
57
- bool full_plan_found;
58
- bool must_update_full_plan;
59
50
  unordered_set<std::string> join_nodes_in_full_plan;
60
-
61
- //! Extract the bindings referred to by an Expression
62
- bool ExtractBindings(Expression &expression, unordered_set<idx_t> &bindings);
63
-
64
- //! Get column bindings from a filter
65
- void GetColumnBinding(Expression &expression, ColumnBinding &binding);
66
-
67
- //! Traverse the query tree to find (1) base relations, (2) existing join conditions and (3) filters that can be
68
- //! rewritten into joins. Returns true if there are joins in the tree that can be reordered, false otherwise.
69
- bool ExtractJoinRelations(LogicalOperator &input_op, vector<reference<LogicalOperator>> &filter_operators,
70
- optional_ptr<LogicalOperator> parent = nullptr);
71
-
72
- //! Emit a pair as a potential join candidate. Returns the best plan found for the (left, right) connection (either
73
- //! the newly created plan, or an existing plan)
74
- JoinNode &EmitPair(JoinRelationSet &left, JoinRelationSet &right, const vector<reference<NeighborInfo>> &info);
75
- //! Tries to emit a potential join candidate pair. Returns false if too many pairs have already been emitted,
76
- //! cancelling the dynamic programming step.
77
- bool TryEmitPair(JoinRelationSet &left, JoinRelationSet &right, const vector<reference<NeighborInfo>> &info);
78
-
79
- bool EnumerateCmpRecursive(JoinRelationSet &left, JoinRelationSet &right, unordered_set<idx_t> &exclusion_set);
80
- //! Emit a relation set node
81
- bool EmitCSG(JoinRelationSet &node);
82
- //! Enumerate the possible connected subgraphs that can be joined together in the join graph
83
- bool EnumerateCSGRecursive(JoinRelationSet &node, unordered_set<idx_t> &exclusion_set);
84
- //! Rewrite a logical query plan given the join plan
85
- unique_ptr<LogicalOperator> RewritePlan(unique_ptr<LogicalOperator> plan, JoinNode &node);
86
- //! Generate cross product edges inside the side
87
- void GenerateCrossProducts();
88
- //! Perform the join order solving
89
- void SolveJoinOrder();
90
- //! Solve the join order exactly using dynamic programming. Returns true if it was completed successfully (i.e. did
91
- //! not time-out)
92
- bool SolveJoinOrderExactly();
93
- //! Solve the join order approximately using a greedy algorithm
94
- void SolveJoinOrderApproximately();
95
-
96
- void UpdateDPTree(JoinNode &new_plan);
97
-
98
- void UpdateJoinNodesInFullPlan(JoinNode &node);
99
- bool NodeInFullPlan(JoinNode &node);
100
-
101
- GenerateJoinRelation GenerateJoins(vector<unique_ptr<LogicalOperator>> &extracted_relations, JoinNode &node);
102
51
  };
103
52
 
104
53
  } // namespace duckdb
@@ -30,38 +30,36 @@ class PlanEnumerator {
30
30
  public:
31
31
  explicit PlanEnumerator(QueryGraphManager &query_graph_manager, CostModel &cost_model,
32
32
  const QueryGraphEdges &query_graph)
33
- : query_graph(query_graph), query_graph_manager(query_graph_manager), cost_model(cost_model),
34
- full_plan_found(false), must_update_full_plan(false) {
33
+ : query_graph(query_graph), query_graph_manager(query_graph_manager), cost_model(cost_model) {
35
34
  }
36
35
 
37
36
  //! Perform the join order solving
38
- unique_ptr<JoinNode> SolveJoinOrder();
37
+ void SolveJoinOrder();
39
38
  void InitLeafPlans();
40
39
 
41
- static unique_ptr<LogicalOperator> BuildSideProbeSideSwaps(unique_ptr<LogicalOperator> plan);
40
+ const reference_map_t<JoinRelationSet, unique_ptr<DPJoinNode>> &GetPlans() const;
42
41
 
43
42
  private:
43
+ //! The set of edges used in the join optimizer
44
44
  QueryGraphEdges const &query_graph;
45
45
  //! The total amount of join pairs that have been considered
46
46
  idx_t pairs = 0;
47
- //! The set of edges used in the join optimizer
47
+ //! Grant access to the set manager and the relation manager
48
48
  QueryGraphManager &query_graph_manager;
49
49
  //! Cost model to evaluate cost of joins
50
50
  CostModel &cost_model;
51
51
  //! A map to store the optimal join plan found for a specific JoinRelationSet*
52
- reference_map_t<JoinRelationSet, unique_ptr<JoinNode>> plans;
52
+ reference_map_t<JoinRelationSet, unique_ptr<DPJoinNode>> plans;
53
53
 
54
- bool full_plan_found;
55
- bool must_update_full_plan;
56
54
  unordered_set<string> join_nodes_in_full_plan;
57
55
 
58
- unique_ptr<JoinNode> CreateJoinTree(JoinRelationSet &set,
59
- const vector<reference<NeighborInfo>> &possible_connections, JoinNode &left,
60
- JoinNode &right);
56
+ unique_ptr<DPJoinNode> CreateJoinTree(JoinRelationSet &set,
57
+ const vector<reference<NeighborInfo>> &possible_connections, DPJoinNode &left,
58
+ DPJoinNode &right);
61
59
 
62
60
  //! Emit a pair as a potential join candidate. Returns the best plan found for the (left, right) connection (either
63
61
  //! the newly created plan, or an existing plan)
64
- JoinNode &EmitPair(JoinRelationSet &left, JoinRelationSet &right, const vector<reference<NeighborInfo>> &info);
62
+ DPJoinNode &EmitPair(JoinRelationSet &left, JoinRelationSet &right, const vector<reference<NeighborInfo>> &info);
65
63
  //! Tries to emit a potential join candidate pair. Returns false if too many pairs have already been emitted,
66
64
  //! cancelling the dynamic programming step.
67
65
  bool TryEmitPair(JoinRelationSet &left, JoinRelationSet &right, const vector<reference<NeighborInfo>> &info);
@@ -79,11 +77,6 @@ private:
79
77
  bool SolveJoinOrderExactly();
80
78
  //! Solve the join order approximately using a greedy algorithm
81
79
  void SolveJoinOrderApproximately();
82
-
83
- void UpdateDPTree(JoinNode &new_plan);
84
-
85
- void UpdateJoinNodesInFullPlan(JoinNode &node);
86
- bool NodeInFullPlan(JoinNode &node);
87
80
  };
88
81
 
89
82
  } // namespace duckdb
@@ -72,7 +72,7 @@ public:
72
72
  bool Build(LogicalOperator &op);
73
73
 
74
74
  //! Reconstruct the logical plan using the plan found by the plan enumerator
75
- unique_ptr<LogicalOperator> Reconstruct(unique_ptr<LogicalOperator> plan, JoinNode &node);
75
+ unique_ptr<LogicalOperator> Reconstruct(unique_ptr<LogicalOperator> plan);
76
76
 
77
77
  //! Get a reference to the QueryGraphEdges structure that stores edges between
78
78
  //! nodes and hypernodes.
@@ -92,6 +92,9 @@ public:
92
92
  unique_ptr<LogicalOperator> LeftRightOptimizations(unique_ptr<LogicalOperator> op);
93
93
  void TryFlipChildren(LogicalOperator &op, idx_t cardinality_ratio = 1);
94
94
 
95
+ //! A map to store the optimal join plan found for a specific JoinRelationSet*
96
+ optional_ptr<const reference_map_t<JoinRelationSet, unique_ptr<DPJoinNode>>> plans;
97
+
95
98
  private:
96
99
  vector<reference<LogicalOperator>> filter_operators;
97
100
 
@@ -103,14 +106,9 @@ private:
103
106
 
104
107
  void GetColumnBinding(Expression &expression, ColumnBinding &binding);
105
108
 
106
- bool ExtractBindings(Expression &expression, unordered_set<idx_t> &bindings);
107
- bool LeftCardLessThanRight(LogicalOperator &op);
108
-
109
109
  void CreateHyperGraphEdges();
110
110
 
111
- GenerateJoinRelation GenerateJoins(vector<unique_ptr<LogicalOperator>> &extracted_relations, JoinNode &node);
112
-
113
- unique_ptr<LogicalOperator> RewritePlan(unique_ptr<LogicalOperator> plan, JoinNode &node);
111
+ GenerateJoinRelation GenerateJoins(vector<unique_ptr<LogicalOperator>> &extracted_relations, JoinRelationSet &set);
114
112
  };
115
113
 
116
114
  } // namespace duckdb
@@ -9,6 +9,7 @@
9
9
  #pragma once
10
10
 
11
11
  #include "duckdb/common/common.hpp"
12
+ #include "duckdb/common/numeric_utils.hpp"
12
13
  #include "duckdb/common/unordered_set.hpp"
13
14
 
14
15
  namespace duckdb {
@@ -59,7 +60,7 @@ public:
59
60
  return true;
60
61
  } else {
61
62
  // we did not find a match! remove any bindings we added in the call to Match()
62
- bindings.erase(bindings.begin() + previous_binding_count, bindings.end());
63
+ bindings.erase(bindings.begin() + NumericCast<int64_t>(previous_binding_count), bindings.end());
63
64
  }
64
65
  }
65
66
  }
@@ -13,14 +13,22 @@
13
13
 
14
14
  namespace duckdb {
15
15
 
16
+ class Optimizer;
17
+ class ClientContext;
18
+
16
19
  //! The OptimizerExtensionInfo holds static information relevant to the optimizer extension
17
20
  struct OptimizerExtensionInfo {
18
21
  virtual ~OptimizerExtensionInfo() {
19
22
  }
20
23
  };
21
24
 
22
- typedef void (*optimize_function_t)(ClientContext &context, OptimizerExtensionInfo *info,
23
- unique_ptr<LogicalOperator> &plan);
25
+ struct OptimizerExtensionInput {
26
+ ClientContext &context;
27
+ Optimizer &optimizer;
28
+ optional_ptr<OptimizerExtensionInfo> info;
29
+ };
30
+
31
+ typedef void (*optimize_function_t)(OptimizerExtensionInput &input, unique_ptr<LogicalOperator> &plan);
24
32
 
25
33
  class OptimizerExtension {
26
34
  public:
@@ -11,3 +11,4 @@
11
11
  #include "duckdb/optimizer/rule/enum_comparison.hpp"
12
12
  #include "duckdb/optimizer/rule/regex_optimizations.hpp"
13
13
  #include "duckdb/optimizer/rule/ordered_aggregate_optimizer.hpp"
14
+ #include "duckdb/optimizer/rule/timestamp_comparison.hpp"
@@ -0,0 +1,30 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/optimizer/rule/timestamp_comparison.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #pragma once
10
+
11
+ #include "duckdb/optimizer/rule.hpp"
12
+ #include "duckdb/function/scalar/string_functions.hpp"
13
+
14
+ namespace duckdb {
15
+
16
+ class TimeStampComparison : public Rule {
17
+ public:
18
+ explicit TimeStampComparison(ClientContext &context, ExpressionRewriter &rewriter);
19
+
20
+ unique_ptr<Expression> Apply(LogicalOperator &op, vector<reference<Expression>> &bindings, bool &changes_made,
21
+ bool is_root) override;
22
+
23
+ unique_ptr<Expression> ApplyRule(BoundFunctionExpression *expr, ScalarFunction function, string pattern,
24
+ bool is_not_like);
25
+
26
+ private:
27
+ ClientContext &context;
28
+ };
29
+
30
+ } // namespace duckdb
@@ -16,7 +16,7 @@ namespace duckdb {
16
16
  class Executor;
17
17
  class Task;
18
18
 
19
- class Event : public std::enable_shared_from_this<Event> {
19
+ class Event : public enable_shared_from_this<Event> {
20
20
  public:
21
21
  explicit Event(Executor &executor);
22
22
  virtual ~Event() = default;
@@ -11,6 +11,7 @@
11
11
  #include "duckdb/common/atomic.hpp"
12
12
  #include "duckdb/common/mutex.hpp"
13
13
  #include "duckdb/parallel/task.hpp"
14
+ #include "duckdb/common/shared_ptr.hpp"
14
15
  #include <condition_variable>
15
16
  #include <memory>
16
17
 
@@ -14,7 +14,7 @@
14
14
  namespace duckdb {
15
15
 
16
16
  //! MetaPipeline represents a set of pipelines that all have the same sink
17
- class MetaPipeline : public std::enable_shared_from_this<MetaPipeline> {
17
+ class MetaPipeline : public enable_shared_from_this<MetaPipeline> {
18
18
  //! We follow these rules when building:
19
19
  //! 1. For joins, build out the blocking side before going down the probe side
20
20
  //! - The current streaming pipeline will have a dependency on it (dependency across MetaPipelines)
@@ -66,7 +66,7 @@ public:
66
66
  };
67
67
 
68
68
  //! The Pipeline class represents an execution pipeline starting at a
69
- class Pipeline : public std::enable_shared_from_this<Pipeline> {
69
+ class Pipeline : public enable_shared_from_this<Pipeline> {
70
70
  friend class Executor;
71
71
  friend class PipelineExecutor;
72
72
  friend class PipelineEvent;
@@ -22,7 +22,7 @@ enum class TaskExecutionMode : uint8_t { PROCESS_ALL, PROCESS_PARTIAL };
22
22
  enum class TaskExecutionResult : uint8_t { TASK_FINISHED, TASK_NOT_FINISHED, TASK_ERROR, TASK_BLOCKED };
23
23
 
24
24
  //! Generic parallel task
25
- class Task : public std::enable_shared_from_this<Task> {
25
+ class Task : public enable_shared_from_this<Task> {
26
26
  public:
27
27
  virtual ~Task() {
28
28
  }
@@ -79,7 +79,7 @@ public:
79
79
  static bool Equals(const BaseExpression &left, const BaseExpression &right) {
80
80
  return left.Equals(right);
81
81
  }
82
- bool operator==(const BaseExpression &rhs) {
82
+ bool operator==(const BaseExpression &rhs) const {
83
83
  return Equals(rhs);
84
84
  }
85
85
 
@@ -104,6 +104,8 @@ private:
104
104
  unique_ptr<ParsedExpression> expression;
105
105
  //! Comment on this column
106
106
  Value comment;
107
+ //! Tags on this column
108
+ unordered_map<string, string> tags;
107
109
  };
108
110
 
109
111
  } // namespace duckdb
@@ -64,6 +64,7 @@ public:
64
64
  public:
65
65
  virtual CatalogType GetCatalogType() const = 0;
66
66
  virtual unique_ptr<AlterInfo> Copy() const = 0;
67
+ virtual string ToString() const = 0;
67
68
 
68
69
  void Serialize(Serializer &serializer) const override;
69
70
  static unique_ptr<ParseInfo> Deserialize(Deserializer &deserializer);
@@ -40,6 +40,7 @@ struct AddScalarFunctionOverloadInfo : public AlterScalarFunctionInfo {
40
40
 
41
41
  public:
42
42
  unique_ptr<AlterInfo> Copy() const override;
43
+ string ToString() const override;
43
44
  };
44
45
 
45
46
  } // namespace duckdb
@@ -40,6 +40,7 @@ struct AddTableFunctionOverloadInfo : public AlterTableFunctionInfo {
40
40
 
41
41
  public:
42
42
  unique_ptr<AlterInfo> Copy() const override;
43
+ string ToString() const override;
43
44
  };
44
45
 
45
46
  } // namespace duckdb
@@ -35,6 +35,7 @@ struct ChangeOwnershipInfo : public AlterInfo {
35
35
  public:
36
36
  CatalogType GetCatalogType() const override;
37
37
  unique_ptr<AlterInfo> Copy() const override;
38
+ string ToString() const override;
38
39
  };
39
40
 
40
41
  //===--------------------------------------------------------------------===//
@@ -50,6 +51,7 @@ struct SetCommentInfo : public AlterInfo {
50
51
  public:
51
52
  CatalogType GetCatalogType() const override;
52
53
  unique_ptr<AlterInfo> Copy() const override;
54
+ string ToString() const override;
53
55
 
54
56
  void Serialize(Serializer &serializer) const override;
55
57
  static unique_ptr<AlterInfo> Deserialize(Deserializer &deserializer);
@@ -104,6 +106,7 @@ struct RenameColumnInfo : public AlterTableInfo {
104
106
 
105
107
  public:
106
108
  unique_ptr<AlterInfo> Copy() const override;
109
+ string ToString() const override;
107
110
 
108
111
  void Serialize(Serializer &serializer) const override;
109
112
  static unique_ptr<AlterTableInfo> Deserialize(Deserializer &deserializer);
@@ -124,6 +127,7 @@ struct RenameTableInfo : public AlterTableInfo {
124
127
 
125
128
  public:
126
129
  unique_ptr<AlterInfo> Copy() const override;
130
+ string ToString() const override;
127
131
 
128
132
  void Serialize(Serializer &serializer) const override;
129
133
  static unique_ptr<AlterTableInfo> Deserialize(Deserializer &deserializer);
@@ -146,6 +150,7 @@ struct AddColumnInfo : public AlterTableInfo {
146
150
 
147
151
  public:
148
152
  unique_ptr<AlterInfo> Copy() const override;
153
+ string ToString() const override;
149
154
 
150
155
  void Serialize(Serializer &serializer) const override;
151
156
  static unique_ptr<AlterTableInfo> Deserialize(Deserializer &deserializer);
@@ -170,6 +175,7 @@ struct RemoveColumnInfo : public AlterTableInfo {
170
175
 
171
176
  public:
172
177
  unique_ptr<AlterInfo> Copy() const override;
178
+ string ToString() const override;
173
179
  void Serialize(Serializer &serializer) const override;
174
180
  static unique_ptr<AlterTableInfo> Deserialize(Deserializer &deserializer);
175
181
  string GetColumnName() const override {
@@ -197,6 +203,7 @@ struct ChangeColumnTypeInfo : public AlterTableInfo {
197
203
 
198
204
  public:
199
205
  unique_ptr<AlterInfo> Copy() const override;
206
+ string ToString() const override;
200
207
  void Serialize(Serializer &serializer) const override;
201
208
  static unique_ptr<AlterTableInfo> Deserialize(Deserializer &deserializer);
202
209
  string GetColumnName() const override {
@@ -221,6 +228,7 @@ struct SetDefaultInfo : public AlterTableInfo {
221
228
 
222
229
  public:
223
230
  unique_ptr<AlterInfo> Copy() const override;
231
+ string ToString() const override;
224
232
  void Serialize(Serializer &serializer) const override;
225
233
  static unique_ptr<AlterTableInfo> Deserialize(Deserializer &deserializer);
226
234
 
@@ -245,6 +253,7 @@ struct AlterForeignKeyInfo : public AlterTableInfo {
245
253
 
246
254
  public:
247
255
  unique_ptr<AlterInfo> Copy() const override;
256
+ string ToString() const override;
248
257
  void Serialize(Serializer &serializer) const override;
249
258
  static unique_ptr<AlterTableInfo> Deserialize(Deserializer &deserializer);
250
259
 
@@ -264,6 +273,7 @@ struct SetNotNullInfo : public AlterTableInfo {
264
273
 
265
274
  public:
266
275
  unique_ptr<AlterInfo> Copy() const override;
276
+ string ToString() const override;
267
277
  void Serialize(Serializer &serializer) const override;
268
278
  static unique_ptr<AlterTableInfo> Deserialize(Deserializer &deserializer);
269
279
 
@@ -283,6 +293,7 @@ struct DropNotNullInfo : public AlterTableInfo {
283
293
 
284
294
  public:
285
295
  unique_ptr<AlterInfo> Copy() const override;
296
+ string ToString() const override;
286
297
  void Serialize(Serializer &serializer) const override;
287
298
  static unique_ptr<AlterTableInfo> Deserialize(Deserializer &deserializer);
288
299
 
@@ -322,6 +333,7 @@ struct RenameViewInfo : public AlterViewInfo {
322
333
 
323
334
  public:
324
335
  unique_ptr<AlterInfo> Copy() const override;
336
+ string ToString() const override;
325
337
  void Serialize(Serializer &serializer) const override;
326
338
  static unique_ptr<AlterViewInfo> Deserialize(Deserializer &deserializer);
327
339
 
@@ -35,6 +35,7 @@ public:
35
35
 
36
36
  public:
37
37
  unique_ptr<AttachInfo> Copy() const;
38
+ string ToString() const;
38
39
 
39
40
  void Serialize(Serializer &serializer) const override;
40
41
  static unique_ptr<ParseInfo> Deserialize(Deserializer &deserializer);
@@ -12,6 +12,7 @@
12
12
  #include "duckdb/common/types/value.hpp"
13
13
  #include "duckdb/parser/parsed_data/alter_info.hpp"
14
14
  #include "duckdb/parser/qualified_name.hpp"
15
+ #include "duckdb/catalog/catalog_entry_retriever.hpp"
15
16
 
16
17
  namespace duckdb {
17
18
  class ClientContext;
@@ -35,9 +36,10 @@ public:
35
36
  Value comment_value;
36
37
 
37
38
  public:
38
- optional_ptr<CatalogEntry> TryResolveCatalogEntry(ClientContext &context);
39
+ optional_ptr<CatalogEntry> TryResolveCatalogEntry(CatalogEntryRetriever &retriever);
39
40
  unique_ptr<AlterInfo> Copy() const override;
40
41
  CatalogType GetCatalogType() const override;
42
+ string ToString() const override;
41
43
 
42
44
  void Serialize(Serializer &serializer) const override;
43
45
  static unique_ptr<AlterInfo> Deserialize(Deserializer &deserializer);
@@ -16,6 +16,8 @@
16
16
 
17
17
  namespace duckdb {
18
18
 
19
+ class QueryNode;
20
+
19
21
  struct CopyInfo : public ParseInfo {
20
22
  public:
21
23
  static constexpr const ParseInfoType TYPE = ParseInfoType::COPY_INFO;
@@ -40,20 +42,16 @@ public:
40
42
  string file_path;
41
43
  //! Set of (key, value) options
42
44
  case_insensitive_map_t<vector<Value>> options;
45
+ // The SQL statement used instead of a table when copying data out to a file
46
+ unique_ptr<QueryNode> select_statement;
43
47
 
44
48
  public:
45
- unique_ptr<CopyInfo> Copy() const {
46
- auto result = make_uniq<CopyInfo>();
47
- result->catalog = catalog;
48
- result->schema = schema;
49
- result->table = table;
50
- result->select_list = select_list;
51
- result->file_path = file_path;
52
- result->is_from = is_from;
53
- result->format = format;
54
- result->options = options;
55
- return result;
56
- }
49
+ static string CopyOptionsToString(const string &format, const case_insensitive_map_t<vector<Value>> &options);
50
+
51
+ public:
52
+ unique_ptr<CopyInfo> Copy() const;
53
+ string ToString() const;
54
+ string TablePartToString() const;
57
55
 
58
56
  void Serialize(Serializer &serializer) const override;
59
57
  static unique_ptr<ParseInfo> Deserialize(Deserializer &deserializer);
@@ -44,8 +44,12 @@ public:
44
44
  bool internal;
45
45
  //! The SQL string of the CREATE statement
46
46
  string sql;
47
+ //! The inherent dependencies of the created entry
48
+ LogicalDependencyList dependencies;
47
49
  //! User provided comment
48
50
  Value comment;
51
+ //! Key-value tags with additional metadata
52
+ unordered_map<string, string> tags;
49
53
 
50
54
  public:
51
55
  void Serialize(Serializer &serializer) const override;
@@ -58,8 +62,8 @@ public:
58
62
  DUCKDB_API virtual unique_ptr<AlterInfo> GetAlterInfo() const;
59
63
 
60
64
  virtual string ToString() const {
61
- throw InternalException("ToString not supported for this type of CreateInfo: '%s'",
62
- EnumUtil::ToString(info_type));
65
+ throw NotImplementedException("ToString not supported for this type of CreateInfo: '%s'",
66
+ EnumUtil::ToString(info_type));
63
67
  }
64
68
  };
65
69
 
@@ -13,41 +13,14 @@
13
13
  namespace duckdb {
14
14
 
15
15
  struct CreateSchemaInfo : public CreateInfo {
16
- CreateSchemaInfo() : CreateInfo(CatalogType::SCHEMA_ENTRY) {
17
- }
16
+ CreateSchemaInfo();
18
17
 
19
18
  public:
20
- unique_ptr<CreateInfo> Copy() const override {
21
- auto result = make_uniq<CreateSchemaInfo>();
22
- CopyProperties(*result);
23
- return std::move(result);
24
- }
25
-
26
19
  DUCKDB_API void Serialize(Serializer &serializer) const override;
27
20
  DUCKDB_API static unique_ptr<CreateInfo> Deserialize(Deserializer &deserializer);
28
21
 
29
- string ToString() const override {
30
- string ret = "";
31
- switch (on_conflict) {
32
- case OnCreateConflict::ALTER_ON_CONFLICT: {
33
- ret += "CREATE SCHEMA " + schema + " ON CONFLICT INSERT OR REPLACE;";
34
- break;
35
- }
36
- case OnCreateConflict::IGNORE_ON_CONFLICT: {
37
- ret += "CREATE SCHEMA " + schema + " IF NOT EXISTS;";
38
- break;
39
- }
40
- case OnCreateConflict::REPLACE_ON_CONFLICT: {
41
- ret += "CREATE OR REPLACE SCHEMA " + schema + ";";
42
- break;
43
- }
44
- case OnCreateConflict::ERROR_ON_CONFLICT: {
45
- ret += "CREATE SCHEMA " + schema + ";";
46
- break;
47
- }
48
- }
49
- return ret;
50
- }
22
+ unique_ptr<CreateInfo> Copy() const override;
23
+ string ToString() const override;
51
24
  };
52
25
 
53
26
  } // namespace duckdb
@@ -52,6 +52,8 @@ public:
52
52
  public:
53
53
  DUCKDB_API void Serialize(Serializer &serializer) const override;
54
54
  DUCKDB_API static unique_ptr<CreateInfo> Deserialize(Deserializer &deserializer);
55
+
56
+ string ToString() const override;
55
57
  };
56
58
 
57
59
  } // namespace duckdb
@@ -15,9 +15,18 @@
15
15
 
16
16
  namespace duckdb {
17
17
 
18
+ struct BindTypeModifiersInput {
19
+ ClientContext &context;
20
+ const LogicalType &type;
21
+ const vector<Value> &modifiers;
22
+ };
23
+
24
+ //! The type to bind type modifiers to a type
25
+ typedef LogicalType (*bind_type_modifiers_function_t)(BindTypeModifiersInput &input);
26
+
18
27
  struct CreateTypeInfo : public CreateInfo {
19
28
  CreateTypeInfo();
20
- CreateTypeInfo(string name_p, LogicalType type_p);
29
+ CreateTypeInfo(string name_p, LogicalType type_p, bind_type_modifiers_function_t bind_modifiers_p = nullptr);
21
30
 
22
31
  //! Name of the Type
23
32
  string name;
@@ -25,6 +34,8 @@ struct CreateTypeInfo : public CreateInfo {
25
34
  LogicalType type;
26
35
  //! Used by create enum from query
27
36
  unique_ptr<SQLStatement> query;
37
+ //! Bind type modifiers to the type
38
+ bind_type_modifiers_function_t bind_modifiers;
28
39
 
29
40
  public:
30
41
  unique_ptr<CreateInfo> Copy() const override;
@@ -46,6 +46,7 @@ public:
46
46
 
47
47
  DUCKDB_API void Serialize(Serializer &serializer) const override;
48
48
  DUCKDB_API static unique_ptr<CreateInfo> Deserialize(Deserializer &deserializer);
49
+
49
50
  string ToString() const override;
50
51
  };
51
52
 
@@ -27,6 +27,7 @@ public:
27
27
 
28
28
  public:
29
29
  unique_ptr<DetachInfo> Copy() const;
30
+ string ToString() const;
30
31
 
31
32
  void Serialize(Serializer &serializer) const override;
32
33
  static unique_ptr<ParseInfo> Deserialize(Deserializer &deserializer);
@@ -44,6 +44,7 @@ public:
44
44
 
45
45
  public:
46
46
  virtual unique_ptr<DropInfo> Copy() const;
47
+ string ToString() const;
47
48
 
48
49
  void Serialize(Serializer &serializer) const override;
49
50
  static unique_ptr<ParseInfo> Deserialize(Deserializer &deserializer);