duckdb 0.8.2-dev161.0 → 0.8.2-dev1764.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 (504) hide show
  1. package/binding.gyp +15 -12
  2. package/binding.gyp.in +1 -1
  3. package/configure.py +1 -1
  4. package/duckdb_extension_config.cmake +10 -0
  5. package/package.json +1 -1
  6. package/src/duckdb/extension/icu/icu-dateadd.cpp +2 -2
  7. package/src/duckdb/extension/icu/icu-datefunc.cpp +1 -1
  8. package/src/duckdb/extension/icu/icu-datepart.cpp +2 -2
  9. package/src/duckdb/extension/icu/icu-datesub.cpp +2 -2
  10. package/src/duckdb/extension/icu/icu-datetrunc.cpp +1 -1
  11. package/src/duckdb/extension/icu/icu-list-range.cpp +1 -1
  12. package/src/duckdb/extension/icu/icu-makedate.cpp +7 -0
  13. package/src/duckdb/extension/icu/icu-strptime.cpp +4 -4
  14. package/src/duckdb/extension/icu/icu-table-range.cpp +5 -5
  15. package/src/duckdb/extension/icu/icu-timebucket.cpp +16 -16
  16. package/src/duckdb/extension/icu/icu-timezone.cpp +8 -8
  17. package/src/duckdb/extension/icu/icu_extension.cpp +3 -3
  18. package/src/duckdb/extension/json/include/json_common.hpp +47 -231
  19. package/src/duckdb/extension/json/include/json_executors.hpp +49 -13
  20. package/src/duckdb/extension/json/include/json_functions.hpp +2 -1
  21. package/src/duckdb/extension/json/json_common.cpp +272 -40
  22. package/src/duckdb/extension/json/json_functions/json_create.cpp +21 -2
  23. package/src/duckdb/extension/json/json_functions/json_structure.cpp +1 -1
  24. package/src/duckdb/extension/json/json_functions/json_transform.cpp +91 -38
  25. package/src/duckdb/extension/json/json_functions/json_type.cpp +1 -1
  26. package/src/duckdb/extension/json/json_functions.cpp +24 -24
  27. package/src/duckdb/extension/json/json_scan.cpp +3 -6
  28. package/src/duckdb/extension/parquet/column_reader.cpp +19 -21
  29. package/src/duckdb/extension/parquet/column_writer.cpp +77 -61
  30. package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +2 -2
  31. package/src/duckdb/extension/parquet/include/column_reader.hpp +14 -16
  32. package/src/duckdb/extension/parquet/include/column_writer.hpp +9 -7
  33. package/src/duckdb/extension/parquet/include/list_column_reader.hpp +2 -2
  34. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +3 -3
  35. package/src/duckdb/extension/parquet/include/parquet_decimal_utils.hpp +3 -3
  36. package/src/duckdb/extension/parquet/include/parquet_file_metadata_cache.hpp +2 -2
  37. package/src/duckdb/extension/parquet/include/parquet_statistics.hpp +2 -2
  38. package/src/duckdb/extension/parquet/include/parquet_support.hpp +9 -11
  39. package/src/duckdb/extension/parquet/include/parquet_writer.hpp +24 -5
  40. package/src/duckdb/extension/parquet/include/string_column_reader.hpp +1 -1
  41. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +2 -3
  42. package/src/duckdb/extension/parquet/include/zstd_file_system.hpp +2 -2
  43. package/src/duckdb/extension/parquet/parquet_extension.cpp +194 -20
  44. package/src/duckdb/extension/parquet/parquet_reader.cpp +6 -6
  45. package/src/duckdb/extension/parquet/parquet_statistics.cpp +7 -6
  46. package/src/duckdb/extension/parquet/parquet_writer.cpp +79 -16
  47. package/src/duckdb/extension/parquet/zstd_file_system.cpp +2 -2
  48. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +1 -1
  49. package/src/duckdb/src/catalog/catalog_search_path.cpp +5 -4
  50. package/src/duckdb/src/catalog/default/default_functions.cpp +16 -0
  51. package/src/duckdb/src/common/adbc/adbc.cpp +75 -10
  52. package/src/duckdb/src/common/adbc/driver_manager.cpp +6 -11
  53. package/src/duckdb/src/common/allocator.cpp +14 -2
  54. package/src/duckdb/src/common/arrow/arrow_appender.cpp +79 -12
  55. package/src/duckdb/src/common/arrow/arrow_converter.cpp +44 -19
  56. package/src/duckdb/src/common/assert.cpp +3 -0
  57. package/src/duckdb/src/common/enum_util.cpp +4619 -4446
  58. package/src/duckdb/src/common/enums/logical_operator_type.cpp +4 -0
  59. package/src/duckdb/src/common/enums/optimizer_type.cpp +2 -0
  60. package/src/duckdb/src/common/enums/physical_operator_type.cpp +4 -0
  61. package/src/duckdb/src/common/exception.cpp +2 -2
  62. package/src/duckdb/src/common/extra_type_info.cpp +506 -0
  63. package/src/duckdb/src/common/file_system.cpp +19 -0
  64. package/src/duckdb/src/common/hive_partitioning.cpp +10 -6
  65. package/src/duckdb/src/common/local_file_system.cpp +14 -14
  66. package/src/duckdb/src/common/multi_file_reader.cpp +184 -20
  67. package/src/duckdb/src/common/operator/cast_operators.cpp +35 -1
  68. package/src/duckdb/src/common/radix_partitioning.cpp +26 -8
  69. package/src/duckdb/src/common/re2_regex.cpp +1 -1
  70. package/src/duckdb/src/common/row_operations/row_external.cpp +1 -1
  71. package/src/duckdb/src/common/sort/merge_sorter.cpp +9 -16
  72. package/src/duckdb/src/common/sort/partition_state.cpp +70 -50
  73. package/src/duckdb/src/common/types/batched_data_collection.cpp +7 -2
  74. package/src/duckdb/src/common/types/bit.cpp +51 -0
  75. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +9 -6
  76. package/src/duckdb/src/common/types/column/column_data_collection.cpp +17 -2
  77. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +15 -6
  78. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  79. package/src/duckdb/src/common/types/data_chunk.cpp +2 -2
  80. package/src/duckdb/src/common/types/date.cpp +9 -0
  81. package/src/duckdb/src/common/types/list_segment.cpp +24 -74
  82. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +3 -9
  83. package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +2 -0
  84. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +2 -2
  85. package/src/duckdb/src/common/types/uuid.cpp +2 -2
  86. package/src/duckdb/src/common/types/validity_mask.cpp +33 -0
  87. package/src/duckdb/src/common/types/value.cpp +11 -6
  88. package/src/duckdb/src/common/types.cpp +9 -656
  89. package/src/duckdb/src/common/virtual_file_system.cpp +138 -1
  90. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +2 -0
  91. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +2 -2
  92. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +4 -4
  93. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +4 -4
  94. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +5 -4
  95. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +8 -8
  96. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +4 -3
  97. package/src/duckdb/src/core_functions/function_list.cpp +4 -2
  98. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +208 -42
  99. package/src/duckdb/src/core_functions/scalar/date/epoch.cpp +10 -24
  100. package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +19 -4
  101. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +4 -2
  102. package/src/duckdb/src/execution/aggregate_hashtable.cpp +34 -18
  103. package/src/duckdb/src/execution/expression_executor.cpp +1 -1
  104. package/src/duckdb/src/execution/index/art/art.cpp +149 -139
  105. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +1 -1
  106. package/src/duckdb/src/execution/index/art/iterator.cpp +129 -207
  107. package/src/duckdb/src/execution/index/art/leaf.cpp +8 -37
  108. package/src/duckdb/src/execution/index/art/node.cpp +113 -120
  109. package/src/duckdb/src/execution/index/art/node16.cpp +1 -10
  110. package/src/duckdb/src/execution/index/art/node256.cpp +1 -9
  111. package/src/duckdb/src/execution/index/art/node4.cpp +12 -13
  112. package/src/duckdb/src/execution/index/art/node48.cpp +1 -11
  113. package/src/duckdb/src/execution/index/art/prefix.cpp +228 -350
  114. package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
  115. package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +1 -0
  116. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +8 -3
  117. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +32 -22
  118. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +512 -300
  119. package/src/duckdb/src/execution/operator/helper/physical_batch_collector.cpp +4 -3
  120. package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +5 -5
  121. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +444 -284
  122. package/src/duckdb/src/execution/operator/join/physical_comparison_join.cpp +1 -1
  123. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +21 -10
  124. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +28 -12
  125. package/src/duckdb/src/execution/operator/join/physical_join.cpp +1 -1
  126. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +23 -4
  127. package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +41 -5
  128. package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +100 -13
  129. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +1 -1
  130. package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +20 -0
  131. package/src/duckdb/src/execution/operator/persistent/csv_rejects_table.cpp +48 -0
  132. package/src/duckdb/src/execution/operator/persistent/parallel_csv_reader.cpp +2 -3
  133. package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +6 -4
  134. package/src/duckdb/src/execution/operator/persistent/physical_fixed_batch_copy.cpp +3 -3
  135. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  136. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -1
  137. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +19 -0
  138. package/src/duckdb/src/execution/operator/scan/physical_table_scan.cpp +7 -2
  139. package/src/duckdb/src/execution/operator/set/physical_cte.cpp +160 -0
  140. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +15 -5
  141. package/src/duckdb/src/execution/partitionable_hashtable.cpp +41 -6
  142. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +30 -5
  143. package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +43 -10
  144. package/src/duckdb/src/execution/physical_plan/plan_asof_join.cpp +56 -33
  145. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +17 -13
  146. package/src/duckdb/src/execution/physical_plan/plan_cte.cpp +33 -0
  147. package/src/duckdb/src/execution/physical_plan/plan_get.cpp +2 -2
  148. package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +25 -4
  149. package/src/duckdb/src/execution/physical_plan_generator.cpp +4 -0
  150. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +290 -43
  151. package/src/duckdb/src/execution/window_segment_tree.cpp +286 -129
  152. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +2 -1
  153. package/src/duckdb/src/function/cast/bit_cast.cpp +34 -2
  154. package/src/duckdb/src/function/cast/blob_cast.cpp +3 -0
  155. package/src/duckdb/src/function/cast/numeric_casts.cpp +2 -0
  156. package/src/duckdb/src/function/function.cpp +3 -1
  157. package/src/duckdb/src/function/pragma/pragma_queries.cpp +5 -0
  158. package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +212 -0
  159. package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +249 -0
  160. package/src/duckdb/src/function/scalar/compressed_materialization_functions.cpp +29 -0
  161. package/src/duckdb/src/function/scalar/list/list_resize.cpp +162 -0
  162. package/src/duckdb/src/function/scalar/nested_functions.cpp +1 -0
  163. package/src/duckdb/src/function/scalar/string/like.cpp +12 -4
  164. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +12 -5
  165. package/src/duckdb/src/function/table/arrow.cpp +19 -0
  166. package/src/duckdb/src/function/table/arrow_conversion.cpp +35 -1
  167. package/src/duckdb/src/function/table/copy_csv.cpp +8 -1
  168. package/src/duckdb/src/function/table/read_csv.cpp +100 -17
  169. package/src/duckdb/src/function/table/system/test_all_types.cpp +7 -0
  170. package/src/duckdb/src/function/table/system_functions.cpp +1 -0
  171. package/src/duckdb/src/function/table/table_scan.cpp +9 -0
  172. package/src/duckdb/src/function/table/version/pragma_version.cpp +46 -2
  173. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +1 -0
  174. package/src/duckdb/src/include/duckdb/common/allocator.hpp +2 -0
  175. package/src/duckdb/src/include/duckdb/common/bswap.hpp +42 -0
  176. package/src/duckdb/src/include/duckdb/common/dl.hpp +3 -1
  177. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +616 -584
  178. package/src/duckdb/src/include/duckdb/common/enums/cte_materialize.hpp +21 -0
  179. package/src/duckdb/src/include/duckdb/common/enums/joinref_type.hpp +2 -1
  180. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +2 -0
  181. package/src/duckdb/src/include/duckdb/common/enums/optimizer_type.hpp +2 -0
  182. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +2 -0
  183. package/src/duckdb/src/include/duckdb/common/extra_operator_info.hpp +27 -0
  184. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +219 -0
  185. package/src/duckdb/src/include/duckdb/common/file_system.hpp +2 -0
  186. package/src/duckdb/src/include/duckdb/common/hive_partitioning.hpp +1 -1
  187. package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +6 -4
  188. package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +10 -42
  189. package/src/duckdb/src/include/duckdb/common/mutex.hpp +3 -0
  190. package/src/duckdb/src/include/duckdb/common/opener_file_system.hpp +2 -2
  191. package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +43 -3
  192. package/src/duckdb/src/include/duckdb/common/operator/numeric_cast.hpp +10 -0
  193. package/src/duckdb/src/include/duckdb/common/radix.hpp +9 -20
  194. package/src/duckdb/src/include/duckdb/common/radix_partitioning.hpp +6 -21
  195. package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +3 -3
  196. package/src/duckdb/src/include/duckdb/common/sort/partition_state.hpp +23 -8
  197. package/src/duckdb/src/include/duckdb/common/string_util.hpp +11 -0
  198. package/src/duckdb/src/include/duckdb/common/types/batched_data_collection.hpp +3 -1
  199. package/src/duckdb/src/include/duckdb/common/types/bit.hpp +81 -0
  200. package/src/duckdb/src/include/duckdb/common/types/column/column_data_allocator.hpp +1 -1
  201. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection.hpp +6 -1
  202. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection_segment.hpp +1 -1
  203. package/src/duckdb/src/include/duckdb/common/types/column/column_data_scan_states.hpp +3 -1
  204. package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +1 -1
  205. package/src/duckdb/src/include/duckdb/common/types/date.hpp +7 -5
  206. package/src/duckdb/src/include/duckdb/common/types/list_segment.hpp +6 -8
  207. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +5 -2
  208. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_collection.hpp +1 -0
  209. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +3 -0
  210. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +9 -0
  211. package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -0
  212. package/src/duckdb/src/include/duckdb/common/types.hpp +1 -15
  213. package/src/duckdb/src/include/duckdb/common/virtual_file_system.hpp +38 -97
  214. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +4 -4
  215. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +3 -1
  216. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic_functions.hpp +3 -1
  217. package/src/duckdb/src/include/duckdb/core_functions/aggregate/distributive_functions.hpp +3 -1
  218. package/src/duckdb/src/include/duckdb/core_functions/aggregate/holistic_functions.hpp +3 -1
  219. package/src/duckdb/src/include/duckdb/core_functions/aggregate/nested_functions.hpp +3 -1
  220. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +1 -0
  221. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +3 -3
  222. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression_functions.hpp +3 -1
  223. package/src/duckdb/src/include/duckdb/core_functions/scalar/bit_functions.hpp +3 -1
  224. package/src/duckdb/src/include/duckdb/core_functions/scalar/blob_functions.hpp +3 -1
  225. package/src/duckdb/src/include/duckdb/core_functions/scalar/date_functions.hpp +31 -11
  226. package/src/duckdb/src/include/duckdb/core_functions/scalar/enum_functions.hpp +3 -1
  227. package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +3 -1
  228. package/src/duckdb/src/include/duckdb/core_functions/scalar/list_functions.hpp +3 -1
  229. package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +3 -1
  230. package/src/duckdb/src/include/duckdb/core_functions/scalar/math_functions.hpp +3 -1
  231. package/src/duckdb/src/include/duckdb/core_functions/scalar/operators_functions.hpp +3 -1
  232. package/src/duckdb/src/include/duckdb/core_functions/scalar/random_functions.hpp +3 -1
  233. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +3 -1
  234. package/src/duckdb/src/include/duckdb/core_functions/scalar/struct_functions.hpp +3 -1
  235. package/src/duckdb/src/include/duckdb/core_functions/scalar/union_functions.hpp +3 -1
  236. package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +21 -3
  237. package/src/duckdb/src/include/duckdb/execution/executor.hpp +3 -0
  238. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +4 -5
  239. package/src/duckdb/src/include/duckdb/execution/index/art/iterator.hpp +31 -27
  240. package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +6 -14
  241. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +4 -10
  242. package/src/duckdb/src/include/duckdb/execution/index/art/node16.hpp +3 -6
  243. package/src/duckdb/src/include/duckdb/execution/index/art/node256.hpp +3 -6
  244. package/src/duckdb/src/include/duckdb/execution/index/art/node4.hpp +5 -8
  245. package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +3 -6
  246. package/src/duckdb/src/include/duckdb/execution/index/art/prefix.hpp +63 -52
  247. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_asof_join.hpp +3 -10
  248. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_iejoin.hpp +1 -1
  249. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp +1 -1
  250. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_range_join.hpp +12 -1
  251. package/src/duckdb/src/include/duckdb/execution/operator/persistent/base_csv_reader.hpp +2 -2
  252. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_line_info.hpp +4 -3
  253. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_reader_options.hpp +8 -1
  254. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_rejects_table.hpp +36 -0
  255. package/src/duckdb/src/include/duckdb/execution/operator/persistent/parallel_csv_reader.hpp +1 -1
  256. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +10 -0
  257. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_table_scan.hpp +5 -1
  258. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +62 -0
  259. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +8 -2
  260. package/src/duckdb/src/include/duckdb/execution/partitionable_hashtable.hpp +5 -1
  261. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +3 -0
  262. package/src/duckdb/src/include/duckdb/execution/radix_partitioned_hashtable.hpp +10 -3
  263. package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +51 -40
  264. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +1 -1
  265. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +2 -2
  266. package/src/duckdb/src/include/duckdb/function/built_in_functions.hpp +1 -0
  267. package/src/duckdb/src/include/duckdb/function/scalar/compressed_materialization_functions.hpp +49 -0
  268. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +1 -1
  269. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +5 -0
  270. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +2 -0
  271. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +4 -0
  272. package/src/duckdb/src/include/duckdb/main/client_config.hpp +5 -0
  273. package/src/duckdb/src/include/duckdb/main/config.hpp +2 -0
  274. package/src/duckdb/src/include/duckdb/main/connection.hpp +1 -2
  275. package/src/duckdb/src/include/duckdb/main/extension/generated_extension_loader.hpp +22 -0
  276. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +2 -0
  277. package/src/duckdb/src/include/duckdb/main/relation/cross_product_relation.hpp +4 -1
  278. package/src/duckdb/src/include/duckdb/main/relation/join_relation.hpp +5 -2
  279. package/src/duckdb/src/include/duckdb/main/relation.hpp +4 -2
  280. package/src/duckdb/src/include/duckdb/main/settings.hpp +39 -1
  281. package/src/duckdb/src/include/duckdb/optimizer/column_binding_replacer.hpp +47 -0
  282. package/src/duckdb/src/include/duckdb/optimizer/compressed_materialization.hpp +132 -0
  283. package/src/duckdb/src/include/duckdb/optimizer/deliminator.hpp +13 -16
  284. package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +3 -0
  285. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +1 -1
  286. package/src/duckdb/src/include/duckdb/optimizer/join_order/estimated_properties.hpp +10 -1
  287. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_order_optimizer.hpp +1 -1
  288. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_relation.hpp +1 -1
  289. package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph.hpp +3 -0
  290. package/src/duckdb/src/include/duckdb/optimizer/matcher/set_matcher.hpp +13 -0
  291. package/src/duckdb/src/include/duckdb/optimizer/optimizer.hpp +3 -0
  292. package/src/duckdb/src/include/duckdb/optimizer/remove_duplicate_groups.hpp +40 -0
  293. package/src/duckdb/src/include/duckdb/optimizer/statistics_propagator.hpp +11 -3
  294. package/src/duckdb/src/include/duckdb/optimizer/topn_optimizer.hpp +2 -0
  295. package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +2 -0
  296. package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +5 -0
  297. package/src/duckdb/src/include/duckdb/parser/common_table_expression_info.hpp +2 -0
  298. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +3 -0
  299. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +3 -0
  300. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +3 -0
  301. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +3 -0
  302. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +3 -0
  303. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +3 -0
  304. package/src/duckdb/src/include/duckdb/parser/expression/default_expression.hpp +1 -0
  305. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +3 -0
  306. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +3 -0
  307. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +3 -0
  308. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +3 -0
  309. package/src/duckdb/src/include/duckdb/parser/query_node/cte_node.hpp +54 -0
  310. package/src/duckdb/src/include/duckdb/parser/query_node/list.hpp +1 -0
  311. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -1
  312. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +1 -0
  313. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  314. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +3 -0
  315. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +1 -0
  316. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +15 -8
  317. package/src/duckdb/src/include/duckdb/planner/binder.hpp +12 -5
  318. package/src/duckdb/src/include/duckdb/planner/bound_tokens.hpp +1 -0
  319. package/src/duckdb/src/include/duckdb/planner/column_binding.hpp +4 -0
  320. package/src/duckdb/src/include/duckdb/planner/constraints/bound_unique_constraint.hpp +3 -3
  321. package/src/duckdb/src/include/duckdb/planner/expression_binder/lateral_binder.hpp +0 -2
  322. package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +1 -0
  323. package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +2 -1
  324. package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +5 -5
  325. package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +7 -2
  326. package/src/duckdb/src/include/duckdb/planner/operator/logical_dependent_join.hpp +43 -0
  327. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +4 -0
  328. package/src/duckdb/src/include/duckdb/planner/operator/logical_materialized_cte.hpp +49 -0
  329. package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +5 -4
  330. package/src/duckdb/src/include/duckdb/planner/query_node/bound_cte_node.hpp +44 -0
  331. package/src/duckdb/src/include/duckdb/planner/query_node/list.hpp +1 -0
  332. package/src/duckdb/src/include/duckdb/planner/subquery/flatten_dependent_join.hpp +2 -2
  333. package/src/duckdb/src/include/duckdb/planner/subquery/has_correlated_expressions.hpp +4 -1
  334. package/src/duckdb/src/include/duckdb/planner/subquery/recursive_dependent_join_planner.hpp +31 -0
  335. package/src/duckdb/src/include/duckdb/planner/subquery/rewrite_correlated_expressions.hpp +8 -2
  336. package/src/duckdb/src/include/duckdb/planner/tableref/bound_cteref.hpp +5 -2
  337. package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +1 -1
  338. package/src/duckdb/src/include/duckdb/storage/block_manager.hpp +3 -3
  339. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +1 -1
  340. package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +22 -0
  341. package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +2 -0
  342. package/src/duckdb/src/include/duckdb/storage/statistics/string_stats.hpp +4 -0
  343. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +3 -0
  344. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +3 -2
  345. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +1 -3
  346. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +2 -3
  347. package/src/duckdb/src/include/duckdb.h +28 -0
  348. package/src/duckdb/src/main/capi/arrow-c.cpp +155 -1
  349. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +1 -1
  350. package/src/duckdb/src/main/config.cpp +4 -0
  351. package/src/duckdb/src/main/database.cpp +1 -1
  352. package/src/duckdb/src/main/extension/extension_helper.cpp +93 -88
  353. package/src/duckdb/src/main/extension/extension_install.cpp +9 -0
  354. package/src/duckdb/src/main/extension/extension_load.cpp +10 -1
  355. package/src/duckdb/src/main/relation/cross_product_relation.cpp +4 -3
  356. package/src/duckdb/src/main/relation/join_relation.cpp +5 -5
  357. package/src/duckdb/src/main/relation.cpp +6 -5
  358. package/src/duckdb/src/main/settings/settings.cpp +79 -18
  359. package/src/duckdb/src/optimizer/column_binding_replacer.cpp +43 -0
  360. package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +1 -2
  361. package/src/duckdb/src/optimizer/compressed_materialization/compress_aggregate.cpp +140 -0
  362. package/src/duckdb/src/optimizer/compressed_materialization/compress_distinct.cpp +42 -0
  363. package/src/duckdb/src/optimizer/compressed_materialization/compress_order.cpp +65 -0
  364. package/src/duckdb/src/optimizer/compressed_materialization.cpp +478 -0
  365. package/src/duckdb/src/optimizer/deliminator.cpp +176 -321
  366. package/src/duckdb/src/optimizer/filter_pushdown.cpp +9 -0
  367. package/src/duckdb/src/optimizer/join_order/estimated_properties.cpp +7 -0
  368. package/src/duckdb/src/optimizer/join_order/join_node.cpp +2 -2
  369. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +113 -82
  370. package/src/duckdb/src/optimizer/join_order/join_relation_set.cpp +2 -6
  371. package/src/duckdb/src/optimizer/join_order/query_graph.cpp +22 -14
  372. package/src/duckdb/src/optimizer/optimizer.cpp +49 -14
  373. package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +5 -5
  374. package/src/duckdb/src/optimizer/pushdown/pushdown_get.cpp +0 -1
  375. package/src/duckdb/src/optimizer/remove_duplicate_groups.cpp +127 -0
  376. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +4 -0
  377. package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +154 -15
  378. package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +65 -8
  379. package/src/duckdb/src/optimizer/statistics/operator/propagate_order.cpp +1 -1
  380. package/src/duckdb/src/optimizer/statistics_propagator.cpp +7 -5
  381. package/src/duckdb/src/optimizer/topn_optimizer.cpp +20 -10
  382. package/src/duckdb/src/parallel/executor.cpp +15 -0
  383. package/src/duckdb/src/parallel/task_scheduler.cpp +11 -2
  384. package/src/duckdb/src/parser/common_table_expression_info.cpp +2 -0
  385. package/src/duckdb/src/parser/expression/between_expression.cpp +3 -15
  386. package/src/duckdb/src/parser/expression/case_expression.cpp +0 -13
  387. package/src/duckdb/src/parser/expression/cast_expression.cpp +3 -14
  388. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -13
  389. package/src/duckdb/src/parser/expression/columnref_expression.cpp +3 -12
  390. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -13
  391. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +0 -12
  392. package/src/duckdb/src/parser/expression/constant_expression.cpp +3 -11
  393. package/src/duckdb/src/parser/expression/default_expression.cpp +0 -4
  394. package/src/duckdb/src/parser/expression/function_expression.cpp +3 -32
  395. package/src/duckdb/src/parser/expression/lambda_expression.cpp +4 -14
  396. package/src/duckdb/src/parser/expression/operator_expression.cpp +0 -12
  397. package/src/duckdb/src/parser/expression/parameter_expression.cpp +0 -12
  398. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +4 -11
  399. package/src/duckdb/src/parser/expression/star_expression.cpp +0 -19
  400. package/src/duckdb/src/parser/expression/subquery_expression.cpp +0 -18
  401. package/src/duckdb/src/parser/expression/window_expression.cpp +3 -39
  402. package/src/duckdb/src/parser/parsed_expression.cpp +0 -70
  403. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +7 -0
  404. package/src/duckdb/src/parser/parser.cpp +8 -2
  405. package/src/duckdb/src/parser/query_node/cte_node.cpp +58 -0
  406. package/src/duckdb/src/parser/query_node/recursive_cte_node.cpp +0 -19
  407. package/src/duckdb/src/parser/query_node/select_node.cpp +0 -29
  408. package/src/duckdb/src/parser/query_node/set_operation_node.cpp +0 -15
  409. package/src/duckdb/src/parser/query_node.cpp +15 -37
  410. package/src/duckdb/src/parser/result_modifier.cpp +0 -74
  411. package/src/duckdb/src/parser/tableref/basetableref.cpp +0 -19
  412. package/src/duckdb/src/parser/tableref/emptytableref.cpp +0 -4
  413. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +0 -15
  414. package/src/duckdb/src/parser/tableref/joinref.cpp +3 -23
  415. package/src/duckdb/src/parser/tableref/pivotref.cpp +0 -23
  416. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -13
  417. package/src/duckdb/src/parser/tableref/table_function.cpp +0 -15
  418. package/src/duckdb/src/parser/tableref.cpp +0 -44
  419. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +55 -3
  420. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +2 -0
  421. package/src/duckdb/src/parser/transform/expression/transform_multi_assign_reference.cpp +44 -0
  422. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +19 -1
  423. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +13 -0
  424. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +6 -1
  425. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +6 -1
  426. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -2
  427. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +14 -11
  428. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +11 -2
  429. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +6 -1
  430. package/src/duckdb/src/parser/transformer.cpp +15 -0
  431. package/src/duckdb/src/planner/binder/query_node/bind_cte_node.cpp +64 -0
  432. package/src/duckdb/src/planner/binder/query_node/plan_cte_node.cpp +26 -0
  433. package/src/duckdb/src/planner/binder/query_node/plan_recursive_cte_node.cpp +5 -5
  434. package/src/duckdb/src/planner/binder/query_node/plan_setop.cpp +4 -4
  435. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +32 -29
  436. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +5 -4
  437. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +11 -2
  438. package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +32 -5
  439. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +116 -49
  440. package/src/duckdb/src/planner/binder/tableref/plan_cteref.cpp +1 -1
  441. package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +64 -26
  442. package/src/duckdb/src/planner/binder/tableref/plan_subqueryref.cpp +3 -3
  443. package/src/duckdb/src/planner/binder.cpp +44 -31
  444. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +1 -1
  445. package/src/duckdb/src/planner/expression_binder/lateral_binder.cpp +4 -31
  446. package/src/duckdb/src/planner/expression_binder.cpp +3 -0
  447. package/src/duckdb/src/planner/expression_iterator.cpp +6 -0
  448. package/src/duckdb/src/planner/logical_operator.cpp +5 -0
  449. package/src/duckdb/src/planner/logical_operator_visitor.cpp +2 -0
  450. package/src/duckdb/src/planner/operator/logical_cteref.cpp +3 -1
  451. package/src/duckdb/src/planner/operator/logical_dependent_join.cpp +26 -0
  452. package/src/duckdb/src/planner/operator/logical_get.cpp +9 -4
  453. package/src/duckdb/src/planner/operator/logical_materialized_cte.cpp +21 -0
  454. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +90 -38
  455. package/src/duckdb/src/planner/subquery/has_correlated_expressions.cpp +22 -7
  456. package/src/duckdb/src/planner/subquery/rewrite_correlated_expressions.cpp +65 -7
  457. package/src/duckdb/src/storage/arena_allocator.cpp +1 -2
  458. package/src/duckdb/src/storage/buffer/block_manager.cpp +3 -0
  459. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -0
  460. package/src/duckdb/src/storage/compression/rle.cpp +0 -1
  461. package/src/duckdb/src/storage/data_table.cpp +1 -1
  462. package/src/duckdb/src/storage/local_storage.cpp +3 -3
  463. package/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp +340 -0
  464. package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +122 -0
  465. package/src/duckdb/src/storage/serialization/serialize_result_modifier.cpp +86 -0
  466. package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +166 -0
  467. package/src/duckdb/src/storage/serialization/serialize_types.cpp +127 -0
  468. package/src/duckdb/src/storage/single_file_block_manager.cpp +23 -0
  469. package/src/duckdb/src/storage/statistics/string_stats.cpp +21 -2
  470. package/src/duckdb/src/storage/storage_info.cpp +1 -1
  471. package/src/duckdb/src/storage/table/chunk_info.cpp +17 -0
  472. package/src/duckdb/src/storage/table/row_group.cpp +25 -9
  473. package/src/duckdb/src/storage/table/row_group_collection.cpp +19 -18
  474. package/src/duckdb/third_party/concurrentqueue/concurrentqueue.h +2 -2
  475. package/src/duckdb/third_party/concurrentqueue/lightweightsemaphore.h +76 -0
  476. package/src/duckdb/third_party/fast_float/fast_float/fast_float.h +2 -0
  477. package/src/duckdb/third_party/httplib/httplib.hpp +10 -1
  478. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +9 -0
  479. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +2 -1
  480. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +12487 -12331
  481. package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +6 -6
  482. package/src/duckdb/ub_src_common.cpp +2 -0
  483. package/src/duckdb/ub_src_execution_index_art.cpp +0 -2
  484. package/src/duckdb/ub_src_execution_operator_persistent.cpp +2 -0
  485. package/src/duckdb/ub_src_execution_operator_set.cpp +2 -0
  486. package/src/duckdb/ub_src_execution_physical_plan.cpp +2 -0
  487. package/src/duckdb/ub_src_function_scalar.cpp +2 -0
  488. package/src/duckdb/ub_src_function_scalar_compressed_materialization.cpp +4 -0
  489. package/src/duckdb/ub_src_function_scalar_list.cpp +2 -0
  490. package/src/duckdb/ub_src_optimizer.cpp +6 -0
  491. package/src/duckdb/ub_src_optimizer_compressed_materialization.cpp +6 -0
  492. package/src/duckdb/ub_src_optimizer_statistics_expression.cpp +0 -2
  493. package/src/duckdb/ub_src_parser_query_node.cpp +2 -0
  494. package/src/duckdb/ub_src_parser_transform_expression.cpp +2 -0
  495. package/src/duckdb/ub_src_planner_binder_query_node.cpp +4 -0
  496. package/src/duckdb/ub_src_planner_operator.cpp +4 -0
  497. package/src/duckdb/ub_src_storage_serialization.cpp +10 -0
  498. package/src/statement.cpp +10 -3
  499. package/test/columns.test.ts +24 -1
  500. package/test/test_all_types.test.ts +234 -0
  501. package/tsconfig.json +1 -0
  502. package/src/duckdb/src/execution/index/art/prefix_segment.cpp +0 -42
  503. package/src/duckdb/src/include/duckdb/execution/index/art/prefix_segment.hpp +0 -40
  504. package/src/duckdb/src/optimizer/statistics/expression/propagate_and_compress.cpp +0 -118
