duckdb 0.8.1-dev65.0 → 0.8.1

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 (672) hide show
  1. package/binding.gyp +8 -8
  2. package/package.json +3 -1
  3. package/src/duckdb/extension/icu/icu-datepart.cpp +2 -2
  4. package/src/duckdb/extension/icu/icu-extension.cpp +1 -1
  5. package/src/duckdb/extension/icu/icu-makedate.cpp +5 -4
  6. package/src/duckdb/extension/icu/icu-strptime.cpp +1 -1
  7. package/src/duckdb/extension/icu/third_party/icu/i18n/nfsubs.cpp +0 -2
  8. package/src/duckdb/extension/json/buffered_json_reader.cpp +23 -14
  9. package/src/duckdb/extension/json/include/buffered_json_reader.hpp +6 -6
  10. package/src/duckdb/extension/json/include/json_common.hpp +13 -3
  11. package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
  12. package/src/duckdb/extension/json/include/json_scan.hpp +5 -2
  13. package/src/duckdb/extension/json/json_functions/json_contains.cpp +5 -0
  14. package/src/duckdb/extension/json/json_functions/json_create.cpp +16 -16
  15. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +3 -3
  16. package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +2 -2
  17. package/src/duckdb/extension/json/json_functions/json_structure.cpp +5 -3
  18. package/src/duckdb/extension/json/json_functions/json_transform.cpp +12 -12
  19. package/src/duckdb/extension/json/json_functions/read_json.cpp +2 -1
  20. package/src/duckdb/extension/json/json_functions.cpp +6 -3
  21. package/src/duckdb/extension/json/json_scan.cpp +43 -27
  22. package/src/duckdb/extension/parquet/column_reader.cpp +57 -52
  23. package/src/duckdb/extension/parquet/column_writer.cpp +57 -45
  24. package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +1 -1
  25. package/src/duckdb/extension/parquet/include/column_reader.hpp +5 -4
  26. package/src/duckdb/extension/parquet/include/column_writer.hpp +24 -0
  27. package/src/duckdb/extension/parquet/include/decode_utils.hpp +6 -0
  28. package/src/duckdb/extension/parquet/include/list_column_reader.hpp +1 -1
  29. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
  30. package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
  31. package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
  32. package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
  33. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
  34. package/src/duckdb/extension/parquet/parquet-extension.cpp +27 -2
  35. package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
  36. package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
  37. package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
  38. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
  39. package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
  40. package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
  41. package/src/duckdb/src/catalog/catalog.cpp +5 -17
  42. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +7 -1
  43. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +121 -0
  44. package/src/duckdb/src/catalog/catalog_search_path.cpp +49 -12
  45. package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
  46. package/src/duckdb/src/catalog/default/default_types.cpp +9 -84
  47. package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
  48. package/src/duckdb/src/common/adbc/adbc.cpp +118 -12
  49. package/src/duckdb/src/common/adbc/driver_manager.cpp +0 -20
  50. package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
  51. package/src/duckdb/src/common/arrow/arrow_converter.cpp +11 -12
  52. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +11 -10
  53. package/src/duckdb/src/common/checksum.cpp +1 -1
  54. package/src/duckdb/src/common/compressed_file_system.cpp +6 -6
  55. package/src/duckdb/src/common/crypto/md5.cpp +9 -9
  56. package/src/duckdb/src/common/exception.cpp +4 -1
  57. package/src/duckdb/src/common/exception_format_value.cpp +24 -15
  58. package/src/duckdb/src/common/field_writer.cpp +1 -1
  59. package/src/duckdb/src/common/fsst.cpp +11 -6
  60. package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
  61. package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
  62. package/src/duckdb/src/common/local_file_system.cpp +11 -11
  63. package/src/duckdb/src/common/multi_file_reader.cpp +3 -0
  64. package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
  65. package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
  66. package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
  67. package/src/duckdb/src/common/random_engine.cpp +1 -1
  68. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
  69. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
  70. package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
  71. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
  72. package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
  73. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
  74. package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
  75. package/src/duckdb/src/common/serializer.cpp +1 -1
  76. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  77. package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
  78. package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
  79. package/src/duckdb/src/common/types/bit.cpp +5 -5
  80. package/src/duckdb/src/common/types/blob.cpp +8 -8
  81. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
  82. package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
  83. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  84. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  85. package/src/duckdb/src/common/types/hash.cpp +2 -2
  86. package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
  87. package/src/duckdb/src/common/types/list_segment.cpp +77 -49
  88. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
  89. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +5 -4
  90. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
  91. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +61 -24
  92. package/src/duckdb/src/common/types/string_heap.cpp +1 -1
  93. package/src/duckdb/src/common/types/time.cpp +2 -8
  94. package/src/duckdb/src/common/types/timestamp.cpp +37 -1
  95. package/src/duckdb/src/common/types/value.cpp +3 -2
  96. package/src/duckdb/src/common/types/vector.cpp +98 -101
  97. package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
  98. package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
  99. package/src/duckdb/src/common/types.cpp +48 -33
  100. package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
  101. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
  102. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
  103. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
  104. package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +30 -33
  105. package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +0 -4
  106. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +33 -36
  107. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +53 -66
  108. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +48 -48
  109. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +44 -44
  110. package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +32 -32
  111. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +34 -34
  112. package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +30 -31
  113. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +91 -103
  114. package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +17 -17
  115. package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +25 -27
  116. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +37 -38
  117. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
  118. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +49 -85
  119. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
  120. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +116 -134
  121. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +63 -100
  122. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
  123. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +22 -23
  124. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +16 -18
  125. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +22 -25
  126. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +19 -24
  127. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +18 -23
  128. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +14 -18
  129. package/src/duckdb/src/core_functions/function_list.cpp +1 -0
  130. package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
  131. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +46 -46
  132. package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +3 -0
  133. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
  134. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
  135. package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
  136. package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
  137. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +14 -0
  138. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +4 -4
  139. package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
  140. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +26 -9
  141. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +7 -9
  142. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
  143. package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
  144. package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
  145. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +4 -1
  146. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
  147. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +6 -6
  148. package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
  149. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
  150. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
  151. package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
  152. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  153. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
  154. package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
  155. package/src/duckdb/src/execution/expression_executor.cpp +28 -28
  156. package/src/duckdb/src/execution/index/art/art.cpp +110 -39
  157. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +23 -5
  158. package/src/duckdb/src/execution/index/art/leaf.cpp +11 -11
  159. package/src/duckdb/src/execution/index/art/leaf_segment.cpp +10 -0
  160. package/src/duckdb/src/execution/index/art/node.cpp +48 -35
  161. package/src/duckdb/src/execution/index/art/node16.cpp +3 -0
  162. package/src/duckdb/src/execution/index/art/node256.cpp +1 -0
  163. package/src/duckdb/src/execution/index/art/node4.cpp +3 -0
  164. package/src/duckdb/src/execution/index/art/node48.cpp +2 -0
  165. package/src/duckdb/src/execution/index/art/prefix.cpp +2 -0
  166. package/src/duckdb/src/execution/join_hashtable.cpp +6 -4
  167. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
  168. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
  169. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  170. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
  171. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
  172. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
  173. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +26 -9
  174. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
  175. package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +5 -2
  176. package/src/duckdb/src/execution/operator/helper/physical_set.cpp +5 -1
  177. package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
  178. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
  179. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  180. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
  181. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +3 -6
  182. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
  183. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
  184. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
  185. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
  186. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
  187. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
  188. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
  189. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  190. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
  191. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
  192. package/src/duckdb/src/execution/operator/projection/physical_tableinout_function.cpp +1 -0
  193. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +10 -5
  194. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
  195. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
  196. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
  197. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +0 -1
  198. package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +29 -3
  199. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  200. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
  201. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  202. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
  203. package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
  204. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
  205. package/src/duckdb/src/execution/reservoir_sample.cpp +20 -6
  206. package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
  207. package/src/duckdb/src/function/aggregate/distributive/count.cpp +159 -21
  208. package/src/duckdb/src/function/aggregate/distributive/first.cpp +68 -75
  209. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +14 -14
  210. package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
  211. package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
  212. package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
  213. package/src/duckdb/src/function/cast/list_casts.cpp +2 -4
  214. package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
  215. package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
  216. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
  217. package/src/duckdb/src/function/pragma/pragma_queries.cpp +33 -23
  218. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
  219. package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
  220. package/src/duckdb/src/function/scalar/list/list_extract.cpp +4 -4
  221. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +3 -4
  222. package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
  223. package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
  224. package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
  225. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
  226. package/src/duckdb/src/function/scalar/string/regexp/regexp_util.cpp +6 -2
  227. package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
  228. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
  229. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
  230. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +27 -25
  231. package/src/duckdb/src/function/scalar_function.cpp +3 -3
  232. package/src/duckdb/src/function/table/arrow.cpp +6 -6
  233. package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
  234. package/src/duckdb/src/function/table/checkpoint.cpp +4 -1
  235. package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
  236. package/src/duckdb/src/function/table/glob.cpp +1 -1
  237. package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
  238. package/src/duckdb/src/function/table/range.cpp +4 -4
  239. package/src/duckdb/src/function/table/read_csv.cpp +19 -21
  240. package/src/duckdb/src/function/table/repeat.cpp +5 -2
  241. package/src/duckdb/src/function/table/repeat_row.cpp +10 -3
  242. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
  243. package/src/duckdb/src/function/table/system/pragma_storage_info.cpp +4 -4
  244. package/src/duckdb/src/function/table/system/test_vector_types.cpp +82 -26
  245. package/src/duckdb/src/function/table/table_scan.cpp +4 -4
  246. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  247. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  248. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -5
  249. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -0
  250. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +11 -1
  251. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
  252. package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +8 -2
  253. package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +97 -0
  254. package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
  255. package/src/duckdb/src/include/duckdb/common/arrow/arrow_appender.hpp +1 -1
  256. package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
  257. package/src/duckdb/src/include/duckdb/common/arrow/arrow_converter.hpp +2 -3
  258. package/src/duckdb/src/include/duckdb/common/arrow/arrow_options.hpp +8 -1
  259. package/src/duckdb/src/include/duckdb/common/arrow/result_arrow_wrapper.hpp +0 -1
  260. package/src/duckdb/src/include/duckdb/common/bit_utils.hpp +16 -22
  261. package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
  262. package/src/duckdb/src/include/duckdb/common/exception.hpp +5 -2
  263. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
  264. package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
  265. package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
  266. package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
  267. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
  268. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
  269. package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
  270. package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
  271. package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
  272. package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
  273. package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
  274. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
  275. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
  276. package/src/duckdb/src/include/duckdb/common/types/time.hpp +2 -0
  277. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +4 -14
  278. package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
  279. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
  280. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
  281. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +112 -76
  282. package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
  283. package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
  284. package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
  285. package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
  286. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +20 -24
  287. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +36 -39
  288. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +57 -53
  289. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +8 -9
  290. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +16 -18
  291. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +7 -8
  292. package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +9 -0
  293. package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +2 -6
  294. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +16 -36
  295. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
  296. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +13 -7
  297. package/src/duckdb/src/include/duckdb/execution/index/art/fixed_size_allocator.hpp +3 -0
  298. package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +1 -1
  299. package/src/duckdb/src/include/duckdb/execution/index/art/leaf_segment.hpp +2 -0
  300. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +13 -3
  301. package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +1 -0
  302. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
  303. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
  304. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
  305. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
  306. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +9 -30
  307. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +95 -0
  308. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
  309. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
  310. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
  311. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
  312. package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
  313. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +4 -2
  314. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
  315. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
  316. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +1 -1
  317. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +4 -3
  318. package/src/duckdb/src/include/duckdb/function/table_function.hpp +9 -8
  319. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +4 -1
  320. package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +3 -1
  321. package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
  322. package/src/duckdb/src/include/duckdb/main/config.hpp +5 -0
  323. package/src/duckdb/src/include/duckdb/main/database_manager.hpp +1 -0
  324. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +142 -136
  325. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  326. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
  327. package/src/duckdb/src/include/duckdb/main/query_result.hpp +23 -0
  328. package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
  329. package/src/duckdb/src/include/duckdb/main/settings.hpp +19 -0
  330. package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
  331. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
  332. package/src/duckdb/src/include/duckdb/optimizer/unnest_rewriter.hpp +4 -0
  333. package/src/duckdb/src/include/duckdb/parallel/meta_pipeline.hpp +12 -3
  334. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
  335. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
  336. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
  337. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
  338. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  339. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
  340. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
  341. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
  342. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
  343. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  344. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
  345. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
  346. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
  347. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
  348. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
  349. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
  350. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  351. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  352. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
  353. package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
  354. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
  355. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
  356. package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
  357. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  358. package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
  359. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
  360. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
  361. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
  362. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -2
  363. package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
  364. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  365. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +3 -3
  366. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
  367. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
  368. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
  369. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +106 -92
  370. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -2
  371. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
  372. package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
  373. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +37 -1
  374. package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
  375. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
  376. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
  377. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
  378. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
  379. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
  380. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
  381. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
  382. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
  383. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
  384. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
  385. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
  386. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
  387. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
  388. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
  389. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
  390. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
  391. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
  392. package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
  393. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
  394. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
  395. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
  396. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
  397. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +7 -2
  398. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +6 -2
  399. package/src/duckdb/src/include/duckdb/planner/operator/logical_execute.hpp +4 -0
  400. package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +5 -1
  401. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +5 -1
  402. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
  403. package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +6 -2
  404. package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +4 -0
  405. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
  406. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
  407. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  408. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/byte_reader.hpp +4 -0
  409. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
  410. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
  411. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
  412. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
  413. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +1 -1
  414. package/src/duckdb/src/include/duckdb/storage/in_memory_block_manager.hpp +13 -13
  415. package/src/duckdb/src/include/duckdb/storage/index.hpp +6 -4
  416. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
  417. package/src/duckdb/src/include/duckdb/storage/storage_extension.hpp +0 -6
  418. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
  419. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
  420. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
  421. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
  422. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +1 -1
  423. package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +2 -1
  424. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +2 -2
  425. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +2 -1
  426. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
  427. package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +2 -1
  428. package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +2 -1
  429. package/src/duckdb/src/include/duckdb/storage/table_storage_info.hpp +0 -2
  430. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
  431. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
  432. package/src/duckdb/src/main/attached_database.cpp +8 -0
  433. package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
  434. package/src/duckdb/src/main/capi/arrow-c.cpp +13 -13
  435. package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
  436. package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
  437. package/src/duckdb/src/main/capi/config-c.cpp +3 -6
  438. package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
  439. package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
  440. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
  441. package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
  442. package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
  443. package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
  444. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
  445. package/src/duckdb/src/main/capi/result-c.cpp +23 -23
  446. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  447. package/src/duckdb/src/main/client_context.cpp +7 -6
  448. package/src/duckdb/src/main/config.cpp +2 -0
  449. package/src/duckdb/src/main/database.cpp +1 -0
  450. package/src/duckdb/src/main/database_manager.cpp +22 -1
  451. package/src/duckdb/src/main/error_manager.cpp +1 -1
  452. package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
  453. package/src/duckdb/src/main/query_result.cpp +6 -2
  454. package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
  455. package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
  456. package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
  457. package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
  458. package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
  459. package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
  460. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  461. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  462. package/src/duckdb/src/main/relation.cpp +1 -1
  463. package/src/duckdb/src/main/settings/settings.cpp +41 -6
  464. package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
  465. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  466. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
  467. package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
  468. package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
  469. package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
  470. package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
  471. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
  472. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
  473. package/src/duckdb/src/optimizer/unnest_rewriter.cpp +27 -16
  474. package/src/duckdb/src/parallel/executor.cpp +39 -15
  475. package/src/duckdb/src/parallel/meta_pipeline.cpp +17 -3
  476. package/src/duckdb/src/parser/base_expression.cpp +2 -5
  477. package/src/duckdb/src/parser/column_definition.cpp +5 -8
  478. package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
  479. package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
  480. package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
  481. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
  482. package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
  483. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
  484. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
  485. package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
  486. package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
  487. package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
  488. package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
  489. package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
  490. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
  491. package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
  492. package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
  493. package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
  494. package/src/duckdb/src/parser/parsed_data/create_info.cpp +0 -3
  495. package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
  496. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
  497. package/src/duckdb/src/parser/parser.cpp +98 -38
  498. package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
  499. package/src/duckdb/src/parser/query_node.cpp +7 -6
  500. package/src/duckdb/src/parser/result_modifier.cpp +25 -18
  501. package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
  502. package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
  503. package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
  504. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
  505. package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
  506. package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
  507. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
  508. package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
  509. package/src/duckdb/src/parser/tableref.cpp +12 -3
  510. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
  511. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
  512. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
  513. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
  514. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
  515. package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
  516. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
  517. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
  518. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
  519. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +70 -75
  520. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
  521. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
  522. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
  523. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
  524. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +31 -29
  525. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
  526. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
  527. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
  528. package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +0 -2
  529. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
  530. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
  531. package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
  532. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
  533. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
  534. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
  535. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
  536. package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
  537. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
  538. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
  539. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
  540. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
  541. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
  542. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
  543. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
  544. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
  545. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
  546. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
  547. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
  548. package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
  549. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -25
  550. package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
  551. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
  552. package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
  553. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
  554. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
  555. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
  556. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
  557. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
  558. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
  559. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
  560. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
  561. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
  562. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
  563. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
  564. package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
  565. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
  566. package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
  567. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
  568. package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
  569. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
  570. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
  571. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
  572. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +30 -27
  573. package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
  574. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
  575. package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
  576. package/src/duckdb/src/parser/transformer.cpp +45 -47
  577. package/src/duckdb/src/planner/bind_context.cpp +9 -10
  578. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -3
  579. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
  580. package/src/duckdb/src/planner/binder/expression/bind_positional_reference_expression.cpp +8 -3
  581. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
  582. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
  583. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +39 -23
  584. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
  585. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +1 -28
  586. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +18 -1
  587. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +0 -25
  588. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
  589. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +2 -114
  590. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +7 -2
  591. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +7 -2
  592. package/src/duckdb/src/planner/binder.cpp +1 -1
  593. package/src/duckdb/src/planner/bound_result_modifier.cpp +30 -11
  594. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +11 -10
  595. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
  596. package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
  597. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
  598. package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
  599. package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
  600. package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
  601. package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
  602. package/src/duckdb/src/planner/expression/bound_default_expression.cpp +7 -1
  603. package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
  604. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
  605. package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
  606. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
  607. package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
  608. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
  609. package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
  610. package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
  611. package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
  612. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
  613. package/src/duckdb/src/planner/expression.cpp +18 -0
  614. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
  615. package/src/duckdb/src/planner/expression_binder.cpp +3 -2
  616. package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
  617. package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
  618. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  619. package/src/duckdb/src/planner/logical_operator.cpp +3 -4
  620. package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
  621. package/src/duckdb/src/planner/operator/logical_distinct.cpp +5 -4
  622. package/src/duckdb/src/planner/operator/logical_pivot.cpp +14 -2
  623. package/src/duckdb/src/planner/planner.cpp +5 -15
  624. package/src/duckdb/src/planner/table_filter.cpp +1 -1
  625. package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
  626. package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
  627. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
  628. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
  629. package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
  630. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
  631. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
  632. package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
  633. package/src/duckdb/src/storage/compression/rle.cpp +8 -8
  634. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
  635. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
  636. package/src/duckdb/src/storage/data_table.cpp +12 -10
  637. package/src/duckdb/src/storage/index.cpp +13 -0
  638. package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
  639. package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
  640. package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
  641. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
  642. package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
  643. package/src/duckdb/src/storage/storage_manager.cpp +6 -0
  644. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
  645. package/src/duckdb/src/storage/table/column_data.cpp +7 -3
  646. package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
  647. package/src/duckdb/src/storage/table/list_column_data.cpp +8 -7
  648. package/src/duckdb/src/storage/table/row_group.cpp +8 -7
  649. package/src/duckdb/src/storage/table/row_group_collection.cpp +6 -3
  650. package/src/duckdb/src/storage/table/standard_column_data.cpp +5 -4
  651. package/src/duckdb/src/storage/table/struct_column_data.cpp +4 -3
  652. package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
  653. package/src/duckdb/src/storage/wal_replay.cpp +5 -6
  654. package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
  655. package/src/duckdb/src/transaction/commit_state.cpp +8 -8
  656. package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
  657. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
  658. package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
  659. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
  660. package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
  661. package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
  662. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +0 -1
  663. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +0 -14
  664. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +12828 -12956
  665. package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
  666. package/src/duckdb/third_party/zstd/compress/zstd_compress.cpp +3 -0
  667. package/src/duckdb/third_party/zstd/include/zstd/compress/zstd_cwksp.h +4 -0
  668. package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +5 -5
  669. package/src/duckdb/ub_src_parser_transform_statement.cpp +0 -2
  670. package/test/extension.test.ts +11 -0
  671. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_database_info.hpp +0 -46
  672. package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +0 -28
