duckdb 0.10.3-dev3.0 → 0.10.3-dev8.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 (1052) hide show
  1. package/binding.gyp +4 -5
  2. package/lib/duckdb.js +11 -0
  3. package/package.json +1 -1
  4. package/src/database.cpp +3 -3
  5. package/src/duckdb/extension/icu/icu_extension.cpp +44 -15
  6. package/src/duckdb/extension/icu/include/icu_extension.hpp +1 -0
  7. package/src/duckdb/extension/icu/third_party/icu/i18n/basictz.cpp +5 -5
  8. package/src/duckdb/extension/json/include/json_common.hpp +6 -1
  9. package/src/duckdb/extension/json/include/json_executors.hpp +5 -5
  10. package/src/duckdb/extension/json/include/json_extension.hpp +1 -0
  11. package/src/duckdb/extension/json/include/json_functions.hpp +2 -2
  12. package/src/duckdb/extension/json/include/json_serializer.hpp +2 -2
  13. package/src/duckdb/extension/json/json_common.cpp +69 -43
  14. package/src/duckdb/extension/json/json_extension.cpp +8 -0
  15. package/src/duckdb/extension/json/json_functions/copy_json.cpp +17 -16
  16. package/src/duckdb/extension/json/json_functions/json_create.cpp +3 -1
  17. package/src/duckdb/extension/json/json_functions/json_structure.cpp +18 -13
  18. package/src/duckdb/extension/json/json_functions/json_transform.cpp +4 -0
  19. package/src/duckdb/extension/json/json_functions/json_type.cpp +2 -2
  20. package/src/duckdb/extension/json/json_functions/read_json.cpp +14 -11
  21. package/src/duckdb/extension/json/json_functions/read_json_objects.cpp +11 -8
  22. package/src/duckdb/extension/json/json_functions.cpp +4 -3
  23. package/src/duckdb/extension/json/json_scan.cpp +21 -11
  24. package/src/duckdb/extension/parquet/column_reader.cpp +9 -5
  25. package/src/duckdb/extension/parquet/column_writer.cpp +31 -18
  26. package/src/duckdb/extension/parquet/include/column_writer.hpp +1 -0
  27. package/src/duckdb/extension/parquet/include/null_column_reader.hpp +54 -0
  28. package/src/duckdb/extension/parquet/include/parquet_extension.hpp +1 -0
  29. package/src/duckdb/extension/parquet/include/parquet_reader.hpp +1 -1
  30. package/src/duckdb/extension/parquet/include/parquet_writer.hpp +7 -2
  31. package/src/duckdb/extension/parquet/include/templated_column_reader.hpp +6 -1
  32. package/src/duckdb/extension/parquet/parquet_crypto.cpp +8 -6
  33. package/src/duckdb/extension/parquet/parquet_extension.cpp +271 -126
  34. package/src/duckdb/extension/parquet/parquet_metadata.cpp +39 -37
  35. package/src/duckdb/extension/parquet/parquet_reader.cpp +7 -4
  36. package/src/duckdb/extension/parquet/parquet_statistics.cpp +5 -4
  37. package/src/duckdb/extension/parquet/parquet_writer.cpp +55 -2
  38. package/src/duckdb/extension/parquet/serialize_parquet.cpp +2 -2
  39. package/src/duckdb/src/catalog/catalog.cpp +19 -39
  40. package/src/duckdb/src/catalog/catalog_entry/duck_index_entry.cpp +6 -6
  41. package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +47 -31
  42. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +84 -52
  43. package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +4 -2
  44. package/src/duckdb/src/catalog/catalog_entry/macro_catalog_entry.cpp +4 -0
  45. package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +7 -0
  46. package/src/duckdb/src/catalog/catalog_entry/sequence_catalog_entry.cpp +4 -1
  47. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +36 -15
  48. package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +7 -1
  49. package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +5 -1
  50. package/src/duckdb/src/catalog/catalog_entry.cpp +7 -0
  51. package/src/duckdb/src/catalog/catalog_entry_retriever.cpp +64 -0
  52. package/src/duckdb/src/catalog/catalog_set.cpp +32 -17
  53. package/src/duckdb/src/catalog/default/default_functions.cpp +2 -1
  54. package/src/duckdb/src/catalog/default/default_views.cpp +1 -1
  55. package/src/duckdb/src/catalog/dependency_manager.cpp +129 -9
  56. package/src/duckdb/src/catalog/duck_catalog.cpp +5 -0
  57. package/src/duckdb/src/common/adbc/nanoarrow/allocator.cpp +2 -2
  58. package/src/duckdb/src/common/adbc/nanoarrow/metadata.cpp +3 -3
  59. package/src/duckdb/src/common/adbc/nanoarrow/schema.cpp +7 -6
  60. package/src/duckdb/src/common/allocator.cpp +6 -2
  61. package/src/duckdb/src/common/arrow/appender/bool_data.cpp +1 -0
  62. package/src/duckdb/src/common/arrow/appender/struct_data.cpp +1 -1
  63. package/src/duckdb/src/common/arrow/appender/union_data.cpp +2 -1
  64. package/src/duckdb/src/common/arrow/arrow_appender.cpp +7 -5
  65. package/src/duckdb/src/common/arrow/arrow_converter.cpp +3 -5
  66. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +1 -1
  67. package/src/duckdb/src/common/box_renderer.cpp +6 -3
  68. package/src/duckdb/src/common/compressed_file_system.cpp +11 -7
  69. package/src/duckdb/src/common/enum_util.cpp +230 -17
  70. package/src/duckdb/src/common/enums/logical_operator_type.cpp +2 -0
  71. package/src/duckdb/src/common/enums/physical_operator_type.cpp +2 -0
  72. package/src/duckdb/src/common/enums/relation_type.cpp +2 -0
  73. package/src/duckdb/src/common/enums/statement_type.cpp +2 -0
  74. package/src/duckdb/src/common/error_data.cpp +12 -0
  75. package/src/duckdb/src/common/exception_format_value.cpp +1 -0
  76. package/src/duckdb/src/common/extra_type_info.cpp +86 -8
  77. package/src/duckdb/src/common/file_system.cpp +39 -7
  78. package/src/duckdb/src/common/gzip_file_system.cpp +38 -14
  79. package/src/duckdb/src/common/hive_partitioning.cpp +28 -76
  80. package/src/duckdb/src/common/http_state.cpp +4 -4
  81. package/src/duckdb/src/common/local_file_system.cpp +29 -12
  82. package/src/duckdb/src/common/multi_file_list.cpp +285 -0
  83. package/src/duckdb/src/common/multi_file_reader.cpp +112 -80
  84. package/src/duckdb/src/common/operator/cast_operators.cpp +27 -225
  85. package/src/duckdb/src/common/operator/string_cast.cpp +13 -14
  86. package/src/duckdb/src/common/pipe_file_system.cpp +3 -2
  87. package/src/duckdb/src/common/progress_bar/progress_bar.cpp +1 -1
  88. package/src/duckdb/src/common/random_engine.cpp +2 -1
  89. package/src/duckdb/src/common/re2_regex.cpp +6 -4
  90. package/src/duckdb/src/common/row_operations/row_aggregate.cpp +10 -10
  91. package/src/duckdb/src/common/row_operations/row_external.cpp +4 -3
  92. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +5 -3
  93. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +17 -4
  94. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +1 -1
  95. package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +4 -4
  96. package/src/duckdb/src/common/serializer/buffered_file_writer.cpp +9 -8
  97. package/src/duckdb/src/common/serializer/memory_stream.cpp +6 -3
  98. package/src/duckdb/src/common/serializer/serializer.cpp +1 -1
  99. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  100. package/src/duckdb/src/common/sort/merge_sorter.cpp +2 -2
  101. package/src/duckdb/src/common/sort/partition_state.cpp +6 -6
  102. package/src/duckdb/src/common/sort/radix_sort.cpp +1 -1
  103. package/src/duckdb/src/common/sort/sort_state.cpp +3 -3
  104. package/src/duckdb/src/common/sort/sorted_block.cpp +5 -5
  105. package/src/duckdb/src/common/string_util.cpp +69 -162
  106. package/src/duckdb/src/common/types/bit.cpp +1 -1
  107. package/src/duckdb/src/common/types/blob.cpp +3 -3
  108. package/src/duckdb/src/common/types/cast_helpers.cpp +197 -0
  109. package/src/duckdb/src/common/types/column/column_data_collection.cpp +17 -9
  110. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  111. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +13 -5
  112. package/src/duckdb/src/common/types/conflict_info.cpp +1 -1
  113. package/src/duckdb/src/common/types/conflict_manager.cpp +1 -1
  114. package/src/duckdb/src/common/types/data_chunk.cpp +1 -1
  115. package/src/duckdb/src/common/types/date.cpp +2 -2
  116. package/src/duckdb/src/common/types/decimal.cpp +12 -12
  117. package/src/duckdb/src/common/types/hash.cpp +1 -1
  118. package/src/duckdb/src/common/types/hugeint.cpp +10 -9
  119. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +4 -4
  120. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +6 -5
  121. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +21 -18
  122. package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +2 -2
  123. package/src/duckdb/src/common/types/row/tuple_data_segment.cpp +7 -0
  124. package/src/duckdb/src/common/types/string_heap.cpp +4 -0
  125. package/src/duckdb/src/common/types/timestamp.cpp +23 -1
  126. package/src/duckdb/src/common/types/uhugeint.cpp +1 -1
  127. package/src/duckdb/src/common/types/uuid.cpp +7 -6
  128. package/src/duckdb/src/common/types/value.cpp +54 -30
  129. package/src/duckdb/src/common/types/vector.cpp +71 -96
  130. package/src/duckdb/src/common/types/vector_buffer.cpp +4 -0
  131. package/src/duckdb/src/common/types/vector_cache.cpp +3 -3
  132. package/src/duckdb/src/common/types.cpp +124 -18
  133. package/src/duckdb/src/common/vector_operations/generators.cpp +4 -16
  134. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +20 -0
  135. package/src/duckdb/src/common/vector_operations/null_operations.cpp +1 -1
  136. package/src/duckdb/src/common/vector_operations/numeric_inplace_operators.cpp +2 -2
  137. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +1 -1
  138. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +13 -6
  139. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +8 -5
  140. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +2 -2
  141. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +2 -2
  142. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +2 -0
  143. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +2 -2
  144. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +8 -5
  145. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +14 -8
  146. package/src/duckdb/src/core_functions/function_list.cpp +2 -1
  147. package/src/duckdb/src/core_functions/lambda_functions.cpp +2 -2
  148. package/src/duckdb/src/core_functions/scalar/array/array_functions.cpp +5 -0
  149. package/src/duckdb/src/core_functions/scalar/bit/bitstring.cpp +4 -4
  150. package/src/duckdb/src/core_functions/scalar/blob/create_sort_key.cpp +3 -2
  151. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +2 -2
  152. package/src/duckdb/src/core_functions/scalar/date/epoch.cpp +17 -0
  153. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +1 -1
  154. package/src/duckdb/src/core_functions/scalar/date/to_interval.cpp +19 -0
  155. package/src/duckdb/src/core_functions/scalar/debug/vector_type.cpp +6 -5
  156. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +2 -3
  157. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +2 -2
  158. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +30 -21
  159. package/src/duckdb/src/core_functions/scalar/list/list_reduce.cpp +1 -1
  160. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +3 -3
  161. package/src/duckdb/src/core_functions/scalar/list/list_value.cpp +1 -1
  162. package/src/duckdb/src/core_functions/scalar/list/range.cpp +2 -2
  163. package/src/duckdb/src/core_functions/scalar/map/map.cpp +44 -14
  164. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +17 -4
  165. package/src/duckdb/src/core_functions/scalar/map/map_entries.cpp +30 -13
  166. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +25 -12
  167. package/src/duckdb/src/core_functions/scalar/map/map_keys_values.cpp +16 -4
  168. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +2 -2
  169. package/src/duckdb/src/core_functions/scalar/operators/bitwise.cpp +2 -2
  170. package/src/duckdb/src/core_functions/scalar/random/setseed.cpp +1 -1
  171. package/src/duckdb/src/core_functions/scalar/string/bar.cpp +1 -1
  172. package/src/duckdb/src/core_functions/scalar/string/chr.cpp +2 -2
  173. package/src/duckdb/src/core_functions/scalar/string/hex.cpp +13 -13
  174. package/src/duckdb/src/core_functions/scalar/string/instr.cpp +1 -1
  175. package/src/duckdb/src/core_functions/scalar/string/pad.cpp +8 -8
  176. package/src/duckdb/src/core_functions/scalar/string/repeat.cpp +15 -7
  177. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +1 -1
  178. package/src/duckdb/src/core_functions/scalar/string/to_base.cpp +1 -1
  179. package/src/duckdb/src/core_functions/scalar/string/translate.cpp +4 -4
  180. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +13 -9
  181. package/src/duckdb/src/core_functions/scalar/string/unicode.cpp +1 -1
  182. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  183. package/src/duckdb/src/execution/aggregate_hashtable.cpp +17 -8
  184. package/src/duckdb/src/execution/index/art/art.cpp +6 -6
  185. package/src/duckdb/src/execution/index/bound_index.cpp +115 -0
  186. package/src/duckdb/src/execution/index/unbound_index.cpp +30 -0
  187. package/src/duckdb/src/execution/join_hashtable.cpp +2 -1
  188. package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +1 -1
  189. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  190. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +3 -3
  191. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +40 -5
  192. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +2 -2
  193. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +16 -3
  194. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer.cpp +4 -4
  195. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.cpp +2 -12
  196. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_file_handle.cpp +2 -1
  197. package/src/duckdb/src/execution/operator/csv_scanner/scanner/base_scanner.cpp +21 -5
  198. package/src/duckdb/src/execution/operator/csv_scanner/scanner/column_count_scanner.cpp +1 -1
  199. package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +312 -260
  200. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/csv_sniffer.cpp +2 -2
  201. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +45 -16
  202. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +19 -18
  203. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +200 -55
  204. package/src/duckdb/src/execution/operator/csv_scanner/table_function/csv_file_scanner.cpp +26 -23
  205. package/src/duckdb/src/execution/operator/csv_scanner/table_function/global_csv_state.cpp +12 -12
  206. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +7 -7
  207. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +31 -22
  208. package/src/duckdb/src/execution/operator/helper/physical_buffered_collector.cpp +1 -1
  209. package/src/duckdb/src/execution/operator/helper/physical_execute.cpp +1 -1
  210. package/src/duckdb/src/execution/operator/helper/physical_load.cpp +24 -2
  211. package/src/duckdb/src/execution/operator/helper/physical_reservoir_sample.cpp +1 -1
  212. package/src/duckdb/src/execution/operator/helper/physical_update_extensions.cpp +57 -0
  213. package/src/duckdb/src/execution/operator/helper/physical_verify_vector.cpp +13 -8
  214. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  215. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +9 -9
  216. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +4 -4
  217. package/src/duckdb/src/execution/operator/join/physical_left_delim_join.cpp +1 -1
  218. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +2 -2
  219. package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +2 -2
  220. package/src/duckdb/src/execution/operator/order/physical_order.cpp +3 -2
  221. package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +4 -4
  222. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +20 -13
  223. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +70 -60
  224. package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +18 -7
  225. package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +88 -12
  226. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +47 -27
  227. package/src/duckdb/src/execution/operator/persistent/physical_update.cpp +34 -9
  228. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -0
  229. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -3
  230. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +22 -7
  231. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +1 -1
  232. package/src/duckdb/src/execution/operator/schema/physical_create_art_index.cpp +9 -9
  233. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +1 -1
  234. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +5 -4
  235. package/src/duckdb/src/execution/physical_operator.cpp +2 -2
  236. package/src/duckdb/src/execution/physical_plan/plan_column_data_get.cpp +2 -4
  237. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  238. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +2 -2
  239. package/src/duckdb/src/execution/physical_plan/plan_cte.cpp +1 -1
  240. package/src/duckdb/src/execution/physical_plan/plan_delete.cpp +2 -2
  241. package/src/duckdb/src/execution/physical_plan/plan_delim_get.cpp +2 -2
  242. package/src/duckdb/src/execution/physical_plan/plan_distinct.cpp +1 -0
  243. package/src/duckdb/src/execution/physical_plan/plan_expression_get.cpp +4 -5
  244. package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +6 -5
  245. package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +1 -1
  246. package/src/duckdb/src/execution/physical_plan/plan_simple.cpp +4 -0
  247. package/src/duckdb/src/execution/physical_plan/plan_top_n.cpp +2 -2
  248. package/src/duckdb/src/execution/physical_plan/plan_update.cpp +3 -3
  249. package/src/duckdb/src/execution/physical_plan/plan_window.cpp +1 -24
  250. package/src/duckdb/src/execution/physical_plan_generator.cpp +3 -0
  251. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +38 -33
  252. package/src/duckdb/src/execution/reservoir_sample.cpp +42 -31
  253. package/src/duckdb/src/execution/window_executor.cpp +39 -39
  254. package/src/duckdb/src/execution/window_segment_tree.cpp +5 -2
  255. package/src/duckdb/src/function/aggregate/distributive/first.cpp +1 -1
  256. package/src/duckdb/src/function/cast/string_cast.cpp +3 -3
  257. package/src/duckdb/src/function/cast_rules.cpp +1 -0
  258. package/src/duckdb/src/function/function.cpp +2 -2
  259. package/src/duckdb/src/function/function_binder.cpp +9 -4
  260. package/src/duckdb/src/function/pragma/pragma_functions.cpp +2 -1
  261. package/src/duckdb/src/function/pragma/pragma_queries.cpp +4 -3
  262. package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +1 -1
  263. package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -2
  264. package/src/duckdb/src/function/scalar/list/list_resize.cpp +1 -1
  265. package/src/duckdb/src/function/scalar/list/list_select.cpp +11 -4
  266. package/src/duckdb/src/function/scalar/list/list_zip.cpp +3 -1
  267. package/src/duckdb/src/function/scalar/operators/add.cpp +19 -9
  268. package/src/duckdb/src/function/scalar/sequence/nextval.cpp +77 -48
  269. package/src/duckdb/src/function/scalar/strftime_format.cpp +61 -39
  270. package/src/duckdb/src/function/scalar/string/caseconvert.cpp +12 -12
  271. package/src/duckdb/src/function/scalar/string/contains.cpp +2 -2
  272. package/src/duckdb/src/function/scalar/string/length.cpp +9 -9
  273. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +2 -2
  274. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +2 -1
  275. package/src/duckdb/src/function/scalar/string/substring.cpp +11 -9
  276. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +2 -2
  277. package/src/duckdb/src/function/scalar_function.cpp +2 -1
  278. package/src/duckdb/src/function/table/arrow.cpp +18 -4
  279. package/src/duckdb/src/function/table/arrow_conversion.cpp +88 -66
  280. package/src/duckdb/src/function/table/copy_csv.cpp +94 -28
  281. package/src/duckdb/src/function/table/glob.cpp +17 -9
  282. package/src/duckdb/src/function/table/read_csv.cpp +37 -14
  283. package/src/duckdb/src/function/table/read_file.cpp +6 -2
  284. package/src/duckdb/src/function/table/repeat.cpp +5 -1
  285. package/src/duckdb/src/function/table/repeat_row.cpp +1 -1
  286. package/src/duckdb/src/function/table/sniff_csv.cpp +9 -3
  287. package/src/duckdb/src/function/table/system/duckdb_columns.cpp +3 -3
  288. package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +31 -16
  289. package/src/duckdb/src/function/table/system/duckdb_databases.cpp +6 -1
  290. package/src/duckdb/src/function/table/system/duckdb_dependencies.cpp +2 -2
  291. package/src/duckdb/src/function/table/system/duckdb_extensions.cpp +48 -6
  292. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +8 -2
  293. package/src/duckdb/src/function/table/system/duckdb_indexes.cpp +9 -4
  294. package/src/duckdb/src/function/table/system/duckdb_memory.cpp +2 -2
  295. package/src/duckdb/src/function/table/system/duckdb_schemas.cpp +7 -2
  296. package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +8 -3
  297. package/src/duckdb/src/function/table/system/duckdb_tables.cpp +18 -10
  298. package/src/duckdb/src/function/table/system/duckdb_temporary_files.cpp +1 -1
  299. package/src/duckdb/src/function/table/system/duckdb_types.cpp +12 -5
  300. package/src/duckdb/src/function/table/system/duckdb_views.cpp +9 -4
  301. package/src/duckdb/src/function/table/system/duckdb_which_secret.cpp +75 -0
  302. package/src/duckdb/src/function/table/system/pragma_database_size.cpp +4 -4
  303. package/src/duckdb/src/function/table/system/pragma_metadata_info.cpp +3 -3
  304. package/src/duckdb/src/function/table/system/pragma_storage_info.cpp +6 -6
  305. package/src/duckdb/src/function/table/system_functions.cpp +1 -0
  306. package/src/duckdb/src/function/table/table_scan.cpp +11 -20
  307. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  308. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  309. package/src/duckdb/src/function/table_function.cpp +5 -4
  310. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +1 -10
  311. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_index_entry.hpp +1 -1
  312. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_schema_entry.hpp +2 -2
  313. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +6 -8
  314. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/function_entry.hpp +1 -0
  315. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +3 -2
  316. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +2 -5
  317. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +3 -4
  318. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +2 -0
  319. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +4 -0
  320. package/src/duckdb/src/include/duckdb/catalog/catalog_entry_retriever.hpp +72 -0
  321. package/src/duckdb/src/include/duckdb/catalog/catalog_transaction.hpp +3 -0
  322. package/src/duckdb/src/include/duckdb/catalog/dependency.hpp +4 -0
  323. package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +7 -1
  324. package/src/duckdb/src/include/duckdb/catalog/dependency_manager.hpp +2 -2
  325. package/src/duckdb/src/include/duckdb/catalog/standard_entry.hpp +2 -0
  326. package/src/duckdb/src/include/duckdb/common/arrow/appender/append_data.hpp +1 -0
  327. package/src/duckdb/src/include/duckdb/common/arrow/appender/enum_data.hpp +3 -3
  328. package/src/duckdb/src/include/duckdb/common/arrow/appender/map_data.hpp +1 -1
  329. package/src/duckdb/src/include/duckdb/common/arrow/appender/scalar_data.hpp +15 -0
  330. package/src/duckdb/src/include/duckdb/common/arrow/appender/varchar_data.hpp +3 -2
  331. package/src/duckdb/src/include/duckdb/common/bit_utils.hpp +63 -98
  332. package/src/duckdb/src/include/duckdb/common/bitpacking.hpp +4 -4
  333. package/src/duckdb/src/include/duckdb/common/constants.hpp +2 -0
  334. package/src/duckdb/src/include/duckdb/common/enable_shared_from_this.ipp +42 -0
  335. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +43 -3
  336. package/src/duckdb/src/include/duckdb/common/enums/checkpoint_type.hpp +38 -0
  337. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +1 -0
  338. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +1 -0
  339. package/src/duckdb/src/include/duckdb/common/enums/relation_type.hpp +1 -0
  340. package/src/duckdb/src/include/duckdb/common/enums/scan_options.hpp +3 -1
  341. package/src/duckdb/src/include/duckdb/common/enums/scan_vector_type.hpp +17 -0
  342. package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +1 -0
  343. package/src/duckdb/src/include/duckdb/common/enums/tableref_type.hpp +2 -1
  344. package/src/duckdb/src/include/duckdb/common/enums/undo_flags.hpp +2 -1
  345. package/src/duckdb/src/include/duckdb/common/exception.hpp +0 -1
  346. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +15 -1
  347. package/src/duckdb/src/include/duckdb/common/file_opener.hpp +4 -0
  348. package/src/duckdb/src/include/duckdb/common/file_system.hpp +3 -0
  349. package/src/duckdb/src/include/duckdb/common/gzip_file_system.hpp +3 -0
  350. package/src/duckdb/src/include/duckdb/common/helper.hpp +22 -1
  351. package/src/duckdb/src/include/duckdb/common/hive_partitioning.hpp +3 -17
  352. package/src/duckdb/src/include/duckdb/common/http_state.hpp +1 -1
  353. package/src/duckdb/src/include/duckdb/common/insertion_order_preserving_map.hpp +129 -0
  354. package/src/duckdb/src/include/duckdb/common/multi_file_list.hpp +151 -0
  355. package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +132 -56
  356. package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +7 -3
  357. package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +3 -0
  358. package/src/duckdb/src/include/duckdb/common/operator/add.hpp +2 -0
  359. package/src/duckdb/src/include/duckdb/common/operator/decimal_cast_operators.hpp +233 -0
  360. package/src/duckdb/src/include/duckdb/common/operator/integer_cast_operator.hpp +5 -4
  361. package/src/duckdb/src/include/duckdb/common/operator/numeric_cast.hpp +2 -2
  362. package/src/duckdb/src/include/duckdb/common/optional_ptr.hpp +5 -0
  363. package/src/duckdb/src/include/duckdb/common/optionally_owned_ptr.hpp +91 -0
  364. package/src/duckdb/src/include/duckdb/common/platform.h +6 -1
  365. package/src/duckdb/src/include/duckdb/common/radix.hpp +12 -4
  366. package/src/duckdb/src/include/duckdb/common/re2_regex.hpp +3 -2
  367. package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +2 -0
  368. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +2 -1
  369. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +8 -6
  370. package/src/duckdb/src/include/duckdb/common/serializer/deserializer.hpp +36 -0
  371. package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +65 -0
  372. package/src/duckdb/src/include/duckdb/common/serializer/serializer.hpp +52 -6
  373. package/src/duckdb/src/include/duckdb/common/shared_ptr.hpp +36 -3
  374. package/src/duckdb/src/include/duckdb/common/shared_ptr.ipp +268 -0
  375. package/src/duckdb/src/include/duckdb/common/sort/duckdb_pdqsort.hpp +3 -3
  376. package/src/duckdb/src/include/duckdb/common/string.hpp +3 -2
  377. package/src/duckdb/src/include/duckdb/common/string_util.hpp +11 -7
  378. package/src/duckdb/src/include/duckdb/common/types/bit.hpp +1 -1
  379. package/src/duckdb/src/include/duckdb/common/types/cast_helpers.hpp +43 -215
  380. package/src/duckdb/src/include/duckdb/common/types/datetime.hpp +36 -11
  381. package/src/duckdb/src/include/duckdb/common/types/hash.hpp +1 -1
  382. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_segment.hpp +7 -1
  383. package/src/duckdb/src/include/duckdb/common/types/selection_vector.hpp +1 -1
  384. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +2 -0
  385. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +2 -0
  386. package/src/duckdb/src/include/duckdb/common/types/validity_mask.hpp +1 -1
  387. package/src/duckdb/src/include/duckdb/common/types/value.hpp +4 -0
  388. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +20 -15
  389. package/src/duckdb/src/include/duckdb/common/types.hpp +14 -2
  390. package/src/duckdb/src/include/duckdb/common/unique_ptr.hpp +7 -6
  391. package/src/duckdb/src/include/duckdb/common/vector.hpp +11 -0
  392. package/src/duckdb/src/include/duckdb/common/vector_size.hpp +1 -1
  393. package/src/duckdb/src/include/duckdb/common/weak_ptr.ipp +117 -0
  394. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +3 -3
  395. package/src/duckdb/src/include/duckdb/core_functions/scalar/date_functions.hpp +18 -0
  396. package/src/duckdb/src/include/duckdb/execution/adaptive_filter.hpp +1 -0
  397. package/src/duckdb/src/include/duckdb/execution/expression_executor.hpp +1 -1
  398. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +4 -4
  399. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +1 -1
  400. package/src/duckdb/src/include/duckdb/execution/index/bound_index.hpp +145 -0
  401. package/src/duckdb/src/include/duckdb/execution/index/index_type.hpp +2 -2
  402. package/src/duckdb/src/include/duckdb/execution/index/unbound_index.hpp +63 -0
  403. package/src/duckdb/src/include/duckdb/execution/merge_sort_tree.hpp +24 -18
  404. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_streaming_window.hpp +2 -0
  405. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_window.hpp +2 -0
  406. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/base_scanner.hpp +10 -3
  407. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/column_count_scanner.hpp +1 -0
  408. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_error.hpp +6 -6
  409. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_reader_options.hpp +7 -6
  410. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_sniffer.hpp +24 -4
  411. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/string_value_scanner.hpp +90 -20
  412. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_update_extensions.hpp +52 -0
  413. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +3 -1
  414. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_delete.hpp +5 -5
  415. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_export.hpp +1 -0
  416. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_insert.hpp +8 -5
  417. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_update.hpp +4 -1
  418. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +4 -5
  419. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_expression_scan.hpp +6 -2
  420. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +1 -1
  421. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +1 -1
  422. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +1 -1
  423. package/src/duckdb/src/include/duckdb/execution/reservoir_sample.hpp +63 -8
  424. package/src/duckdb/src/include/duckdb/function/function.hpp +0 -5
  425. package/src/duckdb/src/include/duckdb/function/function_binder.hpp +6 -3
  426. package/src/duckdb/src/include/duckdb/function/replacement_scan.hpp +25 -2
  427. package/src/duckdb/src/include/duckdb/function/scalar/regexp.hpp +1 -1
  428. package/src/duckdb/src/include/duckdb/function/scalar/sequence_functions.hpp +3 -4
  429. package/src/duckdb/src/include/duckdb/function/scalar/strftime_format.hpp +5 -0
  430. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +1 -1
  431. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +13 -0
  432. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +7 -3
  433. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +3 -0
  434. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +4 -0
  435. package/src/duckdb/src/include/duckdb/function/table_function.hpp +15 -2
  436. package/src/duckdb/src/include/duckdb/logging/http_logger.hpp +81 -0
  437. package/src/duckdb/src/include/duckdb/main/appender.hpp +1 -3
  438. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +1 -1
  439. package/src/duckdb/src/include/duckdb/main/buffered_data/buffered_data.hpp +1 -0
  440. package/src/duckdb/src/include/duckdb/main/capi/cast/generic.hpp +2 -2
  441. package/src/duckdb/src/include/duckdb/main/client_config.hpp +8 -0
  442. package/src/duckdb/src/include/duckdb/main/client_context.hpp +1 -19
  443. package/src/duckdb/src/include/duckdb/main/client_context_state.hpp +11 -1
  444. package/src/duckdb/src/include/duckdb/main/client_context_wrapper.hpp +27 -0
  445. package/src/duckdb/src/include/duckdb/main/client_data.hpp +4 -0
  446. package/src/duckdb/src/include/duckdb/main/config.hpp +36 -3
  447. package/src/duckdb/src/include/duckdb/main/connection_manager.hpp +7 -17
  448. package/src/duckdb/src/include/duckdb/main/database.hpp +25 -20
  449. package/src/duckdb/src/include/duckdb/main/extension.hpp +25 -0
  450. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +155 -10
  451. package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +79 -12
  452. package/src/duckdb/src/include/duckdb/main/extension_install_info.hpp +89 -0
  453. package/src/duckdb/src/include/duckdb/main/extension_util.hpp +3 -1
  454. package/src/duckdb/src/include/duckdb/main/external_dependencies.hpp +46 -4
  455. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  456. package/src/duckdb/src/include/duckdb/main/relation/materialized_relation.hpp +35 -0
  457. package/src/duckdb/src/include/duckdb/main/relation/query_relation.hpp +1 -1
  458. package/src/duckdb/src/include/duckdb/main/relation/table_function_relation.hpp +2 -2
  459. package/src/duckdb/src/include/duckdb/main/relation/table_relation.hpp +1 -1
  460. package/src/duckdb/src/include/duckdb/main/relation/value_relation.hpp +3 -3
  461. package/src/duckdb/src/include/duckdb/main/relation/view_relation.hpp +1 -1
  462. package/src/duckdb/src/include/duckdb/main/relation.hpp +5 -6
  463. package/src/duckdb/src/include/duckdb/main/settings.hpp +47 -0
  464. package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +4 -4
  465. package/src/duckdb/src/include/duckdb/optimizer/join_order/cost_model.hpp +1 -1
  466. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_node.hpp +8 -15
  467. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_order_optimizer.hpp +0 -51
  468. package/src/duckdb/src/include/duckdb/optimizer/join_order/plan_enumerator.hpp +10 -17
  469. package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph_manager.hpp +5 -7
  470. package/src/duckdb/src/include/duckdb/optimizer/matcher/set_matcher.hpp +2 -1
  471. package/src/duckdb/src/include/duckdb/optimizer/optimizer_extension.hpp +10 -2
  472. package/src/duckdb/src/include/duckdb/optimizer/rule/list.hpp +1 -0
  473. package/src/duckdb/src/include/duckdb/optimizer/rule/timestamp_comparison.hpp +30 -0
  474. package/src/duckdb/src/include/duckdb/parallel/event.hpp +1 -1
  475. package/src/duckdb/src/include/duckdb/parallel/interrupt.hpp +1 -0
  476. package/src/duckdb/src/include/duckdb/parallel/meta_pipeline.hpp +1 -1
  477. package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +1 -1
  478. package/src/duckdb/src/include/duckdb/parallel/task.hpp +1 -1
  479. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +1 -1
  480. package/src/duckdb/src/include/duckdb/parser/column_definition.hpp +2 -0
  481. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +1 -0
  482. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_scalar_function_info.hpp +1 -0
  483. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_function_info.hpp +1 -0
  484. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +12 -0
  485. package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +1 -0
  486. package/src/duckdb/src/include/duckdb/parser/parsed_data/comment_on_column_info.hpp +3 -1
  487. package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_info.hpp +10 -12
  488. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +6 -2
  489. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_schema_info.hpp +3 -30
  490. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_sequence_info.hpp +2 -0
  491. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_type_info.hpp +12 -1
  492. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +1 -0
  493. package/src/duckdb/src/include/duckdb/parser/parsed_data/detach_info.hpp +1 -0
  494. package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +1 -0
  495. package/src/duckdb/src/include/duckdb/parser/parsed_data/exported_table_data.hpp +5 -2
  496. package/src/duckdb/src/include/duckdb/parser/parsed_data/load_info.hpp +4 -7
  497. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +7 -1
  498. package/src/duckdb/src/include/duckdb/parser/parsed_data/pragma_info.hpp +2 -11
  499. package/src/duckdb/src/include/duckdb/parser/parsed_data/transaction_info.hpp +2 -0
  500. package/src/duckdb/src/include/duckdb/parser/parsed_data/update_extensions_info.hpp +36 -0
  501. package/src/duckdb/src/include/duckdb/parser/parsed_data/vacuum_info.hpp +1 -0
  502. package/src/duckdb/src/include/duckdb/parser/parser_extension.hpp +1 -0
  503. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  504. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +1 -4
  505. package/src/duckdb/src/include/duckdb/parser/statement/alter_statement.hpp +1 -0
  506. package/src/duckdb/src/include/duckdb/parser/statement/attach_statement.hpp +1 -0
  507. package/src/duckdb/src/include/duckdb/parser/statement/call_statement.hpp +1 -0
  508. package/src/duckdb/src/include/duckdb/parser/statement/copy_database_statement.hpp +1 -2
  509. package/src/duckdb/src/include/duckdb/parser/statement/copy_statement.hpp +1 -3
  510. package/src/duckdb/src/include/duckdb/parser/statement/detach_statement.hpp +1 -0
  511. package/src/duckdb/src/include/duckdb/parser/statement/drop_statement.hpp +1 -0
  512. package/src/duckdb/src/include/duckdb/parser/statement/execute_statement.hpp +1 -0
  513. package/src/duckdb/src/include/duckdb/parser/statement/explain_statement.hpp +1 -0
  514. package/src/duckdb/src/include/duckdb/parser/statement/export_statement.hpp +1 -0
  515. package/src/duckdb/src/include/duckdb/parser/statement/extension_statement.hpp +1 -0
  516. package/src/duckdb/src/include/duckdb/parser/statement/insert_statement.hpp +1 -0
  517. package/src/duckdb/src/include/duckdb/parser/statement/list.hpp +1 -0
  518. package/src/duckdb/src/include/duckdb/parser/statement/load_statement.hpp +1 -0
  519. package/src/duckdb/src/include/duckdb/parser/statement/logical_plan_statement.hpp +3 -0
  520. package/src/duckdb/src/include/duckdb/parser/statement/multi_statement.hpp +1 -0
  521. package/src/duckdb/src/include/duckdb/parser/statement/pragma_statement.hpp +1 -0
  522. package/src/duckdb/src/include/duckdb/parser/statement/prepare_statement.hpp +1 -0
  523. package/src/duckdb/src/include/duckdb/parser/statement/relation_statement.hpp +1 -0
  524. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -0
  525. package/src/duckdb/src/include/duckdb/parser/statement/set_statement.hpp +6 -4
  526. package/src/duckdb/src/include/duckdb/parser/statement/transaction_statement.hpp +1 -0
  527. package/src/duckdb/src/include/duckdb/parser/statement/update_extensions_statement.hpp +36 -0
  528. package/src/duckdb/src/include/duckdb/parser/statement/vacuum_statement.hpp +1 -0
  529. package/src/duckdb/src/include/duckdb/parser/tableref/column_data_ref.hpp +46 -0
  530. package/src/duckdb/src/include/duckdb/parser/tableref/list.hpp +1 -0
  531. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +0 -4
  532. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +3 -0
  533. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +2 -0
  534. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +5 -0
  535. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +4 -4
  536. package/src/duckdb/src/include/duckdb/planner/binder.hpp +42 -16
  537. package/src/duckdb/src/include/duckdb/planner/bound_tokens.hpp +1 -0
  538. package/src/duckdb/src/include/duckdb/planner/expression_binder/alter_binder.hpp +7 -6
  539. package/src/duckdb/src/include/duckdb/planner/expression_binder/having_binder.hpp +2 -1
  540. package/src/duckdb/src/include/duckdb/planner/expression_binder/index_binder.hpp +5 -1
  541. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +5 -0
  542. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +0 -1
  543. package/src/duckdb/src/include/duckdb/planner/operator/logical_column_data_get.hpp +6 -2
  544. package/src/duckdb/src/include/duckdb/planner/operator/logical_delete.hpp +2 -0
  545. package/src/duckdb/src/include/duckdb/planner/operator/logical_export.hpp +7 -0
  546. package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +2 -0
  547. package/src/duckdb/src/include/duckdb/planner/operator/logical_top_n.hpp +3 -3
  548. package/src/duckdb/src/include/duckdb/planner/operator/logical_update.hpp +2 -0
  549. package/src/duckdb/src/include/duckdb/planner/parsed_data/bound_create_table_info.hpp +0 -4
  550. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +4 -4
  551. package/src/duckdb/src/include/duckdb/planner/tableref/bound_column_data_ref.hpp +30 -0
  552. package/src/duckdb/src/include/duckdb/planner/tableref/list.hpp +1 -0
  553. package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +6 -3
  554. package/src/duckdb/src/include/duckdb/storage/buffer/buffer_pool.hpp +16 -7
  555. package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +15 -3
  556. package/src/duckdb/src/include/duckdb/storage/checkpoint/row_group_writer.hpp +10 -7
  557. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +2 -0
  558. package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +24 -15
  559. package/src/duckdb/src/include/duckdb/storage/compression/alp/algorithm/alp.hpp +8 -7
  560. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_compress.hpp +2 -2
  561. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_constants.hpp +5 -4
  562. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_fetch.hpp +1 -1
  563. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_utils.hpp +3 -3
  564. package/src/duckdb/src/include/duckdb/storage/compression/alprd/algorithm/alprd.hpp +2 -1
  565. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_analyze.hpp +5 -3
  566. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_compress.hpp +2 -2
  567. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_fetch.hpp +1 -1
  568. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/bit_reader.hpp +1 -1
  569. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_fetch.hpp +1 -1
  570. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_fetch.hpp +1 -1
  571. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +55 -16
  572. package/src/duckdb/src/include/duckdb/storage/index.hpp +33 -97
  573. package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +3 -3
  574. package/src/duckdb/src/include/duckdb/storage/optimistic_data_writer.hpp +1 -1
  575. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +3 -3
  576. package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +22 -9
  577. package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +6 -3
  578. package/src/duckdb/src/include/duckdb/storage/storage_lock.hpp +17 -13
  579. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +27 -8
  580. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +3 -2
  581. package/src/duckdb/src/include/duckdb/storage/table/append_state.hpp +12 -0
  582. package/src/duckdb/src/include/duckdb/storage/table/array_column_data.hpp +5 -4
  583. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +29 -10
  584. package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +2 -1
  585. package/src/duckdb/src/include/duckdb/storage/table/data_table_info.hpp +32 -6
  586. package/src/duckdb/src/include/duckdb/storage/table/delete_state.hpp +23 -0
  587. package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +5 -4
  588. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +14 -3
  589. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +3 -2
  590. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +4 -0
  591. package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +5 -5
  592. package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +6 -6
  593. package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +5 -4
  594. package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +25 -1
  595. package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +5 -2
  596. package/src/duckdb/src/include/duckdb/storage/table/update_state.hpp +20 -0
  597. package/src/duckdb/src/include/duckdb/storage/table/validity_column_data.hpp +1 -0
  598. package/src/duckdb/src/include/duckdb/storage/temporary_file_manager.hpp +20 -4
  599. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +10 -5
  600. package/src/duckdb/src/include/duckdb/transaction/duck_transaction.hpp +19 -4
  601. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +30 -7
  602. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +8 -5
  603. package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +1 -0
  604. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +8 -0
  605. package/src/duckdb/src/include/duckdb/transaction/undo_buffer.hpp +9 -1
  606. package/src/duckdb/src/include/duckdb.h +15 -11
  607. package/src/duckdb/src/main/appender.cpp +3 -1
  608. package/src/duckdb/src/main/attached_database.cpp +5 -3
  609. package/src/duckdb/src/main/capi/appender-c.cpp +4 -3
  610. package/src/duckdb/src/main/capi/arrow-c.cpp +4 -4
  611. package/src/duckdb/src/main/capi/helper-c.cpp +3 -3
  612. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -5
  613. package/src/duckdb/src/main/capi/result-c.cpp +19 -5
  614. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  615. package/src/duckdb/src/main/client_context.cpp +32 -23
  616. package/src/duckdb/src/main/client_context_file_opener.cpp +31 -0
  617. package/src/duckdb/src/main/client_context_wrapper.cpp +22 -0
  618. package/src/duckdb/src/main/client_data.cpp +5 -3
  619. package/src/duckdb/src/main/config.cpp +71 -2
  620. package/src/duckdb/src/main/connection.cpp +11 -10
  621. package/src/duckdb/src/main/connection_manager.cpp +9 -23
  622. package/src/duckdb/src/main/database.cpp +26 -30
  623. package/src/duckdb/src/main/db_instance_cache.cpp +1 -1
  624. package/src/duckdb/src/main/extension/extension_helper.cpp +396 -17
  625. package/src/duckdb/src/main/extension/extension_install.cpp +297 -89
  626. package/src/duckdb/src/main/extension/extension_load.cpp +137 -135
  627. package/src/duckdb/src/main/extension/extension_util.cpp +8 -2
  628. package/src/duckdb/src/main/extension.cpp +56 -0
  629. package/src/duckdb/src/main/extension_install_info.cpp +116 -0
  630. package/src/duckdb/src/main/materialized_query_result.cpp +11 -0
  631. package/src/duckdb/src/main/query_profiler.cpp +1 -1
  632. package/src/duckdb/src/main/relation/create_view_relation.cpp +6 -0
  633. package/src/duckdb/src/main/relation/materialized_relation.cpp +58 -0
  634. package/src/duckdb/src/main/relation/query_relation.cpp +20 -1
  635. package/src/duckdb/src/main/relation/read_csv_relation.cpp +5 -3
  636. package/src/duckdb/src/main/relation/table_relation.cpp +4 -4
  637. package/src/duckdb/src/main/relation/value_relation.cpp +2 -2
  638. package/src/duckdb/src/main/relation/view_relation.cpp +1 -1
  639. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  640. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  641. package/src/duckdb/src/main/relation.cpp +36 -32
  642. package/src/duckdb/src/main/secret/secret.cpp +1 -1
  643. package/src/duckdb/src/main/settings/settings.cpp +137 -11
  644. package/src/duckdb/src/optimizer/common_aggregate_optimizer.cpp +1 -1
  645. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  646. package/src/duckdb/src/optimizer/filter_pushdown.cpp +3 -2
  647. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +3 -3
  648. package/src/duckdb/src/optimizer/join_order/cost_model.cpp +1 -1
  649. package/src/duckdb/src/optimizer/join_order/join_node.cpp +4 -27
  650. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +5 -8
  651. package/src/duckdb/src/optimizer/join_order/plan_enumerator.cpp +32 -107
  652. package/src/duckdb/src/optimizer/join_order/query_graph_manager.cpp +68 -61
  653. package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +4 -2
  654. package/src/duckdb/src/optimizer/join_order/relation_statistics_helper.cpp +3 -3
  655. package/src/duckdb/src/optimizer/optimizer.cpp +3 -1
  656. package/src/duckdb/src/optimizer/pushdown/pushdown_aggregate.cpp +2 -2
  657. package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +1 -1
  658. package/src/duckdb/src/optimizer/pushdown/pushdown_left_join.cpp +2 -2
  659. package/src/duckdb/src/optimizer/pushdown/pushdown_mark_join.cpp +6 -6
  660. package/src/duckdb/src/optimizer/pushdown/pushdown_projection.cpp +1 -1
  661. package/src/duckdb/src/optimizer/pushdown/pushdown_semi_anti_join.cpp +1 -1
  662. package/src/duckdb/src/optimizer/pushdown/pushdown_set_operation.cpp +1 -1
  663. package/src/duckdb/src/optimizer/pushdown/pushdown_single_join.cpp +2 -2
  664. package/src/duckdb/src/optimizer/remove_duplicate_groups.cpp +1 -1
  665. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +1 -1
  666. package/src/duckdb/src/optimizer/rule/arithmetic_simplification.cpp +1 -1
  667. package/src/duckdb/src/optimizer/rule/case_simplification.cpp +2 -2
  668. package/src/duckdb/src/optimizer/rule/conjunction_simplification.cpp +2 -1
  669. package/src/duckdb/src/optimizer/rule/constant_folding.cpp +1 -0
  670. package/src/duckdb/src/optimizer/rule/distributivity.cpp +1 -1
  671. package/src/duckdb/src/optimizer/rule/empty_needle_removal.cpp +1 -0
  672. package/src/duckdb/src/optimizer/rule/enum_comparison.cpp +1 -0
  673. package/src/duckdb/src/optimizer/rule/in_clause_simplification_rule.cpp +1 -0
  674. package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +1 -2
  675. package/src/duckdb/src/optimizer/rule/timestamp_comparison.cpp +107 -0
  676. package/src/duckdb/src/optimizer/statistics/expression/propagate_conjunction.cpp +1 -1
  677. package/src/duckdb/src/optimizer/statistics/expression/propagate_operator.cpp +4 -4
  678. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +3 -3
  679. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +1 -1
  680. package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +6 -3
  681. package/src/duckdb/src/optimizer/statistics/operator/propagate_set_operation.cpp +2 -1
  682. package/src/duckdb/src/optimizer/topn_optimizer.cpp +2 -2
  683. package/src/duckdb/src/parallel/executor.cpp +12 -9
  684. package/src/duckdb/src/parallel/meta_pipeline.cpp +2 -2
  685. package/src/duckdb/src/parallel/pipeline.cpp +2 -2
  686. package/src/duckdb/src/parallel/task_scheduler.cpp +9 -3
  687. package/src/duckdb/src/parser/column_definition.cpp +1 -0
  688. package/src/duckdb/src/parser/constraints/foreign_key_constraint.cpp +9 -7
  689. package/src/duckdb/src/parser/expression/star_expression.cpp +2 -2
  690. package/src/duckdb/src/parser/parsed_data/alter_scalar_function_info.cpp +4 -0
  691. package/src/duckdb/src/parser/parsed_data/alter_table_function_info.cpp +4 -0
  692. package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +183 -0
  693. package/src/duckdb/src/parser/parsed_data/attach_info.cpp +23 -0
  694. package/src/duckdb/src/parser/parsed_data/comment_on_column_info.cpp +15 -2
  695. package/src/duckdb/src/parser/parsed_data/copy_info.cpp +100 -0
  696. package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +16 -2
  697. package/src/duckdb/src/parser/parsed_data/create_info.cpp +2 -0
  698. package/src/duckdb/src/parser/parsed_data/create_schema_info.cpp +40 -0
  699. package/src/duckdb/src/parser/parsed_data/create_sequence_info.cpp +22 -0
  700. package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +12 -4
  701. package/src/duckdb/src/parser/parsed_data/create_type_info.cpp +37 -14
  702. package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +4 -4
  703. package/src/duckdb/src/parser/parsed_data/detach_info.cpp +12 -0
  704. package/src/duckdb/src/parser/parsed_data/drop_info.cpp +21 -0
  705. package/src/duckdb/src/parser/parsed_data/load_info.cpp +46 -0
  706. package/src/duckdb/src/parser/parsed_data/parse_info.cpp +50 -0
  707. package/src/duckdb/src/parser/parsed_data/pragma_info.cpp +33 -0
  708. package/src/duckdb/src/parser/parsed_data/transaction_info.cpp +22 -0
  709. package/src/duckdb/src/parser/parsed_data/vacuum_info.cpp +20 -0
  710. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +1 -0
  711. package/src/duckdb/src/parser/parser.cpp +5 -4
  712. package/src/duckdb/src/parser/query_node.cpp +6 -2
  713. package/src/duckdb/src/parser/statement/alter_statement.cpp +4 -0
  714. package/src/duckdb/src/parser/statement/attach_statement.cpp +4 -0
  715. package/src/duckdb/src/parser/statement/call_statement.cpp +8 -0
  716. package/src/duckdb/src/parser/statement/copy_statement.cpp +1 -91
  717. package/src/duckdb/src/parser/statement/detach_statement.cpp +4 -0
  718. package/src/duckdb/src/parser/statement/drop_statement.cpp +4 -0
  719. package/src/duckdb/src/parser/statement/execute_statement.cpp +15 -0
  720. package/src/duckdb/src/parser/statement/explain_statement.cpp +19 -0
  721. package/src/duckdb/src/parser/statement/export_statement.cpp +18 -0
  722. package/src/duckdb/src/parser/statement/extension_statement.cpp +4 -0
  723. package/src/duckdb/src/parser/statement/load_statement.cpp +4 -0
  724. package/src/duckdb/src/parser/statement/multi_statement.cpp +8 -0
  725. package/src/duckdb/src/parser/statement/pragma_statement.cpp +4 -0
  726. package/src/duckdb/src/parser/statement/prepare_statement.cpp +13 -0
  727. package/src/duckdb/src/parser/statement/relation_statement.cpp +4 -0
  728. package/src/duckdb/src/parser/statement/set_statement.cpp +33 -4
  729. package/src/duckdb/src/parser/statement/transaction_statement.cpp +4 -0
  730. package/src/duckdb/src/parser/statement/update_extensions_statement.cpp +34 -0
  731. package/src/duckdb/src/parser/statement/vacuum_statement.cpp +4 -0
  732. package/src/duckdb/src/parser/tableref/column_data_ref.cpp +81 -0
  733. package/src/duckdb/src/parser/tableref.cpp +1 -0
  734. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +2 -2
  735. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +1 -1
  736. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +6 -1
  737. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +1 -1
  738. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +1 -1
  739. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +16 -0
  740. package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +2 -0
  741. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +97 -63
  742. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +2 -0
  743. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +1 -1
  744. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -2
  745. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +19 -0
  746. package/src/duckdb/src/parser/transformer.cpp +5 -2
  747. package/src/duckdb/src/planner/bind_context.cpp +2 -2
  748. package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +35 -8
  749. package/src/duckdb/src/planner/binder/expression/bind_cast_expression.cpp +1 -1
  750. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +13 -7
  751. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +1 -1
  752. package/src/duckdb/src/planner/binder/query_node/plan_setop.cpp +35 -2
  753. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +0 -2
  754. package/src/duckdb/src/planner/binder/statement/bind_attach.cpp +2 -0
  755. package/src/duckdb/src/planner/binder/statement/bind_call.cpp +2 -0
  756. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +7 -3
  757. package/src/duckdb/src/planner/binder/statement/bind_copy_database.cpp +21 -68
  758. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +141 -28
  759. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +115 -57
  760. package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +4 -0
  761. package/src/duckdb/src/planner/binder/statement/bind_detach.cpp +2 -0
  762. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +2 -0
  763. package/src/duckdb/src/planner/binder/statement/bind_execute.cpp +4 -2
  764. package/src/duckdb/src/planner/binder/statement/bind_explain.cpp +2 -0
  765. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +15 -4
  766. package/src/duckdb/src/planner/binder/statement/bind_extension.cpp +1 -0
  767. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +5 -1
  768. package/src/duckdb/src/planner/binder/statement/bind_load.cpp +13 -0
  769. package/src/duckdb/src/planner/binder/statement/bind_logical_plan.cpp +2 -0
  770. package/src/duckdb/src/planner/binder/statement/bind_pragma.cpp +2 -0
  771. package/src/duckdb/src/planner/binder/statement/bind_prepare.cpp +1 -0
  772. package/src/duckdb/src/planner/binder/statement/bind_select.cpp +1 -0
  773. package/src/duckdb/src/planner/binder/statement/bind_set.cpp +4 -0
  774. package/src/duckdb/src/planner/binder/statement/bind_simple.cpp +6 -4
  775. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +5 -1
  776. package/src/duckdb/src/planner/binder/statement/bind_update_extensions.cpp +28 -0
  777. package/src/duckdb/src/planner/binder/statement/bind_vacuum.cpp +2 -0
  778. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +32 -29
  779. package/src/duckdb/src/planner/binder/tableref/bind_column_data_ref.cpp +16 -0
  780. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +7 -4
  781. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +32 -22
  782. package/src/duckdb/src/planner/binder/tableref/plan_column_data_ref.cpp +15 -0
  783. package/src/duckdb/src/planner/binder.cpp +50 -30
  784. package/src/duckdb/src/planner/bound_parameter_map.cpp +1 -1
  785. package/src/duckdb/src/planner/bound_result_modifier.cpp +1 -1
  786. package/src/duckdb/src/planner/expression/bound_expression.cpp +3 -2
  787. package/src/duckdb/src/planner/expression_binder/alter_binder.cpp +24 -7
  788. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +27 -2
  789. package/src/duckdb/src/planner/expression_binder/having_binder.cpp +34 -19
  790. package/src/duckdb/src/planner/expression_binder/index_binder.cpp +33 -0
  791. package/src/duckdb/src/planner/expression_binder/order_binder.cpp +10 -1
  792. package/src/duckdb/src/planner/expression_binder.cpp +4 -0
  793. package/src/duckdb/src/planner/expression_iterator.cpp +3 -1
  794. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  795. package/src/duckdb/src/planner/operator/logical_column_data_get.cpp +16 -2
  796. package/src/duckdb/src/planner/operator/logical_delete.cpp +2 -0
  797. package/src/duckdb/src/planner/operator/logical_get.cpp +4 -1
  798. package/src/duckdb/src/planner/operator/logical_insert.cpp +2 -0
  799. package/src/duckdb/src/planner/operator/logical_top_n.cpp +1 -1
  800. package/src/duckdb/src/planner/operator/logical_update.cpp +2 -0
  801. package/src/duckdb/src/planner/planner.cpp +35 -9
  802. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +34 -9
  803. package/src/duckdb/src/planner/table_binding.cpp +1 -1
  804. package/src/duckdb/src/storage/arena_allocator.cpp +5 -3
  805. package/src/duckdb/src/storage/buffer/block_handle.cpp +3 -3
  806. package/src/duckdb/src/storage/buffer/block_manager.cpp +1 -1
  807. package/src/duckdb/src/storage/buffer/buffer_pool.cpp +83 -22
  808. package/src/duckdb/src/storage/buffer/buffer_pool_reservation.cpp +2 -2
  809. package/src/duckdb/src/storage/buffer_manager.cpp +6 -2
  810. package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +9 -0
  811. package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +7 -2
  812. package/src/duckdb/src/storage/checkpoint_manager.cpp +68 -104
  813. package/src/duckdb/src/storage/compression/bitpacking.cpp +19 -13
  814. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +9 -7
  815. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +1 -1
  816. package/src/duckdb/src/storage/compression/fsst.cpp +11 -7
  817. package/src/duckdb/src/storage/compression/rle.cpp +1 -1
  818. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +5 -4
  819. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +1 -1
  820. package/src/duckdb/src/storage/data_table.cpp +254 -101
  821. package/src/duckdb/src/storage/index.cpp +2 -106
  822. package/src/duckdb/src/storage/local_storage.cpp +38 -50
  823. package/src/duckdb/src/storage/metadata/metadata_manager.cpp +2 -2
  824. package/src/duckdb/src/storage/metadata/metadata_writer.cpp +1 -1
  825. package/src/duckdb/src/storage/optimistic_data_writer.cpp +9 -11
  826. package/src/duckdb/src/storage/partial_block_manager.cpp +6 -6
  827. package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +8 -0
  828. package/src/duckdb/src/storage/serialization/serialize_dependency.cpp +49 -0
  829. package/src/duckdb/src/storage/serialization/serialize_extension_install_info.cpp +28 -0
  830. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +5 -2
  831. package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +78 -2
  832. package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +21 -0
  833. package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +16 -0
  834. package/src/duckdb/src/storage/serialization/serialize_types.cpp +6 -1
  835. package/src/duckdb/src/storage/single_file_block_manager.cpp +22 -19
  836. package/src/duckdb/src/storage/standard_buffer_manager.cpp +68 -40
  837. package/src/duckdb/src/storage/statistics/column_statistics.cpp +3 -3
  838. package/src/duckdb/src/storage/statistics/distinct_statistics.cpp +1 -1
  839. package/src/duckdb/src/storage/storage_info.cpp +67 -23
  840. package/src/duckdb/src/storage/storage_lock.cpp +77 -17
  841. package/src/duckdb/src/storage/storage_manager.cpp +56 -43
  842. package/src/duckdb/src/storage/table/array_column_data.cpp +13 -12
  843. package/src/duckdb/src/storage/table/column_data.cpp +80 -37
  844. package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +1 -1
  845. package/src/duckdb/src/storage/table/column_segment.cpp +6 -5
  846. package/src/duckdb/src/storage/table/list_column_data.cpp +15 -14
  847. package/src/duckdb/src/storage/table/row_group.cpp +38 -23
  848. package/src/duckdb/src/storage/table/row_group_collection.cpp +52 -38
  849. package/src/duckdb/src/storage/table/row_version_manager.cpp +2 -2
  850. package/src/duckdb/src/storage/table/standard_column_data.cpp +28 -16
  851. package/src/duckdb/src/storage/table/struct_column_data.cpp +23 -16
  852. package/src/duckdb/src/storage/table/table_statistics.cpp +27 -8
  853. package/src/duckdb/src/storage/table/update_segment.cpp +6 -6
  854. package/src/duckdb/src/storage/table/validity_column_data.cpp +5 -0
  855. package/src/duckdb/src/storage/table_index_list.cpp +69 -42
  856. package/src/duckdb/src/storage/temporary_file_manager.cpp +111 -17
  857. package/src/duckdb/src/storage/temporary_memory_manager.cpp +4 -4
  858. package/src/duckdb/src/storage/wal_replay.cpp +27 -22
  859. package/src/duckdb/src/storage/write_ahead_log.cpp +42 -22
  860. package/src/duckdb/src/transaction/cleanup_state.cpp +4 -7
  861. package/src/duckdb/src/transaction/commit_state.cpp +17 -8
  862. package/src/duckdb/src/transaction/duck_transaction.cpp +60 -15
  863. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +154 -121
  864. package/src/duckdb/src/transaction/meta_transaction.cpp +19 -1
  865. package/src/duckdb/src/transaction/rollback_state.cpp +2 -0
  866. package/src/duckdb/src/transaction/transaction.cpp +7 -7
  867. package/src/duckdb/src/transaction/undo_buffer.cpp +37 -17
  868. package/src/duckdb/third_party/concurrentqueue/concurrentqueue.h +5 -5
  869. package/src/duckdb/third_party/fsst/fsst.h +1 -1
  870. package/src/duckdb/third_party/jaro_winkler/details/common.hpp +9 -9
  871. package/src/duckdb/third_party/jaro_winkler/details/intrinsics.hpp +1 -1
  872. package/src/duckdb/third_party/jaro_winkler/details/jaro_impl.hpp +18 -18
  873. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +1 -0
  874. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +12 -0
  875. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +555 -1032
  876. package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +3 -0
  877. package/src/duckdb/third_party/libpg_query/include/utils/datetime.hpp +1 -0
  878. package/src/duckdb/third_party/libpg_query/pg_functions.cpp +13 -6
  879. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +23925 -23444
  880. package/src/duckdb/third_party/mbedtls/library/constant_time.cpp +1 -1
  881. package/src/duckdb/third_party/parquet/parquet_types.cpp +3 -0
  882. package/src/duckdb/third_party/parquet/parquet_types.h +2 -1
  883. package/src/duckdb/third_party/re2/re2/compile.cc +2 -2
  884. package/src/duckdb/third_party/re2/re2/dfa.cc +3 -8
  885. package/src/duckdb/third_party/re2/re2/onepass.cc +4 -3
  886. package/src/duckdb/third_party/re2/re2/prog.cc +10 -10
  887. package/src/duckdb/third_party/re2/re2/prog.h +8 -8
  888. package/src/duckdb/third_party/tdigest/t_digest.hpp +6 -6
  889. package/src/duckdb/third_party/utf8proc/include/utf8proc.hpp +1 -1
  890. package/src/duckdb/third_party/yyjson/include/yyjson.hpp +7930 -0
  891. package/src/duckdb/third_party/yyjson/yyjson.cpp +9490 -0
  892. package/src/duckdb/ub_src_catalog.cpp +2 -0
  893. package/src/duckdb/ub_src_common.cpp +2 -0
  894. package/src/duckdb/ub_src_execution_index.cpp +3 -1
  895. package/src/duckdb/ub_src_execution_operator_helper.cpp +2 -0
  896. package/src/duckdb/ub_src_function_table_system.cpp +2 -0
  897. package/src/duckdb/ub_src_main.cpp +4 -0
  898. package/src/duckdb/ub_src_main_relation.cpp +2 -0
  899. package/src/duckdb/ub_src_optimizer.cpp +8 -8
  900. package/src/duckdb/ub_src_optimizer_join_order.cpp +0 -2
  901. package/src/duckdb/ub_src_optimizer_rule.cpp +4 -2
  902. package/src/duckdb/ub_src_parser_parsed_data.cpp +10 -0
  903. package/src/duckdb/ub_src_parser_statement.cpp +2 -0
  904. package/src/duckdb/ub_src_parser_tableref.cpp +2 -0
  905. package/src/duckdb/ub_src_planner_binder_statement.cpp +2 -0
  906. package/src/duckdb/ub_src_planner_binder_tableref.cpp +4 -0
  907. package/src/duckdb/ub_src_storage_serialization.cpp +4 -0
  908. package/test/query_result.test.ts +9 -0
  909. package/src/duckdb/src/catalog/catalog_entry/ub_duckdb_catalog_entries.cpp +0 -16
  910. package/src/duckdb/src/catalog/default/ub_duckdb_catalog_default_entries.cpp +0 -5
  911. package/src/duckdb/src/catalog/ub_duckdb_catalog.cpp +0 -10
  912. package/src/duckdb/src/common/adbc/nanoarrow/ub_duckdb_adbc_nanoarrow.cpp +0 -5
  913. package/src/duckdb/src/common/adbc/ub_duckdb_adbc.cpp +0 -3
  914. package/src/duckdb/src/common/arrow/appender/ub_duckdb_common_arrow_appender.cpp +0 -6
  915. package/src/duckdb/src/common/arrow/ub_duckdb_common_arrow.cpp +0 -4
  916. package/src/duckdb/src/common/crypto/ub_duckdb_common_crypto.cpp +0 -2
  917. package/src/duckdb/src/common/enums/ub_duckdb_common_enums.cpp +0 -12
  918. package/src/duckdb/src/common/operator/ub_duckdb_common_operators.cpp +0 -4
  919. package/src/duckdb/src/common/progress_bar/ub_duckdb_progress_bar.cpp +0 -3
  920. package/src/duckdb/src/common/row_operations/ub_duckdb_row_operations.cpp +0 -9
  921. package/src/duckdb/src/common/serializer/ub_duckdb_common_serializer.cpp +0 -7
  922. package/src/duckdb/src/common/sort/ub_duckdb_sort.cpp +0 -7
  923. package/src/duckdb/src/common/types/column/ub_duckdb_common_types_column.cpp +0 -6
  924. package/src/duckdb/src/common/types/row/ub_duckdb_common_types_row.cpp +0 -11
  925. package/src/duckdb/src/common/types/ub_duckdb_common_types.cpp +0 -28
  926. package/src/duckdb/src/common/ub_duckdb_common.cpp +0 -34
  927. package/src/duckdb/src/common/value_operations/ub_duckdb_value_operations.cpp +0 -2
  928. package/src/duckdb/src/core_functions/aggregate/algebraic/ub_duckdb_aggr_algebraic.cpp +0 -5
  929. package/src/duckdb/src/core_functions/aggregate/distributive/ub_duckdb_aggr_distributive.cpp +0 -13
  930. package/src/duckdb/src/core_functions/aggregate/holistic/ub_duckdb_aggr_holistic.cpp +0 -5
  931. package/src/duckdb/src/core_functions/aggregate/nested/ub_duckdb_aggr_nested.cpp +0 -3
  932. package/src/duckdb/src/core_functions/aggregate/regression/ub_duckdb_aggr_regr.cpp +0 -8
  933. package/src/duckdb/src/core_functions/scalar/bit/ub_duckdb_func_bit.cpp +0 -2
  934. package/src/duckdb/src/core_functions/scalar/blob/ub_duckdb_func_blob.cpp +0 -3
  935. package/src/duckdb/src/core_functions/scalar/date/ub_duckdb_func_date.cpp +0 -12
  936. package/src/duckdb/src/core_functions/scalar/debug/ub_duckdb_func_debug.cpp +0 -2
  937. package/src/duckdb/src/core_functions/scalar/enum/ub_duckdb_func_enum.cpp +0 -2
  938. package/src/duckdb/src/core_functions/scalar/generic/ub_duckdb_func_generic.cpp +0 -9
  939. package/src/duckdb/src/core_functions/scalar/list/ub_duckdb_func_list.cpp +0 -11
  940. package/src/duckdb/src/core_functions/scalar/map/ub_duckdb_func_map_nested.cpp +0 -8
  941. package/src/duckdb/src/core_functions/scalar/math/ub_duckdb_func_math.cpp +0 -1
  942. package/src/duckdb/src/core_functions/scalar/operators/ub_duckdb_func_ops.cpp +0 -1
  943. package/src/duckdb/src/core_functions/scalar/random/ub_duckdb_func_random.cpp +0 -3
  944. package/src/duckdb/src/core_functions/scalar/string/ub_duckdb_func_string.cpp +0 -26
  945. package/src/duckdb/src/core_functions/scalar/struct/ub_duckdb_func_struct.cpp +0 -3
  946. package/src/duckdb/src/core_functions/scalar/union/ub_duckdb_func_union.cpp +0 -4
  947. package/src/duckdb/src/core_functions/ub_duckdb_core_functions.cpp +0 -3
  948. package/src/duckdb/src/execution/expression_executor/ub_duckdb_expression_executor.cpp +0 -11
  949. package/src/duckdb/src/execution/index/art/ub_duckdb_art_index_execution.cpp +0 -12
  950. package/src/duckdb/src/execution/index/art/ub_duckdb_execution_index_art.cpp +0 -11
  951. package/src/duckdb/src/execution/index/ub_duckdb_execution_index.cpp +0 -3
  952. package/src/duckdb/src/execution/nested_loop_join/ub_duckdb_nested_loop_join.cpp +0 -3
  953. package/src/duckdb/src/execution/operator/aggregate/ub_duckdb_operator_aggregate.cpp +0 -9
  954. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/ub_duckdb_operator_csv_sniffer.cpp +0 -7
  955. package/src/duckdb/src/execution/operator/csv_scanner/ub_duckdb_operator_csv_scanner.cpp +0 -10
  956. package/src/duckdb/src/execution/operator/filter/ub_duckdb_operator_filter.cpp +0 -2
  957. package/src/duckdb/src/execution/operator/helper/ub_duckdb_operator_helper.cpp +0 -18
  958. package/src/duckdb/src/execution/operator/join/ub_duckdb_operator_join.cpp +0 -16
  959. package/src/duckdb/src/execution/operator/order/ub_duckdb_operator_order.cpp +0 -3
  960. package/src/duckdb/src/execution/operator/persistent/ub_duckdb_operator_persistent.cpp +0 -10
  961. package/src/duckdb/src/execution/operator/projection/ub_duckdb_operator_projection.cpp +0 -5
  962. package/src/duckdb/src/execution/operator/scan/ub_duckdb_operator_scan.cpp +0 -7
  963. package/src/duckdb/src/execution/operator/schema/ub_duckdb_operator_schema.cpp +0 -12
  964. package/src/duckdb/src/execution/operator/set/ub_duckdb_operator_set.cpp +0 -4
  965. package/src/duckdb/src/execution/physical_plan/ub_duckdb_physical_plan.cpp +0 -44
  966. package/src/duckdb/src/execution/ub_duckdb_execution.cpp +0 -15
  967. package/src/duckdb/src/function/aggregate/algebraic/ub_duckdb_aggr_algebraic.cpp +0 -5
  968. package/src/duckdb/src/function/aggregate/distributive/ub_duckdb_aggr_distr.cpp +0 -3
  969. package/src/duckdb/src/function/aggregate/holistic/ub_duckdb_aggr_holistic.cpp +0 -5
  970. package/src/duckdb/src/function/aggregate/nested/ub_duckdb_aggr_nested.cpp +0 -3
  971. package/src/duckdb/src/function/aggregate/regression/ub_duckdb_aggr_regr.cpp +0 -8
  972. package/src/duckdb/src/function/aggregate/ub_duckdb_func_aggr.cpp +0 -3
  973. package/src/duckdb/src/function/cast/ub_duckdb_func_cast.cpp +0 -17
  974. package/src/duckdb/src/function/cast/union/ub_duckdb_union_cast.cpp +0 -2
  975. package/src/duckdb/src/function/pragma/ub_duckdb_func_pragma.cpp +0 -3
  976. package/src/duckdb/src/function/scalar/bit/ub_duckdb_func_bit.cpp +0 -2
  977. package/src/duckdb/src/function/scalar/blob/ub_duckdb_func_blob.cpp +0 -3
  978. package/src/duckdb/src/function/scalar/compressed_materialization/ub_duckdb_func_compressed_materialization.cpp +0 -3
  979. package/src/duckdb/src/function/scalar/date/ub_duckdb_func_date.cpp +0 -12
  980. package/src/duckdb/src/function/scalar/enum/ub_duckdb_func_enum.cpp +0 -2
  981. package/src/duckdb/src/function/scalar/generic/ub_duckdb_func_generic.cpp +0 -8
  982. package/src/duckdb/src/function/scalar/generic/ub_duckdb_func_generic_main.cpp +0 -2
  983. package/src/duckdb/src/function/scalar/list/ub_duckdb_func_list.cpp +0 -11
  984. package/src/duckdb/src/function/scalar/list/ub_duckdb_func_list_nested.cpp +0 -5
  985. package/src/duckdb/src/function/scalar/map/ub_duckdb_func_map_nested.cpp +0 -7
  986. package/src/duckdb/src/function/scalar/math/ub_duckdb_func_math.cpp +0 -4
  987. package/src/duckdb/src/function/scalar/operators/ub_duckdb_func_ops.cpp +0 -6
  988. package/src/duckdb/src/function/scalar/operators/ub_duckdb_func_ops_main.cpp +0 -5
  989. package/src/duckdb/src/function/scalar/sequence/ub_duckdb_func_seq.cpp +0 -2
  990. package/src/duckdb/src/function/scalar/string/regexp/ub_duckdb_func_string_regexp.cpp +0 -3
  991. package/src/duckdb/src/function/scalar/string/ub_duckdb_func_string.cpp +0 -31
  992. package/src/duckdb/src/function/scalar/string/ub_duckdb_func_string_main.cpp +0 -12
  993. package/src/duckdb/src/function/scalar/struct/ub_duckdb_func_struct.cpp +0 -4
  994. package/src/duckdb/src/function/scalar/struct/ub_duckdb_func_struct_main.cpp +0 -2
  995. package/src/duckdb/src/function/scalar/system/ub_duckdb_func_system.cpp +0 -2
  996. package/src/duckdb/src/function/scalar/ub_duckdb_func_scalar.cpp +0 -9
  997. package/src/duckdb/src/function/scalar/union/ub_duckdb_func_union.cpp +0 -4
  998. package/src/duckdb/src/function/table/arrow/ub_duckdb_arrow_conversion.cpp +0 -2
  999. package/src/duckdb/src/function/table/system/ub_duckdb_table_func_system.cpp +0 -23
  1000. package/src/duckdb/src/function/table/ub_duckdb_func_table.cpp +0 -16
  1001. package/src/duckdb/src/function/table/version/ub_duckdb_func_table_version.cpp +0 -2
  1002. package/src/duckdb/src/function/ub_duckdb_function.cpp +0 -14
  1003. package/src/duckdb/src/main/capi/cast/ub_duckdb_main_capi_cast.cpp +0 -3
  1004. package/src/duckdb/src/main/capi/ub_duckdb_main_capi.cpp +0 -19
  1005. package/src/duckdb/src/main/chunk_scan_state/ub_duckdb_main_chunk_scan_state.cpp +0 -2
  1006. package/src/duckdb/src/main/extension/ub_duckdb_main_extension.cpp +0 -6
  1007. package/src/duckdb/src/main/relation/ub_duckdb_main_relation.cpp +0 -26
  1008. package/src/duckdb/src/main/settings/ub_duckdb_main_settings.cpp +0 -2
  1009. package/src/duckdb/src/main/ub_duckdb_main.cpp +0 -25
  1010. package/src/duckdb/src/optimizer/compressed_materialization/ub_duckdb_optimizer_compressed_materialization.cpp +0 -4
  1011. package/src/duckdb/src/optimizer/join_order/ub_duckdb_optimizer_join_order.cpp +0 -12
  1012. package/src/duckdb/src/optimizer/matcher/ub_duckdb_optimizer_matcher.cpp +0 -2
  1013. package/src/duckdb/src/optimizer/pullup/ub_duckdb_optimizer_pullup.cpp +0 -6
  1014. package/src/duckdb/src/optimizer/pushdown/ub_duckdb_optimizer_pushdown.cpp +0 -12
  1015. package/src/duckdb/src/optimizer/rule/ub_duckdb_optimizer_rules.cpp +0 -16
  1016. package/src/duckdb/src/optimizer/statistics/expression/ub_duckdb_optimizer_statistics_expr.cpp +0 -11
  1017. package/src/duckdb/src/optimizer/statistics/operator/ub_duckdb_optimizer_statistics_op.cpp +0 -11
  1018. package/src/duckdb/src/optimizer/ub_duckdb_optimizer.cpp +0 -20
  1019. package/src/duckdb/src/parallel/ub_duckdb_parallel.cpp +0 -15
  1020. package/src/duckdb/src/parser/constraints/ub_duckdb_constraints.cpp +0 -5
  1021. package/src/duckdb/src/parser/expression/ub_duckdb_expression.cpp +0 -18
  1022. package/src/duckdb/src/parser/parsed_data/ub_duckdb_parsed_data.cpp +0 -24
  1023. package/src/duckdb/src/parser/query_node/ub_duckdb_query_node.cpp +0 -5
  1024. package/src/duckdb/src/parser/statement/ub_duckdb_statement.cpp +0 -25
  1025. package/src/duckdb/src/parser/tableref/ub_duckdb_parser_tableref.cpp +0 -8
  1026. package/src/duckdb/src/parser/transform/constraint/ub_duckdb_transformer_constraint.cpp +0 -2
  1027. package/src/duckdb/src/parser/transform/expression/ub_duckdb_transformer_expression.cpp +0 -20
  1028. package/src/duckdb/src/parser/transform/helpers/ub_duckdb_transformer_helpers.cpp +0 -8
  1029. package/src/duckdb/src/parser/transform/statement/ub_duckdb_transformer_statement.cpp +0 -37
  1030. package/src/duckdb/src/parser/transform/tableref/ub_duckdb_transformer_tableref.cpp +0 -8
  1031. package/src/duckdb/src/parser/ub_duckdb_parser.cpp +0 -15
  1032. package/src/duckdb/src/planner/binder/expression/ub_duckdb_bind_expression.cpp +0 -20
  1033. package/src/duckdb/src/planner/binder/query_node/ub_duckdb_bind_query_node.cpp +0 -12
  1034. package/src/duckdb/src/planner/binder/statement/ub_duckdb_bind_statement.cpp +0 -26
  1035. package/src/duckdb/src/planner/binder/tableref/ub_duckdb_bind_tableref.cpp +0 -17
  1036. package/src/duckdb/src/planner/expression/ub_duckdb_planner_expression.cpp +0 -19
  1037. package/src/duckdb/src/planner/expression_binder/ub_duckdb_expression_binders.cpp +0 -20
  1038. package/src/duckdb/src/planner/filter/ub_duckdb_planner_filter.cpp +0 -4
  1039. package/src/duckdb/src/planner/operator/ub_duckdb_planner_operator.cpp +0 -43
  1040. package/src/duckdb/src/planner/parsed_data/ub_duckdb_planner_parsed_data.cpp +0 -2
  1041. package/src/duckdb/src/planner/subquery/ub_duckdb_planner_subquery.cpp +0 -4
  1042. package/src/duckdb/src/planner/ub_duckdb_planner.cpp +0 -15
  1043. package/src/duckdb/src/storage/buffer/ub_duckdb_storage_buffer.cpp +0 -6
  1044. package/src/duckdb/src/storage/checkpoint/ub_duckdb_storage_checkpoint.cpp +0 -5
  1045. package/src/duckdb/src/storage/compression/chimp/ub_duckdb_storage_compression_chimp.cpp +0 -6
  1046. package/src/duckdb/src/storage/compression/ub_duckdb_storage_compression.cpp +0 -12
  1047. package/src/duckdb/src/storage/metadata/ub_duckdb_storage_metadata.cpp +0 -4
  1048. package/src/duckdb/src/storage/serialization/ub_duckdb_storage_serialization.cpp +0 -16
  1049. package/src/duckdb/src/storage/statistics/ub_duckdb_storage_statistics.cpp +0 -10
  1050. package/src/duckdb/src/storage/table/ub_duckdb_storage_table.cpp +0 -17
  1051. package/src/duckdb/src/storage/ub_duckdb_storage.cpp +0 -20
  1052. package/src/duckdb/src/transaction/ub_duckdb_transaction.cpp +0 -11
