duckdb 0.10.3-dev0.0 → 0.10.3-dev13.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 (1067) hide show
  1. package/.github/workflows/NodeJS.yml +95 -4
  2. package/binding.gyp +4 -5
  3. package/examples/example.js +10 -0
  4. package/lib/duckdb.js +11 -0
  5. package/package.json +1 -1
  6. package/src/database.cpp +3 -3
  7. package/src/duckdb/extension/icu/icu_extension.cpp +44 -15
  8. package/src/duckdb/extension/icu/include/icu_extension.hpp +1 -0
  9. package/src/duckdb/extension/icu/third_party/icu/i18n/basictz.cpp +5 -5
  10. package/src/duckdb/extension/json/include/json_common.hpp +6 -1
  11. package/src/duckdb/extension/json/include/json_executors.hpp +5 -5
  12. package/src/duckdb/extension/json/include/json_extension.hpp +1 -0
  13. package/src/duckdb/extension/json/include/json_functions.hpp +2 -2
  14. package/src/duckdb/extension/json/include/json_serializer.hpp +2 -2
  15. package/src/duckdb/extension/json/json_common.cpp +69 -43
  16. package/src/duckdb/extension/json/json_extension.cpp +8 -0
  17. package/src/duckdb/extension/json/json_functions/copy_json.cpp +17 -16
  18. package/src/duckdb/extension/json/json_functions/json_create.cpp +3 -1
  19. package/src/duckdb/extension/json/json_functions/json_structure.cpp +18 -13
  20. package/src/duckdb/extension/json/json_functions/json_transform.cpp +4 -0
  21. package/src/duckdb/extension/json/json_functions/json_type.cpp +2 -2
  22. package/src/duckdb/extension/json/json_functions/read_json.cpp +14 -11
  23. package/src/duckdb/extension/json/json_functions/read_json_objects.cpp +11 -8
  24. package/src/duckdb/extension/json/json_functions.cpp +4 -3
  25. package/src/duckdb/extension/json/json_scan.cpp +21 -11
  26. package/src/duckdb/extension/parquet/column_reader.cpp +9 -5
  27. package/src/duckdb/extension/parquet/column_writer.cpp +31 -18
  28. package/src/duckdb/extension/parquet/include/column_writer.hpp +1 -0
  29. package/src/duckdb/extension/parquet/include/null_column_reader.hpp +54 -0
  30. package/src/duckdb/extension/parquet/include/parquet_extension.hpp +1 -0
  31. package/src/duckdb/extension/parquet/include/parquet_reader.hpp +1 -1
  32. package/src/duckdb/extension/parquet/include/parquet_writer.hpp +7 -2
  33. package/src/duckdb/extension/parquet/include/templated_column_reader.hpp +6 -1
  34. package/src/duckdb/extension/parquet/parquet_crypto.cpp +8 -6
  35. package/src/duckdb/extension/parquet/parquet_extension.cpp +278 -127
  36. package/src/duckdb/extension/parquet/parquet_metadata.cpp +39 -37
  37. package/src/duckdb/extension/parquet/parquet_reader.cpp +7 -4
  38. package/src/duckdb/extension/parquet/parquet_statistics.cpp +5 -4
  39. package/src/duckdb/extension/parquet/parquet_writer.cpp +55 -2
  40. package/src/duckdb/extension/parquet/serialize_parquet.cpp +2 -2
  41. package/src/duckdb/src/catalog/catalog.cpp +19 -39
  42. package/src/duckdb/src/catalog/catalog_entry/duck_index_entry.cpp +6 -6
  43. package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +47 -31
  44. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +84 -52
  45. package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +4 -2
  46. package/src/duckdb/src/catalog/catalog_entry/macro_catalog_entry.cpp +4 -0
  47. package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +7 -0
  48. package/src/duckdb/src/catalog/catalog_entry/sequence_catalog_entry.cpp +4 -1
  49. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +36 -15
  50. package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +7 -1
  51. package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +5 -1
  52. package/src/duckdb/src/catalog/catalog_entry.cpp +7 -0
  53. package/src/duckdb/src/catalog/catalog_entry_retriever.cpp +64 -0
  54. package/src/duckdb/src/catalog/catalog_set.cpp +32 -17
  55. package/src/duckdb/src/catalog/default/default_functions.cpp +2 -1
  56. package/src/duckdb/src/catalog/default/default_views.cpp +1 -1
  57. package/src/duckdb/src/catalog/dependency_manager.cpp +133 -9
  58. package/src/duckdb/src/catalog/duck_catalog.cpp +5 -0
  59. package/src/duckdb/src/common/adbc/nanoarrow/allocator.cpp +2 -2
  60. package/src/duckdb/src/common/adbc/nanoarrow/metadata.cpp +3 -3
  61. package/src/duckdb/src/common/adbc/nanoarrow/schema.cpp +7 -6
  62. package/src/duckdb/src/common/allocator.cpp +6 -2
  63. package/src/duckdb/src/common/arrow/appender/bool_data.cpp +1 -0
  64. package/src/duckdb/src/common/arrow/appender/struct_data.cpp +1 -1
  65. package/src/duckdb/src/common/arrow/appender/union_data.cpp +2 -1
  66. package/src/duckdb/src/common/arrow/arrow_appender.cpp +7 -5
  67. package/src/duckdb/src/common/arrow/arrow_converter.cpp +3 -5
  68. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +1 -1
  69. package/src/duckdb/src/common/box_renderer.cpp +6 -3
  70. package/src/duckdb/src/common/compressed_file_system.cpp +11 -7
  71. package/src/duckdb/src/common/enum_util.cpp +259 -17
  72. package/src/duckdb/src/common/enums/logical_operator_type.cpp +2 -0
  73. package/src/duckdb/src/common/enums/physical_operator_type.cpp +2 -0
  74. package/src/duckdb/src/common/enums/relation_type.cpp +2 -0
  75. package/src/duckdb/src/common/enums/statement_type.cpp +2 -0
  76. package/src/duckdb/src/common/error_data.cpp +17 -2
  77. package/src/duckdb/src/common/exception_format_value.cpp +1 -0
  78. package/src/duckdb/src/common/extra_type_info.cpp +86 -8
  79. package/src/duckdb/src/common/file_system.cpp +39 -7
  80. package/src/duckdb/src/common/gzip_file_system.cpp +38 -14
  81. package/src/duckdb/src/common/hive_partitioning.cpp +28 -76
  82. package/src/duckdb/src/common/http_state.cpp +4 -4
  83. package/src/duckdb/src/common/local_file_system.cpp +34 -12
  84. package/src/duckdb/src/common/multi_file_list.cpp +285 -0
  85. package/src/duckdb/src/common/multi_file_reader.cpp +115 -80
  86. package/src/duckdb/src/common/operator/cast_operators.cpp +27 -225
  87. package/src/duckdb/src/common/operator/string_cast.cpp +13 -14
  88. package/src/duckdb/src/common/pipe_file_system.cpp +3 -2
  89. package/src/duckdb/src/common/printer.cpp +1 -1
  90. package/src/duckdb/src/common/progress_bar/progress_bar.cpp +1 -1
  91. package/src/duckdb/src/common/random_engine.cpp +2 -1
  92. package/src/duckdb/src/common/re2_regex.cpp +6 -4
  93. package/src/duckdb/src/common/row_operations/row_aggregate.cpp +10 -10
  94. package/src/duckdb/src/common/row_operations/row_external.cpp +4 -3
  95. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +5 -3
  96. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +17 -4
  97. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +1 -1
  98. package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +4 -4
  99. package/src/duckdb/src/common/serializer/buffered_file_writer.cpp +9 -8
  100. package/src/duckdb/src/common/serializer/memory_stream.cpp +6 -3
  101. package/src/duckdb/src/common/serializer/serializer.cpp +1 -1
  102. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  103. package/src/duckdb/src/common/sort/merge_sorter.cpp +2 -2
  104. package/src/duckdb/src/common/sort/partition_state.cpp +6 -6
  105. package/src/duckdb/src/common/sort/radix_sort.cpp +1 -1
  106. package/src/duckdb/src/common/sort/sort_state.cpp +3 -3
  107. package/src/duckdb/src/common/sort/sorted_block.cpp +5 -5
  108. package/src/duckdb/src/common/string_util.cpp +70 -163
  109. package/src/duckdb/src/common/types/bit.cpp +1 -1
  110. package/src/duckdb/src/common/types/blob.cpp +3 -3
  111. package/src/duckdb/src/common/types/cast_helpers.cpp +197 -0
  112. package/src/duckdb/src/common/types/column/column_data_collection.cpp +17 -9
  113. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  114. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +13 -5
  115. package/src/duckdb/src/common/types/conflict_info.cpp +1 -1
  116. package/src/duckdb/src/common/types/conflict_manager.cpp +1 -1
  117. package/src/duckdb/src/common/types/data_chunk.cpp +1 -1
  118. package/src/duckdb/src/common/types/date.cpp +2 -2
  119. package/src/duckdb/src/common/types/decimal.cpp +12 -12
  120. package/src/duckdb/src/common/types/hash.cpp +1 -1
  121. package/src/duckdb/src/common/types/hugeint.cpp +10 -9
  122. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +4 -4
  123. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +6 -5
  124. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +21 -18
  125. package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +2 -2
  126. package/src/duckdb/src/common/types/row/tuple_data_segment.cpp +7 -0
  127. package/src/duckdb/src/common/types/string_heap.cpp +4 -0
  128. package/src/duckdb/src/common/types/timestamp.cpp +23 -1
  129. package/src/duckdb/src/common/types/uhugeint.cpp +1 -1
  130. package/src/duckdb/src/common/types/uuid.cpp +7 -6
  131. package/src/duckdb/src/common/types/value.cpp +54 -30
  132. package/src/duckdb/src/common/types/vector.cpp +71 -96
  133. package/src/duckdb/src/common/types/vector_buffer.cpp +4 -0
  134. package/src/duckdb/src/common/types/vector_cache.cpp +3 -3
  135. package/src/duckdb/src/common/types.cpp +124 -18
  136. package/src/duckdb/src/common/vector_operations/generators.cpp +4 -16
  137. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +20 -0
  138. package/src/duckdb/src/common/vector_operations/null_operations.cpp +1 -1
  139. package/src/duckdb/src/common/vector_operations/numeric_inplace_operators.cpp +2 -2
  140. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +1 -1
  141. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +13 -6
  142. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +8 -5
  143. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +2 -2
  144. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +2 -2
  145. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +14 -3
  146. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +2 -2
  147. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +19 -8
  148. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +14 -8
  149. package/src/duckdb/src/core_functions/function_list.cpp +2 -1
  150. package/src/duckdb/src/core_functions/lambda_functions.cpp +2 -2
  151. package/src/duckdb/src/core_functions/scalar/array/array_functions.cpp +5 -0
  152. package/src/duckdb/src/core_functions/scalar/bit/bitstring.cpp +4 -4
  153. package/src/duckdb/src/core_functions/scalar/blob/create_sort_key.cpp +3 -2
  154. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +2 -2
  155. package/src/duckdb/src/core_functions/scalar/date/epoch.cpp +17 -0
  156. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +1 -1
  157. package/src/duckdb/src/core_functions/scalar/date/to_interval.cpp +19 -0
  158. package/src/duckdb/src/core_functions/scalar/debug/vector_type.cpp +6 -5
  159. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +2 -3
  160. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +2 -2
  161. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +30 -21
  162. package/src/duckdb/src/core_functions/scalar/list/list_reduce.cpp +1 -1
  163. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +3 -3
  164. package/src/duckdb/src/core_functions/scalar/list/list_value.cpp +1 -1
  165. package/src/duckdb/src/core_functions/scalar/list/range.cpp +2 -2
  166. package/src/duckdb/src/core_functions/scalar/map/map.cpp +44 -14
  167. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +17 -4
  168. package/src/duckdb/src/core_functions/scalar/map/map_entries.cpp +30 -13
  169. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +25 -12
  170. package/src/duckdb/src/core_functions/scalar/map/map_keys_values.cpp +16 -4
  171. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +2 -2
  172. package/src/duckdb/src/core_functions/scalar/operators/bitwise.cpp +2 -2
  173. package/src/duckdb/src/core_functions/scalar/random/setseed.cpp +1 -1
  174. package/src/duckdb/src/core_functions/scalar/string/bar.cpp +1 -1
  175. package/src/duckdb/src/core_functions/scalar/string/chr.cpp +2 -2
  176. package/src/duckdb/src/core_functions/scalar/string/hex.cpp +13 -13
  177. package/src/duckdb/src/core_functions/scalar/string/instr.cpp +1 -1
  178. package/src/duckdb/src/core_functions/scalar/string/pad.cpp +8 -8
  179. package/src/duckdb/src/core_functions/scalar/string/repeat.cpp +15 -7
  180. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +1 -1
  181. package/src/duckdb/src/core_functions/scalar/string/to_base.cpp +1 -1
  182. package/src/duckdb/src/core_functions/scalar/string/translate.cpp +4 -4
  183. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +13 -9
  184. package/src/duckdb/src/core_functions/scalar/string/unicode.cpp +1 -1
  185. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  186. package/src/duckdb/src/execution/aggregate_hashtable.cpp +17 -8
  187. package/src/duckdb/src/execution/index/art/art.cpp +6 -6
  188. package/src/duckdb/src/execution/index/bound_index.cpp +115 -0
  189. package/src/duckdb/src/execution/index/unbound_index.cpp +30 -0
  190. package/src/duckdb/src/execution/join_hashtable.cpp +2 -1
  191. package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +1 -1
  192. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  193. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +3 -3
  194. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +40 -5
  195. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +2 -2
  196. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +16 -3
  197. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer.cpp +4 -4
  198. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.cpp +2 -12
  199. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_file_handle.cpp +2 -1
  200. package/src/duckdb/src/execution/operator/csv_scanner/scanner/base_scanner.cpp +21 -5
  201. package/src/duckdb/src/execution/operator/csv_scanner/scanner/column_count_scanner.cpp +1 -1
  202. package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +312 -260
  203. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/csv_sniffer.cpp +2 -2
  204. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +45 -16
  205. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +19 -18
  206. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +200 -55
  207. package/src/duckdb/src/execution/operator/csv_scanner/table_function/csv_file_scanner.cpp +26 -23
  208. package/src/duckdb/src/execution/operator/csv_scanner/table_function/global_csv_state.cpp +12 -12
  209. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +7 -7
  210. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +31 -22
  211. package/src/duckdb/src/execution/operator/helper/physical_buffered_collector.cpp +1 -1
  212. package/src/duckdb/src/execution/operator/helper/physical_execute.cpp +1 -1
  213. package/src/duckdb/src/execution/operator/helper/physical_load.cpp +24 -2
  214. package/src/duckdb/src/execution/operator/helper/physical_reservoir_sample.cpp +1 -1
  215. package/src/duckdb/src/execution/operator/helper/physical_update_extensions.cpp +57 -0
  216. package/src/duckdb/src/execution/operator/helper/physical_verify_vector.cpp +13 -8
  217. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  218. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +9 -9
  219. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +4 -4
  220. package/src/duckdb/src/execution/operator/join/physical_left_delim_join.cpp +1 -1
  221. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +2 -2
  222. package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +2 -2
  223. package/src/duckdb/src/execution/operator/order/physical_order.cpp +3 -2
  224. package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +4 -4
  225. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +20 -13
  226. package/src/duckdb/src/execution/operator/persistent/physical_copy_database.cpp +3 -1
  227. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +73 -60
  228. package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +18 -7
  229. package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +88 -12
  230. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +47 -27
  231. package/src/duckdb/src/execution/operator/persistent/physical_update.cpp +34 -9
  232. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -0
  233. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -3
  234. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +22 -7
  235. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +1 -1
  236. package/src/duckdb/src/execution/operator/schema/physical_create_art_index.cpp +9 -9
  237. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +1 -1
  238. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +5 -4
  239. package/src/duckdb/src/execution/physical_operator.cpp +2 -2
  240. package/src/duckdb/src/execution/physical_plan/plan_column_data_get.cpp +2 -4
  241. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  242. package/src/duckdb/src/execution/physical_plan/plan_copy_to_file.cpp +2 -2
  243. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +2 -2
  244. package/src/duckdb/src/execution/physical_plan/plan_cte.cpp +1 -1
  245. package/src/duckdb/src/execution/physical_plan/plan_delete.cpp +2 -2
  246. package/src/duckdb/src/execution/physical_plan/plan_delim_get.cpp +2 -2
  247. package/src/duckdb/src/execution/physical_plan/plan_distinct.cpp +1 -0
  248. package/src/duckdb/src/execution/physical_plan/plan_expression_get.cpp +4 -5
  249. package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +6 -5
  250. package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +1 -1
  251. package/src/duckdb/src/execution/physical_plan/plan_simple.cpp +4 -0
  252. package/src/duckdb/src/execution/physical_plan/plan_top_n.cpp +2 -2
  253. package/src/duckdb/src/execution/physical_plan/plan_update.cpp +3 -3
  254. package/src/duckdb/src/execution/physical_plan/plan_window.cpp +1 -24
  255. package/src/duckdb/src/execution/physical_plan_generator.cpp +3 -0
  256. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +38 -33
  257. package/src/duckdb/src/execution/reservoir_sample.cpp +42 -31
  258. package/src/duckdb/src/execution/window_executor.cpp +39 -39
  259. package/src/duckdb/src/execution/window_segment_tree.cpp +5 -2
  260. package/src/duckdb/src/function/aggregate/distributive/first.cpp +1 -1
  261. package/src/duckdb/src/function/cast/string_cast.cpp +3 -3
  262. package/src/duckdb/src/function/cast_rules.cpp +1 -0
  263. package/src/duckdb/src/function/function.cpp +2 -2
  264. package/src/duckdb/src/function/function_binder.cpp +9 -4
  265. package/src/duckdb/src/function/pragma/pragma_functions.cpp +2 -1
  266. package/src/duckdb/src/function/pragma/pragma_queries.cpp +4 -3
  267. package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +1 -1
  268. package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -2
  269. package/src/duckdb/src/function/scalar/list/list_resize.cpp +1 -1
  270. package/src/duckdb/src/function/scalar/list/list_select.cpp +11 -4
  271. package/src/duckdb/src/function/scalar/list/list_zip.cpp +3 -1
  272. package/src/duckdb/src/function/scalar/operators/add.cpp +19 -9
  273. package/src/duckdb/src/function/scalar/sequence/nextval.cpp +77 -48
  274. package/src/duckdb/src/function/scalar/strftime_format.cpp +61 -39
  275. package/src/duckdb/src/function/scalar/string/caseconvert.cpp +12 -12
  276. package/src/duckdb/src/function/scalar/string/contains.cpp +2 -2
  277. package/src/duckdb/src/function/scalar/string/length.cpp +9 -9
  278. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +2 -2
  279. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +2 -1
  280. package/src/duckdb/src/function/scalar/string/substring.cpp +11 -9
  281. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +2 -2
  282. package/src/duckdb/src/function/scalar_function.cpp +2 -1
  283. package/src/duckdb/src/function/table/arrow.cpp +18 -4
  284. package/src/duckdb/src/function/table/arrow_conversion.cpp +88 -66
  285. package/src/duckdb/src/function/table/copy_csv.cpp +94 -28
  286. package/src/duckdb/src/function/table/glob.cpp +17 -9
  287. package/src/duckdb/src/function/table/read_csv.cpp +37 -14
  288. package/src/duckdb/src/function/table/read_file.cpp +6 -2
  289. package/src/duckdb/src/function/table/repeat.cpp +5 -1
  290. package/src/duckdb/src/function/table/repeat_row.cpp +1 -1
  291. package/src/duckdb/src/function/table/sniff_csv.cpp +9 -3
  292. package/src/duckdb/src/function/table/system/duckdb_columns.cpp +3 -3
  293. package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +31 -16
  294. package/src/duckdb/src/function/table/system/duckdb_databases.cpp +6 -1
  295. package/src/duckdb/src/function/table/system/duckdb_dependencies.cpp +2 -2
  296. package/src/duckdb/src/function/table/system/duckdb_extensions.cpp +50 -9
  297. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +8 -2
  298. package/src/duckdb/src/function/table/system/duckdb_indexes.cpp +9 -4
  299. package/src/duckdb/src/function/table/system/duckdb_memory.cpp +2 -2
  300. package/src/duckdb/src/function/table/system/duckdb_schemas.cpp +7 -2
  301. package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +8 -3
  302. package/src/duckdb/src/function/table/system/duckdb_tables.cpp +18 -10
  303. package/src/duckdb/src/function/table/system/duckdb_temporary_files.cpp +1 -1
  304. package/src/duckdb/src/function/table/system/duckdb_types.cpp +12 -5
  305. package/src/duckdb/src/function/table/system/duckdb_views.cpp +9 -4
  306. package/src/duckdb/src/function/table/system/duckdb_which_secret.cpp +75 -0
  307. package/src/duckdb/src/function/table/system/pragma_database_size.cpp +4 -4
  308. package/src/duckdb/src/function/table/system/pragma_metadata_info.cpp +3 -3
  309. package/src/duckdb/src/function/table/system/pragma_storage_info.cpp +6 -6
  310. package/src/duckdb/src/function/table/system_functions.cpp +1 -0
  311. package/src/duckdb/src/function/table/table_scan.cpp +11 -20
  312. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  313. package/src/duckdb/src/function/table/version/pragma_version.cpp +5 -5
  314. package/src/duckdb/src/function/table_function.cpp +5 -4
  315. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +1 -10
  316. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_index_entry.hpp +1 -1
  317. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_schema_entry.hpp +2 -2
  318. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +6 -8
  319. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/function_entry.hpp +1 -0
  320. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +3 -2
  321. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +2 -5
  322. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +3 -4
  323. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +2 -0
  324. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +4 -0
  325. package/src/duckdb/src/include/duckdb/catalog/catalog_entry_retriever.hpp +72 -0
  326. package/src/duckdb/src/include/duckdb/catalog/catalog_transaction.hpp +3 -0
  327. package/src/duckdb/src/include/duckdb/catalog/dependency.hpp +4 -0
  328. package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +7 -1
  329. package/src/duckdb/src/include/duckdb/catalog/dependency_manager.hpp +2 -2
  330. package/src/duckdb/src/include/duckdb/catalog/standard_entry.hpp +2 -0
  331. package/src/duckdb/src/include/duckdb/common/arrow/appender/append_data.hpp +1 -0
  332. package/src/duckdb/src/include/duckdb/common/arrow/appender/enum_data.hpp +3 -3
  333. package/src/duckdb/src/include/duckdb/common/arrow/appender/map_data.hpp +1 -1
  334. package/src/duckdb/src/include/duckdb/common/arrow/appender/scalar_data.hpp +15 -0
  335. package/src/duckdb/src/include/duckdb/common/arrow/appender/varchar_data.hpp +3 -2
  336. package/src/duckdb/src/include/duckdb/common/bit_utils.hpp +63 -98
  337. package/src/duckdb/src/include/duckdb/common/bitpacking.hpp +4 -4
  338. package/src/duckdb/src/include/duckdb/common/constants.hpp +2 -0
  339. package/src/duckdb/src/include/duckdb/common/enable_shared_from_this_ipp.hpp +42 -0
  340. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +51 -3
  341. package/src/duckdb/src/include/duckdb/common/enums/checkpoint_type.hpp +38 -0
  342. package/src/duckdb/src/include/duckdb/common/enums/copy_overwrite_mode.hpp +18 -0
  343. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +1 -0
  344. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +1 -0
  345. package/src/duckdb/src/include/duckdb/common/enums/relation_type.hpp +1 -0
  346. package/src/duckdb/src/include/duckdb/common/enums/scan_options.hpp +3 -1
  347. package/src/duckdb/src/include/duckdb/common/enums/scan_vector_type.hpp +17 -0
  348. package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +1 -0
  349. package/src/duckdb/src/include/duckdb/common/enums/tableref_type.hpp +2 -1
  350. package/src/duckdb/src/include/duckdb/common/enums/undo_flags.hpp +2 -1
  351. package/src/duckdb/src/include/duckdb/common/exception.hpp +0 -1
  352. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +15 -1
  353. package/src/duckdb/src/include/duckdb/common/file_opener.hpp +4 -0
  354. package/src/duckdb/src/include/duckdb/common/file_system.hpp +3 -0
  355. package/src/duckdb/src/include/duckdb/common/gzip_file_system.hpp +3 -0
  356. package/src/duckdb/src/include/duckdb/common/helper.hpp +22 -1
  357. package/src/duckdb/src/include/duckdb/common/hive_partitioning.hpp +3 -17
  358. package/src/duckdb/src/include/duckdb/common/http_state.hpp +1 -1
  359. package/src/duckdb/src/include/duckdb/common/insertion_order_preserving_map.hpp +129 -0
  360. package/src/duckdb/src/include/duckdb/common/multi_file_list.hpp +151 -0
  361. package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +133 -56
  362. package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +7 -3
  363. package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +3 -0
  364. package/src/duckdb/src/include/duckdb/common/operator/add.hpp +2 -0
  365. package/src/duckdb/src/include/duckdb/common/operator/decimal_cast_operators.hpp +233 -0
  366. package/src/duckdb/src/include/duckdb/common/operator/integer_cast_operator.hpp +5 -4
  367. package/src/duckdb/src/include/duckdb/common/operator/numeric_cast.hpp +2 -2
  368. package/src/duckdb/src/include/duckdb/common/optional_ptr.hpp +5 -0
  369. package/src/duckdb/src/include/duckdb/common/optionally_owned_ptr.hpp +91 -0
  370. package/src/duckdb/src/include/duckdb/common/platform.h +6 -1
  371. package/src/duckdb/src/include/duckdb/common/radix.hpp +12 -4
  372. package/src/duckdb/src/include/duckdb/common/re2_regex.hpp +3 -2
  373. package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +2 -0
  374. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +2 -1
  375. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +8 -6
  376. package/src/duckdb/src/include/duckdb/common/serializer/deserializer.hpp +36 -0
  377. package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +65 -0
  378. package/src/duckdb/src/include/duckdb/common/serializer/serializer.hpp +52 -6
  379. package/src/duckdb/src/include/duckdb/common/shared_ptr.hpp +36 -3
  380. package/src/duckdb/src/include/duckdb/common/shared_ptr_ipp.hpp +268 -0
  381. package/src/duckdb/src/include/duckdb/common/sort/duckdb_pdqsort.hpp +3 -3
  382. package/src/duckdb/src/include/duckdb/common/string.hpp +3 -2
  383. package/src/duckdb/src/include/duckdb/common/string_util.hpp +11 -7
  384. package/src/duckdb/src/include/duckdb/common/types/bit.hpp +1 -1
  385. package/src/duckdb/src/include/duckdb/common/types/cast_helpers.hpp +43 -215
  386. package/src/duckdb/src/include/duckdb/common/types/datetime.hpp +36 -11
  387. package/src/duckdb/src/include/duckdb/common/types/hash.hpp +1 -1
  388. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_segment.hpp +7 -1
  389. package/src/duckdb/src/include/duckdb/common/types/selection_vector.hpp +1 -1
  390. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +2 -0
  391. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +2 -0
  392. package/src/duckdb/src/include/duckdb/common/types/validity_mask.hpp +1 -1
  393. package/src/duckdb/src/include/duckdb/common/types/value.hpp +4 -0
  394. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +20 -15
  395. package/src/duckdb/src/include/duckdb/common/types.hpp +14 -2
  396. package/src/duckdb/src/include/duckdb/common/unique_ptr.hpp +7 -6
  397. package/src/duckdb/src/include/duckdb/common/vector.hpp +11 -0
  398. package/src/duckdb/src/include/duckdb/common/vector_size.hpp +1 -1
  399. package/src/duckdb/src/include/duckdb/common/weak_ptr_ipp.hpp +117 -0
  400. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +3 -3
  401. package/src/duckdb/src/include/duckdb/core_functions/scalar/date_functions.hpp +18 -0
  402. package/src/duckdb/src/include/duckdb/execution/adaptive_filter.hpp +1 -0
  403. package/src/duckdb/src/include/duckdb/execution/expression_executor.hpp +1 -1
  404. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +4 -4
  405. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +1 -1
  406. package/src/duckdb/src/include/duckdb/execution/index/bound_index.hpp +145 -0
  407. package/src/duckdb/src/include/duckdb/execution/index/index_type.hpp +2 -2
  408. package/src/duckdb/src/include/duckdb/execution/index/unbound_index.hpp +63 -0
  409. package/src/duckdb/src/include/duckdb/execution/merge_sort_tree.hpp +24 -18
  410. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_streaming_window.hpp +2 -0
  411. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_window.hpp +2 -0
  412. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/base_scanner.hpp +10 -3
  413. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/column_count_scanner.hpp +1 -0
  414. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_error.hpp +6 -6
  415. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_reader_options.hpp +7 -6
  416. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_sniffer.hpp +24 -4
  417. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/string_value_scanner.hpp +90 -20
  418. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_update_extensions.hpp +52 -0
  419. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +3 -1
  420. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +2 -1
  421. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_delete.hpp +5 -5
  422. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_export.hpp +1 -0
  423. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_insert.hpp +8 -5
  424. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_update.hpp +4 -1
  425. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +4 -5
  426. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_expression_scan.hpp +6 -2
  427. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +1 -1
  428. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +1 -1
  429. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +1 -1
  430. package/src/duckdb/src/include/duckdb/execution/reservoir_sample.hpp +63 -8
  431. package/src/duckdb/src/include/duckdb/function/function.hpp +0 -5
  432. package/src/duckdb/src/include/duckdb/function/function_binder.hpp +6 -3
  433. package/src/duckdb/src/include/duckdb/function/replacement_scan.hpp +25 -2
  434. package/src/duckdb/src/include/duckdb/function/scalar/regexp.hpp +1 -1
  435. package/src/duckdb/src/include/duckdb/function/scalar/sequence_functions.hpp +3 -4
  436. package/src/duckdb/src/include/duckdb/function/scalar/strftime_format.hpp +5 -0
  437. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +1 -1
  438. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +13 -0
  439. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +7 -3
  440. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +3 -0
  441. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +4 -0
  442. package/src/duckdb/src/include/duckdb/function/table_function.hpp +15 -2
  443. package/src/duckdb/src/include/duckdb/logging/http_logger.hpp +81 -0
  444. package/src/duckdb/src/include/duckdb/main/appender.hpp +1 -3
  445. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +7 -1
  446. package/src/duckdb/src/include/duckdb/main/buffered_data/buffered_data.hpp +1 -0
  447. package/src/duckdb/src/include/duckdb/main/capi/cast/generic.hpp +2 -2
  448. package/src/duckdb/src/include/duckdb/main/client_config.hpp +8 -0
  449. package/src/duckdb/src/include/duckdb/main/client_context.hpp +1 -19
  450. package/src/duckdb/src/include/duckdb/main/client_context_state.hpp +11 -1
  451. package/src/duckdb/src/include/duckdb/main/client_context_wrapper.hpp +27 -0
  452. package/src/duckdb/src/include/duckdb/main/client_data.hpp +4 -0
  453. package/src/duckdb/src/include/duckdb/main/config.hpp +40 -3
  454. package/src/duckdb/src/include/duckdb/main/connection_manager.hpp +7 -17
  455. package/src/duckdb/src/include/duckdb/main/database.hpp +25 -20
  456. package/src/duckdb/src/include/duckdb/main/extension.hpp +25 -0
  457. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +155 -10
  458. package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +79 -12
  459. package/src/duckdb/src/include/duckdb/main/extension_install_info.hpp +89 -0
  460. package/src/duckdb/src/include/duckdb/main/extension_util.hpp +3 -1
  461. package/src/duckdb/src/include/duckdb/main/external_dependencies.hpp +46 -4
  462. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  463. package/src/duckdb/src/include/duckdb/main/relation/materialized_relation.hpp +35 -0
  464. package/src/duckdb/src/include/duckdb/main/relation/query_relation.hpp +1 -1
  465. package/src/duckdb/src/include/duckdb/main/relation/table_function_relation.hpp +2 -2
  466. package/src/duckdb/src/include/duckdb/main/relation/table_relation.hpp +1 -1
  467. package/src/duckdb/src/include/duckdb/main/relation/value_relation.hpp +3 -3
  468. package/src/duckdb/src/include/duckdb/main/relation/view_relation.hpp +1 -1
  469. package/src/duckdb/src/include/duckdb/main/relation.hpp +5 -6
  470. package/src/duckdb/src/include/duckdb/main/settings.hpp +67 -0
  471. package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +4 -4
  472. package/src/duckdb/src/include/duckdb/optimizer/join_order/cost_model.hpp +1 -1
  473. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_node.hpp +8 -15
  474. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_order_optimizer.hpp +0 -51
  475. package/src/duckdb/src/include/duckdb/optimizer/join_order/plan_enumerator.hpp +10 -17
  476. package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph_manager.hpp +5 -7
  477. package/src/duckdb/src/include/duckdb/optimizer/matcher/set_matcher.hpp +2 -1
  478. package/src/duckdb/src/include/duckdb/optimizer/optimizer_extension.hpp +10 -2
  479. package/src/duckdb/src/include/duckdb/optimizer/rule/list.hpp +1 -0
  480. package/src/duckdb/src/include/duckdb/optimizer/rule/timestamp_comparison.hpp +30 -0
  481. package/src/duckdb/src/include/duckdb/parallel/event.hpp +1 -1
  482. package/src/duckdb/src/include/duckdb/parallel/interrupt.hpp +1 -0
  483. package/src/duckdb/src/include/duckdb/parallel/meta_pipeline.hpp +1 -1
  484. package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +1 -1
  485. package/src/duckdb/src/include/duckdb/parallel/task.hpp +1 -1
  486. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +1 -1
  487. package/src/duckdb/src/include/duckdb/parser/column_definition.hpp +2 -0
  488. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +1 -0
  489. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_scalar_function_info.hpp +1 -0
  490. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_function_info.hpp +1 -0
  491. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +12 -0
  492. package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +1 -0
  493. package/src/duckdb/src/include/duckdb/parser/parsed_data/comment_on_column_info.hpp +3 -1
  494. package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_info.hpp +10 -12
  495. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +6 -2
  496. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_schema_info.hpp +3 -30
  497. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_sequence_info.hpp +2 -0
  498. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_type_info.hpp +12 -1
  499. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +1 -0
  500. package/src/duckdb/src/include/duckdb/parser/parsed_data/detach_info.hpp +1 -0
  501. package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +1 -0
  502. package/src/duckdb/src/include/duckdb/parser/parsed_data/exported_table_data.hpp +5 -2
  503. package/src/duckdb/src/include/duckdb/parser/parsed_data/load_info.hpp +4 -7
  504. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +7 -1
  505. package/src/duckdb/src/include/duckdb/parser/parsed_data/pragma_info.hpp +2 -11
  506. package/src/duckdb/src/include/duckdb/parser/parsed_data/transaction_info.hpp +2 -0
  507. package/src/duckdb/src/include/duckdb/parser/parsed_data/update_extensions_info.hpp +36 -0
  508. package/src/duckdb/src/include/duckdb/parser/parsed_data/vacuum_info.hpp +1 -0
  509. package/src/duckdb/src/include/duckdb/parser/parser_extension.hpp +1 -0
  510. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  511. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +1 -4
  512. package/src/duckdb/src/include/duckdb/parser/statement/alter_statement.hpp +1 -0
  513. package/src/duckdb/src/include/duckdb/parser/statement/attach_statement.hpp +1 -0
  514. package/src/duckdb/src/include/duckdb/parser/statement/call_statement.hpp +1 -0
  515. package/src/duckdb/src/include/duckdb/parser/statement/copy_database_statement.hpp +1 -2
  516. package/src/duckdb/src/include/duckdb/parser/statement/copy_statement.hpp +1 -3
  517. package/src/duckdb/src/include/duckdb/parser/statement/detach_statement.hpp +1 -0
  518. package/src/duckdb/src/include/duckdb/parser/statement/drop_statement.hpp +1 -0
  519. package/src/duckdb/src/include/duckdb/parser/statement/execute_statement.hpp +1 -0
  520. package/src/duckdb/src/include/duckdb/parser/statement/explain_statement.hpp +1 -0
  521. package/src/duckdb/src/include/duckdb/parser/statement/export_statement.hpp +1 -0
  522. package/src/duckdb/src/include/duckdb/parser/statement/extension_statement.hpp +1 -0
  523. package/src/duckdb/src/include/duckdb/parser/statement/insert_statement.hpp +1 -0
  524. package/src/duckdb/src/include/duckdb/parser/statement/list.hpp +1 -0
  525. package/src/duckdb/src/include/duckdb/parser/statement/load_statement.hpp +1 -0
  526. package/src/duckdb/src/include/duckdb/parser/statement/logical_plan_statement.hpp +3 -0
  527. package/src/duckdb/src/include/duckdb/parser/statement/multi_statement.hpp +1 -0
  528. package/src/duckdb/src/include/duckdb/parser/statement/pragma_statement.hpp +1 -0
  529. package/src/duckdb/src/include/duckdb/parser/statement/prepare_statement.hpp +1 -0
  530. package/src/duckdb/src/include/duckdb/parser/statement/relation_statement.hpp +1 -0
  531. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -0
  532. package/src/duckdb/src/include/duckdb/parser/statement/set_statement.hpp +6 -4
  533. package/src/duckdb/src/include/duckdb/parser/statement/transaction_statement.hpp +1 -0
  534. package/src/duckdb/src/include/duckdb/parser/statement/update_extensions_statement.hpp +36 -0
  535. package/src/duckdb/src/include/duckdb/parser/statement/vacuum_statement.hpp +1 -0
  536. package/src/duckdb/src/include/duckdb/parser/tableref/column_data_ref.hpp +46 -0
  537. package/src/duckdb/src/include/duckdb/parser/tableref/list.hpp +1 -0
  538. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +0 -4
  539. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +3 -0
  540. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +2 -0
  541. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +5 -0
  542. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +4 -4
  543. package/src/duckdb/src/include/duckdb/planner/binder.hpp +42 -16
  544. package/src/duckdb/src/include/duckdb/planner/bound_tokens.hpp +1 -0
  545. package/src/duckdb/src/include/duckdb/planner/expression_binder/alter_binder.hpp +7 -6
  546. package/src/duckdb/src/include/duckdb/planner/expression_binder/having_binder.hpp +2 -1
  547. package/src/duckdb/src/include/duckdb/planner/expression_binder/index_binder.hpp +5 -1
  548. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +5 -0
  549. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +0 -1
  550. package/src/duckdb/src/include/duckdb/planner/operator/logical_column_data_get.hpp +6 -2
  551. package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +7 -7
  552. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +2 -1
  553. package/src/duckdb/src/include/duckdb/planner/operator/logical_delete.hpp +2 -0
  554. package/src/duckdb/src/include/duckdb/planner/operator/logical_export.hpp +7 -0
  555. package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +2 -0
  556. package/src/duckdb/src/include/duckdb/planner/operator/logical_top_n.hpp +3 -3
  557. package/src/duckdb/src/include/duckdb/planner/operator/logical_update.hpp +2 -0
  558. package/src/duckdb/src/include/duckdb/planner/parsed_data/bound_create_table_info.hpp +0 -4
  559. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +4 -4
  560. package/src/duckdb/src/include/duckdb/planner/tableref/bound_column_data_ref.hpp +30 -0
  561. package/src/duckdb/src/include/duckdb/planner/tableref/list.hpp +1 -0
  562. package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +6 -3
  563. package/src/duckdb/src/include/duckdb/storage/buffer/buffer_pool.hpp +16 -7
  564. package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +15 -3
  565. package/src/duckdb/src/include/duckdb/storage/checkpoint/row_group_writer.hpp +10 -7
  566. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +2 -0
  567. package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +24 -15
  568. package/src/duckdb/src/include/duckdb/storage/compression/alp/algorithm/alp.hpp +8 -7
  569. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_compress.hpp +2 -2
  570. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_constants.hpp +5 -4
  571. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_fetch.hpp +1 -1
  572. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_utils.hpp +3 -3
  573. package/src/duckdb/src/include/duckdb/storage/compression/alprd/algorithm/alprd.hpp +2 -1
  574. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_analyze.hpp +5 -3
  575. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_compress.hpp +2 -2
  576. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_fetch.hpp +1 -1
  577. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/bit_reader.hpp +1 -1
  578. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_fetch.hpp +1 -1
  579. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_fetch.hpp +1 -1
  580. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +55 -16
  581. package/src/duckdb/src/include/duckdb/storage/index.hpp +33 -97
  582. package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +3 -3
  583. package/src/duckdb/src/include/duckdb/storage/optimistic_data_writer.hpp +1 -1
  584. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +3 -3
  585. package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +22 -9
  586. package/src/duckdb/src/include/duckdb/storage/storage_extension.hpp +7 -0
  587. package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +6 -3
  588. package/src/duckdb/src/include/duckdb/storage/storage_lock.hpp +17 -13
  589. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +27 -8
  590. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +3 -2
  591. package/src/duckdb/src/include/duckdb/storage/table/append_state.hpp +12 -0
  592. package/src/duckdb/src/include/duckdb/storage/table/array_column_data.hpp +5 -4
  593. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +29 -10
  594. package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +2 -1
  595. package/src/duckdb/src/include/duckdb/storage/table/data_table_info.hpp +32 -6
  596. package/src/duckdb/src/include/duckdb/storage/table/delete_state.hpp +23 -0
  597. package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +5 -4
  598. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +14 -3
  599. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +3 -2
  600. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +4 -0
  601. package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +5 -5
  602. package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +6 -6
  603. package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +5 -4
  604. package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +25 -1
  605. package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +5 -2
  606. package/src/duckdb/src/include/duckdb/storage/table/update_state.hpp +20 -0
  607. package/src/duckdb/src/include/duckdb/storage/table/validity_column_data.hpp +1 -0
  608. package/src/duckdb/src/include/duckdb/storage/temporary_file_manager.hpp +20 -4
  609. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +10 -5
  610. package/src/duckdb/src/include/duckdb/transaction/duck_transaction.hpp +19 -4
  611. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +30 -7
  612. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +8 -5
  613. package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +1 -0
  614. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +8 -0
  615. package/src/duckdb/src/include/duckdb/transaction/undo_buffer.hpp +9 -1
  616. package/src/duckdb/src/include/duckdb.h +141 -15
  617. package/src/duckdb/src/main/appender.cpp +3 -1
  618. package/src/duckdb/src/main/attached_database.cpp +12 -9
  619. package/src/duckdb/src/main/capi/appender-c.cpp +4 -3
  620. package/src/duckdb/src/main/capi/arrow-c.cpp +4 -4
  621. package/src/duckdb/src/main/capi/helper-c.cpp +3 -3
  622. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -5
  623. package/src/duckdb/src/main/capi/result-c.cpp +19 -5
  624. package/src/duckdb/src/main/capi/stream-c.cpp +17 -8
  625. package/src/duckdb/src/main/capi/table_function-c.cpp +11 -7
  626. package/src/duckdb/src/main/client_context.cpp +32 -23
  627. package/src/duckdb/src/main/client_context_file_opener.cpp +31 -0
  628. package/src/duckdb/src/main/client_context_wrapper.cpp +22 -0
  629. package/src/duckdb/src/main/client_data.cpp +5 -3
  630. package/src/duckdb/src/main/config.cpp +73 -2
  631. package/src/duckdb/src/main/connection.cpp +11 -10
  632. package/src/duckdb/src/main/connection_manager.cpp +9 -23
  633. package/src/duckdb/src/main/database.cpp +26 -30
  634. package/src/duckdb/src/main/db_instance_cache.cpp +1 -1
  635. package/src/duckdb/src/main/extension/extension_helper.cpp +378 -21
  636. package/src/duckdb/src/main/extension/extension_install.cpp +301 -89
  637. package/src/duckdb/src/main/extension/extension_load.cpp +137 -135
  638. package/src/duckdb/src/main/extension/extension_util.cpp +8 -2
  639. package/src/duckdb/src/main/extension.cpp +56 -0
  640. package/src/duckdb/src/main/extension_install_info.cpp +116 -0
  641. package/src/duckdb/src/main/materialized_query_result.cpp +11 -0
  642. package/src/duckdb/src/main/query_profiler.cpp +1 -1
  643. package/src/duckdb/src/main/relation/create_view_relation.cpp +6 -0
  644. package/src/duckdb/src/main/relation/materialized_relation.cpp +58 -0
  645. package/src/duckdb/src/main/relation/query_relation.cpp +20 -1
  646. package/src/duckdb/src/main/relation/read_csv_relation.cpp +5 -3
  647. package/src/duckdb/src/main/relation/table_relation.cpp +4 -4
  648. package/src/duckdb/src/main/relation/value_relation.cpp +2 -2
  649. package/src/duckdb/src/main/relation/view_relation.cpp +1 -1
  650. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  651. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  652. package/src/duckdb/src/main/relation.cpp +36 -32
  653. package/src/duckdb/src/main/secret/secret.cpp +1 -1
  654. package/src/duckdb/src/main/settings/settings.cpp +169 -11
  655. package/src/duckdb/src/optimizer/common_aggregate_optimizer.cpp +1 -1
  656. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  657. package/src/duckdb/src/optimizer/filter_pushdown.cpp +3 -2
  658. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +3 -3
  659. package/src/duckdb/src/optimizer/join_order/cost_model.cpp +1 -1
  660. package/src/duckdb/src/optimizer/join_order/join_node.cpp +4 -27
  661. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +5 -8
  662. package/src/duckdb/src/optimizer/join_order/plan_enumerator.cpp +32 -107
  663. package/src/duckdb/src/optimizer/join_order/query_graph_manager.cpp +68 -61
  664. package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +4 -2
  665. package/src/duckdb/src/optimizer/join_order/relation_statistics_helper.cpp +3 -3
  666. package/src/duckdb/src/optimizer/optimizer.cpp +3 -1
  667. package/src/duckdb/src/optimizer/pushdown/pushdown_aggregate.cpp +2 -2
  668. package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +4 -4
  669. package/src/duckdb/src/optimizer/pushdown/pushdown_left_join.cpp +2 -2
  670. package/src/duckdb/src/optimizer/pushdown/pushdown_mark_join.cpp +6 -6
  671. package/src/duckdb/src/optimizer/pushdown/pushdown_projection.cpp +1 -1
  672. package/src/duckdb/src/optimizer/pushdown/pushdown_semi_anti_join.cpp +1 -1
  673. package/src/duckdb/src/optimizer/pushdown/pushdown_set_operation.cpp +1 -1
  674. package/src/duckdb/src/optimizer/pushdown/pushdown_single_join.cpp +2 -2
  675. package/src/duckdb/src/optimizer/remove_duplicate_groups.cpp +1 -1
  676. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +1 -1
  677. package/src/duckdb/src/optimizer/rule/arithmetic_simplification.cpp +1 -1
  678. package/src/duckdb/src/optimizer/rule/case_simplification.cpp +2 -2
  679. package/src/duckdb/src/optimizer/rule/conjunction_simplification.cpp +2 -1
  680. package/src/duckdb/src/optimizer/rule/constant_folding.cpp +1 -0
  681. package/src/duckdb/src/optimizer/rule/distributivity.cpp +1 -1
  682. package/src/duckdb/src/optimizer/rule/empty_needle_removal.cpp +1 -0
  683. package/src/duckdb/src/optimizer/rule/enum_comparison.cpp +1 -0
  684. package/src/duckdb/src/optimizer/rule/in_clause_simplification_rule.cpp +1 -0
  685. package/src/duckdb/src/optimizer/rule/move_constants.cpp +4 -0
  686. package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +1 -2
  687. package/src/duckdb/src/optimizer/rule/timestamp_comparison.cpp +107 -0
  688. package/src/duckdb/src/optimizer/statistics/expression/propagate_conjunction.cpp +1 -1
  689. package/src/duckdb/src/optimizer/statistics/expression/propagate_operator.cpp +4 -4
  690. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +3 -3
  691. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +1 -1
  692. package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +6 -3
  693. package/src/duckdb/src/optimizer/statistics/operator/propagate_set_operation.cpp +2 -1
  694. package/src/duckdb/src/optimizer/topn_optimizer.cpp +2 -2
  695. package/src/duckdb/src/parallel/executor.cpp +12 -9
  696. package/src/duckdb/src/parallel/meta_pipeline.cpp +2 -2
  697. package/src/duckdb/src/parallel/pipeline.cpp +2 -2
  698. package/src/duckdb/src/parallel/task_scheduler.cpp +9 -3
  699. package/src/duckdb/src/parser/column_definition.cpp +1 -0
  700. package/src/duckdb/src/parser/constraints/foreign_key_constraint.cpp +9 -7
  701. package/src/duckdb/src/parser/expression/star_expression.cpp +2 -2
  702. package/src/duckdb/src/parser/parsed_data/alter_scalar_function_info.cpp +4 -0
  703. package/src/duckdb/src/parser/parsed_data/alter_table_function_info.cpp +4 -0
  704. package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +183 -0
  705. package/src/duckdb/src/parser/parsed_data/attach_info.cpp +23 -0
  706. package/src/duckdb/src/parser/parsed_data/comment_on_column_info.cpp +15 -2
  707. package/src/duckdb/src/parser/parsed_data/copy_info.cpp +100 -0
  708. package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +16 -2
  709. package/src/duckdb/src/parser/parsed_data/create_info.cpp +2 -0
  710. package/src/duckdb/src/parser/parsed_data/create_schema_info.cpp +40 -0
  711. package/src/duckdb/src/parser/parsed_data/create_sequence_info.cpp +22 -0
  712. package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +12 -4
  713. package/src/duckdb/src/parser/parsed_data/create_type_info.cpp +37 -14
  714. package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +4 -4
  715. package/src/duckdb/src/parser/parsed_data/detach_info.cpp +12 -0
  716. package/src/duckdb/src/parser/parsed_data/drop_info.cpp +21 -0
  717. package/src/duckdb/src/parser/parsed_data/load_info.cpp +46 -0
  718. package/src/duckdb/src/parser/parsed_data/parse_info.cpp +50 -0
  719. package/src/duckdb/src/parser/parsed_data/pragma_info.cpp +33 -0
  720. package/src/duckdb/src/parser/parsed_data/transaction_info.cpp +22 -0
  721. package/src/duckdb/src/parser/parsed_data/vacuum_info.cpp +20 -0
  722. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +1 -0
  723. package/src/duckdb/src/parser/parser.cpp +5 -4
  724. package/src/duckdb/src/parser/query_node.cpp +6 -2
  725. package/src/duckdb/src/parser/statement/alter_statement.cpp +4 -0
  726. package/src/duckdb/src/parser/statement/attach_statement.cpp +4 -0
  727. package/src/duckdb/src/parser/statement/call_statement.cpp +8 -0
  728. package/src/duckdb/src/parser/statement/copy_statement.cpp +1 -91
  729. package/src/duckdb/src/parser/statement/detach_statement.cpp +4 -0
  730. package/src/duckdb/src/parser/statement/drop_statement.cpp +4 -0
  731. package/src/duckdb/src/parser/statement/execute_statement.cpp +15 -0
  732. package/src/duckdb/src/parser/statement/explain_statement.cpp +19 -0
  733. package/src/duckdb/src/parser/statement/export_statement.cpp +18 -0
  734. package/src/duckdb/src/parser/statement/extension_statement.cpp +4 -0
  735. package/src/duckdb/src/parser/statement/load_statement.cpp +4 -0
  736. package/src/duckdb/src/parser/statement/multi_statement.cpp +8 -0
  737. package/src/duckdb/src/parser/statement/pragma_statement.cpp +4 -0
  738. package/src/duckdb/src/parser/statement/prepare_statement.cpp +13 -0
  739. package/src/duckdb/src/parser/statement/relation_statement.cpp +4 -0
  740. package/src/duckdb/src/parser/statement/set_statement.cpp +33 -4
  741. package/src/duckdb/src/parser/statement/transaction_statement.cpp +4 -0
  742. package/src/duckdb/src/parser/statement/update_extensions_statement.cpp +34 -0
  743. package/src/duckdb/src/parser/statement/vacuum_statement.cpp +4 -0
  744. package/src/duckdb/src/parser/tableref/column_data_ref.cpp +81 -0
  745. package/src/duckdb/src/parser/tableref.cpp +1 -0
  746. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +2 -2
  747. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +1 -1
  748. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +6 -1
  749. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +1 -1
  750. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +1 -1
  751. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +16 -0
  752. package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +2 -0
  753. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +97 -63
  754. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +2 -0
  755. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +1 -1
  756. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -2
  757. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +19 -0
  758. package/src/duckdb/src/parser/transformer.cpp +5 -2
  759. package/src/duckdb/src/planner/bind_context.cpp +2 -2
  760. package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +35 -8
  761. package/src/duckdb/src/planner/binder/expression/bind_cast_expression.cpp +1 -1
  762. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +13 -7
  763. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +1 -1
  764. package/src/duckdb/src/planner/binder/query_node/plan_setop.cpp +35 -2
  765. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +2 -4
  766. package/src/duckdb/src/planner/binder/statement/bind_attach.cpp +2 -0
  767. package/src/duckdb/src/planner/binder/statement/bind_call.cpp +2 -0
  768. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +24 -7
  769. package/src/duckdb/src/planner/binder/statement/bind_copy_database.cpp +21 -68
  770. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +152 -28
  771. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +115 -57
  772. package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +4 -0
  773. package/src/duckdb/src/planner/binder/statement/bind_detach.cpp +2 -0
  774. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +2 -0
  775. package/src/duckdb/src/planner/binder/statement/bind_execute.cpp +4 -2
  776. package/src/duckdb/src/planner/binder/statement/bind_explain.cpp +2 -0
  777. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +15 -4
  778. package/src/duckdb/src/planner/binder/statement/bind_extension.cpp +1 -0
  779. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +5 -1
  780. package/src/duckdb/src/planner/binder/statement/bind_load.cpp +13 -0
  781. package/src/duckdb/src/planner/binder/statement/bind_logical_plan.cpp +2 -0
  782. package/src/duckdb/src/planner/binder/statement/bind_pragma.cpp +2 -0
  783. package/src/duckdb/src/planner/binder/statement/bind_prepare.cpp +1 -0
  784. package/src/duckdb/src/planner/binder/statement/bind_select.cpp +1 -0
  785. package/src/duckdb/src/planner/binder/statement/bind_set.cpp +4 -0
  786. package/src/duckdb/src/planner/binder/statement/bind_simple.cpp +6 -4
  787. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +5 -1
  788. package/src/duckdb/src/planner/binder/statement/bind_update_extensions.cpp +28 -0
  789. package/src/duckdb/src/planner/binder/statement/bind_vacuum.cpp +2 -0
  790. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +32 -29
  791. package/src/duckdb/src/planner/binder/tableref/bind_column_data_ref.cpp +16 -0
  792. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +7 -4
  793. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +32 -22
  794. package/src/duckdb/src/planner/binder/tableref/plan_column_data_ref.cpp +15 -0
  795. package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +29 -11
  796. package/src/duckdb/src/planner/binder.cpp +50 -30
  797. package/src/duckdb/src/planner/bound_parameter_map.cpp +1 -1
  798. package/src/duckdb/src/planner/bound_result_modifier.cpp +1 -1
  799. package/src/duckdb/src/planner/expression/bound_expression.cpp +3 -2
  800. package/src/duckdb/src/planner/expression_binder/alter_binder.cpp +24 -7
  801. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +27 -2
  802. package/src/duckdb/src/planner/expression_binder/having_binder.cpp +34 -19
  803. package/src/duckdb/src/planner/expression_binder/index_binder.cpp +33 -0
  804. package/src/duckdb/src/planner/expression_binder/order_binder.cpp +10 -1
  805. package/src/duckdb/src/planner/expression_binder.cpp +4 -0
  806. package/src/duckdb/src/planner/expression_iterator.cpp +3 -1
  807. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  808. package/src/duckdb/src/planner/operator/logical_column_data_get.cpp +16 -2
  809. package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +3 -3
  810. package/src/duckdb/src/planner/operator/logical_delete.cpp +2 -0
  811. package/src/duckdb/src/planner/operator/logical_get.cpp +4 -1
  812. package/src/duckdb/src/planner/operator/logical_insert.cpp +2 -0
  813. package/src/duckdb/src/planner/operator/logical_top_n.cpp +1 -1
  814. package/src/duckdb/src/planner/operator/logical_update.cpp +2 -0
  815. package/src/duckdb/src/planner/planner.cpp +35 -9
  816. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +34 -9
  817. package/src/duckdb/src/planner/table_binding.cpp +1 -1
  818. package/src/duckdb/src/storage/arena_allocator.cpp +5 -3
  819. package/src/duckdb/src/storage/buffer/block_handle.cpp +3 -3
  820. package/src/duckdb/src/storage/buffer/block_manager.cpp +1 -1
  821. package/src/duckdb/src/storage/buffer/buffer_pool.cpp +83 -22
  822. package/src/duckdb/src/storage/buffer/buffer_pool_reservation.cpp +2 -2
  823. package/src/duckdb/src/storage/buffer_manager.cpp +6 -2
  824. package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +9 -0
  825. package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +7 -2
  826. package/src/duckdb/src/storage/checkpoint_manager.cpp +68 -104
  827. package/src/duckdb/src/storage/compression/bitpacking.cpp +19 -13
  828. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +9 -7
  829. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +1 -1
  830. package/src/duckdb/src/storage/compression/fsst.cpp +11 -7
  831. package/src/duckdb/src/storage/compression/rle.cpp +1 -1
  832. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +5 -4
  833. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +1 -1
  834. package/src/duckdb/src/storage/data_table.cpp +254 -101
  835. package/src/duckdb/src/storage/index.cpp +2 -106
  836. package/src/duckdb/src/storage/local_storage.cpp +38 -50
  837. package/src/duckdb/src/storage/metadata/metadata_manager.cpp +2 -2
  838. package/src/duckdb/src/storage/metadata/metadata_writer.cpp +1 -1
  839. package/src/duckdb/src/storage/optimistic_data_writer.cpp +9 -11
  840. package/src/duckdb/src/storage/partial_block_manager.cpp +6 -6
  841. package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +8 -0
  842. package/src/duckdb/src/storage/serialization/serialize_dependency.cpp +49 -0
  843. package/src/duckdb/src/storage/serialization/serialize_extension_install_info.cpp +28 -0
  844. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +5 -2
  845. package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +78 -2
  846. package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +21 -0
  847. package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +16 -0
  848. package/src/duckdb/src/storage/serialization/serialize_types.cpp +6 -1
  849. package/src/duckdb/src/storage/single_file_block_manager.cpp +22 -19
  850. package/src/duckdb/src/storage/standard_buffer_manager.cpp +68 -40
  851. package/src/duckdb/src/storage/statistics/column_statistics.cpp +3 -3
  852. package/src/duckdb/src/storage/statistics/distinct_statistics.cpp +1 -1
  853. package/src/duckdb/src/storage/storage_info.cpp +67 -23
  854. package/src/duckdb/src/storage/storage_lock.cpp +77 -17
  855. package/src/duckdb/src/storage/storage_manager.cpp +73 -51
  856. package/src/duckdb/src/storage/table/array_column_data.cpp +13 -12
  857. package/src/duckdb/src/storage/table/column_data.cpp +80 -37
  858. package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +1 -1
  859. package/src/duckdb/src/storage/table/column_segment.cpp +6 -5
  860. package/src/duckdb/src/storage/table/list_column_data.cpp +15 -14
  861. package/src/duckdb/src/storage/table/row_group.cpp +38 -23
  862. package/src/duckdb/src/storage/table/row_group_collection.cpp +52 -38
  863. package/src/duckdb/src/storage/table/row_version_manager.cpp +2 -2
  864. package/src/duckdb/src/storage/table/standard_column_data.cpp +28 -16
  865. package/src/duckdb/src/storage/table/struct_column_data.cpp +23 -16
  866. package/src/duckdb/src/storage/table/table_statistics.cpp +27 -8
  867. package/src/duckdb/src/storage/table/update_segment.cpp +6 -6
  868. package/src/duckdb/src/storage/table/validity_column_data.cpp +5 -0
  869. package/src/duckdb/src/storage/table_index_list.cpp +69 -42
  870. package/src/duckdb/src/storage/temporary_file_manager.cpp +111 -17
  871. package/src/duckdb/src/storage/temporary_memory_manager.cpp +4 -4
  872. package/src/duckdb/src/storage/wal_replay.cpp +27 -22
  873. package/src/duckdb/src/storage/write_ahead_log.cpp +42 -22
  874. package/src/duckdb/src/transaction/cleanup_state.cpp +4 -7
  875. package/src/duckdb/src/transaction/commit_state.cpp +17 -8
  876. package/src/duckdb/src/transaction/duck_transaction.cpp +60 -15
  877. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +154 -121
  878. package/src/duckdb/src/transaction/meta_transaction.cpp +19 -1
  879. package/src/duckdb/src/transaction/rollback_state.cpp +2 -0
  880. package/src/duckdb/src/transaction/transaction.cpp +7 -7
  881. package/src/duckdb/src/transaction/undo_buffer.cpp +37 -17
  882. package/src/duckdb/third_party/concurrentqueue/concurrentqueue.h +5 -5
  883. package/src/duckdb/third_party/fsst/fsst.h +1 -1
  884. package/src/duckdb/third_party/jaro_winkler/details/common.hpp +9 -9
  885. package/src/duckdb/third_party/jaro_winkler/details/intrinsics.hpp +1 -1
  886. package/src/duckdb/third_party/jaro_winkler/details/jaro_impl.hpp +18 -18
  887. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +1 -0
  888. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +12 -0
  889. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +555 -1032
  890. package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +3 -0
  891. package/src/duckdb/third_party/libpg_query/include/utils/datetime.hpp +1 -0
  892. package/src/duckdb/third_party/libpg_query/pg_functions.cpp +13 -6
  893. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +23925 -23444
  894. package/src/duckdb/third_party/mbedtls/library/constant_time.cpp +1 -1
  895. package/src/duckdb/third_party/parquet/parquet_types.cpp +3 -0
  896. package/src/duckdb/third_party/parquet/parquet_types.h +2 -1
  897. package/src/duckdb/third_party/re2/re2/compile.cc +2 -2
  898. package/src/duckdb/third_party/re2/re2/dfa.cc +3 -8
  899. package/src/duckdb/third_party/re2/re2/onepass.cc +4 -3
  900. package/src/duckdb/third_party/re2/re2/prog.cc +10 -10
  901. package/src/duckdb/third_party/re2/re2/prog.h +8 -8
  902. package/src/duckdb/third_party/tdigest/t_digest.hpp +6 -6
  903. package/src/duckdb/third_party/utf8proc/include/utf8proc.hpp +1 -1
  904. package/src/duckdb/third_party/yyjson/include/yyjson.hpp +7930 -0
  905. package/src/duckdb/third_party/yyjson/yyjson.cpp +9490 -0
  906. package/src/duckdb/ub_src_catalog.cpp +2 -0
  907. package/src/duckdb/ub_src_common.cpp +2 -0
  908. package/src/duckdb/ub_src_execution_index.cpp +3 -1
  909. package/src/duckdb/ub_src_execution_operator_helper.cpp +2 -0
  910. package/src/duckdb/ub_src_function_table_system.cpp +2 -0
  911. package/src/duckdb/ub_src_main.cpp +4 -0
  912. package/src/duckdb/ub_src_main_relation.cpp +2 -0
  913. package/src/duckdb/ub_src_optimizer.cpp +8 -8
  914. package/src/duckdb/ub_src_optimizer_join_order.cpp +0 -2
  915. package/src/duckdb/ub_src_optimizer_rule.cpp +4 -2
  916. package/src/duckdb/ub_src_parser_parsed_data.cpp +10 -0
  917. package/src/duckdb/ub_src_parser_statement.cpp +2 -0
  918. package/src/duckdb/ub_src_parser_tableref.cpp +2 -0
  919. package/src/duckdb/ub_src_planner_binder_statement.cpp +2 -0
  920. package/src/duckdb/ub_src_planner_binder_tableref.cpp +4 -0
  921. package/src/duckdb/ub_src_storage_serialization.cpp +4 -0
  922. package/test/query_result.test.ts +9 -0
  923. package/test/replacement_scan.test.ts +2 -0
  924. package/src/duckdb/src/catalog/catalog_entry/ub_duckdb_catalog_entries.cpp +0 -16
  925. package/src/duckdb/src/catalog/default/ub_duckdb_catalog_default_entries.cpp +0 -5
  926. package/src/duckdb/src/catalog/ub_duckdb_catalog.cpp +0 -10
  927. package/src/duckdb/src/common/adbc/nanoarrow/ub_duckdb_adbc_nanoarrow.cpp +0 -5
  928. package/src/duckdb/src/common/adbc/ub_duckdb_adbc.cpp +0 -3
  929. package/src/duckdb/src/common/arrow/appender/ub_duckdb_common_arrow_appender.cpp +0 -6
  930. package/src/duckdb/src/common/arrow/ub_duckdb_common_arrow.cpp +0 -4
  931. package/src/duckdb/src/common/crypto/ub_duckdb_common_crypto.cpp +0 -2
  932. package/src/duckdb/src/common/enums/ub_duckdb_common_enums.cpp +0 -12
  933. package/src/duckdb/src/common/operator/ub_duckdb_common_operators.cpp +0 -4
  934. package/src/duckdb/src/common/progress_bar/ub_duckdb_progress_bar.cpp +0 -3
  935. package/src/duckdb/src/common/row_operations/ub_duckdb_row_operations.cpp +0 -9
  936. package/src/duckdb/src/common/serializer/ub_duckdb_common_serializer.cpp +0 -7
  937. package/src/duckdb/src/common/sort/ub_duckdb_sort.cpp +0 -7
  938. package/src/duckdb/src/common/types/column/ub_duckdb_common_types_column.cpp +0 -6
  939. package/src/duckdb/src/common/types/row/ub_duckdb_common_types_row.cpp +0 -11
  940. package/src/duckdb/src/common/types/ub_duckdb_common_types.cpp +0 -28
  941. package/src/duckdb/src/common/ub_duckdb_common.cpp +0 -34
  942. package/src/duckdb/src/common/value_operations/ub_duckdb_value_operations.cpp +0 -2
  943. package/src/duckdb/src/core_functions/aggregate/algebraic/ub_duckdb_aggr_algebraic.cpp +0 -5
  944. package/src/duckdb/src/core_functions/aggregate/distributive/ub_duckdb_aggr_distributive.cpp +0 -13
  945. package/src/duckdb/src/core_functions/aggregate/holistic/ub_duckdb_aggr_holistic.cpp +0 -5
  946. package/src/duckdb/src/core_functions/aggregate/nested/ub_duckdb_aggr_nested.cpp +0 -3
  947. package/src/duckdb/src/core_functions/aggregate/regression/ub_duckdb_aggr_regr.cpp +0 -8
  948. package/src/duckdb/src/core_functions/scalar/bit/ub_duckdb_func_bit.cpp +0 -2
  949. package/src/duckdb/src/core_functions/scalar/blob/ub_duckdb_func_blob.cpp +0 -3
  950. package/src/duckdb/src/core_functions/scalar/date/ub_duckdb_func_date.cpp +0 -12
  951. package/src/duckdb/src/core_functions/scalar/debug/ub_duckdb_func_debug.cpp +0 -2
  952. package/src/duckdb/src/core_functions/scalar/enum/ub_duckdb_func_enum.cpp +0 -2
  953. package/src/duckdb/src/core_functions/scalar/generic/ub_duckdb_func_generic.cpp +0 -9
  954. package/src/duckdb/src/core_functions/scalar/list/ub_duckdb_func_list.cpp +0 -11
  955. package/src/duckdb/src/core_functions/scalar/map/ub_duckdb_func_map_nested.cpp +0 -8
  956. package/src/duckdb/src/core_functions/scalar/math/ub_duckdb_func_math.cpp +0 -1
  957. package/src/duckdb/src/core_functions/scalar/operators/ub_duckdb_func_ops.cpp +0 -1
  958. package/src/duckdb/src/core_functions/scalar/random/ub_duckdb_func_random.cpp +0 -3
  959. package/src/duckdb/src/core_functions/scalar/string/ub_duckdb_func_string.cpp +0 -26
  960. package/src/duckdb/src/core_functions/scalar/struct/ub_duckdb_func_struct.cpp +0 -3
  961. package/src/duckdb/src/core_functions/scalar/union/ub_duckdb_func_union.cpp +0 -4
  962. package/src/duckdb/src/core_functions/ub_duckdb_core_functions.cpp +0 -3
  963. package/src/duckdb/src/execution/expression_executor/ub_duckdb_expression_executor.cpp +0 -11
  964. package/src/duckdb/src/execution/index/art/ub_duckdb_art_index_execution.cpp +0 -12
  965. package/src/duckdb/src/execution/index/art/ub_duckdb_execution_index_art.cpp +0 -11
  966. package/src/duckdb/src/execution/index/ub_duckdb_execution_index.cpp +0 -3
  967. package/src/duckdb/src/execution/nested_loop_join/ub_duckdb_nested_loop_join.cpp +0 -3
  968. package/src/duckdb/src/execution/operator/aggregate/ub_duckdb_operator_aggregate.cpp +0 -9
  969. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/ub_duckdb_operator_csv_sniffer.cpp +0 -7
  970. package/src/duckdb/src/execution/operator/csv_scanner/ub_duckdb_operator_csv_scanner.cpp +0 -10
  971. package/src/duckdb/src/execution/operator/filter/ub_duckdb_operator_filter.cpp +0 -2
  972. package/src/duckdb/src/execution/operator/helper/ub_duckdb_operator_helper.cpp +0 -18
  973. package/src/duckdb/src/execution/operator/join/ub_duckdb_operator_join.cpp +0 -16
  974. package/src/duckdb/src/execution/operator/order/ub_duckdb_operator_order.cpp +0 -3
  975. package/src/duckdb/src/execution/operator/persistent/ub_duckdb_operator_persistent.cpp +0 -10
  976. package/src/duckdb/src/execution/operator/projection/ub_duckdb_operator_projection.cpp +0 -5
  977. package/src/duckdb/src/execution/operator/scan/ub_duckdb_operator_scan.cpp +0 -7
  978. package/src/duckdb/src/execution/operator/schema/ub_duckdb_operator_schema.cpp +0 -12
  979. package/src/duckdb/src/execution/operator/set/ub_duckdb_operator_set.cpp +0 -4
  980. package/src/duckdb/src/execution/physical_plan/ub_duckdb_physical_plan.cpp +0 -44
  981. package/src/duckdb/src/execution/ub_duckdb_execution.cpp +0 -15
  982. package/src/duckdb/src/function/aggregate/algebraic/ub_duckdb_aggr_algebraic.cpp +0 -5
  983. package/src/duckdb/src/function/aggregate/distributive/ub_duckdb_aggr_distr.cpp +0 -3
  984. package/src/duckdb/src/function/aggregate/holistic/ub_duckdb_aggr_holistic.cpp +0 -5
  985. package/src/duckdb/src/function/aggregate/nested/ub_duckdb_aggr_nested.cpp +0 -3
  986. package/src/duckdb/src/function/aggregate/regression/ub_duckdb_aggr_regr.cpp +0 -8
  987. package/src/duckdb/src/function/aggregate/ub_duckdb_func_aggr.cpp +0 -3
  988. package/src/duckdb/src/function/cast/ub_duckdb_func_cast.cpp +0 -17
  989. package/src/duckdb/src/function/cast/union/ub_duckdb_union_cast.cpp +0 -2
  990. package/src/duckdb/src/function/pragma/ub_duckdb_func_pragma.cpp +0 -3
  991. package/src/duckdb/src/function/scalar/bit/ub_duckdb_func_bit.cpp +0 -2
  992. package/src/duckdb/src/function/scalar/blob/ub_duckdb_func_blob.cpp +0 -3
  993. package/src/duckdb/src/function/scalar/compressed_materialization/ub_duckdb_func_compressed_materialization.cpp +0 -3
  994. package/src/duckdb/src/function/scalar/date/ub_duckdb_func_date.cpp +0 -12
  995. package/src/duckdb/src/function/scalar/enum/ub_duckdb_func_enum.cpp +0 -2
  996. package/src/duckdb/src/function/scalar/generic/ub_duckdb_func_generic.cpp +0 -8
  997. package/src/duckdb/src/function/scalar/generic/ub_duckdb_func_generic_main.cpp +0 -2
  998. package/src/duckdb/src/function/scalar/list/ub_duckdb_func_list.cpp +0 -11
  999. package/src/duckdb/src/function/scalar/list/ub_duckdb_func_list_nested.cpp +0 -5
  1000. package/src/duckdb/src/function/scalar/map/ub_duckdb_func_map_nested.cpp +0 -7
  1001. package/src/duckdb/src/function/scalar/math/ub_duckdb_func_math.cpp +0 -4
  1002. package/src/duckdb/src/function/scalar/operators/ub_duckdb_func_ops.cpp +0 -6
  1003. package/src/duckdb/src/function/scalar/operators/ub_duckdb_func_ops_main.cpp +0 -5
  1004. package/src/duckdb/src/function/scalar/sequence/ub_duckdb_func_seq.cpp +0 -2
  1005. package/src/duckdb/src/function/scalar/string/regexp/ub_duckdb_func_string_regexp.cpp +0 -3
  1006. package/src/duckdb/src/function/scalar/string/ub_duckdb_func_string.cpp +0 -31
  1007. package/src/duckdb/src/function/scalar/string/ub_duckdb_func_string_main.cpp +0 -12
  1008. package/src/duckdb/src/function/scalar/struct/ub_duckdb_func_struct.cpp +0 -4
  1009. package/src/duckdb/src/function/scalar/struct/ub_duckdb_func_struct_main.cpp +0 -2
  1010. package/src/duckdb/src/function/scalar/system/ub_duckdb_func_system.cpp +0 -2
  1011. package/src/duckdb/src/function/scalar/ub_duckdb_func_scalar.cpp +0 -9
  1012. package/src/duckdb/src/function/scalar/union/ub_duckdb_func_union.cpp +0 -4
  1013. package/src/duckdb/src/function/table/arrow/ub_duckdb_arrow_conversion.cpp +0 -2
  1014. package/src/duckdb/src/function/table/system/ub_duckdb_table_func_system.cpp +0 -23
  1015. package/src/duckdb/src/function/table/ub_duckdb_func_table.cpp +0 -16
  1016. package/src/duckdb/src/function/table/version/ub_duckdb_func_table_version.cpp +0 -2
  1017. package/src/duckdb/src/function/ub_duckdb_function.cpp +0 -14
  1018. package/src/duckdb/src/main/capi/cast/ub_duckdb_main_capi_cast.cpp +0 -3
  1019. package/src/duckdb/src/main/capi/ub_duckdb_main_capi.cpp +0 -19
  1020. package/src/duckdb/src/main/chunk_scan_state/ub_duckdb_main_chunk_scan_state.cpp +0 -2
  1021. package/src/duckdb/src/main/extension/ub_duckdb_main_extension.cpp +0 -6
  1022. package/src/duckdb/src/main/relation/ub_duckdb_main_relation.cpp +0 -26
  1023. package/src/duckdb/src/main/settings/ub_duckdb_main_settings.cpp +0 -2
  1024. package/src/duckdb/src/main/ub_duckdb_main.cpp +0 -25
  1025. package/src/duckdb/src/optimizer/compressed_materialization/ub_duckdb_optimizer_compressed_materialization.cpp +0 -4
  1026. package/src/duckdb/src/optimizer/join_order/ub_duckdb_optimizer_join_order.cpp +0 -12
  1027. package/src/duckdb/src/optimizer/matcher/ub_duckdb_optimizer_matcher.cpp +0 -2
  1028. package/src/duckdb/src/optimizer/pullup/ub_duckdb_optimizer_pullup.cpp +0 -6
  1029. package/src/duckdb/src/optimizer/pushdown/ub_duckdb_optimizer_pushdown.cpp +0 -12
  1030. package/src/duckdb/src/optimizer/rule/ub_duckdb_optimizer_rules.cpp +0 -16
  1031. package/src/duckdb/src/optimizer/statistics/expression/ub_duckdb_optimizer_statistics_expr.cpp +0 -11
  1032. package/src/duckdb/src/optimizer/statistics/operator/ub_duckdb_optimizer_statistics_op.cpp +0 -11
  1033. package/src/duckdb/src/optimizer/ub_duckdb_optimizer.cpp +0 -20
  1034. package/src/duckdb/src/parallel/ub_duckdb_parallel.cpp +0 -15
  1035. package/src/duckdb/src/parser/constraints/ub_duckdb_constraints.cpp +0 -5
  1036. package/src/duckdb/src/parser/expression/ub_duckdb_expression.cpp +0 -18
  1037. package/src/duckdb/src/parser/parsed_data/ub_duckdb_parsed_data.cpp +0 -24
  1038. package/src/duckdb/src/parser/query_node/ub_duckdb_query_node.cpp +0 -5
  1039. package/src/duckdb/src/parser/statement/ub_duckdb_statement.cpp +0 -25
  1040. package/src/duckdb/src/parser/tableref/ub_duckdb_parser_tableref.cpp +0 -8
  1041. package/src/duckdb/src/parser/transform/constraint/ub_duckdb_transformer_constraint.cpp +0 -2
  1042. package/src/duckdb/src/parser/transform/expression/ub_duckdb_transformer_expression.cpp +0 -20
  1043. package/src/duckdb/src/parser/transform/helpers/ub_duckdb_transformer_helpers.cpp +0 -8
  1044. package/src/duckdb/src/parser/transform/statement/ub_duckdb_transformer_statement.cpp +0 -37
  1045. package/src/duckdb/src/parser/transform/tableref/ub_duckdb_transformer_tableref.cpp +0 -8
  1046. package/src/duckdb/src/parser/ub_duckdb_parser.cpp +0 -15
  1047. package/src/duckdb/src/planner/binder/expression/ub_duckdb_bind_expression.cpp +0 -20
  1048. package/src/duckdb/src/planner/binder/query_node/ub_duckdb_bind_query_node.cpp +0 -12
  1049. package/src/duckdb/src/planner/binder/statement/ub_duckdb_bind_statement.cpp +0 -26
  1050. package/src/duckdb/src/planner/binder/tableref/ub_duckdb_bind_tableref.cpp +0 -17
  1051. package/src/duckdb/src/planner/expression/ub_duckdb_planner_expression.cpp +0 -19
  1052. package/src/duckdb/src/planner/expression_binder/ub_duckdb_expression_binders.cpp +0 -20
  1053. package/src/duckdb/src/planner/filter/ub_duckdb_planner_filter.cpp +0 -4
  1054. package/src/duckdb/src/planner/operator/ub_duckdb_planner_operator.cpp +0 -43
  1055. package/src/duckdb/src/planner/parsed_data/ub_duckdb_planner_parsed_data.cpp +0 -2
  1056. package/src/duckdb/src/planner/subquery/ub_duckdb_planner_subquery.cpp +0 -4
  1057. package/src/duckdb/src/planner/ub_duckdb_planner.cpp +0 -15
  1058. package/src/duckdb/src/storage/buffer/ub_duckdb_storage_buffer.cpp +0 -6
  1059. package/src/duckdb/src/storage/checkpoint/ub_duckdb_storage_checkpoint.cpp +0 -5
  1060. package/src/duckdb/src/storage/compression/chimp/ub_duckdb_storage_compression_chimp.cpp +0 -6
  1061. package/src/duckdb/src/storage/compression/ub_duckdb_storage_compression.cpp +0 -12
  1062. package/src/duckdb/src/storage/metadata/ub_duckdb_storage_metadata.cpp +0 -4
  1063. package/src/duckdb/src/storage/serialization/ub_duckdb_storage_serialization.cpp +0 -16
  1064. package/src/duckdb/src/storage/statistics/ub_duckdb_storage_statistics.cpp +0 -10
  1065. package/src/duckdb/src/storage/table/ub_duckdb_storage_table.cpp +0 -17
  1066. package/src/duckdb/src/storage/ub_duckdb_storage.cpp +0 -20
  1067. package/src/duckdb/src/transaction/ub_duckdb_transaction.cpp +0 -11