@@ -4,94 +4,18 @@
4
4
  #include "duckdb/catalog/catalog_entry/type_catalog_entry.hpp"
5
5
  #include "duckdb/common/string_util.hpp"
6
6
  #include "duckdb/parser/parsed_data/create_type_info.hpp"
7
+ #include "duckdb/catalog/default/builtin_types/types.hpp"
7
8
 
8
9
  namespace duckdb {
9
10
 
10
- struct DefaultType {
11
- const char *name;
12
- LogicalTypeId type;
13
- };
14
-
15
- static DefaultType internal_types[] = {{"int", LogicalTypeId::INTEGER},
16
- {"int4", LogicalTypeId::INTEGER},
17
- {"signed", LogicalTypeId::INTEGER},
18
- {"integer", LogicalTypeId::INTEGER},
19
- {"integral", LogicalTypeId::INTEGER},
20
- {"int32", LogicalTypeId::INTEGER},
21
- {"varchar", LogicalTypeId::VARCHAR},
22
- {"bpchar", LogicalTypeId::VARCHAR},
23
- {"text", LogicalTypeId::VARCHAR},
24
- {"string", LogicalTypeId::VARCHAR},
25
- {"char", LogicalTypeId::VARCHAR},
26
- {"nvarchar", LogicalTypeId::VARCHAR},
27
- {"bytea", LogicalTypeId::BLOB},
28
- {"blob", LogicalTypeId::BLOB},
29
- {"varbinary", LogicalTypeId::BLOB},
30
- {"binary", LogicalTypeId::BLOB},
31
- {"bit", LogicalTypeId::BIT},
32
- {"bitstring", LogicalTypeId::BIT},
33
- {"int8", LogicalTypeId::BIGINT},
34
- {"bigint", LogicalTypeId::BIGINT},
35
- {"int64", LogicalTypeId::BIGINT},
36
- {"long", LogicalTypeId::BIGINT},
37
- {"oid", LogicalTypeId::BIGINT},
38
- {"int2", LogicalTypeId::SMALLINT},
39
- {"smallint", LogicalTypeId::SMALLINT},
40
- {"short", LogicalTypeId::SMALLINT},
41
- {"int16", LogicalTypeId::SMALLINT},
42
- {"timestamp", LogicalTypeId::TIMESTAMP},
43
- {"datetime", LogicalTypeId::TIMESTAMP},
44
- {"timestamp_us", LogicalTypeId::TIMESTAMP},
45
- {"timestamp_ms", LogicalTypeId::TIMESTAMP_MS},
46
- {"timestamp_ns", LogicalTypeId::TIMESTAMP_NS},
47
- {"timestamp_s", LogicalTypeId::TIMESTAMP_SEC},
48
- {"bool", LogicalTypeId::BOOLEAN},
49
- {"boolean", LogicalTypeId::BOOLEAN},
50
- {"logical", LogicalTypeId::BOOLEAN},
51
- {"decimal", LogicalTypeId::DECIMAL},
52
- {"dec", LogicalTypeId::DECIMAL},
53
- {"numeric", LogicalTypeId::DECIMAL},
54
- {"real", LogicalTypeId::FLOAT},
55
- {"float4", LogicalTypeId::FLOAT},
56
- {"float", LogicalTypeId::FLOAT},
57
- {"double", LogicalTypeId::DOUBLE},
58
- {"float8", LogicalTypeId::DOUBLE},
59
- {"tinyint", LogicalTypeId::TINYINT},
60
- {"int1", LogicalTypeId::TINYINT},
61
- {"date", LogicalTypeId::DATE},
62
- {"time", LogicalTypeId::TIME},
63
- {"interval", LogicalTypeId::INTERVAL},
64
- {"hugeint", LogicalTypeId::HUGEINT},
65
- {"int128", LogicalTypeId::HUGEINT},
66
- {"uuid", LogicalTypeId::UUID},
67
- {"guid", LogicalTypeId::UUID},
68
- {"struct", LogicalTypeId::STRUCT},
69
- {"row", LogicalTypeId::STRUCT},
70
- {"list", LogicalTypeId::LIST},
71
- {"map", LogicalTypeId::MAP},
72
- {"utinyint", LogicalTypeId::UTINYINT},
73
- {"uint8", LogicalTypeId::UTINYINT},
74
- {"usmallint", LogicalTypeId::USMALLINT},
75
- {"uint16", LogicalTypeId::USMALLINT},
76
- {"uinteger", LogicalTypeId::UINTEGER},
77
- {"uint32", LogicalTypeId::UINTEGER},
78
- {"ubigint", LogicalTypeId::UBIGINT},
79
- {"uint64", LogicalTypeId::UBIGINT},
80
- {"union", LogicalTypeId::UNION},
81
- {"timestamptz", LogicalTypeId::TIMESTAMP_TZ},
82
- {"timetz", LogicalTypeId::TIME_TZ},
83
- {"enum", LogicalTypeId::ENUM},
84
- {"null", LogicalTypeId::SQLNULL},
85
- {nullptr, LogicalTypeId::INVALID}};
86
-
87
11
  LogicalTypeId DefaultTypeGenerator::GetDefaultType(const string &name) {
88
- auto lower_str = StringUtil::Lower(name);
89
- for (idx_t index = 0; internal_types[index].name != nullptr; index++) {
90
- if (internal_types[index].name == lower_str) {
91
- return internal_types[index].type;
12
+ auto &internal_types = BUILTIN_TYPES;
13
+ for (auto &type : internal_types) {
14
+ if (StringUtil::CIEquals(name, type.name)) {
15
+ return type.type;
92
16
  }
93
17
  }
94
- return LogicalTypeId::INVALID;
18
+ return LogicalType::INVALID;
95
19
  }
96
20
 
97
21
  DefaultTypeGenerator::DefaultTypeGenerator(Catalog &catalog, SchemaCatalogEntry &schema)
@@ -119,8 +43,9 @@ vector<string> DefaultTypeGenerator::GetDefaultEntries() {
119
43
  if (schema.name != DEFAULT_SCHEMA) {
120
44
  return result;
121
45
  }
122
- for (idx_t index = 0; internal_types[index].name != nullptr; index++) {
123
- result.emplace_back(internal_types[index].name);
46
+ auto &internal_types = BUILTIN_TYPES;
47
+ for (auto &type : internal_types) {
48
+ result.emplace_back(StringUtil::Lower(type.name));
124
49
  }
125
50
  return result;
126
51
  }
@@ -220,8 +220,8 @@ void DependencyManager::AddOwnership(CatalogTransaction transaction, CatalogEntr
220
220
  // Emplace guarantees that the same object cannot be inserted twice in the unordered_set
221
221
  // In the case AddOwnership is called twice, because of emplace, the object will not be repeated in the set.
222
222
  // We use an automatic dependency because if the Owner gets deleted, then the owned objects are also deleted
223
- dependents_map[owner].emplace(Dependency(entry, DependencyType::DEPENDENCY_OWNS));
224
- dependents_map[entry].emplace(Dependency(owner, DependencyType::DEPENDENCY_OWNED_BY));
223
+ dependents_map[owner].emplace(entry, DependencyType::DEPENDENCY_OWNS);
224
+ dependents_map[entry].emplace(owner, DependencyType::DEPENDENCY_OWNED_BY);
225
225
  dependencies_map[owner].emplace(entry);
226
226
  }
227
227
 
@@ -5,10 +5,13 @@
5
5
  #include "duckdb/common/string_util.hpp"
6
6
 
7
7
  #include "duckdb.h"
8
- #include "duckdb/main/connection.hpp"
9
8
  #include "duckdb/common/arrow/arrow_wrapper.hpp"
10
9
  #include "duckdb/common/arrow/arrow.hpp"
11
10
 
11
+ #ifndef DUCKDB_AMALGAMATION
12
+ #include "duckdb/main/connection.hpp"
13
+ #endif
14
+
12
15
  #include <string.h>
13
16
  #include <stdlib.h>
14
17
 
@@ -37,6 +40,10 @@ duckdb_adbc::AdbcStatusCode duckdb_adbc_init(size_t count, struct duckdb_adbc::A
37
40
  driver->StatementSetOption = duckdb_adbc::StatementSetOption;
38
41
  driver->StatementSetSqlQuery = duckdb_adbc::StatementSetSqlQuery;
39
42
  driver->ConnectionGetObjects = duckdb_adbc::ConnectionGetObjects;
43
+ driver->ConnectionCommit = duckdb_adbc::ConnectionCommit;
44
+ driver->ConnectionRollback = duckdb_adbc::ConnectionRollback;
45
+ driver->ConnectionReadPartition = duckdb_adbc::ConnectionReadPartition;
46
+ driver->StatementExecutePartitions = duckdb_adbc::StatementExecutePartitions;
40
47
  return ADBC_STATUS_OK;
41
48
  }
42
49
 
@@ -162,10 +169,104 @@ AdbcStatusCode ConnectionNew(struct AdbcConnection *connection, struct AdbcError
162
169
  return ADBC_STATUS_OK;
163
170
  }
164
171
 
172
+ AdbcStatusCode ExecuteQuery(duckdb::Connection *conn, const char *query, struct AdbcError *error) {
173
+ auto res = conn->Query(query);
174
+ if (res->HasError()) {
175
+ auto error_message = "Failed to execute query \"" + std::string(query) + "\": " + res->GetError();
176
+ SetError(error, error_message);
177
+ return ADBC_STATUS_INTERNAL;
178
+ }
179
+ return ADBC_STATUS_OK;
180
+ }
181
+
165
182
  AdbcStatusCode ConnectionSetOption(struct AdbcConnection *connection, const char *key, const char *value,
166
183
  struct AdbcError *error) {
167
- // there are no connection-level options that need to be set before connecting
168
- return ADBC_STATUS_OK;
184
+ if (!connection) {
185
+ SetError(error, "Connection is not set");
186
+ return ADBC_STATUS_INVALID_ARGUMENT;
187
+ }
188
+ auto conn = (duckdb::Connection *)connection->private_data;
189
+ if (strcmp(key, ADBC_CONNECTION_OPTION_AUTOCOMMIT) == 0) {
190
+ if (strcmp(value, ADBC_OPTION_VALUE_ENABLED) == 0) {
191
+ if (conn->HasActiveTransaction()) {
192
+ AdbcStatusCode status = ExecuteQuery(conn, "COMMIT", error);
193
+ if (status != ADBC_STATUS_OK) {
194
+ return status;
195
+ }
196
+ } else {
197
+ // no-op
198
+ }
199
+ } else if (strcmp(value, ADBC_OPTION_VALUE_DISABLED) == 0) {
200
+ if (conn->HasActiveTransaction()) {
201
+ // no-op
202
+ } else {
203
+ // begin
204
+ AdbcStatusCode status = ExecuteQuery(conn, "START TRANSACTION", error);
205
+ if (status != ADBC_STATUS_OK) {
206
+ return status;
207
+ }
208
+ }
209
+ } else {
210
+ auto error_message = "Invalid connection option value " + std::string(key) + "=" + std::string(value);
211
+ SetError(error, error_message);
212
+ return ADBC_STATUS_INVALID_ARGUMENT;
213
+ }
214
+ return ADBC_STATUS_OK;
215
+ }
216
+ auto error_message =
217
+ "Unknown connection option " + std::string(key) + "=" + (value ? std::string(value) : "(NULL)");
218
+ SetError(error, error_message);
219
+ return ADBC_STATUS_NOT_IMPLEMENTED;
220
+ }
221
+
222
+ AdbcStatusCode ConnectionReadPartition(struct AdbcConnection *connection, const uint8_t *serialized_partition,
223
+ size_t serialized_length, struct ArrowArrayStream *out,
224
+ struct AdbcError *error) {
225
+ SetError(error, "Read Partitions are not supported in DuckDB");
226
+ return ADBC_STATUS_NOT_IMPLEMENTED;
227
+ }
228
+
229
+ AdbcStatusCode StatementExecutePartitions(struct AdbcStatement *statement, struct ArrowSchema *schema,
230
+ struct AdbcPartitions *partitions, int64_t *rows_affected,
231
+ struct AdbcError *error) {
232
+ SetError(error, "Execute Partitions are not supported in DuckDB");
233
+ return ADBC_STATUS_NOT_IMPLEMENTED;
234
+ }
235
+
236
+ AdbcStatusCode ConnectionCommit(struct AdbcConnection *connection, struct AdbcError *error) {
237
+ if (!connection) {
238
+ SetError(error, "Connection is not set");
239
+ return ADBC_STATUS_INVALID_ARGUMENT;
240
+ }
241
+ auto conn = (duckdb::Connection *)connection->private_data;
242
+ if (!conn->HasActiveTransaction()) {
243
+ SetError(error, "No active transaction, cannot commit");
244
+ return ADBC_STATUS_INVALID_STATE;
245
+ }
246
+
247
+ AdbcStatusCode status = ExecuteQuery(conn, "COMMIT", error);
248
+ if (status != ADBC_STATUS_OK) {
249
+ return status;
250
+ }
251
+ return ExecuteQuery(conn, "START TRANSACTION", error);
252
+ }
253
+
254
+ AdbcStatusCode ConnectionRollback(struct AdbcConnection *connection, struct AdbcError *error) {
255
+ if (!connection) {
256
+ SetError(error, "Connection is not set");
257
+ return ADBC_STATUS_INVALID_ARGUMENT;
258
+ }
259
+ auto conn = (duckdb::Connection *)connection->private_data;
260
+ if (!conn->HasActiveTransaction()) {
261
+ SetError(error, "No active transaction, cannot rollback");
262
+ return ADBC_STATUS_INVALID_STATE;
263
+ }
264
+
265
+ AdbcStatusCode status = ExecuteQuery(conn, "ROLLBACK", error);
266
+ if (status != ADBC_STATUS_OK) {
267
+ return status;
268
+ }
269
+ return ExecuteQuery(conn, "START TRANSACTION", error);
169
270
  }
170
271
 
171
272
  AdbcStatusCode ConnectionInit(struct AdbcConnection *connection, struct AdbcDatabase *database,
@@ -219,11 +320,11 @@ void release(struct ArrowArrayStream *stream) {
219
320
  if (!stream || !stream->release) {
220
321
  return;
221
322
  }
222
- stream->release = nullptr;
223
323
  if (stream->private_data) {
224
324
  duckdb_destroy_arrow((duckdb_arrow *)&stream->private_data);
225
325
  stream->private_data = nullptr;
226
326
  }
327
+ stream->release = nullptr;
227
328
  }
228
329
 
229
330
  const char *get_last_error(struct ArrowArrayStream *stream) {
@@ -270,16 +371,21 @@ AdbcStatusCode Ingest(duckdb_connection connection, const char *table_name, stru
270
371
  if (status != ADBC_STATUS_OK) {
271
372
  return status;
272
373
  }
374
+ auto cconn = (duckdb::Connection *)connection;
273
375
 
376
+ auto has_table = cconn->TableInfo(table_name);
377
+ auto arrow_scan = cconn->TableFunction("arrow_scan", {duckdb::Value::POINTER((uintptr_t)input),
378
+ duckdb::Value::POINTER((uintptr_t)stream_produce),
379
+ duckdb::Value::POINTER((uintptr_t)get_schema)});
274
380
  try {
275
- // TODO evil cast, do we need a way to do this from the C api?
276
- auto cconn = (duckdb::Connection *)connection;
277
- cconn
278
- ->TableFunction("arrow_scan",
279
- {duckdb::Value::POINTER((uintptr_t)input),
280
- duckdb::Value::POINTER((uintptr_t)stream_produce),
281
- duckdb::Value::POINTER((uintptr_t)get_schema)}) // TODO make this a parameter somewhere
282
- ->Create(table_name); // TODO this should probably be a temp table
381
+ if (!has_table) {
382
+ // We create the table based on an Arrow Scanner
383
+ arrow_scan->Create(table_name);
384
+ } else {
385
+ arrow_scan->CreateView("temp_adbc_view", true, true);
386
+ auto query = "insert into " + std::string(table_name) + " select * from temp_adbc_view";
387
+ auto result = cconn->Query(query);
388
+ }
283
389
  // After creating a table, the arrow array stream is released. Hence we must set it as released to avoid
284
390
  // double-releasing it
285
391
  input->release = nullptr;
@@ -133,10 +133,6 @@ static AdbcStatusCode ReleaseDriver(struct AdbcDriver *driver, struct AdbcError
133
133
 
134
134
  // Default stubs
135
135
 
136
- AdbcStatusCode ConnectionCommit(struct AdbcConnection *, struct AdbcError *error) {
137
- return ADBC_STATUS_NOT_IMPLEMENTED;
138
- }
139
-
140
136
  AdbcStatusCode ConnectionGetInfo(struct AdbcConnection *connection, uint32_t *info_codes, size_t info_codes_length,
141
137
  struct ArrowArrayStream *out, struct AdbcError *error) {
142
138
  return ADBC_STATUS_NOT_IMPLEMENTED;
@@ -147,27 +143,11 @@ AdbcStatusCode ConnectionGetTableSchema(struct AdbcConnection *, const char *, c
147
143
  return ADBC_STATUS_NOT_IMPLEMENTED;
148
144
  }
149
145
 
150
- AdbcStatusCode ConnectionReadPartition(struct AdbcConnection *connection, const uint8_t *serialized_partition,
151
- size_t serialized_length, struct ArrowArrayStream *out,
152
- struct AdbcError *error) {
153
- return ADBC_STATUS_NOT_IMPLEMENTED;
154
- }
155
-
156
- AdbcStatusCode ConnectionRollback(struct AdbcConnection *, struct AdbcError *error) {
157
- return ADBC_STATUS_NOT_IMPLEMENTED;
158
- }
159
-
160
146
  AdbcStatusCode StatementBind(struct AdbcStatement *, struct ArrowArray *, struct ArrowSchema *,
161
147
  struct AdbcError *error) {
162
148
  return ADBC_STATUS_NOT_IMPLEMENTED;
163
149
  }
164
150
 
165
- AdbcStatusCode StatementExecutePartitions(struct AdbcStatement *statement, struct ArrowSchema *schema,
166
- struct AdbcPartitions *partitions, int64_t *rows_affected,
167
- struct AdbcError *error) {
168
- return ADBC_STATUS_NOT_IMPLEMENTED;
169
- }
170
-
171
151
  AdbcStatusCode StatementGetParameterSchema(struct AdbcStatement *statement, struct ArrowSchema *schema,
172
152
  struct AdbcError *error) {
173
153
  return ADBC_STATUS_NOT_IMPLEMENTED;
@@ -162,8 +162,8 @@ struct ArrowScalarBaseData {
162
162
 
163
163
  // append the main data
164
164
  append_data.main_buffer.resize(append_data.main_buffer.size() + sizeof(TGT) * size);
165
- auto data = (SRC *)format.data;
166
- auto result_data = (TGT *)append_data.main_buffer.data();
165
+ auto data = UnifiedVectorFormat::GetData<SRC>(format);
166
+ auto result_data = append_data.main_buffer.GetData<TGT>();
167
167
 
168
168
  for (idx_t i = from; i < to; i++) {
169
169
  auto source_idx = format.sel->get_index(i);
@@ -210,8 +210,8 @@ struct ArrowEnumData : public ArrowScalarBaseData<TGT> {
210
210
 
211
211
  // resize the offset buffer - the offset buffer holds the offsets into the child array
212
212
  append_data.main_buffer.resize(append_data.main_buffer.size() + sizeof(uint32_t) * (size + 1));
213
- auto data = (string_t *)FlatVector::GetData<string_t>(input);
214
- auto offset_data = (uint32_t *)append_data.main_buffer.data();
213
+ auto data = FlatVector::GetData<string_t>(input);
214
+ auto offset_data = append_data.main_buffer.GetData<uint32_t>();
215
215
  if (append_data.row_count == 0) {
216
216
  // first entry
217
217
  offset_data[0] = 0;
@@ -269,10 +269,10 @@ struct ArrowBoolData {
269
269
  // we initialize both the validity and the bit set to 1's
270
270
  ResizeValidity(append_data.validity, append_data.row_count + size);
271
271
  ResizeValidity(append_data.main_buffer, append_data.row_count + size);
272
- auto data = (bool *)format.data;
272
+ auto data = UnifiedVectorFormat::GetData<bool>(format);
273
273
 
274
- auto result_data = (uint8_t *)append_data.main_buffer.data();
275
- auto validity_data = (uint8_t *)append_data.validity.data();
274
+ auto result_data = append_data.main_buffer.GetData<uint8_t>();
275
+ auto validity_data = append_data.validity.GetData<uint8_t>();
276
276
  uint8_t current_bit;
277
277
  idx_t current_byte;
278
278
  GetBitPosition(append_data.row_count, current_byte, current_bit);
@@ -318,7 +318,7 @@ struct ArrowUUIDConverter {
318
318
 
319
319
  template <class SRC>
320
320
  static void WriteData(data_ptr_t target, SRC input) {
321
- UUID::ToString(input, (char *)target);
321
+ UUID::ToString(input, char_ptr_cast(target));
322
322
  }
323
323
  };
324
324
 
@@ -341,8 +341,8 @@ struct ArrowVarcharData {
341
341
 
342
342
  // resize the offset buffer - the offset buffer holds the offsets into the child array
343
343
  append_data.main_buffer.resize(append_data.main_buffer.size() + sizeof(BUFTYPE) * (size + 1));
344
- auto data = (SRC *)format.data;
345
- auto offset_data = (BUFTYPE *)append_data.main_buffer.data();
344
+ auto data = UnifiedVectorFormat::GetData<SRC>(format);
345
+ auto offset_data = append_data.main_buffer.GetData<BUFTYPE>();
346
346
  if (append_data.row_count == 0) {
347
347
  // first entry
348
348
  offset_data[0] = 0;
@@ -441,8 +441,8 @@ void AppendListOffsets(ArrowAppendData &append_data, UnifiedVectorFormat &format
441
441
  // resize the offset buffer - the offset buffer holds the offsets into the child array
442
442
  idx_t size = to - from;
443
443
  append_data.main_buffer.resize(append_data.main_buffer.size() + sizeof(uint32_t) * (size + 1));
444
- auto data = (list_entry_t *)format.data;
445
- auto offset_data = (uint32_t *)append_data.main_buffer.data();
444
+ auto data = UnifiedVectorFormat::GetData<list_entry_t>(format);
445
+ auto offset_data = append_data.main_buffer.GetData<uint32_t>();
446
446
  if (append_data.row_count == 0) {
447
447
  // first entry
448
448
  offset_data[0] = 0;
@@ -16,7 +16,7 @@
16
16
  namespace duckdb {
17
17
 
18
18
  void ArrowConverter::ToArrowArray(DataChunk &input, ArrowArray *out_array, ArrowOptions options) {
19
- ArrowAppender appender(input.GetTypes(), input.size(), options);
19
+ ArrowAppender appender(input.GetTypes(), input.size(), std::move(options));
20
20
  appender.Append(input, 0, input.size(), input.size());
21
21
  *out_array = appender.Finalize();
22
22
  }
@@ -59,10 +59,10 @@ void InitializeChild(ArrowSchema &child, const string &name = "") {
59
59
  child.dictionary = nullptr;
60
60
  }
61
61
  void SetArrowFormat(DuckDBArrowSchemaHolder &root_holder, ArrowSchema &child, const LogicalType &type,
62
- const string &config_timezone, ArrowOptions options);
62
+ const ArrowOptions &options);
63
63
 
64
64
  void SetArrowMapFormat(DuckDBArrowSchemaHolder &root_holder, ArrowSchema &child, const LogicalType &type,
65
- const string &config_timezone, ArrowOptions options) {
65
+ const ArrowOptions &options) {
66
66
  child.format = "+m";
67
67
  //! Map has one child which is a struct
68
68
  child.n_children = 1;
@@ -73,11 +73,11 @@ void SetArrowMapFormat(DuckDBArrowSchemaHolder &root_holder, ArrowSchema &child,
73
73
  InitializeChild(root_holder.nested_children.back()[0]);
74
74
  child.children = &root_holder.nested_children_ptr.back()[0];
75
75
  child.children[0]->name = "entries";
76
- SetArrowFormat(root_holder, **child.children, ListType::GetChildType(type), config_timezone, options);
76
+ SetArrowFormat(root_holder, **child.children, ListType::GetChildType(type), options);
77
77
  }
78
78
 
79
79
  void SetArrowFormat(DuckDBArrowSchemaHolder &root_holder, ArrowSchema &child, const LogicalType &type,
80
- const string &config_timezone, ArrowOptions options) {
80
+ const ArrowOptions &options) {
81
81
  switch (type.id()) {
82
82
  case LogicalTypeId::BOOLEAN:
83
83
  child.format = "b";
@@ -134,7 +134,7 @@ void SetArrowFormat(DuckDBArrowSchemaHolder &root_holder, ArrowSchema &child, co
134
134
  child.format = "tsu:";
135
135
  break;
136
136
  case LogicalTypeId::TIMESTAMP_TZ: {
137
- string format = "tsu:" + config_timezone;
137
+ string format = "tsu:" + options.time_zone;
138
138
  auto format_ptr = make_unsafe_uniq_array<char>(format.size() + 1);
139
139
  for (size_t i = 0; i < format.size(); i++) {
140
140
  format_ptr[i] = format[i];
@@ -192,7 +192,7 @@ void SetArrowFormat(DuckDBArrowSchemaHolder &root_holder, ArrowSchema &child, co
192
192
  InitializeChild(root_holder.nested_children.back()[0]);
193
193
  child.children = &root_holder.nested_children_ptr.back()[0];
194
194
  child.children[0]->name = "l";
195
- SetArrowFormat(root_holder, **child.children, ListType::GetChildType(type), config_timezone, options);
195
+ SetArrowFormat(root_holder, **child.children, ListType::GetChildType(type), options);
196
196
  break;
197
197
  }
198
198
  case LogicalTypeId::STRUCT: {
@@ -220,13 +220,12 @@ void SetArrowFormat(DuckDBArrowSchemaHolder &root_holder, ArrowSchema &child, co
220
220
  root_holder.owned_type_names.push_back(std::move(name_ptr));
221
221
 
222
222
  child.children[type_idx]->name = root_holder.owned_type_names.back().get();
223
- SetArrowFormat(root_holder, *child.children[type_idx], child_types[type_idx].second, config_timezone,
224
- options);
223
+ SetArrowFormat(root_holder, *child.children[type_idx], child_types[type_idx].second, options);
225
224
  }
226
225
  break;
227
226
  }
228
227
  case LogicalTypeId::MAP: {
229
- SetArrowMapFormat(root_holder, child, type, config_timezone, options);
228
+ SetArrowMapFormat(root_holder, child, type, options);
230
229
  break;
231
230
  }
232
231
  case LogicalTypeId::ENUM: {
@@ -259,7 +258,7 @@ void SetArrowFormat(DuckDBArrowSchemaHolder &root_holder, ArrowSchema &child, co
259
258
  }
260
259
 
261
260
  void ArrowConverter::ToArrowSchema(ArrowSchema *out_schema, const vector<LogicalType> &types,
262
- const vector<string> &names, const string &config_timezone, ArrowOptions options) {
261
+ const vector<string> &names, const ArrowOptions &options) {
263
262
  D_ASSERT(out_schema);
264
263
  D_ASSERT(types.size() == names.size());
265
264
  idx_t column_count = types.size();
@@ -287,7 +286,7 @@ void ArrowConverter::ToArrowSchema(ArrowSchema *out_schema, const vector<Logical
287
286
 
288
287
  auto &child = root_holder->children[col_idx];
289
288
  InitializeChild(child, names[col_idx]);
290
- SetArrowFormat(*root_holder, child, types[col_idx], config_timezone, options);
289
+ SetArrowFormat(*root_holder, child, types[col_idx], options);
291
290
  }
292
291
 
293
292
  // Release ownership to caller
@@ -77,10 +77,10 @@ int ResultArrowArrayStreamWrapper::MyStreamGetSchema(struct ArrowArrayStream *st
77
77
  if (!stream->release) {
78
78
  return -1;
79
79
  }
80
- auto my_stream = (ResultArrowArrayStreamWrapper *)stream->private_data;
80
+ auto my_stream = reinterpret_cast<ResultArrowArrayStreamWrapper *>(stream->private_data);
81
81
  if (!my_stream->column_types.empty()) {
82
82
  ArrowConverter::ToArrowSchema(out, my_stream->column_types, my_stream->column_names,
83
- my_stream->timezone_config);
83
+ QueryResult::GetArrowOptions(*my_stream->result));
84
84
  return 0;
85
85
  }
86
86
 
@@ -90,7 +90,7 @@ int ResultArrowArrayStreamWrapper::MyStreamGetSchema(struct ArrowArrayStream *st
90
90
  return -1;
91
91
  }
92
92
  if (result.type == QueryResultType::STREAM_RESULT) {
93
- auto &stream_result = (StreamQueryResult &)result;
93
+ auto &stream_result = result.Cast<StreamQueryResult>();
94
94
  if (!stream_result.IsOpen()) {
95
95
  my_stream->last_error = PreservedError("Query Stream is closed");
96
96
  return -1;
@@ -100,7 +100,8 @@ int ResultArrowArrayStreamWrapper::MyStreamGetSchema(struct ArrowArrayStream *st
100
100
  my_stream->column_types = result.types;
101
101
  my_stream->column_names = result.names;
102
102
  }
103
- ArrowConverter::ToArrowSchema(out, my_stream->column_types, my_stream->column_names, my_stream->timezone_config);
103
+ ArrowConverter::ToArrowSchema(out, my_stream->column_types, my_stream->column_names,
104
+ QueryResult::GetArrowOptions(*my_stream->result));
104
105
  return 0;
105
106
  }
106
107
 
@@ -108,14 +109,14 @@ int ResultArrowArrayStreamWrapper::MyStreamGetNext(struct ArrowArrayStream *stre
108
109
  if (!stream->release) {
109
110
  return -1;
110
111
  }
111
- auto my_stream = (ResultArrowArrayStreamWrapper *)stream->private_data;
112
+ auto my_stream = reinterpret_cast<ResultArrowArrayStreamWrapper *>(stream->private_data);
112
113
  auto &result = *my_stream->result;
113
114
  if (result.HasError()) {
114
115
  my_stream->last_error = result.GetErrorObject();
115
116
  return -1;
116
117
  }
117
118
  if (result.type == QueryResultType::STREAM_RESULT) {
118
- auto &stream_result = (StreamQueryResult &)result;
119
+ auto &stream_result = result.Cast<StreamQueryResult>();
119
120
  if (!stream_result.IsOpen()) {
120
121
  // Nothing to output
121
122
  out->release = nullptr;
@@ -145,7 +146,7 @@ void ResultArrowArrayStreamWrapper::MyStreamRelease(struct ArrowArrayStream *str
145
146
  return;
146
147
  }
147
148
  stream->release = nullptr;
148
- delete (ResultArrowArrayStreamWrapper *)stream->private_data;
149
+ delete reinterpret_cast<ResultArrowArrayStreamWrapper *>(stream->private_data);
149
150
  }
150
151
 
151
152
  const char *ResultArrowArrayStreamWrapper::MyStreamGetLastError(struct ArrowArrayStream *stream) {
@@ -153,7 +154,7 @@ const char *ResultArrowArrayStreamWrapper::MyStreamGetLastError(struct ArrowArra
153
154
  return "stream was released";
154
155
  }
155
156
  D_ASSERT(stream->private_data);
156
- auto my_stream = (ResultArrowArrayStreamWrapper *)stream->private_data;
157
+ auto my_stream = reinterpret_cast<ResultArrowArrayStreamWrapper *>(stream->private_data);
157
158
  return my_stream->last_error.Message().c_str();
158
159
  }
159
160
 
@@ -175,7 +176,7 @@ ResultArrowArrayStreamWrapper::ResultArrowArrayStreamWrapper(unique_ptr<QueryRes
175
176
 
176
177
  bool ArrowUtil::TryFetchNext(QueryResult &result, unique_ptr<DataChunk> &chunk, PreservedError &error) {
177
178
  if (result.type == QueryResultType::STREAM_RESULT) {
178
- auto &stream_result = (StreamQueryResult &)result;
179
+ auto &stream_result = result.Cast<StreamQueryResult>();
179
180
  if (!stream_result.IsOpen()) {
180
181
  return true;
181
182
  }
@@ -186,7 +187,7 @@ bool ArrowUtil::TryFetchNext(QueryResult &result, unique_ptr<DataChunk> &chunk,
186
187
  bool ArrowUtil::TryFetchChunk(QueryResult *result, idx_t chunk_size, ArrowArray *out, idx_t &count,
187
188
  PreservedError &error) {
188
189
  count = 0;
189
- ArrowAppender appender(result->types, chunk_size);
190
+ ArrowAppender appender(result->types, chunk_size, QueryResult::GetArrowOptions(*result));
190
191
  auto &current_chunk = result->current_chunk;
191
192
  if (current_chunk.Valid()) {
192
193
  // We start by scanning the non-finished current chunk
@@ -9,7 +9,7 @@ hash_t Checksum(uint64_t x) {
9
9
 
10
10
  uint64_t Checksum(uint8_t *buffer, size_t size) {
11
11
  uint64_t result = 5381;
12
- uint64_t *ptr = (uint64_t *)buffer;
12
+ uint64_t *ptr = reinterpret_cast<uint64_t *>(buffer);
13
13
  size_t i;
14
14
  // for efficiency, we first checksum uint64_t values
15
15
  for (i = 0; i < size / 8; i++) {
@@ -115,28 +115,28 @@ void CompressedFile::Close() {
115
115
  }
116
116
 
117
117
  int64_t CompressedFileSystem::Read(FileHandle &handle, void *buffer, int64_t nr_bytes) {
118
- auto &compressed_file = (CompressedFile &)handle;
118
+ auto &compressed_file = handle.Cast<CompressedFile>();
119
119
  return compressed_file.ReadData(buffer, nr_bytes);
120
120
  }
121
121
 
122
122
  int64_t CompressedFileSystem::Write(FileHandle &handle, void *buffer, int64_t nr_bytes) {
123
- auto &compressed_file = (CompressedFile &)handle;
124
- return compressed_file.WriteData((data_ptr_t)buffer, nr_bytes);
123
+ auto &compressed_file = handle.Cast<CompressedFile>();
124
+ return compressed_file.WriteData(data_ptr_cast(buffer), nr_bytes);
125
125
  }
126
126
 
127
127
  void CompressedFileSystem::Reset(FileHandle &handle) {
128
- auto &compressed_file = (CompressedFile &)handle;
128
+ auto &compressed_file = handle.Cast<CompressedFile>();
129
129
  compressed_file.child_handle->Reset();
130
130
  compressed_file.Initialize(compressed_file.write);
131
131
  }
132
132
 
133
133
  int64_t CompressedFileSystem::GetFileSize(FileHandle &handle) {
134
- auto &compressed_file = (CompressedFile &)handle;
134
+ auto &compressed_file = handle.Cast<CompressedFile>();
135
135
  return compressed_file.child_handle->GetFileSize();
136
136
  }
137
137
 
138
138
  bool CompressedFileSystem::OnDiskFile(FileHandle &handle) {
139
- auto &compressed_file = (CompressedFile &)handle;
139
+ auto &compressed_file = handle.Cast<CompressedFile>();
140
140
  return compressed_file.child_handle->OnDiskFile();
141
141
  }
142
142