@@ -0,0 +1,36 @@
1
+ #pragma once
2
+
3
+ #include "duckdb.hpp"
4
+ #ifndef DUCKDB_AMALGAMATION
5
+ #include "duckdb/storage/object_cache.hpp"
6
+ #endif
7
+
8
+ namespace duckdb {
9
+
10
+ struct ReadCSVData;
11
+
12
+ class CSVRejectsTable : public ObjectCacheEntry {
13
+ public:
14
+ CSVRejectsTable(string name) : name(name), count(0) {
15
+ }
16
+ ~CSVRejectsTable() override = default;
17
+ mutex write_lock;
18
+ string name;
19
+ idx_t count;
20
+
21
+ static shared_ptr<CSVRejectsTable> GetOrCreate(ClientContext &context, const string &name);
22
+
23
+ void InitializeTable(ClientContext &context, const ReadCSVData &options);
24
+ TableCatalogEntry &GetTable(ClientContext &context);
25
+
26
+ public:
27
+ static string ObjectType() {
28
+ return "csv_rejects_table_cache";
29
+ }
30
+
31
+ string GetObjectType() override {
32
+ return ObjectType();
33
+ }
34
+ };
35
+
36
+ } // namespace duckdb
@@ -137,7 +137,7 @@ public:
137
137
  //! Extract a single DataChunk from the CSV file and stores it in insert_chunk