@@ -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);
@@ -157,6 +157,8 @@ public:
157
157
  CollectionScanState local_state;
158
158
  //! Options for scanning
159
159
  TableScanOptions options;
160
+ //! Shared lock over the checkpoint to prevent checkpoints while reading
161
+ unique_ptr<StorageLockKey> checkpoint_lock;
160
162
 
161
163
  public:
162
164
  void Initialize(vector<storage_t> column_ids, TableFilterSet *table_filters = nullptr);
@@ -192,6 +194,8 @@ struct ParallelTableScanState {
192
194
  ParallelCollectionScanState scan_state;
193
195
  //! Parallel scan state for the transaction-local state
194
196
  ParallelCollectionScanState local_state;
197
+ //! Shared lock over the checkpoint to prevent checkpoints while reading
198
+ unique_ptr<StorageLockKey> checkpoint_lock;
195
199
  };
196
200
 
197
201
  class CreateIndexScanState : public TableScanState {
@@ -83,11 +83,11 @@ public:
83
83
  if (index < 0) {
84
84
  // load all segments
85
85
  LoadAllSegments(l);
86
- index = nodes.size() + index;
86
+ index += nodes.size();
87
87
  if (index < 0) {
88
88
  return nullptr;
89
89
  }
90
- return nodes[index].node.get();
90
+ return nodes[UnsafeNumericCast<idx_t>(index)].node.get();
91
91
  } else {
92
92
  // lazily load segments until we reach the specific segment
93
93
  while (idx_t(index) >= nodes.size() && LoadNextSegment(l)) {
@@ -95,7 +95,7 @@ public:
95
95
  if (idx_t(index) >= nodes.size()) {
96
96
  return nullptr;
97
97
  }
98
- return nodes[index].node.get();
98
+ return nodes[UnsafeNumericCast<idx_t>(index)].node.get();
99
99
  }
100
100
  }
101
101
  //! Gets the next segment
@@ -116,7 +116,7 @@ public:
116
116
  #ifdef DEBUG
117
117
  D_ASSERT(nodes[segment->index].node.get() == segment);
118
118
  #endif
119
- return GetSegmentByIndex(l, segment->index + 1);
119
+ return GetSegmentByIndex(l, UnsafeNumericCast<int64_t>(segment->index + 1));
120
120
  }