@@ -85,7 +85,7 @@ struct PartialBlockAllocation {
85
85
  unique_ptr<PartialBlock> partial_block;
86
86
  };
87
87
 
88
- enum class CheckpointType { FULL_CHECKPOINT, APPEND_TO_TABLE };
88
+ enum class PartialBlockType { FULL_CHECKPOINT, APPEND_TO_TABLE };
89
89
 
90
90
  //! Enables sharing blocks across some scope. Scope is whatever we want to share
91
91
  //! blocks across. It may be an entire checkpoint or just a single row group.
@@ -101,7 +101,7 @@ public:
101
101
  static constexpr const idx_t MAX_BLOCK_MAP_SIZE = 1u << 31;
102
102
 
103
103
  public:
104
- PartialBlockManager(BlockManager &block_manager, CheckpointType checkpoint_type,
104
+ PartialBlockManager(BlockManager &block_manager, PartialBlockType partial_block_type,
105
105
  uint32_t max_partial_block_size = DEFAULT_MAX_PARTIAL_BLOCK_SIZE,
106
106
  uint32_t max_use_count = DEFAULT_MAX_USE_COUNT);
107
107
  virtual ~PartialBlockManager();
@@ -130,7 +130,7 @@ public:
130
130
 
131
131
  protected:
132
132
  BlockManager &block_manager;
133
- CheckpointType checkpoint_type;
133
+ PartialBlockType partial_block_type;
134
134
  mutex partial_block_lock;
135
135
  //! A map of (available space -> PartialBlock) for partially filled blocks
136
136
  //! This is a multimap because there might be outstanding partial blocks with
@@ -50,6 +50,8 @@ public:
50
50
 
51
51
  idx_t GetUsedMemory() const final;
52
52
  idx_t GetMaxMemory() const final;
53
+ idx_t GetUsedSwap() final;
54
+ optional_idx GetMaxSwap() const final;
53
55
 
54
56
  //! Allocate an in-memory buffer with a single pin.
55
57
  //! The allocated memory is released when the buffer handle is destroyed.
@@ -64,7 +66,8 @@ public:
64
66
 
65
67
  //! Set a new memory limit to the buffer manager, throws an exception if the new limit is too low and not enough
66
68
  //! blocks can be evicted
67
- void SetLimit(idx_t limit = (idx_t)-1) final;
69
+ void SetMemoryLimit(idx_t limit = (idx_t)-1) final;
70
+ void SetSwapLimit(optional_idx limit = optional_idx()) final;
68
71
 
69
72
  //! Returns informaton about memory usage
70
73
  vector<MemoryInformation> GetMemoryUsageInfo() const override;
@@ -73,14 +76,14 @@ public:
73
76
  vector<TemporaryFileInformation> GetTemporaryFiles() final;
74
77
 
75
78
  const string &GetTemporaryDirectory() const final {
76
- return temp_directory;
79
+ return temporary_directory.path;
77
80
  }
78
81
 
79
82
  void SetTemporaryDirectory(const string &new_dir) final;
80
83
 
81
84
  DUCKDB_API Allocator &GetBufferAllocator() final;
82
85
 
83
- DatabaseInstance &GetDatabase() {
86
+ DatabaseInstance &GetDatabase() override {
84
87
  return db;
85
88
  }
86
89
 
@@ -136,17 +139,27 @@ protected:
136
139
  //! overwrites the data within with garbage. Any readers that do not hold the pin will notice
137
140
  void VerifyZeroReaders(shared_ptr<BlockHandle> &handle);
138
141
 
142
+ protected:
143
+ // These are stored here because temp_directory creation is lazy
144
+ // so we need to store information related to the temporary directory before it's created
145
+ struct TemporaryFileData {
146
+ //! The directory name where temporary files are stored
147
+ string path;
148
+ //! Lock for creating the temp handle (marked mutable so 'GetMaxSwap' can be const)
149
+ mutable mutex lock;
150
+ //! Handle for the temporary directory
151
+ unique_ptr<TemporaryDirectoryHandle> handle;
152
+ //! The maximum swap space that can be used
153
+ optional_idx maximum_swap_space = optional_idx();
154
+ };
155
+
139
156
  protected:
140
157
  //! The database instance
141
158
  DatabaseInstance &db;
142
159
  //! The buffer pool
143
160
  BufferPool &buffer_pool;
144
- //! The directory name where temporary files are stored
145
- string temp_directory;
146
- //! Lock for creating the temp handle
147
- mutex temp_handle_lock;
148
- //! Handle for the temporary directory
149
- unique_ptr<TemporaryDirectoryHandle> temp_directory_handle;
161
+ //! The variables related to temporary file management
162
+ TemporaryFileData temporary_directory;
150
163
  //! The temporary id used for managed buffers
151
164
  atomic<block_id_t> temporary_id;
152
165
  //! Allocator associated with the buffer manager, that passes all allocations through this buffer manager
@@ -29,7 +29,7 @@ using block_id_t = int64_t;
29
29
 
30
30
  struct Storage {
31
31
  //! The size of a hard disk sector, only really needed for Direct IO
32
- constexpr static idx_t SECTOR_SIZE = 4096;
32
+ constexpr static idx_t SECTOR_SIZE = 4096U;
33
33
  //! Block header size for blocks written to the storage
34
34
  constexpr static idx_t BLOCK_HEADER_SIZE = sizeof(uint64_t);
35
35
  //! Size of a memory slot managed by the StorageManager. This is the quantum of allocation for Blocks on DuckDB. We
@@ -39,7 +39,7 @@ struct Storage {
39
39
  constexpr static idx_t BLOCK_SIZE = BLOCK_ALLOC_SIZE - BLOCK_HEADER_SIZE;
40
40
  //! The size of the headers. This should be small and written more or less atomically by the hard disk. We default
41
41
  //! to the page size, which is 4KB. (1 << 12)
42
- constexpr static idx_t FILE_HEADER_SIZE = 4096;
42
+ constexpr static idx_t FILE_HEADER_SIZE = 4096U;
43
43
  //! The number of rows per row group (must be a multiple of the vector size)
44
44
  constexpr static const idx_t ROW_GROUP_SIZE = STANDARD_ROW_GROUPS_SIZE;
45
45
  //! The number of vectors per row group
@@ -48,7 +48,10 @@ struct Storage {
48
48
 
49
49
  //! The version number of the database storage format
50
50
  extern const uint64_t VERSION_NUMBER;
51
- const char *GetDuckDBVersion(idx_t version_number);
51
+ string GetDuckDBVersion(idx_t version_number);
52
+ optional_idx GetStorageVersion(const char *version_string);
53
+ optional_idx GetSerializationVersion(const char *version_string);
54
+ vector<string> GetSerializationCandidates();
52
55
 
53
56
  //! The MainHeader is the first header in the storage file. The MainHeader is typically written only once for a database
54
57
  //! file.
@@ -11,42 +11,46 @@
11
11
  #include "duckdb/common/constants.hpp"
12
12
  #include "duckdb/common/atomic.hpp"
13
13
  #include "duckdb/common/mutex.hpp"
14
+ #include "duckdb/common/shared_ptr.hpp"
14
15
 
15
16
  namespace duckdb {
16
- class StorageLock;
17
+ struct StorageLockInternals;
17
18
 
18
19
  enum class StorageLockType { SHARED = 0, EXCLUSIVE = 1 };
19
20
 
20
21
  class StorageLockKey {
21
22
  public:
22
- StorageLockKey(StorageLock &lock, StorageLockType type);
23
+ StorageLockKey(shared_ptr<StorageLockInternals> internals, StorageLockType type);
23
24
  ~StorageLockKey();
24
25
 
26
+ StorageLockType GetType() const {
27
+ return type;
28
+ }
29
+
25
30
  private:
26
- StorageLock &lock;
31
+ shared_ptr<StorageLockInternals> internals;
27
32
  StorageLockType type;
28
33
  };
29
34
 
30
35
  class StorageLock {
31
- friend class StorageLockKey;
32
-
33
36
  public:
34
37
  StorageLock();
38
+ ~StorageLock();
35
39
 
36
40
  //! Get an exclusive lock
37
41
  unique_ptr<StorageLockKey> GetExclusiveLock();
38
42
  //! Get a shared lock
39
43
  unique_ptr<StorageLockKey> GetSharedLock();
44
+ //! Try to get an exclusive lock - if we cannot get it immediately we return `nullptr`
45
+ unique_ptr<StorageLockKey> TryGetExclusiveLock();
46
+ //! This is a special method that only exists for checkpointing
47
+ //! This method takes a shared lock, and returns an exclusive lock if the parameter is the only active shared lock
48
+ //! If this method succeeds, we have **both** a shared and exclusive lock active (which normally is not allowed)
49
+ //! But this behavior is required for checkpointing
50
+ unique_ptr<StorageLockKey> TryUpgradeCheckpointLock(StorageLockKey &lock);
40
51
 
41
52
  private:
42
- mutex exclusive_lock;
43
- atomic<idx_t> read_count;
44
-
45
- private:
46
- //! Release an exclusive lock
47
- void ReleaseExclusiveLock();
48
- //! Release a shared lock
49
- void ReleaseSharedLock();
53
+ shared_ptr<StorageLockInternals> internals;
50
54
  };
51
55
 
52
56
  } // namespace duckdb
@@ -14,6 +14,7 @@
14
14
  #include "duckdb/storage/table_io_manager.hpp"
15
15
  #include "duckdb/storage/write_ahead_log.hpp"
16
16
  #include "duckdb/storage/database_size.hpp"
17
+ #include "duckdb/common/enums/checkpoint_type.hpp"
17
18
 
18
19
  namespace duckdb {
19
20
  class BlockManager;
@@ -34,6 +35,17 @@ public:
34
35
  virtual void FlushCommit() = 0;
35
36
  };
36
37
 
38
+ struct CheckpointOptions {
39
+ CheckpointOptions()
40
+ : wal_action(CheckpointWALAction::DONT_DELETE_WAL), action(CheckpointAction::CHECKPOINT_IF_REQUIRED),
41
+ type(CheckpointType::FULL_CHECKPOINT) {
42
+ }
43
+
44
+ CheckpointWALAction wal_action;
45
+ CheckpointAction action;
46
+ CheckpointType type;
47
+ };
48
+
37
49
  //! StorageManager is responsible for managing the physical storage of the
38
50
  //! database on disk
39
51
  class StorageManager {
@@ -46,20 +58,27 @@ public:
46
58
  static StorageManager &Get(Catalog &catalog);
47
59
 
48
60
  //! Initialize a database or load an existing database from the given path
49
- void Initialize(optional_ptr<ClientContext> context);
61
+ void Initialize();
50
62
 
51
63
  DatabaseInstance &GetDatabase();
52
64
  AttachedDatabase &GetAttached() {
53
65
  return db;
54
66
  }
55
67
 
56
- //! Get the WAL of the StorageManager, returns nullptr if in-memory
57
- optional_ptr<WriteAheadLog> GetWriteAheadLog();
68
+ //! Gets the size of the WAL, or zero, if there is no WAL.
69
+ int64_t GetWALSize();
70
+ //! Gets the WAL of the StorageManager, or nullptr, if there is no WAL.
71
+ optional_ptr<WriteAheadLog> GetWAL();
72
+ //! Deletes the WAL file, and resets the unique pointer.
73
+ void ResetWAL();
58
74
 
59
75
  //! Returns the database file path
60
- string GetDBPath() {
76
+ string GetDBPath() const {
61
77
  return path;
62
78
  }
79
+ bool IsLoaded() const {
80
+ return load_complete;
81
+ }
63
82
  //! The path to the WAL, derived from the database file path
64
83
  string GetWALPath();
65
84
  bool InMemory();
@@ -67,13 +86,13 @@ public:
67
86
  virtual bool AutomaticCheckpoint(idx_t estimated_wal_bytes) = 0;
68
87
  virtual unique_ptr<StorageCommitState> GenStorageCommitState(Transaction &transaction, bool checkpoint) = 0;
69
88
  virtual bool IsCheckpointClean(MetaBlockPointer checkpoint_id) = 0;
70
- virtual void CreateCheckpoint(bool delete_wal = false, bool force_checkpoint = false) = 0;
89
+ virtual void CreateCheckpoint(CheckpointOptions options = CheckpointOptions()) = 0;
71
90
  virtual DatabaseSize GetDatabaseSize() = 0;
72
91
  virtual vector<MetadataBlockInfo> GetMetadataInfo() = 0;
73
92
  virtual shared_ptr<TableIOManager> GetTableIOManager(BoundCreateTableInfo *info) = 0;
74
93
 
75
94
  protected:
76
- virtual void LoadDatabase(optional_ptr<ClientContext> context = nullptr) = 0;
95
+ virtual void LoadDatabase() = 0;
77
96
 
78
97
  protected:
79
98
  //! The database this storage manager belongs to
@@ -115,12 +134,12 @@ public:
115
134
  bool AutomaticCheckpoint(idx_t estimated_wal_bytes) override;
116
135
  unique_ptr<StorageCommitState> GenStorageCommitState(Transaction &transaction, bool checkpoint) override;
117
136
  bool IsCheckpointClean(MetaBlockPointer checkpoint_id) override;
118
- void CreateCheckpoint(bool delete_wal, bool force_checkpoint) override;
137
+ void CreateCheckpoint(CheckpointOptions options) override;
119
138
  DatabaseSize GetDatabaseSize() override;
120
139
  vector<MetadataBlockInfo> GetMetadataInfo() override;
121
140
  shared_ptr<TableIOManager> GetTableIOManager(BoundCreateTableInfo *info) override;
122
141
 
123
142
  protected:
124
- void LoadDatabase(optional_ptr<ClientContext> context = nullptr) override;
143
+ void LoadDatabase() override;
125
144
  };
126
145
  } // namespace duckdb
@@ -149,8 +149,9 @@ public:
149
149
 
150
150
  // place the dictionary offset into the set of vectors
151
151
  // note: for overflow strings we write negative value
152
+
152
153
  D_ASSERT(*dictionary_size <= int32_t(Storage::BLOCK_SIZE));
153
- result_data[target_idx] = -(*dictionary_size);
154
+ result_data[target_idx] = -NumericCast<int32_t>((*dictionary_size));
154
155
  } else {
155
156
  // string fits in block, append to dictionary and increment dictionary position
156
157
  D_ASSERT(string_length < NumericLimits<uint16_t>::Maximum());
@@ -162,7 +163,7 @@ public:
162
163
 
163
164
  // place the dictionary offset into the set of vectors
164
165
  D_ASSERT(*dictionary_size <= int32_t(Storage::BLOCK_SIZE));
165
- result_data[target_idx] = *dictionary_size;
166
+ result_data[target_idx] = NumericCast<int32_t>(*dictionary_size);
166
167
  }
167
168
  D_ASSERT(RemainingSpace(segment, handle) <= Storage::BLOCK_SIZE);
168
169
  #ifdef DEBUG
@@ -14,6 +14,7 @@
14
14
  #include "duckdb/common/vector.hpp"
15
15
  #include "duckdb/function/compression_function.hpp"
16
16
  #include "duckdb/transaction/transaction_data.hpp"
17
+ #include "duckdb/planner/bound_constraint.hpp"
17
18
 
18
19
  namespace duckdb {
19
20
  class ColumnSegment;
@@ -21,6 +22,7 @@ class DataTable;
21
22
  class LocalTableStorage;
22
23
  class RowGroup;
23
24
  class UpdateSegment;
25
+ class TableCatalogEntry;
24
26
 
25
27
  struct TableAppendState;
26
28
 
@@ -69,9 +71,19 @@ struct TableAppendState {
69
71
  TransactionData transaction;
70
72
  };
71
73
 
74
+ struct ConstraintState {
75
+ explicit ConstraintState(TableCatalogEntry &table_p, const vector<unique_ptr<BoundConstraint>> &bound_constraints)
76
+ : table(table_p), bound_constraints(bound_constraints) {
77
+ }
78
+
79
+ TableCatalogEntry &table;
80
+ const vector<unique_ptr<BoundConstraint>> &bound_constraints;
81
+ };
82
+
72
83
  struct LocalAppendState {
73
84
  TableAppendState append_state;
74
85
  LocalTableStorage *storage;
86
+ unique_ptr<ConstraintState> constraint_state;
75
87
  };
76
88
 
77
89
  } // namespace duckdb
@@ -31,8 +31,10 @@ public:
31
31
  void InitializeScan(ColumnScanState &state) override;
32
32
  void InitializeScanWithOffset(ColumnScanState &state, idx_t row_idx) override;
33
33
 
34
- idx_t Scan(TransactionData transaction, idx_t vector_index, ColumnScanState &state, Vector &result) override;
35
- idx_t ScanCommitted(idx_t vector_index, ColumnScanState &state, Vector &result, bool allow_updates) override;
34
+ idx_t Scan(TransactionData transaction, idx_t vector_index, ColumnScanState &state, Vector &result,
35
+ idx_t scan_count) override;
36
+ idx_t ScanCommitted(idx_t vector_index, ColumnScanState &state, Vector &result, bool allow_updates,
37
+ idx_t scan_count) override;
36
38
  idx_t ScanCount(ColumnScanState &state, Vector &result, idx_t count) override;
37
39
 
38
40
  void Skip(ColumnScanState &state, idx_t count = STANDARD_VECTOR_SIZE) override;
@@ -53,8 +55,7 @@ public:
53
55
 
54
56
  unique_ptr<ColumnCheckpointState> CreateCheckpointState(RowGroup &row_group,
55
57
  PartialBlockManager &partial_block_manager) override;
56
- unique_ptr<ColumnCheckpointState> Checkpoint(RowGroup &row_group, PartialBlockManager &partial_block_manager,
57
- ColumnCheckpointInfo &checkpoint_info) override;
58
+ unique_ptr<ColumnCheckpointState> Checkpoint(RowGroup &row_group, ColumnCheckpointInfo &info) override;
58
59
 
59
60
  void DeserializeColumn(Deserializer &source, BaseStatistics &target_stats) override;
60
61
 
@@ -16,6 +16,7 @@
16
16
  #include "duckdb/storage/table/segment_tree.hpp"
17
17
  #include "duckdb/storage/table/column_segment_tree.hpp"
18
18
  #include "duckdb/common/mutex.hpp"
19
+ #include "duckdb/common/enums/scan_vector_type.hpp"
19
20
 
20
21
  namespace duckdb {
21
22
  class ColumnData;
@@ -29,10 +30,17 @@ struct TransactionData;
29
30
  struct TableScanOptions;
30
31
 
31
32
  struct DataTableInfo;
33
+ struct RowGroupWriteInfo;
32
34
 
33
35
  struct ColumnCheckpointInfo {
34
- explicit ColumnCheckpointInfo(CompressionType compression_type_p) : compression_type(compression_type_p) {};
35
- CompressionType compression_type;
36
+ ColumnCheckpointInfo(RowGroupWriteInfo &info, idx_t column_idx) : info(info), column_idx(column_idx) {
37
+ }
38
+
39
+ RowGroupWriteInfo &info;
40
+ idx_t column_idx;
41
+
42
+ public:
43
+ CompressionType GetCompressionType();
36
44
  };
37
45
 
38
46
  class ColumnData {
@@ -46,7 +54,7 @@ public:
46
54
  //! The start row
47
55
  idx_t start;
48
56
  //! The count of the column data
49
- idx_t count;
57
+ atomic<idx_t> count;
50
58
  //! The block manager
51
59
  BlockManager &block_manager;
52
60
  //! Table info for the column
@@ -76,15 +84,22 @@ public:
76
84
  //! The root type of the column
77
85
  const LogicalType &RootType() const;
78
86
  //! Whether or not the column has any updates
79
- virtual bool HasUpdates() const;
87
+ bool HasUpdates() const;
88
+ //! Whether or not we can scan an entire vector
89
+ virtual ScanVectorType GetVectorScanType(ColumnScanState &state, idx_t scan_count);
80
90
 
81
91
  //! Initialize a scan of the column
82
92
  virtual void InitializeScan(ColumnScanState &state);
83
93
  //! Initialize a scan starting at the specified offset
84
94
  virtual void InitializeScanWithOffset(ColumnScanState &state, idx_t row_idx);
85
95
  //! Scan the next vector from the column
86
- virtual idx_t Scan(TransactionData transaction, idx_t vector_index, ColumnScanState &state, Vector &result);
87
- virtual idx_t ScanCommitted(idx_t vector_index, ColumnScanState &state, Vector &result, bool allow_updates);
96
+ idx_t Scan(TransactionData transaction, idx_t vector_index, ColumnScanState &state, Vector &result);
97
+ idx_t ScanCommitted(idx_t vector_index, ColumnScanState &state, Vector &result, bool allow_updates);
98
+ virtual idx_t Scan(TransactionData transaction, idx_t vector_index, ColumnScanState &state, Vector &result,
99
+ idx_t scan_count);
100
+ virtual idx_t ScanCommitted(idx_t vector_index, ColumnScanState &state, Vector &result, bool allow_updates,
101
+ idx_t scan_count);
102
+
88
103
  virtual void ScanCommittedRange(idx_t row_group_start, idx_t offset_in_row_group, idx_t count, Vector &result);
89
104
  virtual idx_t ScanCount(ColumnScanState &state, Vector &result, idx_t count);
90
105
  //! Select
@@ -124,8 +139,7 @@ public:
124
139
 
125
140
  virtual unique_ptr<ColumnCheckpointState> CreateCheckpointState(RowGroup &row_group,
126
141
  PartialBlockManager &partial_block_manager);
127
- virtual unique_ptr<ColumnCheckpointState>
128
- Checkpoint(RowGroup &row_group, PartialBlockManager &partial_block_manager, ColumnCheckpointInfo &checkpoint_info);
142
+ virtual unique_ptr<ColumnCheckpointState> Checkpoint(RowGroup &row_group, ColumnCheckpointInfo &info);
129
143
 
130
144
  virtual void CheckpointScan(ColumnSegment &segment, ColumnScanState &state, idx_t row_group_start, idx_t count,
131
145
  Vector &scan_vector);
@@ -155,11 +169,12 @@ protected:
155
169
  void AppendTransientSegment(SegmentLock &l, idx_t start_row);
156
170
 
157
171
  //! Scans a base vector from the column
158
- idx_t ScanVector(ColumnScanState &state, Vector &result, idx_t remaining, bool has_updates);
172
+ idx_t ScanVector(ColumnScanState &state, Vector &result, idx_t remaining, ScanVectorType scan_type);
159
173
  //! Scans a vector from the column merged with any potential updates
160
174
  //! If ALLOW_UPDATES is set to false, the function will instead throw an exception if any updates are found
161
175
  template <bool SCAN_COMMITTED, bool ALLOW_UPDATES>
162
- idx_t ScanVector(TransactionData transaction, idx_t vector_index, ColumnScanState &state, Vector &result);
176
+ idx_t ScanVector(TransactionData transaction, idx_t vector_index, ColumnScanState &state, Vector &result,
177
+ idx_t target_scan);
163
178
 
164
179
  void ClearUpdates();
165
180
  void FetchUpdates(TransactionData transaction, idx_t vector_index, Vector &result, idx_t scan_count,
@@ -168,6 +183,8 @@ protected:
168
183
  void UpdateInternal(TransactionData transaction, idx_t column_index, Vector &update_vector, row_t *row_ids,
169
184
  idx_t update_count, Vector &base_vector);
170
185
 
186
+ idx_t GetVectorCount(idx_t vector_index) const;
187
+
171
188
  protected:
172
189
  //! The segments holding the data of this column segment
173
190
  ColumnSegmentTree data;
@@ -175,6 +192,8 @@ protected:
175
192
  mutable mutex update_lock;
176
193
  //! The updates for this column segment
177
194
  unique_ptr<UpdateSegment> updates;
195
+ //! The lock for the stats
196
+ mutable mutex stats_lock;
178
197
  //! The stats of the root segment
179
198
  unique_ptr<SegmentStatistics> stats;
180
199
  //! Total transient allocation size
@@ -17,6 +17,7 @@
17
17
  #include "duckdb/function/compression_function.hpp"
18
18
  #include "duckdb/storage/table/segment_base.hpp"
19
19
  #include "duckdb/storage/buffer/block_handle.hpp"
20
+ #include "duckdb/common/enums/scan_vector_type.hpp"
20
21
 
21
22
  namespace duckdb {
22
23
  class ColumnSegment;
@@ -64,7 +65,7 @@ public:
64
65
  public:
65
66
  void InitializeScan(ColumnScanState &state);
66
67
  //! Scan one vector from this segment
67
- void Scan(ColumnScanState &state, idx_t scan_count, Vector &result, idx_t result_offset, bool entire_vector);
68
+ void Scan(ColumnScanState &state, idx_t scan_count, Vector &result, idx_t result_offset, ScanVectorType scan_type);
68
69
  //! Fetch a value of the specific row id and append it to the result
69
70
  void FetchRow(ColumnFetchState &state, row_t row_id, Vector &result, idx_t result_idx);
70
71
 
@@ -11,25 +11,51 @@
11
11
  #include "duckdb/common/atomic.hpp"
12
12
  #include "duckdb/common/common.hpp"
13
13
  #include "duckdb/storage/table/table_index_list.hpp"
14
+ #include "duckdb/storage/storage_lock.hpp"
14
15
 
15
16
  namespace duckdb {
16
17
  class DatabaseInstance;
17
18
  class TableIOManager;
18
19
 
19
20
  struct DataTableInfo {
21
+ friend class DataTable;
22
+
23
+ public:
20
24
  DataTableInfo(AttachedDatabase &db, shared_ptr<TableIOManager> table_io_manager_p, string schema, string table);
21
25
 
22
26
  //! Initialize any unknown indexes whose types might now be present after an extension load, optionally throwing an
23
27
  //! exception if an index can't be initialized
24
- void InitializeIndexes(ClientContext &context, bool throw_on_failure = false);
28
+ void InitializeIndexes(ClientContext &context, const char *index_type = nullptr);
29
+
30
+ //! Whether or not the table is temporary
31
+ bool IsTemporary() const;
32
+
33
+ AttachedDatabase &GetDB() {
34
+ return db;
35
+ }
36
+
37
+ TableIOManager &GetIOManager() {
38
+ return *table_io_manager;
39
+ }
25
40
 
41
+ TableIndexList &GetIndexes() {
42
+ return indexes;
43
+ }
44
+ const vector<IndexStorageInfo> &GetIndexStorageInfo() const {
45
+ return index_storage_infos;
46
+ }
47
+
48
+ string GetSchemaName();
49
+ string GetTableName();
50
+ void SetTableName(string name);
51
+
52
+ private:
26
53
  //! The database instance of the table
27
54
  AttachedDatabase &db;
28
55
  //! The table IO manager
29
56
  shared_ptr<TableIOManager> table_io_manager;
30
- //! The amount of elements in the table. Note that this number signifies the amount of COMMITTED entries in the
31
- //! table. It can be inaccurate inside of transactions. More work is needed to properly support that.
32
- atomic<idx_t> cardinality;
57
+ //! Lock for modifying the name
58
+ mutex name_lock;
33
59
  //! The schema of the table
34
60
  string schema;
35
61
  //! The name of the table
@@ -38,8 +64,8 @@ struct DataTableInfo {
38
64
  TableIndexList indexes;
39
65
  //! Index storage information of the indexes created by this table
40
66
  vector<IndexStorageInfo> index_storage_infos;
41
-
42
- bool IsTemporary() const;
67
+ //! Lock held while checkpointing
68
+ StorageLock checkpoint_lock;
43
69
  };
44
70
 
45
71
  } // namespace duckdb
@@ -0,0 +1,23 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/storage/table/delete_state.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #pragma once
10
+
11
+ #include "duckdb/storage/table/append_state.hpp"
12
+
13
+ namespace duckdb {
14
+ class TableCatalogEntry;
15
+
16
+ struct TableDeleteState {
17
+ unique_ptr<ConstraintState> constraint_state;
18
+ bool has_delete_constraints = false;
19
+ DataChunk verify_chunk;
20
+ vector<column_t> col_ids;
21
+ };
22
+
23
+ } // namespace duckdb
@@ -31,8 +31,10 @@ public:
31
31
  void InitializeScan(ColumnScanState &state) override;
32
32
  void InitializeScanWithOffset(ColumnScanState &state, idx_t row_idx) override;
33
33
 
34
- idx_t Scan(TransactionData transaction, idx_t vector_index, ColumnScanState &state, Vector &result) override;
35
- idx_t ScanCommitted(idx_t vector_index, ColumnScanState &state, Vector &result, bool allow_updates) override;
34
+ idx_t Scan(TransactionData transaction, idx_t vector_index, ColumnScanState &state, Vector &result,
35
+ idx_t scan_count) override;
36
+ idx_t ScanCommitted(idx_t vector_index, ColumnScanState &state, Vector &result, bool allow_updates,
37
+ idx_t scan_count) override;
36
38
  idx_t ScanCount(ColumnScanState &state, Vector &result, idx_t count) override;
37
39
 
38
40
  void Skip(ColumnScanState &state, idx_t count = STANDARD_VECTOR_SIZE) override;
@@ -53,8 +55,7 @@ public:
53
55
 
54
56
  unique_ptr<ColumnCheckpointState> CreateCheckpointState(RowGroup &row_group,
55
57
  PartialBlockManager &partial_block_manager) override;
56
- unique_ptr<ColumnCheckpointState> Checkpoint(RowGroup &row_group, PartialBlockManager &partial_block_manager,
57
- ColumnCheckpointInfo &checkpoint_info) override;
58
+ unique_ptr<ColumnCheckpointState> Checkpoint(RowGroup &row_group, ColumnCheckpointInfo &info) override;
58
59
 
59
60
  void DeserializeColumn(Deserializer &deserializer, BaseStatistics &target_stats) override;
60
61
 
@@ -17,6 +17,7 @@
17
17
  #include "duckdb/parser/column_list.hpp"
18
18
  #include "duckdb/storage/table/segment_base.hpp"
19
19
  #include "duckdb/storage/block.hpp"
20
+ #include "duckdb/common/enums/checkpoint_type.hpp"
20
21
 
21
22
  namespace duckdb {
22
23
  class AttachedDatabase;
@@ -43,6 +44,17 @@ struct RowGroupAppendState;
43
44
  class MetadataManager;
44
45
  class RowVersionManager;
45
46
 
47
+ struct RowGroupWriteInfo {
48
+ RowGroupWriteInfo(PartialBlockManager &manager, const vector<CompressionType> &compression_types,
49
+ CheckpointType checkpoint_type = CheckpointType::FULL_CHECKPOINT)
50
+ : manager(manager), compression_types(compression_types), checkpoint_type(checkpoint_type) {
51
+ }
52
+
53
+ PartialBlockManager &manager;
54
+ const vector<CompressionType> &compression_types;
55
+ CheckpointType checkpoint_type;
56
+ };
57
+
46
58
  struct RowGroupWriteData {
47
59
  vector<unique_ptr<ColumnCheckpointState>> states;
48
60
  vector<BaseStatistics> statistics;
@@ -77,7 +89,7 @@ public:
77
89
  ExpressionExecutor &executor, CollectionScanState &scan_state,
78
90
  DataChunk &scan_chunk);
79
91
  unique_ptr<RowGroup> AddColumn(RowGroupCollection &collection, ColumnDefinition &new_column,
80
- ExpressionExecutor &executor, Expression &default_value, Vector &intermediate);
92
+ ExpressionExecutor &executor, Vector &intermediate);
81
93
  unique_ptr<RowGroup> RemoveColumn(RowGroupCollection &collection, idx_t removed_column);
82
94
 
83
95
  void CommitDrop();
@@ -117,7 +129,7 @@ public:
117
129
  //! Delete the given set of rows in the version manager
118
130
  idx_t Delete(TransactionData transaction, DataTable &table, row_t *row_ids, idx_t count);
119
131
 
120
- RowGroupWriteData WriteToDisk(PartialBlockManager &manager, const vector<CompressionType> &compression_types);
132
+ RowGroupWriteData WriteToDisk(RowGroupWriteInfo &info);
121
133
  //! Returns the number of committed rows (count - committed deletes)
122
134
  idx_t GetCommittedRowCount();
123
135
  RowGroupWriteData WriteToDisk(RowGroupWriter &writer);
@@ -171,7 +183,6 @@ private:
171
183
 
172
184
  private:
173
185
  mutex row_group_lock;
174
- mutex stats_lock;
175
186
  vector<MetaBlockPointer> column_pointers;
176
187
  unique_ptr<atomic<bool>[]> is_loaded;
177
188
  vector<MetaBlockPointer> deletes_pointers;
@@ -90,7 +90,8 @@ public:
90
90
 
91
91
  void Checkpoint(TableDataWriter &writer, TableStatistics &global_stats);
92
92
 
93
- void InitializeVacuumState(VacuumState &state, vector<SegmentNode<RowGroup>> &segments);
93
+ void InitializeVacuumState(CollectionCheckpointState &checkpoint_state, VacuumState &state,
94
+ vector<SegmentNode<RowGroup>> &segments);
94
95
  bool ScheduleVacuumTasks(CollectionCheckpointState &checkpoint_state, VacuumState &state, idx_t segment_idx);
95
96
  void ScheduleCheckpointTask(CollectionCheckpointState &checkpoint_state, idx_t segment_idx);
96
97
 
@@ -101,7 +102,7 @@ public:
101
102
  const vector<LogicalType> &GetTypes() const;
102
103
 
103
104
  shared_ptr<RowGroupCollection> AddColumn(ClientContext &context, ColumnDefinition &new_column,
104
- Expression &default_value);
105
+ ExpressionExecutor &default_executor);
105
106
  shared_ptr<RowGroupCollection> RemoveColumn(idx_t col_idx);
106
107
  shared_ptr<RowGroupCollection> AlterType(ClientContext &context, idx_t changed_idx, const LogicalType &target_type,
107
108
  vector<column_t> bound_columns, Expression &cast_expr);