138
138
  void ParseCSV(DataChunk &insert_chunk);
139
139
 
140
- idx_t GetLineError(idx_t line_error, idx_t buffer_idx) override;
140
+ idx_t GetLineError(idx_t line_error, idx_t buffer_idx, bool stop_at_first = true) override;
141
141
 
142
142
  private:
143
143
  //! Initialize Parser
@@ -22,11 +22,19 @@ public:
22
22
  PhysicalColumnDataScan(vector<LogicalType> types, PhysicalOperatorType op_type, idx_t estimated_cardinality,
23
23
  unique_ptr<ColumnDataCollection> owned_collection = nullptr);
24
24
 
25
+ PhysicalColumnDataScan(vector<LogicalType> types, PhysicalOperatorType op_type, idx_t estimated_cardinality,
26
+ idx_t cte_index)
27
+ : PhysicalOperator(op_type, std::move(types), estimated_cardinality), collection(nullptr),
28
+ cte_index(cte_index) {
29
+ }
30
+
25
31
  // the column data collection to scan
26
32
  optional_ptr<ColumnDataCollection> collection;
27
33
  //! Owned column data collection, if any
28
34
  unique_ptr<ColumnDataCollection> owned_collection;
29
35
 
36
+ idx_t cte_index;
37
+
30
38
  public:
31
39
  unique_ptr<GlobalSourceState> GetGlobalSourceState(ClientContext &context) const override;
32
40
  SourceResultType GetData(ExecutionContext &context, DataChunk &chunk, OperatorSourceInput &input) const override;
@@ -35,6 +43,8 @@ public:
35
43
  return true;
36
44
  }
37
45
 
46
+ string ParamsToString() const override;
47
+
38
48
  public:
39
49
  void BuildPipelines(Pipeline &current, MetaPipeline &meta_pipeline) override;
40
50
  };
@@ -12,6 +12,7 @@
12
12
  #include "duckdb/function/table_function.hpp"
13
13
  #include "duckdb/planner/table_filter.hpp"
14
14
  #include "duckdb/storage/data_table.hpp"
15
+ #include "duckdb/common/extra_operator_info.hpp"
15
16
 
16
17
  namespace duckdb {
17
18
 
@@ -28,7 +29,8 @@ public:
28
29
  //! Table scan that immediately projects out filter columns that are unused in the remainder of the query plan
29
30
  PhysicalTableScan(vector<LogicalType> types, TableFunction function, unique_ptr<FunctionData> bind_data,
30
31
  vector<LogicalType> returned_types, vector<column_t> column_ids, vector<idx_t> projection_ids,
31
- vector<string> names, unique_ptr<TableFilterSet> table_filters, idx_t estimated_cardinality);
32
+ vector<string> names, unique_ptr<TableFilterSet> table_filters, idx_t estimated_cardinality,
33
+ ExtraOperatorInfo extra_info);
32
34
 