121
121
 
122
122
  //! Gets a pointer to the last segment. Useful for appends.
@@ -182,7 +182,7 @@ public:
182
182
  if (segment_start >= nodes.size() - 1) {
183
183
  return;
184
184
  }
185
- nodes.erase(nodes.begin() + segment_start + 1, nodes.end());
185
+ nodes.erase(nodes.begin() + UnsafeNumericCast<int64_t>(segment_start) + 1, nodes.end());
186
186
  }
187
187
 
188
188
  //! Get the segment index of the column segment for the given row
@@ -23,16 +23,17 @@ public:
23
23
  ValidityColumnData validity;
24
24
 
25
25
  public:
26
- bool HasUpdates() const override;
27
-
28
26
  void SetStart(idx_t new_start) override;
29
27
  bool CheckZonemap(ColumnScanState &state, TableFilter &filter) override;
30
28
 
29
+ ScanVectorType GetVectorScanType(ColumnScanState &state, idx_t scan_count) override;
31
30
  void InitializeScan(ColumnScanState &state) override;
32
31
  void InitializeScanWithOffset(ColumnScanState &state, idx_t row_idx) override;
33
32
 
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;
33
+ idx_t Scan(TransactionData transaction, idx_t vector_index, ColumnScanState &state, Vector &result,
34
+ idx_t target_count) override;
35
+ idx_t ScanCommitted(idx_t vector_index, ColumnScanState &state, Vector &result, bool allow_updates,
36
+ idx_t target_count) override;
36
37
  idx_t ScanCount(ColumnScanState &state, Vector &result, idx_t count) override;
37
38
 
38
39
  void InitializeAppend(ColumnAppendState &state) override;
@@ -51,8 +52,7 @@ public:
51
52
 
52
53
  unique_ptr<ColumnCheckpointState> CreateCheckpointState(RowGroup &row_group,
53
54
  PartialBlockManager &partial_block_manager) override;
54
- unique_ptr<ColumnCheckpointState> Checkpoint(RowGroup &row_group, PartialBlockManager &partial_block_manager,
55
- ColumnCheckpointInfo &checkpoint_info) override;
55
+ unique_ptr<ColumnCheckpointState> Checkpoint(RowGroup &row_group, ColumnCheckpointInfo &info) override;
56
56
  void CheckpointScan(ColumnSegment &segment, ColumnScanState &state, idx_t row_group_start, idx_t count,
57
57
  Vector &scan_vector) override;
58
58
 
@@ -32,8 +32,10 @@ public:
32
32
  void InitializeScan(ColumnScanState &state) override;
33
33
  void InitializeScanWithOffset(ColumnScanState &state, idx_t row_idx) override;
34
34
 
35
- idx_t Scan(TransactionData transaction, idx_t vector_index, ColumnScanState &state, Vector &result) override;
36
- idx_t ScanCommitted(idx_t vector_index, ColumnScanState &state, Vector &result, bool allow_updates) override;
35
+ idx_t Scan(TransactionData transaction, idx_t vector_index, ColumnScanState &state, Vector &result,
36
+ idx_t scan_count) override;
37
+ idx_t ScanCommitted(idx_t vector_index, ColumnScanState &state, Vector &result, bool allow_updates,
38
+ idx_t scan_count) override;
37
39
  idx_t ScanCount(ColumnScanState &state, Vector &result, idx_t count) override;