33
35
  //! The table function
34
36
  TableFunction function;
@@ -44,6 +46,8 @@ public:
44
46
  vector<string> names;
45
47
  //! The table filters
46
48
  unique_ptr<TableFilterSet> table_filters;
49
+ //! Currently stores any filters applied to file names (as strings)
50
+ ExtraOperatorInfo extra_info;
47
51
 
48
52
  public:
49
53
  string GetName() const override;
@@ -0,0 +1,62 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/execution/operator/set/physical_cte.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #pragma once
10
+
11
+ #include "duckdb/common/types/column/column_data_collection.hpp"
12
+ #include "duckdb/execution/physical_operator.hpp"
13
+
14
+ namespace duckdb {
15
+
16
+ class RecursiveCTEState;
17
+
18
+ class PhysicalCTE : public PhysicalOperator {
19
+ public:
20
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::CTE;
21
+
22
+ public:
23
+ PhysicalCTE(string ctename, idx_t table_index, vector<LogicalType> types, unique_ptr<PhysicalOperator> top,
24
+ unique_ptr<PhysicalOperator> bottom, idx_t estimated_cardinality);
25
+ ~PhysicalCTE() override;
26
+
27
+ std::shared_ptr<ColumnDataCollection> working_table;
28
+ shared_ptr<MetaPipeline> recursive_meta_pipeline;
29
+
30
+ idx_t table_index;
31
+ string ctename;
32
+
33
+ public:
34
+ // Source interface
35
+ SourceResultType GetData(ExecutionContext &context, DataChunk &chunk, OperatorSourceInput &input) const override;
36
+
37
+ bool IsSource() const override {
38
+ return true;
39
+ }
40
+
41
+ public:
42
+ // Sink interface
43
+ SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
44
+
45
+ unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
46
+
47
+ bool IsSink() const override {
48
+ return true;
49
+ }
50
+
51
+ string ParamsToString() const override;
52
+
53
+ public:
54
+ void BuildPipelines(Pipeline &current, MetaPipeline &meta_pipeline) override;
55
+
56
+ vector<const_reference<PhysicalOperator>> GetSources() const override;
57
+
58
+ private:
59
+ void ExecuteRecursivePipelines(ExecutionContext &context) const;
60
+ };
61
+
62
+ } // namespace duckdb
@@ -20,10 +20,14 @@ public:
20
20
  static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::RECURSIVE_CTE;