38
40
 
39
41
  void Skip(ColumnScanState &state, idx_t count = STANDARD_VECTOR_SIZE) override;
@@ -54,8 +56,7 @@ public:
54
56
 
55
57
  unique_ptr<ColumnCheckpointState> CreateCheckpointState(RowGroup &row_group,
56
58
  PartialBlockManager &partial_block_manager) override;
57
- unique_ptr<ColumnCheckpointState> Checkpoint(RowGroup &row_group, PartialBlockManager &partial_block_manager,
58
- ColumnCheckpointInfo &checkpoint_info) override;
59
+ unique_ptr<ColumnCheckpointState> Checkpoint(RowGroup &row_group, ColumnCheckpointInfo &info) override;
59
60
 
60
61
  void DeserializeColumn(Deserializer &source, BaseStatistics &target_stats) override;
61
62
 
@@ -10,6 +10,7 @@
10
10
 
11
11
  #include "duckdb/common/mutex.hpp"
12
12
  #include "duckdb/storage/index.hpp"
13
+ #include "duckdb/parser/constraint.hpp"
13
14
 
14
15
  namespace duckdb {
15
16
 
@@ -29,6 +30,29 @@ public:
29
30
  }
30
31
  }
31
32
  }
33
+
34
+ //! Scan the indexes, invoking the callback method for every bound entry of a specific type
35
+ template <class T, class FUNC>
36
+ void ScanBound(FUNC &&callback) {
37
+ lock_guard<mutex> lock(indexes_lock);
38
+ for (auto &index : indexes) {
39
+ if (index->IsBound() && T::TYPE_NAME == index->GetIndexType()) {
40
+ if (callback(index->Cast<T>())) {
41
+ break;
42
+ }
43
+ }
44
+ }
45
+ }
46
+
47
+ // Bind any unbound indexes of the specified type and invoke the callback method for every bound entry of the
48
+ // specified type, regardless if it was bound before or not
49
+ template <class T, class FUNC>
50
+ void BindAndScan(ClientContext &context, DataTableInfo &table_info, FUNC &&callback) {
51
+ // FIXME: optimize this by only looping through the indexes once without re-acquiring the lock
52
+ InitializeIndexes(context, table_info, T::TYPE_NAME);
53
+ ScanBound<T>(callback);
54
+ }
55
+
32
56
  //! Returns a reference to the indexes of this table
33
57
  const vector<unique_ptr<Index>> &Indexes() const {
34
58
  return indexes;
@@ -43,7 +67,7 @@ public:
43
67
  bool NameIsUnique(const string &name);
44
68
  //! Initializes unknown indexes that might now be present after an extension load, optionally throwing an exception
45
69
  //! if a index cant be initialized
46
- void InitializeIndexes(ClientContext &context, DataTableInfo &table_info, bool throw_on_failure = false);
70
+ void InitializeIndexes(ClientContext &context, DataTableInfo &table_info, const char *index_type = nullptr);
47
71
  bool Empty();
48
72
  idx_t Count();
49
73
  void Move(TableIndexList &other);
@@ -43,8 +43,11 @@ public:
43
43
  void MergeStats(TableStatisticsLock &lock, idx_t i, BaseStatistics &stats);
44
44
 
45
45
  void CopyStats(TableStatistics &other);
46
+ void CopyStats(TableStatisticsLock &lock, TableStatistics &other);
46
47
  unique_ptr<BaseStatistics> CopyStats(idx_t i);
47
- ColumnStatistics &GetStats(idx_t i);
48
+ //! Get a reference to the stats - this requires us to hold the lock.
49
+ //! The reference can only be safely accessed while the lock is held
50
+ ColumnStatistics &GetStats(TableStatisticsLock &lock, idx_t i);
48
51
 
49
52
  bool Empty();
50
53
 
@@ -55,7 +58,7 @@ public:
55
58
 
56
59
  private:
57
60
  //! The statistics lock
58
- mutex stats_lock;
61
+ shared_ptr<mutex> stats_lock;
59
62
  //! Column statistics
60
63
  vector<shared_ptr<ColumnStatistics>> column_stats;
61
64
  //! The table sample
@@ -0,0 +1,20 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/storage/table/update_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 TableUpdateState {
17
+ unique_ptr<ConstraintState> constraint_state;
18
+ };
19
+
20
+ } // namespace duckdb
@@ -20,6 +20,7 @@ public:
20
20
 