21
21
 
22
22
  public:
23
- PhysicalRecursiveCTE(vector<LogicalType> types, bool union_all, unique_ptr<PhysicalOperator> top,
24
- unique_ptr<PhysicalOperator> bottom, idx_t estimated_cardinality);
23
+ PhysicalRecursiveCTE(string ctename, idx_t table_index, vector<LogicalType> types, bool union_all,
24
+ unique_ptr<PhysicalOperator> top, unique_ptr<PhysicalOperator> bottom,
25
+ idx_t estimated_cardinality);
25
26
  ~PhysicalRecursiveCTE() override;
26
27
 
28
+ string ctename;
29
+ idx_t table_index;
30
+
27
31
  bool union_all;
28
32
  std::shared_ptr<ColumnDataCollection> working_table;
29
33
  shared_ptr<MetaPipeline> recursive_meta_pipeline;
@@ -46,6 +50,8 @@ public:
46
50
  return true;
47
51
  }
48
52
 
53
+ string ParamsToString() const override;
54
+
49
55
  public:
50
56
  void BuildPipelines(Pipeline &current, MetaPipeline &meta_pipeline) override;
51
57
 
@@ -33,14 +33,18 @@ public:
33
33
  vector<BoundAggregateExpression *> bindings_p);
34
34
 
35
35
  idx_t AddChunk(DataChunk &groups, DataChunk &payload, bool do_partition, const unsafe_vector<idx_t> &filter);
36
- void Partition();
36
+ void Partition(bool sink_done);
37
37
  bool IsPartitioned();
38
38
 
39
39
  HashTableList GetPartition(idx_t partition);
40
40
  HashTableList GetUnpartitioned();
41
+ idx_t GetPartitionCount(idx_t partition) const;
42
+ idx_t GetPartitionSize(idx_t partition) const;
41
43
 
42
44
  void Finalize();
43
45
 
46
+ void Append(GroupedAggregateHashTable &ht);
47
+
44
48
  private:
45
49
  ClientContext &context;
46
50
  Allocator &allocator;
@@ -32,6 +32,8 @@ public:
32
32
  //! Recursive CTEs require at least one ChunkScan, referencing the working_table.
33
33
  //! This data structure is used to establish it.
34
34
  unordered_map<idx_t, std::shared_ptr<ColumnDataCollection>> recursive_cte_tables;
35
+ //! Materialized CTE ids must be collected.
36
+ unordered_set<idx_t> materialized_ctes;
35
37
 
36
38
  public:
37
39
  //! Creates a plan from the logical operator. This involves resolving column bindings and generating physical
@@ -87,6 +89,7 @@ protected:
87
89
  unique_ptr<PhysicalOperator> CreatePlan(LogicalSimple &op);
88
90
  unique_ptr<PhysicalOperator> CreatePlan(LogicalUnnest &op);
89
91
  unique_ptr<PhysicalOperator> CreatePlan(LogicalRecursiveCTE &op);
92
+ unique_ptr<PhysicalOperator> CreatePlan(LogicalMaterializedCTE &op);
90
93
  unique_ptr<PhysicalOperator> CreatePlan(LogicalCTERef &op);
91
94
  unique_ptr<PhysicalOperator> CreatePlan(LogicalPivot &op);
92
95
 
@@ -8,10 +8,10 @@
8
8
 
9
9
  #pragma once
10
10
 
11
+ #include "duckdb/execution/operator/aggregate/grouped_aggregate_data.hpp"
11
12
  #include "duckdb/execution/partitionable_hashtable.hpp"
12
- #include "duckdb/parser/group_by_node.hpp"
13
13
  #include "duckdb/execution/physical_operator.hpp"
14
- #include "duckdb/execution/operator/aggregate/grouped_aggregate_data.hpp"
14
+ #include "duckdb/parser/group_by_node.hpp"
15
15
 
16
16
  namespace duckdb {
17
17
  class BufferManager;
@@ -57,11 +57,18 @@ public:
57
57
  OperatorSourceInput &input) const;
58
58
 
59
59
  static void SetMultiScan(GlobalSinkState &state);
60
- bool ForceSingleHT(GlobalSinkState &state) const;
60
+ static bool ForceSingleHT(GlobalSinkState &state);
61
+ static bool AnyPartitioned(GlobalSinkState &state);
62
+ static void GetRepartitionInfo(ClientContext &context, GlobalSinkState &state, idx_t &repartition_radix_bits,
63
+ idx_t &concurrent_repartitions, idx_t &tasks_per_partition);
61
64
 
62
65
  private:
63
66
  void SetGroupingValues();
64
67
  void PopulateGroupChunk(DataChunk &group_chunk, DataChunk &input_chunk) const;
68
+ void InitializeFinalizedHTs(ClientContext &context, GlobalSinkState &state) const;
69
+ void ScheduleRepartitionTasks(Executor &executor, const shared_ptr<Event> &event, GlobalSinkState &state,
70
+ vector<shared_ptr<Task>> &tasks, const idx_t repartition_radix_bits,
71
+ const idx_t concurrent_repartitions, const idx_t tasks_per_partition) const;
65
72
  };
66
73
 
67
74
  } // namespace duckdb
@@ -18,12 +18,13 @@ namespace duckdb {
18
18
 
19
19
  class WindowAggregateState {
20
20
  public:
21
- WindowAggregateState(AggregateObject aggr, const LogicalType &result_type_p);
21
+ WindowAggregateState(AggregateObject aggr, const LogicalType &result_type_p, idx_t partition_count);
22
22
  virtual ~WindowAggregateState();
23
23
 
24
24
  virtual void Sink(DataChunk &payload_chunk, SelectionVector *filter_sel, idx_t filtered);
25
25
  virtual void Finalize();
26
26
  virtual void Compute(Vector &result, idx_t rid, idx_t start, idx_t end);
27
+ virtual void Evaluate(const idx_t *begins, const idx_t *ends, Vector &result, idx_t count);
27
28
 
28
29
  protected:
29
30
  void AggregateInit();
@@ -33,20 +34,28 @@ protected:
33
34
  //! The result type of the window function
34
35
  LogicalType result_type;
35
36
 
37
+ //! The cardinality of the partition
38
+ const idx_t partition_count;
39
+ //! The size of a single aggregate state
40
+ const idx_t state_size;
36
41
  //! Data pointer that contains a single state, used for intermediate window segment aggregation
37
42
  vector<data_t> state;
38
43
  //! Reused result state container for the window functions
39
- Vector statev;
40
- //! A vector of pointers to "state", used for intermediate window segment aggregation
41
- Vector statep;
42
- //! Input data chunk, used for intermediate window segment aggregation
44
+ Vector statef;
45
+ //! Partition data chunk
43
46
  DataChunk inputs;
47
+
48
+ //! The filtered rows in inputs.
49
+ vector<validity_t> filter_bits;
50
+ ValidityMask filter_mask;
51
+ idx_t filter_pos;
52
+
53
+ //! Allocator for aggregates
54
+ ArenaAllocator allocator;
44
55
  };
45
56
 
46
57
  class WindowConstantAggregate : public WindowAggregateState {
47
58
  public:
48
- static bool IsConstantAggregate(const BoundWindowExpression &wexpr);
49
-
50
59
  WindowConstantAggregate(AggregateObject aggr, const LogicalType &result_type_p, const ValidityMask &partition_mask,
51
60
  const idx_t count);
52
61
  ~WindowConstantAggregate() override {
@@ -54,7 +63,7 @@ public:
54
63
 
55
64
  void Sink(DataChunk &payload_chunk, SelectionVector *filter_sel, idx_t filtered) override;
56
65
  void Finalize() override;
57
- void Compute(Vector &result, idx_t rid, idx_t start, idx_t end) override;
66
+ void Evaluate(const idx_t *begins, const idx_t *ends, Vector &result, idx_t count) override;
58
67
 
59
68
  private:
60
69
  //! Partition starts
@@ -65,52 +74,57 @@ private:
65
74
  idx_t partition;
66
75
  //! The current input row being built/read
67
76
  idx_t row;
77
+ //! A vector of pointers to "state", used for intermediate window segment aggregation
78
+ Vector statep;
79
+ //! Shared SV for evaluation
80
+ SelectionVector matches;
81
+ };
82
+
83
+ class WindowCustomAggregate : public WindowAggregateState {
84
+ public:
85
+ WindowCustomAggregate(AggregateObject aggr, const LogicalType &result_type_p, idx_t partition_count);
86
+ ~WindowCustomAggregate() override;
87
+
88
+ void Compute(Vector &result, idx_t rid, idx_t start, idx_t end) override;
89
+
90
+ private:
91
+ //! The frame boundaries, used for the window functions
92
+ FrameBounds frame;
68
93
  };
69
94
 
70
- class WindowSegmentTree {
95
+ class WindowSegmentTree : public WindowAggregateState {
71
96
  public:
72
97
  using FrameBounds = std::pair<idx_t, idx_t>;
73
98
 
74
- WindowSegmentTree(AggregateObject aggr, const LogicalType &result_type, DataChunk *input,
75
- const ValidityMask &filter_mask, WindowAggregationMode mode);
76
- ~WindowSegmentTree();
99
+ WindowSegmentTree(AggregateObject aggr, const LogicalType &result_type, idx_t count, WindowAggregationMode mode_p);
100
+ ~WindowSegmentTree() override;
77
101
 
78
- //! First row contains the result.
79
- void Compute(Vector &result, idx_t rid, idx_t start, idx_t end);
102
+ void Finalize() override;
103
+ void Evaluate(const idx_t *begins, const idx_t *ends, Vector &result, idx_t count) override;
80
104
 
81
105
  private:
82
106
  void ConstructTree();
83
- void ExtractFrame(idx_t begin, idx_t end);
84
- void WindowSegmentValue(idx_t l_idx, idx_t begin, idx_t end);
85
- void AggregateInit();
86
- void AggegateFinal(Vector &result, idx_t rid);
107
+ void ExtractFrame(idx_t begin, idx_t end, data_ptr_t current_state);
108
+ void FlushStates(bool combining);
109
+ void WindowSegmentValue(idx_t l_idx, idx_t begin, idx_t end, data_ptr_t current_state);
87
110
 
88
- //! Use the window API, if available
89
- inline bool UseWindowAPI() const {
90
- return mode < WindowAggregationMode::COMBINE;
91
- }
92
111
  //! Use the combine API, if available
93
112
  inline bool UseCombineAPI() const {
94
113
  return mode < WindowAggregationMode::SEPARATE;
95
114
  }
96
115
 
97
- //! The aggregate that the window function is computed over
98
- AggregateObject aggr;
99
- //! The result type of the window function
100
- LogicalType result_type;
101
-
102
- //! Data pointer that contains a single state, used for intermediate window segment aggregation
103
- vector<data_t> state;
104
- //! Input data chunk, used for intermediate window segment aggregation
105
- DataChunk inputs;
116
+ //! Input data chunk, used for leaf segment aggregation
117
+ DataChunk leaves;
106
118
  //! The filtered rows in inputs.
107
119
  SelectionVector filter_sel;
108
120
  //! A vector of pointers to "state", used for intermediate window segment aggregation
109
121
  Vector statep;
110
122
  //! The frame boundaries, used for the window functions
111
123
  FrameBounds frame;
112
- //! Reused result state container for the window functions
113
- Vector statev;
124
+ //! Reused state pointers for combining segment tree levels
125
+ Vector statel;
126
+ //! Count of buffered values
127
+ idx_t flush_count;
114
128
 
115
129
  //! The actual window segment tree: an array of aggregate states that represent all the intermediate nodes
116
130
  unsafe_unique_array<data_t> levels_flat_native;
@@ -120,17 +134,14 @@ private:
120
134
  //! The total number of internal nodes of the tree, stored in levels_flat_native
121
135
  idx_t internal_nodes;
122
136
 
123
- //! The (sorted) input chunk collection on which the tree is built
124
- DataChunk *input_ref;
125
-
126
- //! The filtered rows in input_ref.
127
- const ValidityMask &filter_mask;
128
-
129
137
  //! Use the window API, if available
130
138
  WindowAggregationMode mode;
131
139
 
140
+ //! Aggregate allocator
141
+ ArenaAllocator allocator;
142
+
132
143
  // TREE_FANOUT needs to cleanly divide STANDARD_VECTOR_SIZE
133
- static constexpr idx_t TREE_FANOUT = 64;
144
+ static constexpr idx_t TREE_FANOUT = 16;
134
145
  };
135
146
 
136
147
  } // namespace duckdb
@@ -8,10 +8,10 @@
8
8
 
9
9
  #pragma once
10
10
 
11
+ #include "duckdb/common/vector_operations/aggregate_executor.hpp"
11
12
  #include "duckdb/function/aggregate_state.hpp"
12
13
  #include "duckdb/planner/bound_result_modifier.hpp"
13
14
  #include "duckdb/planner/expression.hpp"
14
- #include "duckdb/common/vector_operations/aggregate_executor.hpp"
15
15
 
16
16
  namespace duckdb {
17
17
 
@@ -21,11 +21,11 @@ enum class AggregateOrderDependent : uint8_t { ORDER_DEPENDENT = 1, NOT_ORDER_DE
21
21
  class BoundAggregateExpression;
22
22
 
23
23
  struct AggregateInputData {
24
- AggregateInputData(optional_ptr<FunctionData> bind_data_p, Allocator &allocator_p)
24
+ AggregateInputData(optional_ptr<FunctionData> bind_data_p, ArenaAllocator &allocator_p)
25
25
  : bind_data(bind_data_p), allocator(allocator_p) {
26
26
  }
27
27
  optional_ptr<FunctionData> bind_data;
28
- Allocator &allocator;
28
+ ArenaAllocator &allocator;
29
29
  };
30
30
 
31
31
  struct AggregateUnaryInput {
@@ -57,6 +57,7 @@ private:
57
57
  void RegisterDistributiveAggregates();
58
58
 
59
59
  // scalar functions
60
+ void RegisterCompressedMaterializationFunctions();
60
61
  void RegisterGenericFunctions();
61
62
  void RegisterOperators();
62
63
  void RegisterStringFunctions();
@@ -0,0 +1,49 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/function/scalar/compressed_materialization_functions.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #pragma once
10
+
11
+ #include "duckdb/function/built_in_functions.hpp"
12
+ #include "duckdb/function/function_set.hpp"
13
+
14
+ namespace duckdb {
15
+
16
+ struct CompressedMaterializationFunctions {
17
+ //! The types we compress integral types to
18
+ static const vector<LogicalType> IntegralTypes();
19
+ //! The types we compress strings to
20
+ static const vector<LogicalType> StringTypes();
21
+
22
+ static unique_ptr<FunctionData> Bind(ClientContext &context, ScalarFunction &bound_function,
23
+ vector<unique_ptr<Expression>> &arguments);
24
+ };
25
+
26
+ //! Needed for (de)serialization without binding
27
+ enum class CompressedMaterializationDirection : uint8_t { INVALID = 0, COMPRESS = 1, DECOMPRESS = 2 };
28
+
29
+ struct CMIntegralCompressFun {
30
+ static ScalarFunction GetFunction(const LogicalType &input_type, const LogicalType &result_type);
31
+ static void RegisterFunction(BuiltinFunctions &set);
32
+ };
33
+
34
+ struct CMIntegralDecompressFun {
35
+ static ScalarFunction GetFunction(const LogicalType &input_type, const LogicalType &result_type);
36
+ static void RegisterFunction(BuiltinFunctions &set);
37
+ };
38
+
39
+ struct CMStringCompressFun {
40
+ static ScalarFunction GetFunction(const LogicalType &result_type);
41
+ static void RegisterFunction(BuiltinFunctions &set);
42
+ };
43
+
44
+ struct CMStringDecompressFun {
45
+ static ScalarFunction GetFunction(const LogicalType &input_type);
46
+ static void RegisterFunction(BuiltinFunctions &set);
47
+ };
48
+
49
+ } // namespace duckdb
@@ -130,7 +130,7 @@ void ListContainsOrPosition(DataChunk &args, Vector &result) {
130
130
  TemplatedContainsOrPosition<int8_t, T, OP, LIST_ACCESSOR>(args, result, true);
131
131
  break;
132
132
  default:
133
- throw NotImplementedException("This function has not been implemented for physical type %s",
133
+ throw NotImplementedException("This function has not been implemented for logical type %s",
134
134
  TypeIdToString(physical_type));
135
135
  }
136
136
  }
@@ -99,6 +99,11 @@ struct ListPositionFun {
99
99
  static void RegisterFunction(BuiltinFunctions &set);
100
100
  };
101
101
 
102
+ struct ListResizeFun {
103
+ static ScalarFunction GetFunction();
104
+ static void RegisterFunction(BuiltinFunctions &set);
105
+ };
106
+
102
107
  struct StructExtractFun {
103
108
  static ScalarFunction GetFunction();
104
109
  static void RegisterFunction(BuiltinFunctions &set);
@@ -83,12 +83,14 @@ struct LengthFun {
83
83
  };
84
84
 
85
85
  struct LikeFun {
86
+ static ScalarFunction GetLikeFunction();
86
87
  static void RegisterFunction(BuiltinFunctions &set);
87
88
  DUCKDB_API static bool Glob(const char *s, idx_t slen, const char *pattern, idx_t plen,
88
89
  bool allow_question_mark = true);
89
90
  };
90
91
 
91
92
  struct LikeEscapeFun {
93
+ static ScalarFunction GetLikeEscapeFun();
92
94
  static void RegisterFunction(BuiltinFunctions &set);
93
95
  };
94
96
 
@@ -37,6 +37,10 @@ struct PragmaVersion {
37
37
  static void RegisterFunction(BuiltinFunctions &set);
38
38
  };
39
39
 
40
+ struct PragmaPlatform {
41
+ static void RegisterFunction(BuiltinFunctions &set);
42
+ };
43
+
40
44
  struct PragmaDatabaseSize {
41
45
  static void RegisterFunction(BuiltinFunctions &set);
42
46
  };
@@ -75,6 +75,8 @@ struct ClientConfig {
75
75
  bool force_no_cross_product = false;
76
76
  //! Force use of IEJoin to implement AsOfJoin, used for testing
77
77
  bool force_asof_iejoin = false;
78
+ //! Use range joins for inequalities, even if there are equality predicates
79
+ bool prefer_range_joins = false;
78
80
  //! If this context should also try to use the available replacement scans
79
81
  //! True by default
80
82
  bool use_replacement_scans = true;
@@ -96,6 +98,9 @@ struct ClientConfig {
96
98
  //! The maximum amount of pivot columns
97
99
  idx_t pivot_limit = 100000;
98
100
 
101
+ //! The threshold at which we switch from using filtered aggregates to LIST with a dedicated pivot operator
102
+ idx_t pivot_filter_threshold = 10;
103
+
99
104
  //! Whether or not the "/" division operator defaults to integer division or floating point division
100
105
  bool integer_division = false;
101
106
 
@@ -158,6 +158,8 @@ struct DBConfigOptions {
158
158
  bool lock_configuration = false;
159
159
  //! Whether to print bindings when printing the plan (debug mode only)
160
160
  static bool debug_print_bindings;
161
+ //! The peak allocation threshold at which to flush the allocator after completing a task (1 << 27, ~128MB)
162
+ idx_t allocator_flush_threshold = 134217728;
161
163
 
162
164
  bool operator==(const DBConfigOptions &other) const;
163
165
  };
@@ -169,8 +169,7 @@ public:
169
169
  template <typename TR, typename... Args>
170
170
  void CreateScalarFunction(const string &name, vector<LogicalType> args, LogicalType ret_type,
171
171
  TR (*udf_func)(Args...)) {
172
- scalar_function_t function =
173
- UDFWrapper::CreateScalarFunction<TR, Args...>(name, args, std::move(ret_type), udf_func);
172
+ scalar_function_t function = UDFWrapper::CreateScalarFunction<TR, Args...>(name, args, ret_type, udf_func);
174
173
  UDFWrapper::RegisterFunction(name, args, ret_type, function, *context);
175
174
  }
176
175
 
@@ -0,0 +1,22 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/main/extension/generated_extension_loader.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #pragma once
10
+
11
+ #if defined(GENERATED_EXTENSION_HEADERS) and !defined(DUCKDB_AMALGAMATION)
12
+ #include "generated_extension_headers.hpp"
13
+
14
+ namespace duckdb {
15
+
16
+ //! Looks through the CMake-generated list of extensions that are linked into DuckDB currently to try load <extension>
17
+ bool TryLoadLinkedExtension(DuckDB &db, const std::string &extension);
18
+ extern vector<string> linked_extensions;
19
+ extern vector<string> loaded_extension_test_paths;
20
+
21
+ } // namespace duckdb
22
+ #endif
@@ -58,6 +58,7 @@ static constexpr ExtensionEntry EXTENSION_FUNCTIONS[] = {{"->>", "json"},
58
58
  {"json_deserialize_sql", "json"},
59
59
  {"json_serialize_sql", "json"},
60
60
  {"json_execute_serialized_sql", "json"},
61
+ {"load_aws_credentials", "aws"},
61
62
  {"make_timestamptz", "icu"},
62
63
  {"parquet_metadata", "parquet"},
63
64
  {"parquet_scan", "parquet"},
@@ -161,6 +162,7 @@ static constexpr ExtensionEntry EXTENSION_FUNCTIONS[] = {{"->>", "json"},
161
162
  {"st_numpoints", "spatial"}};
162
163
 
163
164
  static constexpr ExtensionEntry EXTENSION_SETTINGS[] = {
165
+ {"azure_storage_connection_string", "azure"},
164
166
  {"binary_as_string", "parquet"},
165
167
  {"calendar", "icu"},
166
168
  {"http_retries", "httpfs"},