21
21
  public:
22
22
  bool CheckZonemap(ColumnScanState &state, TableFilter &filter) override;
23
+ void AppendData(BaseStatistics &stats, ColumnAppendState &state, UnifiedVectorFormat &vdata, idx_t count) override;
23
24
  };
24
25
 
25
26
  } // namespace duckdb
@@ -23,8 +23,11 @@ namespace duckdb {
23
23
  // BlockIndexManager
24
24
  //===--------------------------------------------------------------------===//
25
25
 
26
+ class TemporaryFileManager;
27
+
26
28
  struct BlockIndexManager {
27
29
  public:
30
+ explicit BlockIndexManager(TemporaryFileManager &manager);
28
31
  BlockIndexManager();
29
32
 
30
33
  public:
@@ -37,12 +40,14 @@ public:
37
40
  bool HasFreeBlocks();
38
41
 
39
42
  private:
43
+ void SetMaxIndex(idx_t blocks);
40
44
  idx_t GetNewBlockIndexInternal();
41
45
 
42
46
  private:
43
47
  idx_t max_index;
44
48
  set<idx_t> free_indexes;
45
49
  set<idx_t> indexes_in_use;
50
+ optional_ptr<TemporaryFileManager> manager;
46
51
  };
47
52
 
48
53
  //===--------------------------------------------------------------------===//
@@ -69,7 +74,8 @@ class TemporaryFileHandle {
69
74
  constexpr static idx_t MAX_ALLOWED_INDEX_BASE = 4000;
70
75
 
71
76
  public:
72
- TemporaryFileHandle(idx_t temp_file_count, DatabaseInstance &db, const string &temp_directory, idx_t index);
77
+ TemporaryFileHandle(idx_t temp_file_count, DatabaseInstance &db, const string &temp_directory, idx_t index,
78
+ TemporaryFileManager &manager);
73
79
 
74
80
  public:
75
81
  struct TemporaryFileLock {
@@ -103,15 +109,13 @@ private:
103
109
  BlockIndexManager index_manager;
104
110
  };
105
111
 
106
- class TemporaryFileManager;
107
-
108
112
  //===--------------------------------------------------------------------===//
109
113
  // TemporaryDirectoryHandle
110
114
  //===--------------------------------------------------------------------===//
111
115
 
112
116
  class TemporaryDirectoryHandle {
113
117
  public:
114
- TemporaryDirectoryHandle(DatabaseInstance &db, string path_p);
118
+ TemporaryDirectoryHandle(DatabaseInstance &db, string path_p, optional_idx max_swap_space);
115
119
  ~TemporaryDirectoryHandle();
116
120
 
117
121
  TemporaryFileManager &GetTempFile();
@@ -130,6 +134,7 @@ private:
130
134
  class TemporaryFileManager {
131
135
  public:
132
136
  TemporaryFileManager(DatabaseInstance &db, const string &temp_directory_p);
137
+ ~TemporaryFileManager();
133
138
 
134
139
  public:
135
140
  struct TemporaryManagerLock {
@@ -145,6 +150,13 @@ public:
145
150
  unique_ptr<FileBuffer> ReadTemporaryBuffer(block_id_t id, unique_ptr<FileBuffer> reusable_buffer);
146
151
  void DeleteTemporaryBuffer(block_id_t id);
147
152
  vector<TemporaryFileInformation> GetTemporaryFiles();
153
+ idx_t GetTotalUsedSpaceInBytes();
154
+ optional_idx GetMaxSwapSpace() const;
155
+ void SetMaxSwapSpace(optional_idx limit);
156
+ //! Register temporary file size growth
157
+ void IncreaseSizeOnDisk(idx_t amount);
158
+ //! Register temporary file size decrease
159
+ void DecreaseSizeOnDisk(idx_t amount);
148
160
 
149
161
  private:
150
162
  void EraseUsedBlock(TemporaryManagerLock &lock, block_id_t id, TemporaryFileHandle *handle,
@@ -164,6 +176,10 @@ private:
164
176
  unordered_map<block_id_t, TemporaryFileIndex> used_blocks;
165
177
  //! Manager of in-use temporary file indexes
166
178
  BlockIndexManager index_manager;
179
+ //! The size in bytes of the temporary files that are currently alive
180
+ atomic<idx_t> size_on_disk;
181
+ //! The max amount of disk space that can be used
182
+ idx_t max_swap_space;
167
183
  };
168
184
 
169
185
  } // namespace duckdb
@@ -44,7 +44,7 @@ class WriteAheadLogDeserializer;
44
44
  class WriteAheadLog {
45
45
  public:
46
46
  //! Initialize the WAL in the specified directory
47
- explicit WriteAheadLog(AttachedDatabase &database, const string &path);
47
+ explicit WriteAheadLog(AttachedDatabase &database, const string &wal_path);
48
48
  virtual ~WriteAheadLog();
49
49
 
50
50
  //! Skip writing to the WAL
@@ -54,11 +54,16 @@ public:
54
54
  //! Replay the WAL
55
55
  static bool Replay(AttachedDatabase &database, unique_ptr<FileHandle> handle);
56
56
 
57
- //! Returns the current size of the WAL in bytes
58
- int64_t GetWALSize();
59
57
  //! Gets the total bytes written to the WAL since startup
60
58
  idx_t GetTotalWritten();
61
59
 
60
+ //! A WAL is initialized, if a writer to a file exists.
61
+ bool Initialized() {
62
+ return writer != nullptr;
63
+ }
64
+ //! Initializes the file of the WAL by creating the file writer.
65
+ BufferedFileWriter &Initialize();
66
+ //! Returns the WAL file writer.
62
67
  BufferedFileWriter &GetWriter() {
63
68
  return *writer;
64
69
  }
@@ -76,7 +81,7 @@ public:
76
81
 
77
82
  void WriteCreateSequence(const SequenceCatalogEntry &entry);
78
83
  void WriteDropSequence(const SequenceCatalogEntry &entry);
79
- void WriteSequenceValue(const SequenceCatalogEntry &entry, SequenceValue val);
84
+ void WriteSequenceValue(SequenceValue val);
80
85
 
81
86
  void WriteCreateMacro(const ScalarMacroCatalogEntry &entry);
82
87
  void WriteDropMacro(const ScalarMacroCatalogEntry &entry);
@@ -90,7 +95,7 @@ public:
90
95
  void WriteCreateType(const TypeCatalogEntry &entry);
91
96
  void WriteDropType(const TypeCatalogEntry &entry);
92
97
  //! Sets the table used for subsequent insert/delete/update commands
93
- void WriteSetTable(string &schema, string &table);
98
+ void WriteSetTable(const string &schema, const string &table);
94
99
 
95
100
  void WriteAlter(const AlterInfo &info);
96
101